单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,5.4,数码管驱动与程序设计,目 录,LED,数码管,数码管驱动电路,段码表的生成,数码管的动态扫描显示,数字符号与数值的关系,LED数码管的内部结构,单个,LED,数码管,单个数码管就是用,8,个独立的,LED,发光二极管按照“日”字形排列起来的。,在实际应用中,一般会将,8,个,LED,的阳极或者阴极并联在一起组成数码管。,由此可见,,一个数码管至少有,9,个引入端,其中,a,h,被定义为段选端,并联在一起的公共端,com,被定义为位选 端。,8,个独立的,LED,发光二极管,abcdefgh,COM,COM,abcdefgh,共阴,:阴极并联,共阳,:阳极并联,a,b,c,d,e,f,g,h,为了方便地控制数码管的每个笔段,相应地将数码管的每个笔段分别命名为,a,h,。,LED数码管的工作原理,abcdefgh,GND,+5V,abcdefgh,共阴极数码管,共阳极数码管,笔段发光:,位选端输入低电平,0,;,段选端输入高电平,1,。,a,b,c,d,e,f,g,h,a,b,c,d,e,f,g,h,笔段发光:,位选端输入低电平,1,;,段选端输入高电平,0,。,COM,COM,10000000,10000000,通过控制笔段发光,数码管可以,显示数字,0,9,,以及一些字母符号,等。,单个共阳极数码管LN3161BS,abcdefgh,com,com,a,b,c,d,e,f,g,h,1,6,10,9,8,5,4,2,3,7,Vcc,P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0,LN3161BS,引脚结构图,它有,10,个管脚,,2,个内部相连的,com,端,1,和,6,,,8,个位选端。,LN3161BS,测试电路,将段选端,a,h,连接到单片机的,P0,口,则通过程序即可控制笔段的亮灭。,与单片机相连,R8 1k,R7 1k,R6 1k,R5 1k,R4 1k,R3 1k,R2 1k,R1 1k,一个数码管只能显示,1,位数字,如果要,显示多位数字怎么办?,方法一:将多只单个数码管并接在一起。,缺 点:,4,位并列的数码管就需要,4 8=32,根段,选信号,管脚过多,连线复杂。,方法二:,动态扫描方式,进行数码管显示。,优 点:不增加段选信号线,利用人眼的视觉暂,留效应,使数字轮流显示来实现。,1,0,0,1,1,0,0,1,10011001,abcdefgh,com,com,a,b,c,d,e,f,g,h,1,6,10,9,8,5,4,2,3,7,4位动态数码管,3,5,10,1,2,4,7,11,6,8,9,12,COM1 COM2 COM3 COM4,3,5,10,1,2,4,7,11,6,8,9,12,COM1 COM2 COM3 COM4,LN3461AS,四位动态共阴数码管内部结构,LN3461BS,四位动态共阳数码管内部结构,段 选 端 复 用,段 选 端 复 用,采用段选端复用的方法,仅需,12,个,管脚。,两者外型尺寸大小、管脚的排列顺,序和名称完全一样。,4,位数码管管脚排列图,目 录,LED,数码管,数码管驱动电路,段码表的生成,数码管的动态扫描显示,数字符号与数值的关系,TinyView数码管电路组成,TinyView,数码管电路,4,位共阳数码管,LN3461BS,限流电阻,PNP,型三极管,单片机,I/O,口驱动能力不够,增加三极管以提高,com,口的电流驱动能力,与单片机相连,目 录,LED,数码管,数码管驱动电路,段码表的生成,数码管的动态扫描显示,数字符号与数值的关系,笔段与数值的对应关系,a,b,c,d,e,f,g,h,+5V,hgfedcba,共阳极数码管,11111110,数码管有,8,个笔段,每个笔段有亮和灭两种状态,则每个数码管有,2,8,=256,种显示组合,去掉“点(,h,)”,其余,7,个笔段有,2,7,=128,种显示组合。,笔段数值对应关系表,笔段,h,g,f,e,d,c,b,a,数值,0 x7f,0 xbf,0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe,11111101,11111011,11110111,11101111,11011111,10111111,01111111,假设将,a,h,对应,8,位二进制数的,0,7,位:,七段共阳极数码管段码表,数字,h,g,f,e,d,c,b,a,数值,a,b,c,d,e,f,g,h,假设将,a,h,对应,8,位二进制数的,0,7,位:,0,1,1,0,0,0,0,0,0,0 xC0,1,1,1,1,1,1,0,0,1,0 xF9,2,1,0,1,0,0,1,0,0,0 xA4,3,1,0,1,1,0,0,0,0,0 xB0,4,1,0,0,1,1,0,0,1,0 x99,5,1,0,0,1,0,0,1,0,0 x92,6,1,0,0,0,0,0,1,0,0 x82,7,1,1,1,1,1,0,0,0,0 xF8,8,1,0,0,0,0,0,0,0,0 x80,9,1,0,0,1,0,0,0,0,0 x90,A,1,0,0,0,1,0,0,0,0 x88,b,1,0,0,0,0,0,1,1,0 x83,C,1,1,0,0,0,1,1,0,0 xC6,d,1,0,1,0,0,0,0,1,0 xA1,E,1,0,0,0,0,1,1,0,0 x86,F,1,0,0,0,1,1,1,0,0 x8E,实验1TinyView段码表生成,8,个开关控制数码管的,8,个显示段,,JP1,与,JP36,的,segA,segH,连接,将,JP36,的,com,连接到与,K9,相连的,JP1,位选控制开关,8,个段选控制开关,当位选控制开关,K9,拨到位置,0,时,三极管导通,,com1,被拉到高电平,,K1,K8,对段选端的控制才有效。,假设将,K1,K8,对应,8,位二进制数的,0,7,位,,通过实验验证:笔段数值对应关系表和七段共阳极数码管段码表。,实验24位数码管显示1234,实验分析:只要求在,4,位数码管上显示,1234,,但并没有要求在同一时间显示数字。,实现方法:每次只让一个数码管显示。将与,K9,相连的,JP1,先与,JP36,中的,com1,相连,拨动,K1,K8,在第,1,个数码管上显示正确的数字;然后将,K9,拨到控制,com2,,,依此类推,实现在,4,个数码管上分别显示,1234,。,实验步骤:,第,1,个数码管显示,1,;,第,2,个数码管显示,2,;,第,3,个数码管显示,3,;,第,4,个数码管显示,4,。,根据段码表,拨到显示字符“,1,”的位置,1111 1001,与,com1,相连,根据段码表,拨到显示字符“,2,”的位置,1010 0100,与,com2,相连,根据段码表,拨到显示字符“,3,”的位置,1011 0000,与,com3,相连,根据段码表,拨到显示字符“,4,”的位置,1001 1001,与,com4,相连,好像有点投机取巧,对实际有什么作用呢,目 录,LED,数码管,数码管驱动电路,段码表的生成,数码管的动态扫描显示,数字符号与数值的关系,数码管的动态扫描显示实验电路,与,P1,口相连,相当于,K1,K8,位置,分别与,P3.0,、,P3.1,、,P3.2,、,P3.3,相连,替代手动拨插连接它们的引线,动态扫描,:每次只有一位数码管显示,即在实际操作过程中数字是轮流显示的,但只要轮流操作的速度达到一定的范围,人眼看到的将是整体显示的效果。,数码管的动态扫描显示程序实现,.AREAHOME(ABS,CODE),.ORG 0 x0000,Start:MOV P1,#0 xF9 ;,等效:将,K1K8,拨到显示字符“,1”,的位置,CLR P3.0 ;,等效:将,com1,连接到,K9,(,0,电平),ACALL Delay ;,延时,SETB P3.0 ;,等效:拔掉,com1,的连接线,MOV P1,#0 xA4 ;,等效:将,K1K8,拨到显示字符“,2”,的位置,CLR P3.1 ;,等效:将,com2,连接到,K9,(,0,电平),ACALL Delay ;,延时,SETB P3.1 ;,等效:拔掉,com2,的连接线,MOV P1,#0 xB0 ;,等效:将,K1K8,拨到显示字符“,3”,的位置,CLR P3.2 ;,等效:将,com3,连接到,K9,(,0,电平),ACALL Delay ;,延时,SETB P3.2 ;,等效:拔掉,com3,的连接线,MOV P1,#0 x99 ;,等效:将,K1K8,拨到显示字符“,4”,的位置,CLR P3.3 ;,等效:将,com4,连接到,K9,(,0,电平),ACALL Delay ;,延时,SETB P3.3 ;,等效:拔掉,com4,的连接线,SJMP Start;,返回,Start,,循环执行程序,在第,1,位数码管显示字符“,1,”,在第,2,位数码管显示字符“,2,”,在第,3,位数码管显示字符“,3,”,在第,4,位数码管显示字符“,4,”,0 xF9,:,1111 1001,字符“,1,”的数值,将,0 xF9,送往,P1,口,即数码管的段选端,segA,segH,P3.0,置,0,,三极管,Q11,导通,,com1,被拉高,第,1,位数码管将显示字符“,1,”,延时长短:在保证数码管显示亮度的前提下尽量短,P3.0,置,1,,三极管,Q11,关闭,第,1,位数码管的所有笔段全部熄灭,第,1,位数码管显示“,1,”,熄灭第,1,位数码管,第,2,位数码管显示“,2,”,熄灭第,2,位数码管,第,3,位数码管显示“,3,”,熄灭第,3,位数码管,第,4,位数码管显示“,4,”,熄灭第,4,位数码管,流程图,1,0,0,1,1,1,1,1,10011111,0,1,1,0,数码管的动态扫描显示实验现象,人眼看到的最终效果:,第,1,位数码管显示“,1,”,熄灭第,1,位数码管,第,2,位数码管显示“,2,”,熄灭第,2,位数码管,第,3,位数码管显示“,3,”,熄灭第,3,位数码管,第,4,位数码管显示“,4,”,熄灭第,4,位数码管,流程图,abcdefgh,com1,com2,com3,com4,动态扫描,:每次只有一位数码管显示,即在实际操作过程中数字是轮流显示的,但只要轮流操作的速度达到一定的范围,人眼看到的将是整体显示的效果。,目 录,LED,数码管,数码管驱动电路,段码表的生成,数码管的动态扫描显示,数字符号与数值的关系,数字符号的意义,1,?,1,个,2,?,2,个,对小孩而言,只有将数字字符和具体的事物联系起来,才能真正理解数字的含义,,对机器而言同样如此,。,数字符号只有和具体的事物联系起来才有意义,否则将什么也不是。,让单片机能够识别数字字符,在上一个实验中,显示了“,1234,”,但单片机并“不知道”显示的“,1234,”是什么意思?,如何让单片机“知道”这些数字符号呢?,在数字字符和数值之间建立对应的关系,。,比如,数字“,1”,和数值“,0 xF9”,之间的对应关系,即数值“,0 xF9”,在数码管上显示的符号就是数字“,1”,。“段码表”既建立了数字与数值之间的这种联系。,如何用程序来实现呢?,将这些无序的数据列成表格,。如:,对,Table,表格的数据,可以用指令“,MOVC A,A+DPTR”,查找,其所查的表地址是由“,DPTR”,寄存器(,16,位)和,A,寄存器(,8,位)相加而来,所以可以将,DPTR,的数值固定在,Table,不动,而用,A,寄存器做查表指针。当,A,的数值为,09,时,其所指向的地址偏移量正好是数值所对应的数字符号。,Table