1.数码管结构
数码管是由几个发光二极管组合在一起而形成的显示装置,实际工作、生活中数码管有着广泛的应用,例如图3-12所示的压力锅面板、时钟面板及交通灯等。
图3-12 数码管的应用
数码管外形如图3-13a所示。组成数码管的每一个发光二极管称为数码管的“段”,以一位8段LED数码管为例,共有7段组成一个“日”字形,分别定义为数码管的a、b、c、d、e、f、g段,另外再加上一个用于小数显示的小数点dp(或h)段,如图3-13b所示。
图3-13 数码管结构图
a)外形 b)结构 c)共阴极 d)共阳极
在数码管内部,这8只LED一端接在一起与公共端COM相连。LED的负极连在一起构成的数码管称为共阴极数码管,如图3-13c所示;LED的正极连在一起构成的数码管称为共阳极数码管,如图3-13d所示。
2.单片机驱动数码管工作原理
图3-14所示电路中,P0口连接共阳极数码管,P3口连接共阴极数码管。当使用单片机的I/O接口控制一位显示输出时,最好选择共阳极数码管,这样电路采用灌电流方式,数码管直接受控于I/O接口。否则,当连接的是共阴极数码管时,需在I/O接口上添加上拉电阻来提高I/O接口的驱动能力。
下面以P0口连接的共阳极数码管为例简述数码管的工作原理。共阳极数码管公共端COM接5V电源,当单片机从P0的I/O接口输出“1”时,数码管内部LED灭,当单片机从P0的I/O接口输出“0”时,数码管内部LED亮。例如,P0.7~P0.0端送数据11111001(0F9H)到七段数码管的a~g、dp引脚时,数码管内部的b、c段LED发光,显示出数字“1”。如果单片机送出数据11111000,a、b、c段的LED发光,数码管会显示数字“7”。也就是说,单片机送出不同的数据(称为字形码),可以让七段数码管显示不同的字符,这也就是我们常说的译码。共阳极七段数码管常见的字形码见表3-46。共阴极数码管的字形码刚好为共阳极的反码。
表3-46 共阳极七段数码管常见字形码
【例3-10】 如图3-14所示,实现共阳极数码管0~9循环显示。
解答:流程图与例3-9基本相同,此处略去。程序如下:
ORG 0000H(www.xing528.com)
图3-14 单片机与数码管连接电路
END
本例与例3-9基本相同,有所区别是
(1)循环条件
例3-9中循环条件为
CJNE A,#88H,DISPLAY
即在表格中添加了停止的标志字节“88H”,如判断到表格数据为“88H”则跳转。而本例中采用循环条件为
CJNE R0,#10,MAIN
没有判断停止的标志字节“88H”,而是记录了存储于R0的查表次数,判断查表次数是否为10次。
(2)查表方式(MOVC A,@A+DPTR)
例3-9中,查表过程是通过改变寄存器DPTR的内容,即“INC DPTR”,来查询表格的下一个空间,而本例中则通过改变累加器A中内容(MOV A,R0……INC R0)来指向下一处的表格内容。小提示
读者可以自行尝试“CJNE A,#88H,DISPLAY”配合“INC A”的编程方式,体会不同的程序结构,这样更具有工程价值。
想一想:1)本例改为9~0循环;
2)本例改为0~99循环显示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。