《补充第4讲数码管编程.ppt》由会员分享,可在线阅读,更多相关《补充第4讲数码管编程.ppt(47页珍藏版)》请在优知文库上搜索。
1、补充第补充第4讲讲 LED数码管显示数码管显示数码管是如何显示出字符的数码管是如何显示出字符的数码管静态显示原理数码管静态显示原理数码管动态显示原理数码管动态显示原理应用案例应用案例显示器及其接口显示器及其接口单片机系统中常用的显示器有:发光二极管LED(Light Emitting LED(Light Emitting Diode)Diode)显示器、液晶LCD(Liquid Crystal LCD(Liquid Crystal Display)Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(58、88点阵等)。LED LED数
2、码显示方式及电路数码显示方式及电路 静态显示方式静态显示方式LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个静态显示的特点是每个数码管的段选必须接一个8 8位数位数据线来保持显示的字形码。据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。动态显示动态显示 动态显示的特点是将所有位数码管的段选段选线并联在一起,由位选位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的
3、位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。LED LED数码显示方式及电路数码显示方式及电路 共阴极数码管 仅当段位接高电平,阴极接低电平时,相应位的LED才导通发光a b c d e f g bp共阳极数码管 仅当段位接低电平,阳极接高电平时,相应位的LED才导通发光a b c d e f g bpVcc 使用使用LED显示器时,要注意区分这两种不同的接法。为了显显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一示数字或字符,
4、必须对数字或字符进行编码。七段数码管加上一个小数点,共计个小数点,共计8段。因此为段。因此为LED显示器提供的编码正好是一个显示器提供的编码正好是一个字节。字节。abcdegGNDfdpGNDabcefgddpabcdefgdpdpgfedcba5V(a)(b)共阴极共阳极共阴数码管码表 0 x3f ,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 1 2 3 4 5 0 x7d,0 x07,0 x7f ,0 x6f,0 x77,0 x7c,6 7 8 9 A B 0 x39,0 x5e,0 x79,0 x71,0 x00 C D E F 无显示七段数码管的段位控制agdbce
5、fdpdp g f e d c b a 0 0 1 1 1 1 1 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 0 0 0 0 1 1 0 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 0 1 1 0 1 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 0 1 1 1 1 1 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 0 0 1 1 0 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 0 1 1 0 1 七段数码
6、管的段位控制agdbcefdpdp g f e d c b a 0 1 1 1 1 1 0 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 0 0 0 0 1 1 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 1 1 1 1 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 0 0 1 1 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 1 0 1 1 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 1
7、1 1 0 0 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 0 1 1 1 0 0 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 0 1 1 1 1 0 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 1 1 0 0 1 七段数码管的段位控制agdbcefdpdp g f e d c b a 0 1 1 1 0 0 0 1 七段数码管与段位控制代码03FH106H25BH34FH466H56DH67DH707H87FH96FHA77Hb7CHC39Hd5EHE79HF71Ha ab bc
8、cd de ef fg gn 锁存器锁存器:就是把单片机的输出的数先存起来,可以让单片机继续做其它事.n 比如74LS74LS373373,74HC,74HC573573就是一种锁存器 它的LE为高的时候,数据就可以通过它.当为低时,它的输出端就会被锁定,即为刚才通过的数据,这样,就可以保持这个状态.锁存器锁存器只有在有锁存信号时输入的状态被保存到输出,直到下一个锁存信号。通常只有0和1两个值。典型的逻辑电路是D触发器。由若干个钟控D触发器构成的一次能存储多位二进制代码的时序逻辑电路,叫锁存器件。逻辑结构与功能表8位锁存器74LS373的逻辑图见图所示。其中使能端G加入CP信号,D为数据信号。
9、输出控制信号为0时,锁存器的数据通过三态门进行输出。锁存器上升沿写入上升沿写入段位控制码段位控制码锁存器下降沿锁存下降沿锁存段位控制码段位控制码38线译码器选择数码管选择数码管选择数码管接数码管阴极接数码管阴极74HC13874HC138是是3 38 8线译码线译码器,任何时候器,任何时候Y7Y0Y7Y0只只能有一个输出为能有一个输出为“0 0”ALEWRRDRXDTXDINT0EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P05
10、34P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10VCC40GND20U189C52PSENP10P11P12P13P14P15P16P17T0T1INT1P00P01P02P03P04P05P06P07P00P01P02P03P04P05P06P07P20P21P22P23P24P25P26P27P20P21P22P23abfcgdeDPY117421105ab cd e fg3dpdpabfcgdedpabfcgdedpabfcgdedpC06C28C39C412LEDDPY 4-LED12
11、345678161514131211109R1KP00P01P02P03P04P05P06P075V数码管的静态显示#includevoid Main(void)P2=0;/选择最左边的数码管P0=0 x6d;/显示数字“5”P2P2端口只有低三位可以用来选择数码管端口只有低三位可以用来选择数码管练习与思考 练习:在最右边的数码管上显示数字“9”思考:在本电路中,按照静态显示方法,有没有可能让两个数码管同时显示相同的数字?74HC13874HC138是是3 38 8线译码器,任何时线译码器,任何时候候Y7Y0Y7Y0只能有一个输出为只能有一个输出为“0 0”练习 在8个LED数码管上,按从左到
12、右的顺序,循环滚动显示数字“5”,每次滚动延时500ms数码管的滚动显示#includeunsigned char LED;void Delay(unsigned int milisec)/延时1msunsigned int i,j;for(i=milisec;i0;i-)/双重for循环实现延时1msfor(j=110;j0;j-);void Main(void)P0=0 x6d;/显示数字“5”while(1)for(LED=0;LED=7;LED+)P2=LED;/选择LED,实现滚动显示Delay(500);/延时500ms观察 对于上一个练习,逐步减少每次滚动的延时,直到减为2ms,
13、观察到什么现象?数码管的动态显示 任务:在8个LED上稳定地显示“01234567”分析:8个LED的对应段位是并联在一起的,只能通过控制阴极电位来选择允许哪个LED发光 t1时刻允许LED0显示“0”t2时刻允许LED1显示“1”8个LED轮流显示,只要切换速度足够快,看上去就是8个LED都在稳定地显示数码管的动态显示(数据准备)#includeunsigned char code table10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char code LED8=0,1,2,3,4,5,6,
14、7;void Delay(unsigned int milisec)/延时1msunsigned int i,j;for(i=milisec;i0;i-)for(j=110;j0;j-);数码管的动态显示(主函数)void Main(void)unsigned char i=0;while(1)P0=tablei;/取一个数的段位码P2=LEDi;/点亮一个数码管Delay(2);/延时2msi+;/移位if(i=8)i=0;/重新开始定义数组unsigned char code table10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0
15、 x7f,0 x6f;使用code,程序编译后,则将数组table保存到程序存储器(FLASH),否则就会保存到数据存储器(RAM)RAM是单片机的“紧缺资源”,能省则省练习 在8个LED当中,选择靠右边的4个LED显示数字“3210”void Main(void)void Main(void)unsigned char i=7;unsigned char i=7;while(1)while(1)P0=table7-i;P0=table7-i;P2=LEDi;P2=LEDi;Delay(2);Delay(2);i-;i-;if(i=3)if(i=3)i=7;i=7;练习 在8个LED上显示某教
16、研室的电话号码“68752219”显示某教研室的电话号码#includeunsigned char code table10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char code Number8=6,8,7,5,2,2,1,9;void Delay(unsigned int milisec)/延时1msunsigned int i,j;for(i=milisec;i0;i-)for(j=110;j0;j-);void Main(void)unsigned char i=0,j;while(1)j=Numberi;/取一个待显示的数P0=tablej;/取一个数的段位码P2=i;/点亮一个数码管Delay(2);/延时2msi+;/移位if(i=8)i=0;/重新开始显示某教研室的电话号码显示“HELLO”或“PASS”#include/unsigned char code table8=/0 x00,0 x00,0 x00,0 x76,0 x79,0 x38,0 x38,0 x3f;