单片机12-2、3独立按键和矩阵键盘(实训)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 为输入状

相关文档
最新文档