第07章 单片机应用系统中的按键与显示

《第07章 单片机应用系统中的按键与显示》由会员分享,可在线阅读,更多相关《第07章 单片机应用系统中的按键与显示(43页珍藏版)》请在文档大全上搜索。
1、授课教师:左敬龙授课教师:左敬龙电话:电话:1382868066013828680660短号:短号:6801268012邮箱:邮箱:单片机原理及应用单片机原理及应用按键的分类编码键盘 键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。非编码键盘 靠软件编程来识别的称为非编码键盘。 在单片机组成的各种系统中,用的最多的是非编码键盘。例如在洗衣机控制面板上,用非编码按键来设置洗衣机的功能。按键的抖动按键的抖动 图图7-1 7-1 按键与单片机的连接按键与单片机的连接 图图7-2 7-2 按键的抖动过程按键的抖动过程键盘的抖动时间一般为键盘的抖动时间一般为5
2、 510ms10ms,抖动现象会引起抖动现象会引起CPUCPU对对一次键操作进行多次处理,从而可能产生错误一次键操作进行多次处理,从而可能产生错误。消除抖动的方法: 硬件去抖动 采用RS触发器去抖动。 软件去抖动 检测到按键按下后,软件延时1020ms后再确认该键是否确实按下,消除抖动影响。单片机应用系统中的按键与显示独立式按键1矩阵式按键2发光二极管3LED数码管4独立式按键1液晶显示器5一、独立式按键特点: 1)各按键相互独立,电路配置灵活; 2)软件简单; 3)按键数量较多时,I/O线耗费较多,只适 用于按键数量较少的场合。图7-4 独立式按键电路图7-4(a) 独立式按键扫描C语言程序
3、如下:#includevoid delay10ms(void);void processk0(void);void processk1(void);void processk2(void);void main()unsigned char key;while(1)P1=0 xff;keyP1;if(P1!=0 xff)delay10ms();key=P1; else continue;while(P1!=0 xff);switch(key)case 0 xfe: processk0();break;case 0 xfd: processk1();break;case 0 xfb: proces
4、sk2();break;default: continue;练习有三个独立式按键的电路如图74(a)所示,当有按键P1.0按下时P0端口输出100的二进制值,P1.1按下时P0端口值加1,P1.2按下时P0端口值减1。二、矩阵式键盘特点:占用I/O线较少,适合按键数目较多的场合, 但软件较复杂。常用的键盘工作方式有查询方式和中断方式。图7-5 矩阵式键盘结构1 查询方式键盘扫描过程包括下列四个步骤(以图7-5为例): 判别键盘上有无按键按下。方法为列线(P1.4P1.7)置低电平,行线(P1.0P1.3)置输入状态(高电平“1”)。读行线的状态,若为全“1”,则键盘无按键按下;若不全为“1”,
5、则有按键按下。 去除按键的抖动影响。方法是当判别到有按键按下时,软件延时一段时间(一般为10 ms左右)后,再判断键盘状态,如果仍为有按键按下状态,则认为有一个确定的按键被按下。 求键值(键号)。按照图7-5中的16个按键,每行的行号依次为:0、1、2、3,列号依次为0、1、2、3,则闭合按键的键号可以用公式计算获得:键号=行号4+列号。 判断按键是否释放,按键闭合一次仅进行一次按键功能操作,等按键释放以后再将键号送入累加器A中,然后执行按键指定的功能操作。实时查询定时查询#include#include#define uchar unsigned char#define uint unsig
6、ned int/矩阵键盘按键特征码表uchar code KeyCodeTable=0 x11,0 x12,0 x14,0 x18,0 x21,0 x22,0 x24,0 x28,0 x41,0 x42,0 x44,0 x48,0 x81,0 x82,0 x84,0 x88;void DelayMS(uint x)uchar i;while(x-) for(i=0;i120;i+);例:数码管显示例:数码管显示4X44X4矩阵键盘按键号矩阵键盘按键号 按下任意键时,数码管都会显示其键的序号,扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加不同的值,从而得到按键的序号。 /键盘扫描uch
7、ar Keys_Scan()uchar sCode,kCode,i,k;P1=0 xf0; if(P1&0 xf0)=0 xf0) return (-1);DelayMS(2); /若高4位出现0,则有键按下if(P1&0 xf0)=0 xf0) return (-1);sCode=0 xfe;/行扫描码初值for(k=0;k4;k+) /对4行分别进行扫描P1=sCode;if(P1&0 xf0)=0 xf0) sCode=_crol_(sCode,1);continue;kCode=P1;for(i=0;i16;i+) /查表得到按键序号并返回if(kCode=Ke
8、yCodeTablei) return i; /主程序void main()uchar i,P2_LED,P3_LED;uchar KeyNo=-1;/按键序号,-1表示无按键while(1) KeyNo=Keys_Scan();/扫描键盘获取按键序号KeyNo if(KeyNo!=-1) P2_LED=0 xff;P3_LED=0 xff;for(i=0;i=KeyNo;i+) if(i=1;elseP2_LED=1;P3=P3_LED; /点亮条形LEDP2=P2_LED;2 中断扫描 当键盘上有按键闭合时产生中断请求,单片机响应中断请求后,转去执行中断服务程序,在中断服务程序中判断键盘中
9、闭合按键的键号,并做相应的处理。特点:提高了单片机的工作效率。特点:提高了单片机的工作效率。图图7-6 7-6 中断式键盘接口电路中断式键盘接口电路三、三、 发光二极管发光二极管 (常用来显示设备的运行状态)(常用来显示设备的运行状态) 发光二极管(Light Emitting Diode,LED)与普通的二极管一样由一个PN结组成。当正向连接时,即P接正极、N接负极时二极管导通;反之,二极管截止。这就是二极管的单向导电特性。导通时,若有足够的正向电流通过发光二极管,发光二极管便会发光。 根据制造材料的不同可以发出红、黄、绿、白等不同色彩的可见光来。图图7-7 7-7 发光二极管的图形符号和实