下载此文档

第8讲自己动手学习单片机系列-键盘.ppt


文档分类: | 页数:约35页 举报非法文档有奖
1/35
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/35 下载此文档
文档列表 文档介绍
第8讲输入 -----键盘
主讲:王泽华
电话:**********
青岛科技大学
这一章刚做好,为了做出一个不管单键还是矩阵键盘都能用的状态机消抖,费了点功夫。同时对第6讲的LCD添加了一个显示单字符的函数。

本章重点
一般键盘消抖方法
状态机的概念
键盘状态机
键盘矩阵
材料清单
+5V电源
最小系统板
液晶显示板
小按键17个(用作键盘),万能版1块
圆孔插座()若干,排线若干,焊锡若干,面包板跳线若干。
键盘连接电路
当按键少,I/O口资源不紧张时,可采用一个按键占用一个I/O口的连接方式。如图,此时只要将该口设为输入,内部上拉电阻使能(DDRXn,PORTXn)=(0,1)即可。一旦按键按下,电平被拉到低电平,按键松开的时候,引脚电平为高。所以只需读寄存器PINXn的电平可判断按键是否按下。
扫描端口引脚电平的函数中代码可以这样写:
unsigned char key_scan()
{
DDRX &= 0xFE; //PX0输入
PORTX |= 0x01; //上拉电阻使能
if(PINX & 0x01) //若为真,无键闭合
return(0);
else //有键闭合
return(1);
}
当按键多,例如16个按键,此时采用上述连接方式会占用16个I/O口资源。可采用矩阵方式。如图,这样只占用8个I/O口。
键盘扫描方法:
和单键扫描一致,有键闭合返回非零;无键闭合返回0。
(1)初步确定有无按键:
PX0-PX3输入,上拉电阻使能,这样这4个脚是高电平(0x0F);PX4-PX7输出低电平。读PX0- PX3口引脚电平,一旦有键闭合,引脚电平不再是0x0F。
扫描代码可以这样写:
unsigned char key_scan()
{
int i;
unsigned char value_key, value_row, value_col;
value_key = 0x00; //缺省无键闭合
key_DDR = 0xF0; //高四位输出,低四位输入。
key_PORT = 0x0F; //高四位输出低电平,低四位上拉电阻能
_NOP();
value_col = key_PIN & 0x0F; //读列
if(value_col != 0x0F) //有按键闭合
{
value_row = 0xEF;
for(i=0;i<4;i++)
{ //扫描第i行
key_PORT = value_row & 0xF0;//第i行电平拉低
_NOP();
value_col = key_PIN & 0x0F;
if((value_col) != 0x0F)//第一行各列有键按下
{
` switch(value_col)
{
case 0b00001110: //第一列按键
case 0b00001101: //第二列按键
case 0b00001011: //第三列按键
case 0b00000111: //第四列按键
value_key = ~((value_row & 0xF0) + value_col);
break; default
value_key = 0;
break;
}
}
value_row <<= 1; //移位,扫描其余各行
}
}
return(value_key);
}
键盘电路的焊接
本章现在1只独立按键实现所有程序,然后由浅如深的拓展到键盘矩阵。所用到的键盘焊接如图,左面是焊接正面图,右面是焊接反面图。
按键消抖
为什么要消抖:通常键盘所用为机械弹性开关,在按下和弹起的瞬间伴随一系列抖动。为确保CPU对一次闭合仅做一次处理,必须对键盘的抖动进行消抖处理。一般来说,前沿和后沿抖动时间大约在5-10ms。
一般键盘消抖的思路:一旦检测到有键按下时,延时10ms,跳过前沿抖动,再次检测,仍然检测到该键按下,则认为是有效按键;检测到该键释放后,延时10ms,再检测,该键仍在释放状态;则认为完成了一次完整的按键。
假定键盘扫描程序为key_scan(),有键按下返回键值;无键按下返回0。定义一个键盘消息结构
struct sMsg_Key
{
int value ;//有键,存储键值
int state;//存储当前键状态,按
//下为1弹起为0
};
struct sMsg_Key msg_key;

第8讲自己动手学习单片机系列-键盘 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数35
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yixingmaob
  • 文件大小4.34 MB
  • 时间2018-03-20
最近更新