动态显示与按键消抖

上传人:wu****ei 文档编号:248160413 上传时间:2024-10-22 格式:PPT 页数:44 大小:2.93MB
返回 下载 相关 举报
动态显示与按键消抖_第1页
第1页 / 共44页
动态显示与按键消抖_第2页
第2页 / 共44页
动态显示与按键消抖_第3页
第3页 / 共44页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版标题样式,三、IO应用-LED数码管,X 位X 段数码管,dp g f e d c b a,D7 D6 D5 D4 D3 D2 D1 D0,8段LED,段码是按格式,:,如下图,显示位,段码位,dp g f e d c b a,D7 D6 D5 D4 D3 D2 D1 D0,显示位,段码位,1,1,0,0,0,0,0,0,即为:0 xC0,LED数码管 显示“0”编码,dp g f e d c b a,D7 D6 D5 D4 D3 D2 D1 D0,显示位,段码位,1,1,1,1,1,0,0,1,即为:0 xF9,LED数码管 显示“1”编码,七段,共阳数码管,显示数据表,LED数码管显示器的显示方法有两种:,静态显示,和,动态扫描显示,。,(一)LED数码管的,显示,方法,LED静态,显示,例:利用,2位LED静态显示“12”,#include,unsigned char d1=,0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;,void main(),P0=0 xff;,P2=0Xff;,while(1),P0=d11;/笔段码,P2=d12;/笔段码,思考:如是实现 显示完“12”延时一会儿有显示“34”呢?,#include,unsigned char d1=,0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;,void delay(int m),unsigned int i,j;,for(i=0;im;i+),for(j=0;j200;j+);,void main(),P0=0 xff;,P2=0Xff;,while(1),P0=d11;/笔段码”1”,P2=d12;/笔段码”2”,delay(100);,P0=d13;/笔段码”3”,P2=d14;/笔段码”4”,delay(100);,静态显示:,就是每一个LED数码管都单独和一个I/O接口相连,CPU只要把欲显示的字型代码送到某个I/O口上,就可以使对应的LED数码管显示所需的数字或符号,此后,即使CPU不再向它输出其它字型码,显示的内容也不会消失。,优点:,显示程序十分简单,显示亮度大,节约CPU的工作时间,缺点:占用的I/O口线较多,硬件成本较高。,LED动态,显示,例2:2位LED动态扫描显示,(,显示:,12),笔段,位选,三极管“放大”和“开关”作用,显示“,1,”,显示“,2,”,0导通,1关闭,#include,unsigned char d1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;,void delay(int m),unsigned int i,j;,for(i=0;im;i+),for(j=0;j200;j+);,void main(),while(1),P0=d11;/笔段码,P2_1=0;P2_0=1;/位选码,delay(1);/延时,P2=0XFF;/消隐,P0=d12;/笔段码,P2_1=0;P2_0=1;,/位选码,delay(1);/延时,P2=0XFF;/消隐,显示十位数1,显示个位数2,动态扫描显示是指采用,分时,的方法,,轮流控制,各个显示器的公共端,使各个显示器轮流点亮。,虽然每个时刻只有一个数码管有效,但只要延时适当,由于人眼的“视觉暂留效应”(约20ms左右),看起来则是同时显示的。,其接口电路是把所有显示器的8个笔划段adp同名端并联接到I/O口上,而每一个显示器的公共极COM是各自独立地受I/O线控制。,在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的,视觉暂留现象,及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。,思考,:如何利用下面硬件电路显示:,123456,?,#include,unsigned char d1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;,unsigned char d2=0 xdf,0 xef,0 xf7,0 xfb,0 xfd,0 xfe;,void delay(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);/延时5ms,P0=0XFF;/消隐,6位LED动态扫描电路-,共阳电路连接,笔段码,位选码,0导通,1关闭,6位LED动态扫描电路-,共阴电路连接,笔段码,位选码,1导通,0关闭,四、IO应用 点阵(了解:自学),有兴趣了解一下点阵显示器,做广告用,一个好的单片机应用系统,通常要有优秀的人机交互接口。,键盘是与单片机进行人机交互的最基本的途径,其以按键的形式来设置控制功能或输入数据。,按键的输入状态本质上是一个开关量。人们通过键盘输入一些命令或数据,以达到控制单片机运行的目的。,常用的键盘有,独立式按键键盘,和,矩阵式按键键盘,两种。独立式按键接口简单,适合于简单而且少的开关量的输入。矩阵式按键键盘则适合于输入参数较多、功能复杂的系统,可以最大限度地使用单片机的引脚资源。,本小节主要介绍了独立式按键和矩阵式按键键盘输入的相关知识及其编程接口。,五、IO应用 按键(BUTTON),键盘通常使用机械触点式按键开关,其主要功能是把,机械上的通断转换,为,电气上的逻辑关系,(1和0)。,(一)独立按键,独立式键盘,电路设计时,,每个按键的一端,与,单片机的一个端口引脚,相连,另一端接地。,无键按下时,P1的3个I/O口均通过电阻接高电平,信息为“1”。,有键按下,将使对应的I/O口通过该键接地,信息为“0”。,独立式按键的程序设计比较简单,一般采用查询方式即可。,防抖动措施,为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。,键数较少时,,采用硬件去抖,;,键数较多时,,采用软件去抖,。,按键触点的机械抖动,“软件去抖”思想,软件上采取的措施:在检测到有按键按下时,执行一个,10ms,左右,(具体时间应视所使用的按键进行调整),的延时程序,,再确认,该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动的影响。,任务:键控闪烁灯,#include,void 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 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:键控花样流水灯,请大家思考,根据流程图采用C51编出任务程序!,下节课用带来检查,并计入平时成绩!,例2:,2位十进制按键计数器,(00,99),请大家思考,采用C51编出任务程序,并画出流程图!,下节课用带来检查,并计入平时成绩!,单片机系统中,若使用按键较多时,通常采用矩阵式键盘,其结构如下图所示。,(二)矩阵按键(,keyboard,),行列式键盘,由图可知,一个44,的行、列结构,可以构成一个含有,16,个按键的键盘,节省了很多I/O口。,识别,矩阵键盘,按键的方法,1、行扫描法;2、线反转法,判断哪一行有键按下,写端口(0 xf0):行线电平=0;列线电平=1。,读端口进行判断:若P1=0 xf0没有按键压下;,若P1,0 xf0某行有键压下W1,判断哪一列有键按下,写端口(0 x0f):行线电平=1;列线电平=0。,读端口进行判断:若P1=0 x0f没有按键压下;,若P1,0 x0f某列有键压下W2,将W1与W2相“或”并存于W(形成键值),闭合键所在行、列的状态均为0,其余皆为1。,利用查表比对法求出闭合按键的键模。,线反转法思路,vcc,P10,P11,P12,P13,P14,P15,P16,P17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,AT89C51,R1,R2,R3,R4,P10,P11,P12,P13,P14,P15,P16,P17,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2,3,0,1,2,3,AT89C51,EE DE BE 7E,ED DD BD 7D,EB DB BB 7B,E7 D7 B7 77,例1:,矩阵键盘识别,利用LED来显示按键。,#include,unsigned char code table=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 x88,0 x83,0 xC6,0 xA1,0 x86,0 x8E;,unsigned char w;,void delay();/申明函数,void key_scan();,void key_tran();,void main(),P1=0XFF;/输入初始化,P0=0 x00;/LED开始不亮,while(1)/保证系统一直运行,key_scan();/键盘扫描程序,key_tran();/键值译码并显示,void key_scan(),unsigned char w1,w2;,P1=0 x0F;,w1=P1,if(w1!=0 x0F),delay();/软件延时去抖动,P1=0 xF0;,w2=P1,w=(w1|w2);/求出相应的键值。,while(P1!=0 xF0);/等待释放按键,else,w=0 xFF;,void key_tran(),switch(w),case 0 xEE:P0=table0;break;,/LED显示0,case 0 xED:P0=table1;break;,/LED显示1,case 0 xEB:P0=table2;break;,/LED显示2,case 0 xE7:P0=table3;break;,/LED显示3,case 0 xDE:P0=table4;break;,/LED显示4,case 0 xDD:P0=table5;break;,/LED显示5,case 0 xDB:P0=table6;break;,/LED显示6,case 0 xD7:P0=table7;break;,/LED显示7,case 0 xBE:P0=table8;break;,/LED显示8,case 0 xBD:P0=table9;break;,/LED显示9,case 0 xBB:P0=table10;break;,/LED显示A,case 0 xB7:P0=table11;break;,/LED显示B,case 0 x7E:P0=table12;break;,/LED显示C,case 0 x7D:P0=table13;break;,/LED显示D,case 0 x7B:P0=table14;break;,/LED显示
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!