《单片机应用技术》课件-第四章 键盘接口及扫描原理_第1页
《单片机应用技术》课件-第四章 键盘接口及扫描原理_第2页
《单片机应用技术》课件-第四章 键盘接口及扫描原理_第3页
《单片机应用技术》课件-第四章 键盘接口及扫描原理_第4页
《单片机应用技术》课件-第四章 键盘接口及扫描原理_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第四章键盘接口及扫描原理

——单片机输入应用

本章教学计划:

理论+实践教学12学时本章教学重点:了解键盘分类掌握行列扫描键盘原理掌握行列键盘扫描程序1键盘分类2选择结构程序设计3行列扫描键盘原理4行列键盘扫描程序5键盘的键值6线反转法键盘扫描程序主要内容:1、键盘的分类键盘按结构形式可分为两种:编码键盘

非编码键盘

编码键盘:由内部硬件逻辑电路自动产生被按键的编码。

特点:使用方便,软件简单,成本较高。

非编码键盘:主要由软件产生被按键的编码。特点:非编码键盘结构简单、成本低廉,使用不如编码式键盘方便,键盘的管理程序的编制比较复杂。在单片机中使用非编码键盘,键盘上的键按行列构成矩阵,在行列的交点上对应一个键。1、键盘的分类编码键盘1(独立按键)按键开关的连接采用上拉电阻的方法判断是否有键按下:当按键不按下时,P1.0-P1.3为高电平;有按键按下时,相应引脚为低电平;松开按键时,相应引脚变成高电平。编码键盘2利用中断的形式:(不需要扫描键盘)无键按下时,与门输出高电平;有一个键按下时,与门输出低电平,引发中断,中断后程序会执行中断服务程序,对按键进行处理。注:若在一个系统设计中,需要使用很多按键,采用独立按键的方式,会大量占用IO口1、键盘的分类2.1if语句if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假、非零或零)决定执行给出的两种操作之一。2.1.1if语句的三种形式C语言提供了三种形式的if语句:1)if(表达式)语句例如:

if(x>y) printf("%d",x);这种if语句的执行过程2、选择结构程序设计2)

if(表达式)语句1else语句2例如:

if(x>y) printf("%d",x);

else printf(“%d”,y);见图:练习1、#include<stdio.h>voidmain(){inti=-1;

if

(i<=0)

printf(“****\n”);

else printf(“%%%%\n”);}

A)**** B)%%%% C)%%%%c D)有语法错误,不能正确执行3)

if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…elseif(表达式m)语句melse语句n

例如:有一个程序段

根据学生的成绩分为5个等级A.B.C.D.Escanf(“%d”,&results);if(results>89)printf(“%disA”,results);elseif(results>79)printf(“%disB”,results);elseif(results>69)printf(“%disC”,results);elseif(results>59)printf(“%disD”,results);elseprintf(“%disE”,results);练习

x(x<1)y=2x-1(1≤x<10)3x-11(x≥10)#include<stdio.h>voidmain(){floatx,y;scanf(“%f”,&x);

if(x<1) y=x;

elseif((x>=1)&&(x<10)) y=2*x-1;

else y=3*x-11;printf(“x=%f,y=%5.2f\n”,x,y);}(1)三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。(2)第二、第三种形式的if语句中,在每个else前面有一分号,整个语句结束处有一分号。

else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。(3)在if和else后面可以只含一个内嵌的操作语句;也可以有多个操作语句,此时用花括号“{}”将几个语句括起来成为一个复合语句。注意2.1.2if语句的嵌套

在if语句中又包含一个或多个if语句称为if语句的嵌套.语句格式:

if(表达式)

if(表达式1)语句1;

else

语句2;

else

if(表达式2)语句3;

else

