嵌入式矩阵键盘检测控制实验4.docx
- 文档编号:2253518
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:14
- 大小:367.25KB
嵌入式矩阵键盘检测控制实验4.docx
《嵌入式矩阵键盘检测控制实验4.docx》由会员分享,可在线阅读,更多相关《嵌入式矩阵键盘检测控制实验4.docx(14页珍藏版)》请在冰豆网上搜索。
嵌入式矩阵键盘检测控制实验4
昆明理工大学信息工程与自动化学院学生实验报告
(2013—2014学年第2学期)
课程名称:
嵌入式技术及应用开课实验室:
信自楼5042014年6月6日
年级、专业、班
2011级
计科111
学号
201110405138
姓名
成绩
实验项目名称
矩阵键盘检测控制实验
指导教师
江虹
教师评语
该同学是否了解实验原理:
A.了解□B.基本了解□C.不了解□
该同学的实验能力:
A.强□B.中等□C.差□
该同学的实验是否达到要求:
A.达到□B.基本达到□C.未达到□
实验报告是否规范:
A.规范□B.基本规范□C.不规范□
实验过程是否详细记录:
A.详细□B.一般□C.没有□
教师签名:
年月日
一、实验目的
掌握单片机系统中矩阵键盘的编程控制方法,学会实时程序的调试技巧。
二、实验原理
键盘是单片机应用中常用的输入设备,在应用系统中,操作人员可通过键盘向系统输入指令、地址和数据,实现简单的人机通信。
键盘实际上是一组按键开关的集合,平时总是处于断开状态,当按下键时它才闭合。
按键在闭合和断开时,触点会存在抖动现象,抖动时间一般为5-10ms,如下图示:
键盘的处理主要涉及以下3个方面的内容:
Ø按键的识别
所接I/O口线是高还是低电平(根据连接情况)
Ø抖动的消除
硬件消抖
软件消抖(延时)
Ø判断键值
独立式键盘
矩阵式键盘
实验板电路原理图如下:
三、实验内容
按下16个矩阵键盘依次在数码管上显示1-16的平方。
如按下第一个显示1,第二个显示4...
四、实验步骤
1、按实验内容要求在µVision中创建项目,编辑、调试、编译程序。
(1)创建项目
单击菜单的“project”→“NewProject”,出现【CreateNewProject】窗口,选择实验所要存的文件夹。
②输入工程名“shiyan4”,点击“保存”,出现【SelectDeviceForTarget】。
③选择“Atmel”→“AT89C52”,如下图
④点击“确定”出现如下窗口
⑤点击“是”,然后开发环境自动建立一个包含启动代码项目的空文件,该启动代码为“STARTUP.A51”。
(2)编辑程序
①单击菜单“File”→“New”,出现一个窗体,然后单击“保存【SaveAs】”,出现如下图
③输入文件名“Main.c”,点击“保存”,然后在左边的工程窗口选中“SourceGroup1”并右键单击出现右键菜单,选择“AddFilestoGroup‘SourceGroup1’”,出现如下图
选择Main.c文件,点击“Add”,最后点击“Close”,出现如下图
(3)调试程序、编译程序
程序代码:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitU1=P2^6;
sbitU2=P2^7;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,};
uchartemp,shi,ge,bai;
uintkey;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay(uintnumberGet)
{
numberGet=numberGet*numberGet;
bai=numberGet/100;
shi=numberGet%100/10;
ge=numberGet%10;
U2=1;
P0=0xfe;//1111'1110
U2=0;
U1=1;
P0=table[bai];
U1=0;
delay(5);
U2=1;
P0=0xfd;//1111'1101
U2=0;
U1=1;
P0=table[shi];
U1=0;
delay(5);
U2=1;
P0=0xfb;//1111'1011
U2=0;
U1=1;
P0=table[ge];
U1=0;
delay(5);
}
voidinit()
{
U2=1;
P0=0xc0;//1100'0000
U2=0;
U1=1;
P0=0;
U1=0;
}
voidkeyscan()
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;//屏蔽低四位
if(temp!
=0xf0)
{
delay(10);//消除抖动
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xee:
key=1;
break;
case0xde:
key=2;
break;
case0xbe:
key=3;
break;
case0x7e:
key=4;
break;
}
while(temp!
=0xf0)//判断按键释放
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;//屏蔽低四位
if(temp!
=0xf0)
{
delay(10);//消除抖动
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xed:
key=5;
break;
case0xdd:
key=6;
break;
case0xbd:
key=7;
break;
case0x7d:
key=8;
break;
}
while(temp!
=0xf0)//判断按键释放
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
P3=0xfb;
temp=P3;
temp=temp&0xf0;//屏蔽低四位
if(temp!
=0xf0)
{
delay(10);//消除抖动
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xeb:
key=9;
break;
case0xdb:
key=10;
break;
case0xbb:
key=11;
break;
case0x7b:
key=12;
break;
}
while(temp!
=0xf0)//判断按键释放
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
P3=0xf7;
temp=P3;
temp=temp&0xf0;//屏蔽低四位
if(temp!
=0xf0)
{
delay(10);//消除抖动
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
temp=P3;
switch(temp)
{
case0xe7:
key=13;
break;
case0xd7:
key=14;
break;
case0xb7:
key=15;
break;
case0x77:
key=16;
break;
}
while(temp!
=0xf0)//判断按键释放
{
temp=P3;
temp=temp&0xf0;
}
display(key);
}
}
}
voidmain()
{
init();
while
(1)
{
keyscan();
display(key);
}
}
2、将编译生成的目标码文件(后缀为.Hex)下载到实验板上。
①右键单击工程窗口“Target1”,然后从右键菜单选中“OptionsforTarget‘Target1’”
②从弹出的窗口“OptionsforTarget‘Target1’”中选中“Output”选项卡,然后勾选“CreateHex”,如下图,最终生成shiyan4.hex文件。
3、观察实验运行结果并记录。
按下第三个键:
3的平方
按下第七个键:
7的平方
按下第十五个键:
15的平方
按下第十六个键:
16的平方
五、总结
经过这个试验我对矩阵键盘检测控制实验的相关知识的了解,不过我这个试验的程序编辑、编译不太熟悉,搞了好久也没有得到结果,最后在老师的帮助下完成了一个困难的问题又来到了,我对试验板又不知道如何操作,经过同学们的帮助我最终完成了这个试验这个程序,并开始将编译生成的目标码文件传入实验板中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 矩阵 键盘 检测 控制 实验