第4章-3数码管按键_第1页
第4章-3数码管按键_第2页
第4章-3数码管按键_第3页
第4章-3数码管按键_第4页
第4章-3数码管按键_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,4.5.1.2LED数码管原理与编程,LED显示元件人机交互输出设备,其作用是指示中间运行结果与运行状态。,使数码管显示某字形,只需输入该字形所对应的数据编码,即字形码。,共阳极,“1”,0,1,1,0,0,0,0,0,0 x06,“2”,1,1,0,1,1,0,1,0,0 x5b,共阴极,数码管显示的原理,共阴极数码管常用字符字形编码(十六进制),不同LED组合关系(显示码)形成不同的显示字符,LED显示器工作方式有两种:静态显示方式和动态显示方式。所谓静态显示,就是当显示器显示某个字符时,相应的发光二极管恒定地导通或截止。所有位选线(数码管公共端)连接在一起,每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。,静态显示,静态显示,0,1,1,0,0,0,0,0,静态显示:当数码管显示某个字符时,相应的发光二极管恒定地导通或截止。,单片机I/O与数码管直接连接,AT89C51,1,01100000,11011010,1,把一个共阴极的数码管接到AT8951单片机的P2口上,编程实现让此数码管显示数字0。,数码管直连单片机I/O的程序设计,#include/*包含头文件reg51.h*/voidmain()/*无返回值的主程序*/P2=0 x3f;,实例4LED数码管显示,P0口连接一个共阴极数码管,使之循环显示09,分析:将显示码循环输出到P0口即可实现循环显示。但由于数字09的显示段码没有规律可循,需要采取查表方式进行操作:,将显示码按序存放在一个数组中,顺序号与代表的显示字符相对应。(如,charled_mod=x1,x2,.,xn)通过循环变量指定待送出的数组元素,参考程序,实例5计数显示器,对按键动作进行计数和显示,达到99后重新由1开始计数。,个位LED接P2口,十位LED接P0口(共阴型),按钮接P3.7口线,按压时为0电平,分析:,读P3.7口,进行加1计数和超界处理;拆分计数器数值个位、十位;查找/输出显示码到P0和P2口。,计数值拆分:取模运算(%)个位整除10运算(/)十位,查找/输出显示码:按拆分值输出相应数组元素,#include0;i-);,参考程序,voidmain(void)count=0;/计数器赋初值P0=tablecount/10;/取出计数值的十位数,送P0口输出P2=tablecount%10;/取出计数值的个位数,送P2口输出while(1)if(P37=0)/如果P37为低电平,键盘按下delay(10);/软件延时10ms,软件去抖动if(P37=0)/确实是键盘按下了count+;/计数器加1if(count=100)count=0;P0=tablecount/10;P2=tablecount%10;while(P37=0);/等待按键松开,防止重复计数,程序运行效果,课后思考题,1,读懂例5,并能给其他同学讲述程序工作过程,及编程思路.,4.1C51的程序结构4.2C51的数据结构4.3C51与汇编语言的混合编程4.4C51仿真开发环境4.5C51初步应用编程4.5.1IO端口的简单应用4.5.2IO端口的进阶实践,4.5.2.1数码管动态显示原理与编程,两种显示接口:静态显示接口和动态显示接口,静态显示接口:一个数码管的引脚独立占据一根I/O口线。优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。缺点:占用资源较多,动态显示接口:将所有位数码管的段选线并联在一起,而每位数码管的公共端分别由一位I/O线控制,由位选线控制哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。,工作原理:采用快速切换方式(如10ms),每一时刻只有一只数码管导通工作。利用视力暂留特性,可获得连续显示效果。优点:占用资源较少缺点:占用机时较多(需要CPU随时刷新显示值),实例6数码管动态显示,采用共阴极动态LED显示原理,显示字符“L2”。,分析:Proteus中的双联LED数码管相当于两个并联的数码管。,7SEG-MPX2-CC-BLUE,Blue,2Digit,7-segmentCathodeDisplay,A-G“0 x38”,1#“0”,2#“1”,A-G“0 x5b”,1#“1”,2#“0”,进一步说明其工作原理,P2led_mode0,P3xxxxxx10B=2P2led_mode1,P3xxxxxx01B=1,led_mode=0 x38,0 x5b,动态显示“L2”的程序如下:,;,/LED“指针”,/显示字模,完整的主函数,#includecharled_mod=0 x38,0 x5B;/LED字模“L2”voiddelay(unsignedinttime);sbitP17=P17;voidmain()charled_point=0;while(1)P3=2-led_point;/输出LED位码P2=led_modled_point;/输出字模led_point=1-led_point;/刷新LED位码delay(30);,编程界面,运行效果图,键盘接口,一、键盘是单片机应用系统中使用最广泛的一种数据输入设备。键盘是一组按键的组合。键通常是一种常开型按钮开关,常态下键的两个触点处于断开状态,按下键时它们才闭合(短路)。,非编码键盘按组成结构又可分为独立式键盘和矩阵式键盘。独立式键盘的工作过程与矩阵式键盘类似,无论是硬件结构还是软件设计都比较简单。,通常,键盘有编码和非编码两种。编码键盘通过硬件电路产生被按按键的键码和一个选通脉冲。选通脉冲可作为CPU的中断请求信号。这种键盘使用方便,所需程序简单,但硬件电路复杂,常不被单片机采用。,特点:每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单。适用于所需按键较少的场合。,特点:电路连接复杂,但提高了I/O口利用率,软件编程较复杂。适用于需使用大量按键的场合。,1键盘的任务(1)判别是否有键按下?如果有,进入下一步。(2)识别是哪一个键被按下,并求出相应的键值。(3)根据键值,执行相应键值对应的处理程序。2按键的识别键的闭合与否,体现在行线电压的高电平或低电平。如果为高电平,表示键断开;如果是低电平,则表示键闭合,通过对行线电平的高低状态的检测,可确认按键按下还是断开与否。,二、非编码键盘常见的为两种结构:独立式键盘和矩阵式键盘。(1)独立式键盘特点是:一键一线,各键相互独立,每个键各接一条I/O口线,通过检测I/O输入线的电平状态,可容易地判断哪个按键被按下,如图1所示。,独立式键盘接口电路,图中的上拉电阻保证按键释放时,输入检测线上有稳定的高电平。当某一按键按下时,对应的检测线就变成了低电平,与其他按键相连的检测线仍为高电平,只需读入I/O输入线的状态,判别哪一条I/O输入线为低电平,很容易识别哪个键被按下。优点:电路简单,软件编写简单。适用于键盘按键数目较少的场合,因为这种方式占用的I/O口线较多。,实例1独立按键识别,【要求】采用独立按键方式实现下述功能:开机时LED全熄,然后根据按键动作使相应灯亮,并将亮灯保持到按压其它键时为止。,独立按键每个按键都彼此独立地各占有一位I/O口线。特点是电路简单,但占用I/O口线较多。,按键的闭合电平为0,但LED的驱动电平为1,故不能直接将P0口的状态送到P1口,而应使其先取反再送出;,为使按键抬起后LED能保持先前的点亮状态,需要在按键未压下期间禁止向P2输出P0状态值。,【分析】,参考程序如下:,“取反”操作的优先级高于“与”操作,voidmain()charkey=0;/定义按键变量P2=0;/初始状态为灯全灭while(1)key=P0/有按键动作时,P0状态值送P2,编程界面和运行界面分别如下图,实例1运行效果,三、矩阵式键盘矩阵式(也称行列式)键盘用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图2所示,一个44的行、列结构可以构成一个16个按键键盘。在按键数目较多的场合,可节省I/O口线。,1.行扫描法:即逐行或逐列扫描查询法。,行线,列线,四、按键识别方法:,识别键盘有无键被按下的方法,分两步进行:,第1步:识别键盘有无键按下;,第2步:如有键被按下,识别出具体的按键。,扫描法:即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,若是全为1,则所按下的按键不在此列,进入下一列的扫描;若是不全为1,则所按下的按键必在此列,并且按键正是此列与读取到为低电平的行线的交点上。,矩阵键盘工作原理,P3.7-OP3.6-OP3.5-OP3.4-OP3.3-IP3.2-IP3.1-IP3.0-I,扫描第一列:PORTB=11101111读取值:PINBj16;j+)/查找按下键键值if(key_bufj=P3)returnj;,key_buf=0 xee,0 xde,0 xbe,0 x7e,0 xed,0 xdd,0 xbd,0 x7d,0 xeb,0 xdb,0 xbb,0 x7b,0 xe7,0 xd7,0 xb7,0 x77;,键模,实例7行列式键盘,要求:开机黑屏;按下任意按键后,数码管上显示该键的键值(0F);若没有新键按下,维持前次按键结果。,行列式键盘+静态数码显示,实例7程序流程图,完整程序,编程界面,程序运行效果,原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。,通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。,1.编程扫描方式,只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。,五、键盘的工作方式,单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。,2.定时扫描工作方式,利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。,3.中断工作方式,只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。,键盘所做的工作分为三个层次,如下图。,第1层:单片机如何来监视键盘的输入。三种工作方式:编程扫描定时扫描中断扫描。,第2层:确定具体按键的键号。体现在按键的识别方法上就是:扫描法;线反转法。,第3层:执行键处理程序。,按键在闭合和断开瞬间会因弹簧开关的变形产生电压波动,软件消抖法:延时10ms后再次扫描按键状态。若仍判为“闭合”说明确有键压下;若为“非闭合”说明是误动作。,按键抖动波形,键盘消抖原理:,例:矩阵式键盘举例,实例2中断扫描法行列式键盘,如何保证能快速响应按键操作,又不过多占用CPU时间?,中断扫描法只有在键盘有键按下时,才执行键盘扫描程序。如无键按下,CPU可不考虑键盘的存在。,查询扫描法需要花费很多CPU机时,在CPU任务繁重的情况下往往无法实现。,分析:增加一个或非门,利用按键压下时的电平产生INT0中断请求信号;键盘改在P1口(中断接P3.2)。,#includecharled_mod=0 x3f,;/显示自模charkey_buf=0 x11,;/按键键值bitkey_flag;/定义全局型bit变量,int0_key()interrupt0key_flag=1;,参考程序(略去延时和键扫描函数),实例2运行效果,行列式键盘将IO口分为行线和列线,按键跨接在行线和列线上,列线通过上拉电阻接正电源。,44行列式键盘,7407六高压输出缓冲器/驱动器,行列式键盘的特点:占用IO口线少,但软件过程复杂。,键值按键压下时形成的电平编码值,如0F,按键在闭合和断开瞬间会因弹簧开关的变形

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论