班级: 09普本非师范 学号: 0910421073 姓名: 李 敏
}
/************************************************************** 函数功能:定时器0的中断服务子程序,进行键盘扫描,判断键位 **************************************************************/ void time0_interserve(void) interrupt 1 using 1 {
TR0=0; //关闭定时器T0
P1=0xf0; //所有行线置为低电平\,所有列线置为高电平\
if((P1&0xf0)!=0xf0) //列线中有一位为低电平\,说明有键按下 delay20ms(); //延时一段时间、软件消抖 if((P1&0xf0)!=0xf0) //确实有键按下 {
P1=0xfe; //第一行置为低电平\(P1.1出低电平\) if(P14==0) keyval=1; //可判断是S1键被按下
if(P15==0) keyval=2; //可判断是S2键被按下
if(P16==0) keyval=3; //可判断是S3键被按下
if(P17==0) keyval=4; //可判断是S4键被按下
P1=0xfd; //第二行置为低电平\(P1.1出低电平\) if(P14==0)
keyval=5; //可判断是S5键被按下
if(P15==0) keyval=6; //可判断是S6键被按下
if(P16==0) keyval=7; //可判断是S7键被按下 if(P17==0) keyval=8; //可判断是S8键被按下
P1=0xfb; //第三行置为低电平\(P1.2输出低电平\)
if(P14==0) keyval=9; //可判断是S9键被按下 if(P15==0) keyval=10; //可判断是S10键被按下
if(P16==0) keyval=11; //可判断是S11键被按下 if(P17==0) keyval=12; //可判断是S12键被按下 P1=0xf7;
if(P14==0) keyval=13; //可判断是S13键被按下
班级: 09普本非师范 学号: 0910421073 姓名: 李 敏
if(P15==0) keyval=14; //可判断是S14键被按下 if(P16==0) keyval=15; //可判断是S15键被按下 if(P17==0) keyval=16; //可判断是S16键被按下 }
TR0=1; //开启定时器T0 TH0=(65536-500)/256; //定时器T0的高8位赋初值 }
TL0=(65536-500)%6; //定时器T0的高8位赋初值
五 运行结果
任务1:两个LED显示器动态显示被按下键盘号。 任务2:两个LED显示器静态显示被按下键盘号。
六 实验总结
1、动态显示与静态显示的概念分的不是太清楚,最后在反复查阅书本之后才得以理解。 2、源代码编写错误导致实验失败,在老师的帮助下,找到错误所在,使实验顺利完成。 3、对于其开关的控制方面,一定要了解和熟练掌握。
4、基本掌握了仿真软件的运行,尤其是其中元部件的查找与组图。 5、基本掌握了键盘扫描的简单应用。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验五 矩阵式键盘按键值的数码管显示 -(2)在线全文阅读。
相关推荐: