动态显示与按键消抖

上传人:夏** 文档编号:568561136 上传时间:2024-07-25 格式:PPT 页数:44 大小:2.99MB
返回 下载 相关 举报
动态显示与按键消抖_第1页
第1页 / 共44页
动态显示与按键消抖_第2页
第2页 / 共44页
动态显示与按键消抖_第3页
第3页 / 共44页
动态显示与按键消抖_第4页
第4页 / 共44页
动态显示与按键消抖_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《动态显示与按键消抖》由会员分享,可在线阅读,更多相关《动态显示与按键消抖(44页珍藏版)》请在金锄头文库上搜索。

1、单击此处编辑母版标题样式单击此处编辑母版标题样式三、三、IOIO应用应用 - LED - LED数码管数码管X 位位X 段数码管段数码管单击此处编辑母版标题样式单击此处编辑母版标题样式单击此处编辑母版标题样式单击此处编辑母版标题样式dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D08段段LED,段码是按格式,段码是按格式:如下图如下图显示位显示位段码位段码位单击此处编辑母版标题样式单击此处编辑母版标题样式dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0显示位显示位段码位段码位11000000即为:0xC0LED数码管 显示“0”编码单击

2、此处编辑母版标题样式单击此处编辑母版标题样式dp g f e d c b aD7 D6 D5 D4 D3 D2 D1 D0显示位显示位段码位段码位11111001即为:0xF9LED数码管 显示“1”编码单击此处编辑母版标题样式单击此处编辑母版标题样式七段七段共阳数码管共阳数码管显示数据表显示数据表单击此处编辑母版标题样式单击此处编辑母版标题样式 LED数码管显示器的显示方法有两种: 静态显示和动态扫描显示。(一)LED数码管的显示方法单击此处编辑母版标题样式单击此处编辑母版标题样式LED静态显示 单击此处编辑母版标题样式单击此处编辑母版标题样式例:例: 利用利用2位位LED静态显示静态显示“

3、12” 单击此处编辑母版标题样式单击此处编辑母版标题样式#includeunsigned char d1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void main()P0=0xff;P2=0Xff;while(1)P0=d11; /笔段码P2=d12; /笔段码思考:如是实现思考:如是实现 显示完显示完“12”延时一会儿有显示延时一会儿有显示“34”呢?呢?单击此处编辑母版标题样式单击此处编辑母版标题样式#includeunsigned char d1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8

4、,0x80,0x90; void delay(int m) unsigned int i,j; for (i=0; im; i+) for(j=0; j200;j+) ;void main()P0=0xff;P2=0Xff;while(1)P0=d11; /笔段码笔段码”1”P2=d12; /笔段码笔段码”2” delay(100);P0=d13; /笔段码笔段码”3”P2=d14; /笔段码笔段码”4” delay(100); 单击此处编辑母版标题样式单击此处编辑母版标题样式 静态显示静态显示: : 就是每一个就是每一个LEDLED数码管都单独和一个数码管都单独和一个I/OI/O接口接口相连

5、,相连,CPUCPU只要把欲显示的字型代码送到某个只要把欲显示的字型代码送到某个I/OI/O口上,就可以使对应的口上,就可以使对应的LEDLED数码管显示所需的数字数码管显示所需的数字或符号,此后,即使或符号,此后,即使CPUCPU不再向它输出其它字型码,不再向它输出其它字型码,显示的内容也不会消失。显示的内容也不会消失。 优点:优点:显示程序十分简单,显示亮度大,节约显示程序十分简单,显示亮度大,节约CPU的工作时间的工作时间 缺点:占用的缺点:占用的I/O口线较多,硬件成本较高。口线较多,硬件成本较高。单击此处编辑母版标题样式单击此处编辑母版标题样式LED动态显示 单击此处编辑母版标题样式

6、单击此处编辑母版标题样式例例2:2位位LED动态扫描显示动态扫描显示(显示:显示:12)笔段笔段位选位选三极管三极管“放大放大”和和“开关开关”作用作用显示“1”显示“2”0导通1关闭单击此处编辑母版标题样式单击此处编辑母版标题样式#includeunsigned char d1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void delay(int m) unsigned int i, j; for (i=0; im; i+) for (j=0; j200;j+) ; void main()while(1)P0=d11; /笔段码笔

