文章目录1.引言2. 基本结构与原理2.1 结构与原理2.2 字段码3. 译码方式3.1 硬件译码方式3.2 软件译码方式4. 显示方式4.1 静态显示方式4.2 动态显示方式5. 硬件译码静态显示5.1 参考代码5.2 运行效果6. 软件译码动态显示6.1 参考代码6.2 运行效果7. 串口扩展并行输出链接数码管7.1 参考代码7.2 运行效果8. 总结1.引言在之前的讲解中到多少我们用到都是led灯的显示我们称职为点灯大师也就是一些基础入门的东西学了点皮毛。今天还是讲led灯但是已经由灯珠提升到了数码管。由亮与灭两种型号提示到了显示数字和部分字母。目前广泛使用的显示器主要有数码管显示LED显示和液晶显示LCD显示数码管显示虽然显示信息简单只能显示16进制数和小数字符但是有显示清晰、亮度高、使用电压低、寿命长、接口方便等特点。2. 基本结构与原理2.1 结构与原理数码管显示器是由二极管按一定的结构组合起来的显示器件。通常都是8段式。单个8段式LED数码管显示器的引脚如图所示其中a、b、c、d、e、f、g和小数点dp为8段发光二极管。内部连接有两种结构即共阴极和共阳极。共阴极8段发光二极管的阴极端连接在一起阳极端分开控制使用时公共端接地要使那根发光二极管亮则对应的阳极端接高电平。共阳极8段发光二极管的阳极端连接在一起阴极端分开控制使用时公共端接地要使那根发光二极管亮则对应的阴极端接低电平。选通数码管数码管显示器显示时公共端首先要保证有效即共阴极结构公共端接低电平共阳极结构公共端接高电平。这个过程就是选通数码管。字段码选通数码管后在另一端发送要显示数字的编码。8位数码管字段码未8位从高到低位的顺序依次为dp、g、f、e、d、c、b、a2.2 字段码显示字符共阴极字段码(十六进制)共阴极字段码二进制03FH00111111106H0000011025BH0101101134FH01001111466H0110011056DH0110110167DH01111101707H0000011187FH0111111196FH01101111A77H01110111B7CH01111100C39H00111001D5EH01011110E79H01111001F71H01110001灭00H00000000显示字符共阳极字段码(十六进制)共阳极字段码二进制0C0H110000001F9H111110012A4H101001003B0H10110000499H10011001592H10010010682H100000107F8H11111000880H10000000990H10010000A88H10001000B83H10000011CC6H11000110DA1H10100001E86H10000110F8EH10001110灭FFH111111113. 译码方式译码方式 是指由显示字符转换得到对应的字段码的方式。包含硬件译码方式和软件译码方式3.1 硬件译码方式硬件译码方式是指利用专门的硬件电路来实现显示字符到字段码的转换.比如CD4511:一种常见的十进制BCD-----共阴极7段数码管字段码转换芯片具有BCD转换、消隐、和锁存控制功能能提供较大的拉电流可直接驱动共阴极LED数码管。输入为一位十进制数的4位BCD码输出为7段式的共阴极字段码。D0、D1、D2、D3:也称为A、B、C、D引脚是BCD 码输入端A为最低位。a、b、c、d、e、f也称为QA、QB、QC、QD、QE、QF引脚7段式共阴极字段码输入端。LT:灯测试端加高电平时显示器正常显示加低电平时显示器一直显示数码“8”。BL:也称为BI,消隐功能端低电平时所有字段均消隐乘车显示时BI端加高电平。LE:数据传送锁存控制端低电平时传输数据高电平时锁存。特点拒绝伪码当输入的数据超过十进制数据91001是显示字形自动消隐。硬件译码要显示一个数字只需要送出这个数字的4位二进制编码即可软件开销小。需呀增加硬件译码芯片造价相对较高。3.2 软件译码方式软件译码就是编写软件译码程序。通过程序得到要显示字符的字段码。译码程序通常为查表程序软件开销较大但硬件线路简单在实际系统中经常用到。4. 显示方式有静态显示方式和动态显示方式两种。4.1 静态显示方式原理静态显示时其公共端直接接地共阴极或接电源共阳极各段选线分别与I/O接口线相连。要显示字符直接在I/O线发送相应的字段码。4.2 动态显示方式原理动态显示是将所有的数码管的段选线并接在一起用一个I/O 接口控制公共端不是直接接地(共阴极)或电源(共阳极)而是通过相应的I/O接口线控制。从计算机的角度看每个数码管隔一段时间才显示一次但由于人的视觉暂留效应只要间隔的时间足够短循环的周期足够快每秒达到24 次以上看起来数码管就一直稳定显示了这就是动态显示的原理。而这个周期对于计算机来说很容易实现所以在单片机中经常用到动态显示。5. 硬件译码静态显示【例】硬件译码静态显示在上面数码管显示2在下面数码管显示35.1 参考代码#includereg51.hmain(){P20x22;// P2.4 低电平,选择上面数码管出2P20x13;// P2.5 低电平,选择下面数码管出3while(1);}5.2 运行效果图中两位共阴极数码管硬件译码静态显示的接口电路。用到两个共阴极数码管,采用静态显示方式连接公共端直接接地。字段码输入端接 CD4511的输出端它们的字段码分别由字段码译码芯片 CD4511译码产生两片 CD4511的BCD输入端并联在一起接51系列单片机P2口的低4位灯测试端LT和消隐功能端BI都直接接电源第一片 CD4511的LE接P2.4第二片 CD4511的LE接P2.5分别用来对两片CD4511选通锁存。操作时如果使P2.4为低电平通过P2口的低4 位输出一个数字则在第一个数码管显示相应的数字。如果使P2.5为低电平通过P2口的低4位输出一个数字则在第二个数码管显示相应的数字。6. 软件译码动态显示6.1 参考代码#includereg51.h#includeabsacc.h#defineucharunsignedchar#defineuintunsignedintvoiddelay(uint);voiddisplay(void);uchar disbuffer[8]{5,2,0,1,3,1,4,4};voidmain(void){while(1){display();}}voiddelay(uint i)// 延时{uint j;for(j0;ji;j){}}voiddisplay(void)//显示{uchar codevalue[16]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 0~F 字段码表uchar chocode[8]{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};// 位选表uchar i,p,temp;for(i0;i8;i){tempchocode[i];P2temp;pdisbuffer[i];tempcodevalue[p];P0temp;delay(20);}}6.2 运行效果7. 串口扩展并行输出链接数码管7.1 参考代码#includereg51.h#includeintrins.h#defineucharunsignedchar#defineuintunsignedintuchar disbuffer[]{2,2,2,2};voiddisplay(void){uchar i;uchar codevalue[16]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};for(i0;i4;i){SBUFcodevalue[disbuffer[i]];while(!TI){;}TI0;}}voiddelay(uint i){uint j;for(j0;ji;j){}}voidmain(){uchar k,m;SCON0x00;while(1){for(k0;k16;k){for(m0;m4;m){disbuffer[m]km;}display();delay(50000);}}}7.2 运行效果8. 总结从基本结构与原理共阴/共阳极、字段码到译码方式硬件与软件译码再到静态与动态两种显示方式。通过三个具体实例硬件译码静态显示、软件译码动态显示、串口扩展并行输出展示了不同应用场景下的实现方法为单片机开发中的数码管应用提供了全面的技术参考。