语句4;2.2switch语句switch(表达式){

case常量表达式1:

语句1;可以是多行,可以加括号,也可以不加,到下一个case之前,都是本case的语句范围

[break;]中括号,表示此语句可以没有

case常量表达式2:

语句2;[break;]……

case常量表达式n:

语句n;[break;]

[default:]

语句n+1;[break;]}#include<reg52.h>//定义特殊功能寄存器库#defineucharunsignedchar#defineuintunsignedintvoiddelay(uchar);//函数声明ucharKeyScan(void);//键盘扫描函数voidmain(void){ucharKeyValue;while(1){KeyValue=KeyScan();//调用函数,读取键值编码键盘1的参考程序:/*switch(KeyValue)//各个键值的应用{case0x0E:……;break;case0x0D:……;break;case0x0B:……;break;case0x07:……;break;}*/}}/********************************************/ucharKeyScan(void){TempValue=P1;//读端口到变量TempValue&=0x0f;//将高四位置0if(TempValue!=0x0f)//判断是否有键按下{delay(10);//延时后再判断,为什么?后介绍TempValue=P1;//读端口到变量TempValue&=0x0f;//将高四位置0if(TempValue!=0x0f)//判断是否有键按下{returnTempValue;//有键时的键值}}return0;//无键按下时,函数返回值为0}voiddelay(ucharx)//延时函数{uchark;while(x--)for(k=0;k<125;k++);}1、键盘的分类非编码键盘(矩阵按键)行列式结构按矩阵形式排列交叉部分为按键用8位IO口实现了16个按键共4组按键分析其中一组:若P1.0输出低电平,P1.0相当于GND,就相当于4个独立按键。为了避免其它三组对本组按键产生干扰,要求P1.1,P1.2,P1.3必须输出高电平。3、行列扫描键盘原理对于单片机系统中普遍使用非编码式键盘,主要解决以下几个问题:

(1)键的识别; (2)如何消除键的抖动; (3)键的保护。在以上几个问题中,最主要的是键的识别。3、行列扫描键盘原理键盘接口应有以下功能:

键扫描功能,即检测是否有键闭合;

键识别功能,确定被闭合键所在的行列位置;

产生相应的键的代码(键值)功能;

消除按键抖动及对付多键串按(复键)功能。3、行列扫描键盘原理1、键盘扫描流程3、行列扫描键盘原理键盘扫描流程非编码式键盘识别闭合键方法:行扫描法。行扫描法所谓行扫描法,就是通过行线发出低电平信号,如果该行线所连接的键没有按下的话,则列线所连接的输出端口得到的是全“1”信号;如果有键按下的话,则得到的是非全“1”信号。3、行列扫描键盘原理键盘扫描流程

无键按下有键按下3、行列扫描键盘原理键盘扫描流程

扫描第0行扫描第1行3、行列扫描键盘原理键盘扫描流程

扫描第2行扫描第3行键值为:11010111P1.0P1.73、行列扫描键盘原理键盘扫描流程具体过程如下:首先,检查整个键盘中是否有键按下;其次,再用逐行扫描的方法来确定闭合键的具体位置。方法是:先扫描第0行,即输出1110(第0行为“0”,其余3行为“1”),然后读入列信号,判断是否为全“1”。3、行列扫描键盘原理消除键的抖动常用键盘的键是一个机械开关结构,被按下时,由于机械触点的弹性及电压突跳等原因,在触点闭合或断开的瞬间会出现电压抖动。抖动时间长短与键的机械特性有关,一般为5~10ms。而键的闭合时间和操作者的按键动作有关,大约为十分之几秒到几秒不等。3、行列扫描键盘原理消除键的抖动

3、行列扫描键盘原理消除键的抖动去抖动有硬件和软件两种方法。硬件方法就是加去抖动电路,从根上避免抖动的产生;而软件方法则是采用时间延迟以躲过抖动(大约延时10~20ms即可),待信号稳定之后,再进行键扫描。一般为简单起见多采用软件方法。3、行列扫描键盘原理键盘接口的控制方式在单片机的运行过程中,何时执行键盘扫描和处理,可有以下3种情况:(1)随机方式,每当CPU空闲时执行键盘扫描程序。(2)中断方式,每当有键闭合时才向CPU发出中断请求,中断响应后执行键盘扫描程序。(3)定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机的定时器完成。4、行列键盘扫描程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintvoiddlms(void);ucharkbscan(void);voidmain(void){ucharkey;while(1){key=kbscan();dlms();}}voiddlms(){uchari;for(i=200;i>0;i--){}}ucharkbscan(){ucharsccode,recode;P1=0xf0;if((P1&0xf0)!=0xf0){dlms();if((P1&0xf0)!=0xf0){sccode=0xfe;while((sccode&0x10)!=0){P1=sccode;if((P1&0xf0)!=0xf0){recode=(P1&0xf0)|0x0f;return((~sccode)|(~recode));}else

温馨提示

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

评论

0/150

提交评论