7、段码P2_1=0; P2_0=1; /位选码位选码 delay(1); /延时延时P2=0XFF; /消隐消隐 P0=d12; /笔段码笔段码P2_1=0; P2_0=1; /位选码位选码delay(1); /延时延时P2=0XFF; /消隐消隐 显示十位数1显示个位数2单击此处编辑母版标题样式单击此处编辑母版标题样式 动态扫描显示是指采用动态扫描显示是指采用分时分时的方法,的方法,轮流控制轮流控制各个显示各个显示器的公共端,使各个显示器轮流点亮。器的公共端,使各个显示器轮流点亮。 虽然每个时刻只有一个数码管有效,但只要延时适当,虽然每个时刻只有一个数码管有效,但只要延时适当,由于人眼的由于人

8、眼的“视觉暂留效应视觉暂留效应”(约约20ms左右左右),看起来则是,看起来则是同时显示的。同时显示的。 其接口电路是把所有显示器的其接口电路是把所有显示器的8个笔划段个笔划段adp同名端并同名端并联接到联接到I/O口上,而每一个显示器的公共极口上,而每一个显示器的公共极COM是各自独立是各自独立地受地受I/O线控制。线控制。 在轮流点亮扫描过程中,每位显示器的点亮时间是极为在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约短暂的(约1ms),但由于人的),但由于人的视觉暂留现象视觉暂留现象及发光二极管及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要的余辉效应,尽管实际

9、上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。不会有闪烁感。单击此处编辑母版标题样式单击此处编辑母版标题样式思考思考:如何利用下面硬件电路显示:如何利用下面硬件电路显示:123456?单击此处编辑母版标题样式单击此处编辑母版标题样式#includeunsigned char d1= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 ;unsigned char d2= 0xdf,0xef,0xf7,0xfb,0xfd,0xfe ;void d

10、elay ( int m) ; void main()unsigned char i;P0=0XFF;P2=0XFF; while(1)for (i=0; i6; i+) P0=d1i+1; /送笔段码送笔段码P2=d2i; /送位选码送位选码delay(1); /延时延时5msP0=0XFF;/消隐消隐单击此处编辑母版标题样式单击此处编辑母版标题样式6位位LED动态扫描电路动态扫描电路-共阳电路连接共阳电路连接笔段码位选码0导通1关闭单击此处编辑母版标题样式单击此处编辑母版标题样式6位位LED动态扫描电路动态扫描电路-共阴电路连接共阴电路连接笔段码位选码1导通0关闭单击此处编辑母版标题样式单

11、击此处编辑母版标题样式四、四、IOIO应用应用 点阵(了解:自学)点阵(了解:自学)有兴趣了解一下点阵显示器有兴趣了解一下点阵显示器做广告用做广告用单击此处编辑母版标题样式单击此处编辑母版标题样式 一个好的单片机应用系统,通常要有优秀的人机交互接口。一个好的单片机应用系统,通常要有优秀的人机交互接口。键盘是与单片机进行人机交互的最基本的途径,其以按键的形键盘是与单片机进行人机交互的最基本的途径,其以按键的形式来设置控制功能或输入数据。式来设置控制功能或输入数据。 按键的输入状态本质上是一个开关量。人们通过键盘输入按键的输入状态本质上是一个开关量。人们通过键盘输入一些命令或数据,以达到控制单片机

12、运行的目的。一些命令或数据,以达到控制单片机运行的目的。 常用的键盘有常用的键盘有独立式按键键盘独立式按键键盘和和矩阵式按键键盘矩阵式按键键盘两种。独两种。独立式按键接口简单,适合于简单而且少的开关量的输入。矩阵立式按键接口简单,适合于简单而且少的开关量的输入。矩阵式按键键盘则适合于输入参数较多、功能复杂的系统,可以最式按键键盘则适合于输入参数较多、功能复杂的系统,可以最大限度地使用单片机的引脚资源。大限度地使用单片机的引脚资源。 本小节主要介绍了独立式按键和矩阵式按键键盘输入的相本小节主要介绍了独立式按键和矩阵式按键键盘输入的相关知识及其编程接口。关知识及其编程接口。五、五、IO应用应用 按

