单片机12-2、3独立按键和矩阵键盘(实训)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
福建交通职业技术学院(教案)首页
课程: 单片机技术及应用 10~11 学年 第_2_学期 第 12 周 5 月 12 日
教 学 内 容 备 注
实训环境和器材
1、单片机实训操作台1张;
2、单片机实验板1套(含下载器);
3、计算机1台;
4、电源、通讯电缆、下载线等配件。
5、软件环境:Proteus Professional 7.1仿真软件、Keil 7.50A 编程软件
一、独立按键扫描
查询方式方式按键扫描:一般情况下,一个按键按下的时候,总是在按下的时刻存在着一
定的干扰信号,
按下之后就基本上进入了稳定的状态。具体的一个按键从按下到释放的全过程的信号图如图所示。
从图中可以看出,我们在程序设计时,从按键被识别按下之后,延时 5ms 以 上 ,从而避开了干扰信号区域,我们再来检测一次,看按键是否真得已经按下, 若真得已经按下,这时肯定输出为低电平,若这时检测到的是高电平,证明刚才 是由于干扰信号引起的误触发,CPU 就认为是误触发信号而舍弃这次的按键识别 过程。从而提高了系统的可靠性。 电路图:
P32
P34
软件程序:
该程序实现独立按键去控制 LED 灯 的亮灭,并讲叙了对按键的处理方法。 独立按键相应的IO 口平时为高电平,一旦按键按下,单片机便检测到低电平。
课程:单片机技术及应用 10~11学年第_2_学期第 12 周 5 月 12 日
教学内容备注
#include
#define uchar unsigned char
#define uint unsigned int
sbit KEY1 = P3^2;
sbit KEY2 = P3^3;
sbit KEY3 = P3^4;
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
/********************************************************************
* 名称 : Delay()
* 功能 : 延时,延时时间为 10ms * del
* 输入 : del
* 输出 : 无
***********************************************************************/
void Delay(uint del)
{
uint i,j;
for(i=0; i for(j=0; j<1827; j++) ; } /******************************************************************** * 名称 : Delay() * 功能 : 实现按键功能,当按键按下时,相应的LED亮灭交替 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void KEY() { 课程:单片机技术及应用 10~11学年第_2_学期第 12 周 5 月 12 日 教学内容备注 if(KEY1==0 || KEY2==0 || KEY3==0) { Delay(2); //20毫秒软件防抖 if(KEY1==0 || KEY2==0 || KEY3==0) { if(KEY1 == 0) { LED1 = ~ LED1; //LED显示取反 } else if(KEY2 == 0) { LED2 = ~ LED2; } else { LED3 = ~ LED3; } } Delay(50); //延时0.5秒再进行下次按键的检测 } } /******************************************************************** * 名称 : Main() * 功能 : 实现按键控制LED的亮灭 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { while(1) 课程:单片机技术及应用 10~11学年第_2_学期第 12 周 5 月 12 日 教学内容备注 { KEY(); } } 作业:试编程序,只有一个键有效,另外两个键无效。 二、矩阵键盘扫描 独立按键具有编程简单但占用 I/O 口资源的特点,不适合在按键较多的场合 应用。在实际应用中经常要用到输入数字、字母等功能,如电子密码锁、电话机键盘等一般都至少有 12 到 16 个按键,在这种情况下如果用独立按键的话显然太浪费 I/O 口资源,为此我们就引入了矩阵键盘的应用。 矩阵键盘简介: 矩阵键盘又称行列键盘,它是用四条 I/O 线作为行线,四条 I/O 线作为列线组成的键盘。 这种行列式键在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为 4*4 个。 盘结构能有效地提高单片机系统中I/O 口的利用率。 矩阵键盘的工作原理: 最常见的键盘布局如图所示。一般由 16 个按键组成,在单片机中正好可以用一个 P 口实现 16 个按键功能,这也是在单片机系统中最常用的形式,4*4 矩阵键盘的内部电路如图 2 所示。 当无按键闭合时,P10~P13 与 P14~P17 之间开路。当有键闭合时,与闭合键 相连的两条 I/O 口线之间短路。判断有无按键按下的方法是:第一步,置列线 P14~P17 为输入状