3、数码管原理及驱动

简介: 3、数码管原理及驱动

一、发光二极管与数码管基础


1、发光二极管

圆头塑封发光二极管的正负极判断


  1. 长脚为正极,短脚为负极
  2. 电极小的为正极,电极大的为负极
  3. 圆弧形边缘的为正极,直线型边缘的为负极
  4. 以上方法都无法判断,则可以借助万用表进行测量

image.png

普通二极管的正向导通电压普遍在1.2V或以上,而一般的指示用发光二极管工作电流在2至20mA内。


2、数码管

数码管的“位”指的是有多少个数码管。

数码管的“段”指的是一个数码管有多少个发光二极管。

位码是决定那一个数码管能够被点亮,而段码是决定被选中的数码管点亮一个什么样的数字。


数码管的内部结构

共阴与共阴数码管来减少引脚的引出其中A表示共阳的公共端,而K来表示共阴的公共端

image.png

共阳和共阴的排列顺序是相同的,其排列如图所示:

image.png

共阳数码管清0来显示数码,共阴数码管置1来显示数码;

配置段亮灭状态的值叫做段码,使能多位公共端的值称为位码。


共阳数码管的段码和位码的设定

image.png

共阳数码管段码0-F的表示形式如下:

u8 Buff[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};


共阴数码管的段码和位码的设定

image.png

共阴数码管段码0-F的表示形式如下:

u8 Buff[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


二、数码管显示操作


1、共阳数码管显示

u8 Buff[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void Digital_Led_Play(void)
{
  u8 num;
  PC_DDR=0xFF;//配置PC端口为输出模式
  PC_CR1=0xFF;//配置PC端口为推挽输出模式
  PC_CR2=0x00;//配置PC端口低速率输出
  while(1)
  {
    for(num=0;num<=9;num++)
    {
      LED=Buff[num];
      delay(300);//延时便于观察LED情况
    }
  }
}


2、共阴数码管显示

u8 Buff[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void Digital_Led_Play(void)
{
  u8 num;
  PC_DDR=0xFF;//配置PC端口为输出模式
  PC_CR1=0xFF;//配置PC端口为推挽输出模式
  PC_CR2=0x00;//配置PC端口低速率输出
  while(1)
  {
    for(num=0;num<=9;num++)
    {
      LED=Buff[num];
      delay(300);//延时便于观察LED情况
    }
  }
}


3、串行数码管

原理与如下:

image.png

代码如下:

#define DIO     PG_ODR_ODR7//串行数据输入
#define RCLK    PG_ODR_ODR6//锁存控制信号(上升沿有效)
#define SCLK    PG_ODR_ODR5//时钟脉冲信号(上升沿有效)
//共阳数码管段码“0123456789AbCdEF熄灭-”
u8 Buff[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//位码数组
u8 wei_table[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void Digital_Led_Play(void)
{
  PG_DDR=0xFF;//配置PG端口为输出模式
  PG_CR1=0xFF;//配置PG端口为推挽输出模式
  PG_CR2=0x00;//配置PG端口低速率输出
  PG_ODR=0x00;//初始化PG端口全部输出低电平
  while(1)
  {
    LED8_Display(3,10);//显示数码"5"
    LED8_Display(7,6);//显示数码"6"
  }
}
void LED8_Display(u8 x,u8 y)
{
  LED_OUT(LED_table[y]);//送出段码
  LED_OUT(wei_table[x]);//送出位码  
  RCLK=0;
  RCLK=1;//RCLK产生上升沿
  delay(1);
}
void LED_OUT(u8 outdata)
{
  u8 i;
  for(i=0;i<8;i++)//循环8次
  {
    if (outdata & 0x80)//逐一取出最高位
      DIO=1;//送出“1”
    else 
      DIO=0;//送出“0”
    outdata<<=1;//执行左移一位操作
    SCLK=0;
    SCLK=1;//SCLK产生上升沿
  }
}
目录
打赏
0
0
0
0
20
分享
相关文章
STM32:PWM驱动舵机(内含:1.接线原理图/实物图+2.代码部分+3.补充知识部分)
STM32:PWM驱动舵机(内含:1.接线原理图/实物图+2.代码部分+3.补充知识部分)
1444 1
STM32:PWM驱动舵机(内含:1.接线原理图/实物图+2.代码部分+3.补充知识部分)
第一章MCS-51单片机结构,单片机原理、接口及应用
第一章MCS-51单片机结构,单片机原理、接口及应用
599 0
第一章MCS-51单片机结构,单片机原理、接口及应用
实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计(上)
实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计(上)
932 0
实验三 基于FPGA的数码管动态扫描电路设计 quartus/数码管/电路模块设计(上)
一款LED段码显示屏驱动芯片方案
一、基本概述 TM1620是一种LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。 二、基本特性 采用CMOS工艺 显示模式(8段×6位~10段×4位) 辉度调节电路(8 级占空比可调) 串行接口(CLK,STB,DIN) 振荡方式:内置RC振荡 内置上电复位电路 内置数据锁存电路 内置针对LED反偏漏电导致暗亮问题优化电路 抗干扰能力强 封装形式:SOP20 三、主要应用 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电表等数码管或LED
143 0
Linux驱动入门(6.2)按键驱动和LED驱动 --- 将逻辑电平与物理电平分离
Linux驱动入门(6.2)按键驱动和LED驱动 --- 将逻辑电平与物理电平分离
699 0
LabVIEW控制Arduino驱动数码管(基础篇—11)
利用LIAT中的数码管显示函数库,通过LabVIEW软件控制Arduino Uno控制板,将特定的数据显示在单个数码管上,实现数码管的滚动显示。
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
415 1
复习单片机:串口通信(内含:1.代码部分+2.串口内部结构+3.串口控制寄存器 SCON+4.电源控制寄存器 PCON+5. 串口的使用方法+6.硬件设计+7.实验现象)
【STC15单片机】初始化程序原理
【STC15单片机】初始化程序原理
314 0
单片机入门3.驱动蜂鸣器
单片机入门3.驱动蜂鸣器
226 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等