13、键(按键(BUTTON)单击此处编辑母版标题样式单击此处编辑母版标题样式 键盘通常使用机械触点式按键开关,其主要功能是键盘通常使用机械触点式按键开关,其主要功能是把把机械上的通断转换机械上的通断转换为为电气上的逻辑关系电气上的逻辑关系(1和和0)。)。单击此处编辑母版标题样式单击此处编辑母版标题样式(一)独立按键(一)独立按键 独立式键盘独立式键盘电路设计时,电路设计时,每个按键的一端每个按键的一端与与单片机的单片机的一个端口引脚一个端口引脚相连,另一端接地。相连,另一端接地。 无键按下时,无键按下时,P1的的3个个I/O口均通过电阻接高电平,信息为口均通过电阻接高电平,信息为“1” 。 有键

14、按下,将使对应的有键按下,将使对应的I/O口通过该键接地,信息为口通过该键接地,信息为“0” 。 独立式按键的程序设计比较简单,一般采用查询方式即可。独立式按键的程序设计比较简单,一般采用查询方式即可。单击此处编辑母版标题样式单击此处编辑母版标题样式防抖动措施防抖动措施 为了克服按键触点机械抖动所致的检测误判,必须采为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。取去抖动措施,可从硬件、软件两方面予以考虑。键数较少时,键数较少时,采用硬件去抖采用硬件去抖;键数较多时,键数较多时,采用软件去抖采用软件去抖。 按键触点的机械抖动单击此处编辑母版标题样式单击

15、此处编辑母版标题样式“软件去抖软件去抖”思想思想 软件上采取的措施:在检测到有按键按下时,执行一个软件上采取的措施:在检测到有按键按下时,执行一个10ms左右左右(具体时间应视所使用的按键进行调整)(具体时间应视所使用的按键进行调整)的延时程序,的延时程序,再确再确认认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动的影响。则确认该键处于闭合状态,从而消除抖动的影响。单击此处编辑母版标题样式单击此处编辑母版标题样式任务:键控闪烁灯单击此处编辑母版标题样式单击此处编辑母版标题样式#include vo

16、id Delayms(unsigned char); /具体定义省略具体定义省略void main(void) /main函数函数 P2_0 =1; /按键初始化,防止误读按键初始化,防止误读while(1) /保证系统一直运行保证系统一直运行if (P2_0=0) /如果有按键按下如果有按键按下 Delayms(10); /延时去抖动延时去抖动 if (P2_0 =0) /再次确认按键再次确认按键 P2_7 = P2_7; while (P2_0 =0); /等待按键释放等待按键释放 单击此处编辑母版标题样式单击此处编辑母版标题样式#include sbit LED = P2_7; sbit

17、 KEY = P2_0; void Delayms(unsigned char);void main(void) /main函数函数 KEY=1; /按键初始化按键初始化while(1) /死循环,保证系统一直运行死循环,保证系统一直运行if (KEY=0) /如果有按键按下如果有按键按下 Delayms(10); /延时去抖动延时去抖动 if (KEY=0) /再次确认按键再次确认按键 LED = LED; /将将LED取反取反 while (KEY=0); /等待松开等待松开 单击此处编辑母版标题样式单击此处编辑母版标题样式例例2 2:键控花样流水灯:键控花样流水灯单击此处编辑母版标题样式

18、单击此处编辑母版标题样式请大家思考,根据流程图采用请大家思考,根据流程图采用C51编出任务程序!编出任务程序!下节课用带来检查,并计入平时成绩!下节课用带来检查,并计入平时成绩!单击此处编辑母版标题样式单击此处编辑母版标题样式例例2:2: 2 2位十进制按键计数器位十进制按键计数器(00009999)请大家思考,采用请大家思考,采用C51编出任务程序,并画出流程图!编出任务程序,并画出流程图!下节课用带来检查,并计入平时成绩!下节课用带来检查,并计入平时成绩!单击此处编辑母版标题样式单击此处编辑母版标题样式 单片机系统中,若使用按键较多时,通常采单片机系统中,若使用按键较多时,通常采用矩阵式键

