LED数码管显示.ppt
51系列单片机 LED数码管显示数码管显示电子教研组电子教研组 吴治国吴治国发光二极管发光二极管LED(Light Emitting Diode)显示器、显示器、液晶液晶LCD(Liquid Crystal Display)显示器、显示器、CRT显示显示器等。器等。LED、LCD显示器有两种显示结构:段显示显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(段、米字型等)和点阵显示(58、88点阵点阵等)。等)。 单片机系统中常用的显示器单片机系统中常用的显示器共阴极数码管共阴极数码管 仅当段位接高电平,阴极接低电平时,相仅当段位接高电平,阴极接低电平时,相应位的应位的LED才导通发光才导通发光a b c d e f g bp共阳极数码管共阳极数码管 仅当段位接低电平,阳极接高电平时,相仅当段位接低电平,阳极接高电平时,相应位的应位的LED才导通发光才导通发光a b c d e f g bpVcc七段数码管的段位控制七段数码管的段位控制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 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 七段数码管的段位控制七段数码管的段位控制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 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 七段数码管与段位控制代码七段数码管与段位控制代码03FH106H25BH34FH466H56DH67DH707H87FH96FHA77Hb7CHC39Hd5EHE79HF71HabcdefgC51构造数据类型构造数据类型一、数组一、数组 一维数组一维数组 一维数组的定义一维数组的定义 类型说明符类型说明符 数组名数组名元素个数元素个数;如:如:int a50; 一维数组的初始化一维数组的初始化 int a5=1,2,3,4,5;/*给全部元素赋值给全部元素赋值*/int b6=1,2,6;/*给部分元素赋值给部分元素赋值*/int d10;d0=4;d1=6; /*定义完定义完后再赋值后再赋值*/ 二维数组二维数组 二维数组的定义二维数组的定义类型说明符类型说明符 数组名数组名行数行数 列数列数;如:如:float a34; 二维数组的初始化二维数组的初始化int a34=1,2,3,4,5,6,7,8,9,10,11,12;/*全部初始化全部初始化*/ int a34=1,2,3,4,5,6,7,8,;/*部分初始化,部分初始化,a20= a21= a22= a23= 0*/C51还可以定义多维数组,也可以定义字符型数组。还可以定义多维数组,也可以定义字符型数组。数组是十分有用的数据类型,用它可以形成容易查找的数组是十分有用的数据类型,用它可以形成容易查找的数据表格。数据表格。锁存器锁存器上升沿写入上升沿写入段位控制码段位控制码锁存器锁存器下降沿锁存下降沿锁存段位控制码段位控制码38线译码器选择数码管线译码器选择数码管选择数码管选择数码管接数码管阴极接数码管阴极74HC138是是38线译码线译码器,任何时候器,任何时候Y7Y0只只能有一个输出为能有一个输出为“0”数码管的静态显示数码管的静态显示#includevoid Main(void)P2=0;/选择最左边的数码管选择最左边的数码管P0=0 x6d;/显示数字显示数字“5”P2端口只有低三位可以用来选择数码管端口只有低三位可以用来选择数码管练习与思考练习与思考 练习:练习: 在最右边的数码管上显示数字在最右边的数码管上显示数字“9” 思考:思考: 在本电路中,按照静态显示方法,有没有可能在本电路中,按照静态显示方法,有没有可能让两个数码管同时显示相同的数字?让两个数码管同时显示相同的数字?练习练习 在在8个个LED数码管上,按从左到右的顺序,数码管上,按从左到右的顺序,循环滚动显示数字循环滚动显示数字“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,观察到什么现象?,观察到什么现象?数码管的动态显示数码管的动态显示 任务:任务: 在在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,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 x7f,0 x6f;使用使用code,程序编译后,则将数组,程序编译后,则将数组table保保存到程序存储器存到程序存储器(FLASH),否则就会保存,否则就会保存到数据存储器(到数据存储器(RAM)RAM是单片机的是单片机的“紧缺资源紧缺资源”,能省则省,能省则省练习练习 在在8个个LED当中,选择靠右边的当中,选择靠右边的4个个LED显显示数字示数字“3210”void Main(void)unsigned char i = 7;while(1)P0 = table7-i; P2 = LEDi;Delay(2);i-;if(i = 3)i = 7; 练习练习 在在8个个LED上显示计算机教研室的电话号码上显示计算机教研室的电话号码“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;/HELLOunsigned char code table8=0 x00,0 x00,0 x00,0 x00,0 x73,0 x77,0 x6d,0 x6d;/PASSvoid 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 = i;/点亮一个数码管点亮一个数码管Delay(2);/延时延时2msi+;/移位移位if(i = 8) i = 0;/重新开始重新开始小结小结Thank you