




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上实验四 键盘显示程序设计实验目的1、理解串行接口键盘单片机c语言程序的基本结构2、了解单片机c语言程序的设计和调试方法3、掌握几个的基本的传送类、控制类指令的使用方法实验仪器单片机开发板、稳压电源、计算机实验原理1按键下图为一个典型的接触式按键(又称轻触开关)。下图是该按键的工作特性图。其中蓝色的线表示按键未被按下之时的状态,我成为初始状态,它是不导通的;而绿色的线是却永久导通的。所以我们取(1,2)、(1,4)、(3,2)、(3,4)四种组合,都可以起到我们预期的开关作用。2按键电平的判定。先看下图当按键按下以后,请问如果这时用万用表测量导线上任何一处的电压,得到的
2、结果是VCC 还是GND 的电压?答案是:GND,即表示测出的电压为0V。因为导线上,对于两端的电平是一种类似于程序语言逻辑运算里面的“与”,即对于导线两端:有零即为零,只有全为一是才为一。3独立按键键盘分为编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的键盘称为非编码键盘,在单片机组成的各种系统中,用的较多的是非编码键盘。非编码键盘又分为独立键盘和行列式键盘(常说的矩阵键盘)。单片机的IO口既可作为输出也可作为输入使用,当检测按键时用的是它的输入功能,我们把按键的一端接地,另一端与单片机的某个I/O口相连,
3、开始时先给该IO口赋一高电平,然后让单片机不断地检测该I/O口是杏变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平,程序一旦检测到I/O口变为低电平则说明按键被按下,然后执行相应的指令。(2)按键抖动理论上讲,按键按下去后的点评应该为上图,实际上是下图。在高低电平直接有一段锯齿一样的波形,这就是所谓的按键抖动。一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms 左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们再首次检测到键被按下后延时10ms 左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键
4、被按下,则可确认,以上为按键识别去抖动的原理。(3)独立按键开发板独立按键电路图如下:独立按键一共5个,分别连接在单片机的P3.0到P3.4口。去抖动的方式,我们采用软件延时的方法。过程如下:1先设置IO口为高电平(一般上电默认就为高)2读取IO口电平确认是否有按键按下3如有IO电平为低电平后,延时几个ms4再读取该IO电平,如果任然为低电平,说明对应按键按下5执行相应按键的程序4矩阵按键独立键盘与单片机连接时,每一个按键都需要单片机的一个I/O口若某单片机系统需较多按键,如果用独立按键便会占用过多的I/O口资源。单片机系统中I/O口资源往往比较宝贵,当用到多个按键时为了节省I/O口口线,我们
5、引入矩阵键盘。我们以4X4矩阵键盘为例讲解其工作原理和检测方法。将16个按键排成4行4列,第一行将每个按键的一端连接在一起构成行线,第一列将每个按键的另一端连接在一起构成列线,这样便一共有4行4列共8根线,我们将这8根线连接到单片机的8个I/O口上,通过程序扫描键盘就可检测16个键。首先看一下电路图上图是一个4X4 的矩阵键盘,一共是16 个按键。我们照习惯称横为“行”,“竖”为列。那么5、6、7、8 我们称之为“行线”,则1、2、3、4 称为“列线”。要正确记住各个行列线各自对应的IO。现在详细讲述一下矩阵键盘扫描的原理和步骤:扫描矩阵键盘,即是把某一条(只有一条)行线置为低电平,而列线全部
6、置为输入方向,然后检测列线,如果检测到某一条列线是低电平,那么就表示位于这条列线与输出低电平的行线的交点处的按键被按下了。要扫描16个按键,就依次以这样的方法扫描16次,之后就可以确定哪一个按键被按下了。当然这里也少不了延时消除按键抖动的环节。实验内容:P0口连接数码管,P1口连接矩阵键盘。实验连接图如下请大家根据以上内容和提示,编写程序,完成实验。实验功能是数码管静态显示矩阵按键数值0F.显示顺序如下:F EDCBA9876543210#include<reg51.h>#define GPIO_DIG P0/定义P0口为GPIO_DIG#define GPIO_KEY P1/定义
7、P1口为GPIO_KEY unsigned char code DIG_CODE17=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;数码管静态共阴极编码unsigned char KeyValue; /(KeyValue什么作用?)void Delay10ms(unsigned int c); /延时10ms(完成下面的延时程序)void KeyDown(); /检测按键函数void main(void)while(1)KeyDown();GPIO_DIG = DIG_CODEKe
8、yValue;void KeyDown(void)char a = 0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f)/读取按键是否按下Delay10ms(1);/延时10ms进行消抖if(GPIO_KEY!=0x0f)/再次检测键盘是否按下/测试列GPIO_KEY=0X0F;switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e):KeyValue=3;break;/测试行GPIO_KEY=0XF0;switc
9、h(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(0Xb0):KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;case(0Xe0):KeyValue=KeyValue+12;break;while(a<50) && (GPIO_KEY!=0xf0) /检测按键松手检测Delay10ms(1);a+;void Delay10ms(unsigned int c) unsigned char a, b; for (;c>0;c-)for (b=38;b>0;b-)for (a=130;a>0;a-); 宁可累死在路上,也不能闲死在家里!宁可去碰壁,也不能面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工商局授权代表委托书格式说明3篇
- 出院协议保证3篇
- 加油站玻璃安装服务协议3篇
- 广告牌施工协议范本购买渠道3篇
- 班主任工作经验总结范文1300字(28篇)
- 工程施工进度监督报告
- 小学托管班协议书3篇
- 利息借款合同的标准格式解析3篇
- 劳动合同中止与恢复3篇
- 办公用品采购服务采购合同3篇
- 阶梯式水价,阶梯水价的计算方法
- 买奶茶赠刮刮卡文案优选13篇
- 家庭教育宣讲 全国公开课一等奖
- 贷款资料真实性承诺书
- 中考英语补全对话135个必背句型
- 心理社会评估健康评估本科课件
- 结构化思维与表达课件
- 体育心理学(第三版)课件第八章运动技能的学习
- 深信服SDWAN产品介绍
- JT∕T 1431.3-2022 公路机电设施用电设备能效等级及评定方法 第3部分:公路隧道照明系统
- 行政事业单位公务卡使用管理办法模板
评论
0/150
提交评论