单片机与键盘的连接课件

上传人:txadgkn****dgknqu... 文档编号:242768421 上传时间:2024-09-03 格式:PPT 页数:34 大小:1.12MB
返回 下载 相关 举报
单片机与键盘的连接课件_第1页
第1页 / 共34页
单片机与键盘的连接课件_第2页
第2页 / 共34页
单片机与键盘的连接课件_第3页
第3页 / 共34页
点击查看更多>>
资源描述
Click to edit the title text format,Click to edit the outline text format,Second Outline Level,Third Outline Level,Fourth Outline Level,Fifth Outline Level,Sixth Outline Level,Seventh Outline Level,Eighth Outline Level,Ninth Outline Level,*,模块7 系统扩展与接口技术,Click to edit the title text format,模块七 系统扩展与接口技术,7.2 单片机与键盘的连接,模块七 系统扩展与接口技术,7.2.1 键盘及其抖动问题,键盘是由若干按键组成的开关矩阵,它是微型计算机最常用的输入设备,用户可以通过键盘向计算机输入指令、地址和数据。一般单片机系统中采用非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。,7.2.1 键盘及其抖动问题键盘是由若干按键组成的开关矩阵,2,7.2.1 键盘及其抖动问题,组成键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的。当开关S断开时,P1.0输入为高电平,S闭合时,P1.0输入为低电平。由于按键是机械触点,当机械触点断开、闭合时,会有抖动。,7.2.1 键盘及其抖动问题组成键盘的按键有触点式和非触点,3,消除抖动的方法,硬件方法:,一般不常用。,软件方法:,单片机设计中常用软件法,软件去除抖动其实很简单,就是在单片机获得P1.0口为低的信息后,不是立即认定S已被按下,而是延时10毫秒或更长一段时间后再次检测P1.0口,如果仍为低,说明S的确按下了,这实际上是避开了按键按下时的抖动时间。而在检测到按键释放后(P1.0为高),再延时510个毫秒,消除后沿的抖动,然后再对键值处理。,消除抖动的方法硬件方法:一般不常用。,4,7.2.2 单片机与键盘的连接,将每个按键的一端接到单片机的I/O口,另一端接地。,1、通过I/O口连接,:,一、独立式按键接口技术,7.2.2 单片机与键盘的连接将每个按键的一端接到单片机的,5,实例,如下图所示,采用不断查询的方法,即检测是否有键闭合,如有键闭合,则去除键抖动,判断键号并转入相应的键处理。假设两个键定义如下:,P3.0:开始执行某种操作,(假设让8只发光二极管闪烁),。,P3.1:停止执行。,实例 如下图所示,采用不断查询的方法,即检测是否有键闭合,如,6,void delay(unsigned char);,bit key();,void lsd(unsigned char);,unsigned char vkey;,bit start_end=0;,void main(),unsigned char ldata;,while(1),if(key(),if(vkey=1) start_end=1;,else start_end=0;,if(start_end), ldata=ldata;,delay(250);,else ldata=0xff;,P0=ldata;,源程序,void delay(unsigned char);if(k,7,源程序(延时函数delay()),void delay(unsigned char t),unsigned char i,j;,for(i=t;i0;i-),for(j=200;j0;j-);,源程序(延时函数delay())void delay(uns,8,bit key(),unsigned char temp;,bit flag=0;,temp=P3;,temp=temp|0xfc;,temp=temp0xff;,if(temp=0),return flag;,else,delay(25); temp=P3|0xfc;,temp=temp0xff;,if(temp=0),return flag;,else, vkey=temp; flag=1;,while(temp), temp=P3|0xfc;,temp=temp0xff;,return flag;,源程序(判断是否有键按下函数),bit key()delay(25); temp=P3|0,9,2、采用中断方式,各个按键都接到一个与非门上,当有任何一个按键按下时,都会使与门输出为低电平,从而引起单片机的中断,它的好处是不用在主程序中不断地循环查询,如果有键按下,单片机再去做相应的处理。,2、采用中断方式各个按键都接到一个与非门上,当有任何一个按键,10,实例 试编程实现由3个按键控制发光二极管的全亮、闪烁或全灭。,#include,void delay(unsigned char);,unsigned char flag;,void main(), IT0=1;EA=1;EX0=1;,while(1),switch(flag), case 1:P0=0x00;break;,case 2:P0=P0;delay(250);break;,case 3:P0=0xff;break;,void delay(unsigned char t),unsigned char i,j;,for(i=t;i0;i-),for(j=200;j0;j-);,实例 试编程实现由3个按键控制发光二极管的全亮、闪烁或全灭。,11,中断服务函数,void isr_int0() interrupt 0,unsigned char kdata;,kdata=P1;kdata=kdata0xff;,kdata=1;,if(kdata!=0),kdata=1;,if(kdata!=0) flag=3;,else flag=2;,else,flag=1;,中断服务函数void isr_int0() interrup,12,二、矩阵式键盘接口技术,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,在需要的键数比较多时,采用矩阵法来做键盘是合理的。,1、矩阵式键盘的结构,二、矩阵式键盘接口技术在键盘中按键数量较多时,为了减少I/O,13,当按键没有按下时,所有的输入端都是高电平,代表无键按下。一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可判断是否有键按下了。,1、矩阵式键盘的结构,当按键没有按下时,所有的输入端都是高电平,代表无键按下。一旦,14,2、矩阵式键盘的按键识别方法行扫描法,1)判断键盘中有无键按下。将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。,2)判断闭合键所在的位置。在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。,2、矩阵式键盘的按键识别方法行扫描法1)判断键盘中有无键,15,2、矩阵式键盘的按键识别方法行扫描法,2、矩阵式键盘的按键识别方法行扫描法,16,行扫描法,行扫描法识别按键的方法就象在二维平面上找确定的点,要在二维平面上找到确定的点。,确定这点的横坐标:行线位置,确定它的纵坐标:列线位置,公式:键值=行号列数+列号,行扫描法行扫描法识别按键的方法就象在二维平面上找确定的点,要,17,实例 89S51单片机的P1口用作键盘I/O口,P0口用作输出口,用于输出所按键的键号(0F)。,89S51单片机的P1口用作键盘I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位。列线P1.0P1.3分别接有4个上拉电阻到正电源+5V,并把列线P1.0P1.3设置为输入线,行线P1.4P1.7设置为输出线。4根行线和4根列线形成16个相交点。,实例 89S51单片机的P1口用作键盘I/O口,P0口用作,18,行扫描识别步骤,(1)检测当前是否有键被按下:检测的方法是P1.4P1.7输出全“0”,读取P1.0P1.3的状态,若P1.0P1.3为全“1”,则无键闭合,否则有键闭合。,(2)去除键抖动:当检测到有键按下后,延时一段时间再做下一步的检测判断。,(3)若有键被按下,应识别出是哪一个键闭合。,行扫描识别步骤(1)检测当前是否有键被按下:检测的方法是P1,19,识别键闭合的方法,对键盘的行线进行扫描。P1.4P1.7按下述4种组合依次输出:,P1.7 1 1 1 0,P1.6 1 1 0 1,P1.5 1 0 1 1,P1.4 0 1 1 1,在每组行输出时读取P1.0P1.3,若全为“1”,则表示为这一行没有键闭合,否则有键闭合。由此得到闭合键的行值和列值,然后可采用计算法或查表法将闭合键的行值和列值转换成所定义的键值。,识别键闭合的方法对键盘的行线进行扫描。P1.4P1.7按下,20,流程图,效标志,键盘扫描,有键闭合,延时去抖动,扫描键盘,计算键值,闭合键释放,建立有效标志,建立无,返回,找到闭合键,N,Y,N,Y,N,Y,流程图效标志键盘扫描有键闭合延时去抖动扫描键盘计算键值闭合键,21,键盘扫描程序,#include,unsigned char seg16=0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;,void delay(unsigned char);,unsigned char key_scan ();,void main(),unsigned char val_key;,while(1), val_key=key_scan ();,if(val_key!=0xff) P0=segval_key;,键盘扫描程序#include,22,void delay(unsigned char t),unsigned char i,j;,for(i=0;it;i+),for(j=0;j200;j+);,键盘扫描程序,void delay(unsigned char t)键盘扫,23,键盘扫描函数,unsigned char key_scan(),unsigned char kdata,vkey,keyNo;,bit iskey=0; /标志,在确定具体哪一个键按下时,如果检测到有一个键按下则该标志置1,P1=0x0f; /行线送“0”,kdata=P1; /读取列线值,kdata,if(kdata=0x0f),return 0xff; /无键按下,建立无效标志(0xff为无键按下的无效标志),键盘扫描函数unsigned char key_scan(),24,键盘扫描函数,else /若列线均为“1”则无键按下,否则有键按下,delay(25); /有键按下,去除抖动,kdata=0xef;,while(!iskey) /扫描键盘,vkey=P1=kdata; /送扫描码至P1口行线,并将扫描码保存到vkey中,kdata=P1; /读取列线值,kdata,if(kdata=0x0f), kdata=vkey; /若没有键盘按下,则取出行扫描码,kdata4; /取行扫描码,vkey=0x0f; /将行扫描码取反,switch(vkey), case 1:keyNo+=0;break; /把行值加到列值中,case 2:keyNo+=4;break;,case 4:keyNo+=8;break;,case 8:keyNo+=12;break;,do,kdata=P1;,kdata,while(kdata!=0x0f); /判断键释放, return keyNo;,键盘扫描函数vkey=vkey4;,27,案例,空调制冷控制系统预置温度控制,如下图所示,“UP”是“升温”按钮,接INT0,“DOWN”是“降温”按钮,接INT1。显然,该案例中,提高或降低调节温度均采用中断方式实现,按“UP”则产生外部中断0,按“DOWN”产生外部中断1。,案例 空调制冷控制系统预置温度控制如下图所示,“UP”是“,28,源程序(主函数),调节温度的设置可分别在外部中断0和外部中断1的中断服务程序中实现,在中断服务程序中,调节温度放在变量temp(采用BCD码)中,每发生一次中断,temp中的数据加1或减1,并再分别由8051的P1、P2控制的两个数码管显示其温度值。,#include,unsigned char temp=30;,main(), unsigned char t10,t;,IT0=IT1=1;,t10=temp/10;t=temp%10;,P1=(t104)|(t,EA=1;EX0=EX1=1;,while(1);,源程序(主函数)调节温度的设置可分别在外部中断0和外部中断1,29,/按升温按钮的中断服务程序,void isr_int0() interrupt 0,unsigned char t10,t;,if(temp30) temp+;,t10=temp/10;t=temp%10;,P1=(t1020) temp-;,t10=temp/10;t=temp%10;,P1=(t104)|(t,温度设定中断子程序:,/按降温按钮的中断服务程序温度设定中断子程序:,31,提示:,本案例还解决了一个处理十进制温度(BCD码)的问题,请留意。,本案例只是提供一个思路,仅供参考,不要把思维局限在本案例上。,本案例只用了两个按钮,可以直接采用中断法,但本任务却要四个按钮,能直接用吗?显然不行?,提示:本案例还解决了一个处理十进制温度(BCD码)的问题,请,32,知识梳理与总结,本任务通过温度报警器预置温度的实现,让读者掌握键盘工作原理及其与单片机接口的相关知识,学会应用。,本任务重点内容如下:,(1)键盘工作原理、按键抖动问题及其消除方法;,(2)独立式按键与单片机连接的电路及其编程;,(3)矩阵式键盘的结构及其按键识别方法行列扫描法的程序设计。,知识梳理与总结本任务通过温度报警器预置温度的实现,让读者掌握,33,任务作业,P281P282,T8-4T8-6,任务作业P281P282,34,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


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

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


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