补充数码管显示.pptx
将笔画与字节对应后,我们把由8个笔画的状态(逻辑状态)组成的数称为字型(段)码,或简称笔画码。对于共阳数码管:(1)显示“3”时,笔画为“10110000 B”,即“B0H”。(2)显示“5”时,笔画为“10010010 B”,即“92H”。对于共阴数码管:(1)显示“2”时,笔画为“01011011 B”,即“5BH”。(2)显示“7”时,笔画为“00000111 B”,即“07H”,等等。第1页/共18页字符字符共阴顺序小数点暗共阴顺序小数点暗共阳顺序小数点暗共阳顺序小数点暗dp g f e d c b a十六进制数十六进制数dp g f e d c b a十六进制数十六进制数00 0 1 1 1 1 1 13FH1 1 0 0 0 0 0 0C0H10 0 0 0 0 1 1 006H1 1 1 1 1 0 0 1F9H20 1 0 1 1 0 1 15BH1 0 1 0 0 1 0 0A4H30 1 0 0 1 1 1 14FH1 0 1 1 0 0 0 0B0H40 1 1 0 0 1 1 066H1 0 0 1 1 0 0 199H50 1 1 0 1 1 0 16DH1 0 0 1 0 0 1 092H60 1 1 1 1 1 0 17DH1 0 0 0 0 0 1 082H70 0 0 0 0 1 1 107H1 1 1 1 1 0 0 0F8H80 1 1 1 1 1 1 17FH1 0 0 0 0 0 0 080H90 1 1 0 1 1 1 16FH1 0 0 1 0 0 0 090HA0 1 1 1 0 1 1 177H1 0 0 0 1 0 0 088HB0 1 1 1 1 1 0 07CH1 0 0 0 0 0 1 183HC0 0 1 1 1 0 0 139H1 1 0 0 0 1 1 0C6HD0 1 0 1 1 1 1 05EH1 0 1 0 0 0 0 1A1HE0 1 1 1 1 0 0 179H1 0 0 0 0 1 1 086HF0 1 1 1 0 0 0 171H1 0 0 0 1 1 1 08EH表1 LED数码管字型编码表第2页/共18页(a)硬件译码法示意图)硬件译码法示意图3 数码管接口电路数码管接口电路(1)在设计数码管接口电路时,根据笔画段(a、b、c、g、dp)的连接方法可以分为“硬件译码法”和“软件译码法”两种。硬件译码法的特点是CPU输出的是BCD码,由译码芯片产生笔画驱动码,图2(a)是硬件译码法的结构框图,图 2(b)是硬件译码法的一个应用实例。第3页/共18页 (b)硬件译码法应用实例结合图结合图 2(b),若将内存),若将内存20H单元中的数据(低单元中的数据(低4位)显示,则指令如下:位)显示,则指令如下:CLR P1.7;让译码器;让译码器4511 处于显示状态处于显示状态MOV P1,20 H;20H单元数据送单元数据送 P1口口第4页/共18页4511译码器资料第5页/共18页3(a)软件译码法示意图)软件译码法示意图 3(b)软件译码法应用实例)软件译码法应用实例软件译码法的特点是CPU直接输出的是a、b、c、g、dp 笔画码(如驱动电流不够,则加驱动芯片),图3(a)、(b)是软件译码法的结构框图和应用实例。第6页/共18页结合图3(b),欲显示内存20H单元的内容的主要程序为:DISP:MOV A,20 H;取20H单元数据MOV DPTR,#TAB;定义字型码首地址MOVC A,A+DPTR;查表转换成字型码MOV P1,A;送P1口显示TAB:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4DB 92H,82H,0F8H,80H,90H ;5,6,7,8,9DB 88H,83H,0C6H,0A1H,86H,8EH ;A,B,C,D,E,F第7页/共18页图图4 静态方式示例静态方式示例(2)在设计数码管接口电路时,根据“公共端”的接法可以分为“静态方式”和“动态方式”两种。静态方式:是指公共端固定接地(共阴)或固定接电源(共阳),各数码管间的笔画段是独立的,这样数码管一直处于工作状态。静态方式耗电大,但亮度足,适合数码管位数少时应用,同时程序设计也比较简单。图4是静态方式的应用实例(笔画段的限流电阻略)。第8页/共18页 静态方式的编程:当数据需要刷新时,直接向相应数码管的笔画端口发送信息就可以。以图4为例,设LED1、LED2、LED3、LED4对应的显示内存单元分别为40H、41H、42H、43H,4个数码管对应的I/O口地址为PORT_1、PORT_2、PORT_3、PORT_4,则显示部分的程序如下:MOV DPTR,#TAB;字型码表首地址;字型码表首地址MOV A,40H;取数据;取数据MOVC A,A+DPTR;查表转换成字型码;查表转换成字型码MOV DPTR,#PORT_1;定义;定义LED1端口地址端口地址MOVX DPTR,A;LED1显示完成显示完成第9页/共18页MOV DPTR,#TAB;字型码表首地址MOV A,41H;取数据MOVC A,A+DPTR;查表转换成字型码MOV DPTR,#PORT_2;定义LED2端口地址MOVX DPTR,A;LED2 显示完成MOV DPTR,#TAB;字型码表首地址MOV A,42H;取数据MOVC A,A+DPTR;查表转换成字型码MOV DPTR,#PORT_3;定义LED3端口地址MOVX DPTR,A;LED3 显示完成MOV DPTR,#TAB;字型码表首地址MOV A,43H;取数据MOVC A,A+DPTR;查表转换成字型码MOV DPTR,#PORT_4;定义LED4端口地址MOVX DPTR,A;LED4 显示完成TAB:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4DB 92H,82H,0F8H,80H,90H;5,6,7,8,9第10页/共18页 动态方式:是指公共端接有可控元件(比如三极管、门电路等),各数码管间的笔画段可以并联接,数码管是否工作取决于控制元件的状态,通过控制元件可以使数码管工作,也可以让其不工作。动态过程由程序扫描实现,所以程序相对较难。这种方式亮度稍暗(与静态方式比较而言,通过增加瞬时电流,配合高亮数码管,亮度可以满足要求),但动态方式的优点是十分明显的,即耗电省,在动态扫描过程中,任何时刻只有一个数码管是处于工作状态的。动态方式适合数码管位数相对较多时采用。图5是动态方式的一个应用实例。所有位的段码线所有位的段码线相应段并在一起,由一个相应段并在一起,由一个8位位I/O口控制口控制,形成,形成段码线的多路复用,段码线的多路复用,各位的各位的公共端公共端分别由相应的分别由相应的I/O线控制,形线控制,形成各位的成各位的分时选通。分时选通。第11页/共18页图5 动态方式应用实例第12页/共18页下图下图为为8位位LED动态显示的过程动态显示的过程。图(图(a)是显示过程,是显示过程,某一时刻,只有一位某一时刻,只有一位LED被选通显示,其被选通显示,其余位则是熄灭的;余位则是熄灭的;图(图(b)是实际显示结果,是实际显示结果,人眼看到的是人眼看到的是8位稳定位稳定的的同时显示同时显示 的字符。的字符。第13页/共18页4 动态扫描程序设计 在动态方式的结构中,我们将提供笔画码的端口称为“段(码)口”,与各数码管公共端所接的口称为“位(置)口”。另外,为使扫描程序具有较好的移植性,我们在内存中指定一块数据缓冲区(称显示缓冲区),显示程序的功能就是将显示缓冲区内的数据分别显示在各个数码管的位置上。考虑到程序的总体结构,显示程序设计成子程序,动态扫描流程如图6所示。第14页/共18页图6 动态扫描流程图第15页/共18页结合图5,设显示缓冲区的地址为40H、41H、42H、43H共4个单元,段(码)口地址为PORT_D,位(置)口地址为PORT_W,根据图7-6所示流程,写出动态扫描的程序如下:DISP:MOV R0,#40H ;设置缓冲区首地址MOV R7,#4;设置数码管个数(也即循环次数)MOV R2,#11111110 B ;设置首位数码管工作的位状态,0 选中DIS:MOV A,R2;取位状态MOV DPTR,#PORT_W ;指向位(置)口MOVX DPTR,A;选中位(将LED位置状态数据送位口)MOV A,R0;取缓冲区数据MOV DPTR,#TAB;定义表格首地址MOVC A,A+DPTR;查表转换成LED笔画码MOV DPTR,#PORT_D ;指向段(码)口MOVX DPTR,A;LED笔画码送段码口LCALL DELAY;等待1msINC R0 ;显示缓冲区地址MOV A,R2;LED位置调整第16页/共18页RL AMOV R2,ADJNZ R7,DIS;4次扫描是否完成RET;根据时钟频率调整 R5的初始数据或改变循环体内的语句,可以改变延时量。DELAY:MOV R5,#250;12MHz时约1 msDL:NOP NOP DJNZ R5,DL RET;下面是按照共阳数码管顺序排列建立的字型表,实际设计时要根据数码管的内部结构(共阳或共阴)以及笔画的实际线路(顺序、倒序或其他),修改下面表格的内容。TAB:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4DB 92H,82H,0F8H,80H,90H;5,6,7,8,9DB 88H,83H,0C6H,0A1H,86H,8EH;A,B,C,D,E,F在系统中,显示程序可以放在主程序的循环体中,也可以放在定时器中断服务程序中,后者扫描更加均匀。在不是很复杂的系统中两者效果差不多。第17页/共18页感谢您的观看。第18页/共18页