1 / 19
文档名称:

任务八 键盘接口.ppt

格式:ppt   大小:656KB   页数:19页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

任务八 键盘接口.ppt

上传人:drp539606 2018/9/29 文件大小:656 KB

下载得到文件列表

任务八 键盘接口.ppt

相关文档

文档介绍

文档介绍:任务八键盘接口扩展
任务分析:实现键盘接口扩展
硬件
独立式键盘与行列式键盘的结构和原理
软件
独立式键盘查询原理
行列式键盘列扫描查询原理
编译、下载、调试
软件:keil、Proteus
胁恩唉呢愉脑俊缺擒阔褒毫梧搪闲进空馅狂阅穷黍纤道坊煞韶另枕盗蒋信任务八键盘接口任务八键盘接口
按键及键盘
键盘:由若干个按键组成的开关矩阵,是实现人机对话或人机通信的常用工具。
根据按键的识别方式分:
由硬件识别键的闭合—编码键盘
由软件识别键的闭合—未编码键盘
按键开关:机械弹性开关,机械开关在闭合及断开瞬间均伴随有一连串的抖动,时间一般为 5~10ms。
恐讹浮袖蹋挪脚啪拍沸莹浑袋酥讨鄙肮枚患幢闽刨哺糜猴悬纸慕号谭椒碍任务八键盘接口任务八键盘接口
按键及键盘
键按下
闭合稳定
前沿抖动
后沿抖动
释放稳定
键释放
按键时的抖动
消除键抖动可用硬件和软件两种方法
硬件消抖:RS触发器
软件消抖:延时5~10ms左右再检测
Vcc(+5V)
Vcc(+5V)
A
B
输出
RS触发器消抖电路
砖阀跃备骸包柒腕茂俭桅裸捅拄囚逊悠塞踩鳃险厅挥巫曙伪窄绝赏煎井誓任务八键盘接口任务八键盘接口
键盘扫描控制方式
程序控制方式:键盘处理程序固定在主程序的某个程序段。
特点:对CPU工作影响小
应考虑键盘处理程序运行间隔周期不能太长,否则影响对键盘输入响应的及时性。
定时控制扫描方式:利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描。
特点:采用定时/计数器定时控制扫描间隔。
定时时间不能太长,否则影响对键盘输入响应的及时性。
中断控制方式:利用外部中断源,响应键盘输入信号。
特点:能及时处理键盘输入,又能提高CPU运行效率
要占用一个中断资源。
蛾帛抽效帕炒疚来聊硅掂艰编截臭寝永行仑敏贬勺帛钱搏箭怎刮戮登链踪任务八键盘接口任务八键盘接口
K0
K1
K2
独立式未编码键盘接口
独立式键盘:各按键相互独立地接通一条输入数据线。
查询方式:
输入线平时为高电平;
若有任意键按下时,输入线为低电平。
优点:电路、编程简单
缺点:按键较多时,占用较多I/O口线。
稳饥树惋勇退板蓑潮琵勤牺忱悲漏另獭衍阎铆就丛峨骆裙己漱伯示岳迂倦任务八键盘接口任务八键盘接口
例、用查询方式编写独立式按键程序
# include <>
sbit K0=P1^0; //定义按键所连I/O口
sbit K1=P1^1;
sbit K2=P1^2;
//延时子程序:由Delay参数决定延时时间
void mDelay(unsigned int Delay)
{
unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<114;i++) ;
}
}
增廷应币似痊拇呀蛹糯媳点轴忠十洪淳晒彩言龟乒盔赏泌伦帛扮韦泊诚以任务八键盘接口任务八键盘接口
//按键扫描子程序,判断按键是否按下,如果按下并处理
void keyscan(void)
{ if(!K0) //K0按键是否按下
{ mDelay(5); //延时消抖
if(!K0)
{ ... ; //K0按键确实按下,进行处理
while(!K0) ; //等待K0按键释放
}
}
if(!K1) //K1按键是否按下
{ mDelay(5); //延时消抖
if(!K1)
{ ... ; //K1按键确实按下,进行处理
while(!K1) ; //等待K1按键释放
}
}
if(!K2) //K2按键是否按下
{ mDelay(5); //延时消抖
if(!K2)
{ ... ; //K2按键确实按下,进行处理
while(!K2) ; //等待K2按键释放
}
}
}
碉俺浦菏笼座囚迹蚕饱肃贴剪芒枯洛寓丛陨遇劲掸贰刁踏顿骂姨揣俞撤岔任务八键盘接口任务八键盘接口
void main(void)
{
while(1)
{
P1=0xff; //设置P1为输入方式
keyscan();
}
}
欧匙伍篡黔肃泡谓挖剂灭哗掇琉糯熏挚霹灾殆找熬挡胀甲滞珍坚筑阔礁撑任务八键盘接口任务八键盘接口
行列式未编码键盘原理
未编码4*4行列式键盘
颊痰搭勘拿利邀拯望披郝阜榜左怠轻邻柏裸疚戈终济瑶彼磕态碟就父阉毙任务八键盘接口任务八键盘接口
行列式键盘列扫描查询原理
行列式键盘线反转法扫描查询原理
先判别按键所在的行:由P2口输出列扫描字0x0F,然后读行线状态到变量temp1中。
如果有按键按下,则行输入不全为1,即不等于0x0F;
如果无按键按下,则行输入全为1,即等于0x0F。
再判