19、盘,其结构如下图所示。用矩阵式键盘,其结构如下图所示。(二)矩阵按键(二)矩阵按键( keyboard )单击此处编辑母版标题样式单击此处编辑母版标题样式行列式键盘行列式键盘 由图可知,一个由图可知,一个44的行、列结构,可以构成一个含的行、列结构,可以构成一个含有有16个按键的键盘,节省了很多个按键的键盘,节省了很多I/O口。口。 单击此处编辑母版标题样式单击此处编辑母版标题样式识别识别矩阵键盘矩阵键盘按键的方法按键的方法1、行扫描法;、行扫描法; 2、线反转法、线反转法单击此处编辑母版标题样式单击此处编辑母版标题样式判断哪一行有键按下判断哪一行有键按下写端口(写端口(0xf0):行线电平)

20、:行线电平=0;列线电平;列线电平=1。读端口进行判断:若读端口进行判断:若P1 = 0xf0没有按键压下;没有按键压下; 若若P10xf0某行有键压下某行有键压下W1判断哪一列有键按下判断哪一列有键按下写端口(写端口(0x0f):行线电平):行线电平=1;列线电平;列线电平=0。读端口进行判断:若读端口进行判断:若P1 = 0x0f没有按键压下;没有按键压下; 若若P1 0x0f某列有键压下某列有键压下W2 将将W1与与W2相相“或或” 并存于并存于W(形成键值)(形成键值) 闭合键所在行、列的状态均为闭合键所在行、列的状态均为0,其余皆为,其余皆为1。 利用查表比对法求出闭合按键的键模。利

21、用查表比对法求出闭合按键的键模。 线反转法思路线反转法思路单击此处编辑母版标题样式单击此处编辑母版标题样式vccP10P11P12P13P14P15P16P170123456789101112131415AT89C51R1R2R3R4单击此处编辑母版标题样式单击此处编辑母版标题样式P10P11P12P13P14P15P16P17012345678910111213141501230123AT89C51 EE DE BE 7E ED DD BD 7D EB DB BB 7B E7 D7 B7 77 单击此处编辑母版标题样式单击此处编辑母版标题样式单击此处编辑母版标题样式单击此处编辑母版标题样式例

22、例1 1:矩阵键盘识别,利用矩阵键盘识别,利用LEDLED来显示按键。来显示按键。单击此处编辑母版标题样式单击此处编辑母版标题样式#includeunsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82, 0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E;unsigned char w; void delay(); /申明函数void key_scan(); void key_tran();void main()P1=0XFF; /输入初始化输入初始化P0=0x00; /LED开始不亮开始不亮

23、while(1) /保证系统一直运行保证系统一直运行key_scan(); /键盘扫描程序键盘扫描程序key_tran(); /键值译码并显示键值译码并显示单击此处编辑母版标题样式单击此处编辑母版标题样式void key_scan() unsigned char w1,w2; P1=0x0F; w1=P1&0x0F; if(w1!=0x0F) delay(); /软件延时去抖动 P1=0xF0; w2=P1&0xF0; w=(w1|w2); /求出相应的键值。 while(P1!=0xF0); /等待释放按键 else w=0xFF; 单击此处编辑母版标题样式单击此处编辑母版标题样式void

24、key_tran() switch(w) case 0xEE: P0=table0;break; / LED显示0 case 0xED: P0=table1;break; / LED显示1 case 0xEB: P0=table2;break; / LED显示2 case 0xE7: P0=table3;break; / LED显示3 case 0xDE: P0=table4;break; / LED显示4 case 0xDD: P0=table5;break; / LED显示5 case 0xDB: P0=table6;break; / LED显示6 case 0xD7: P0=table7

25、;break; / LED显示7 case 0xBE: P0=table8;break; / LED显示8 case 0xBD: P0=table9;break; / LED显示9 case 0xBB: P0=table10; break; / LED显示A case 0xB7: P0=table11; break; / LED显示B case 0x7E: P0=table12; break; / LED显示C case 0x7D: P0=table13; break; / LED显示D case 0x7B: P0=table14; break; / LED显示E case 0x77: P0=table15; break; / LED显示F default:break; 单击此处编辑母版标题样式单击此处编辑母版标题样式Question & Answer任何建议和疑问,请不要犹豫!任何建议和疑问,请不要犹豫!刘强:刘强:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号