嵌入式矩阵键盘检测控制实验4.doc

上传人:b****2 文档编号:1261692 上传时间:2022-10-19 格式:DOC 页数:9 大小:2.46MB
下载 相关 举报
嵌入式矩阵键盘检测控制实验4.doc_第1页
第1页 / 共9页
嵌入式矩阵键盘检测控制实验4.doc_第2页
第2页 / 共9页
嵌入式矩阵键盘检测控制实验4.doc_第3页
第3页 / 共9页
嵌入式矩阵键盘检测控制实验4.doc_第4页
第4页 / 共9页
嵌入式矩阵键盘检测控制实验4.doc_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

嵌入式矩阵键盘检测控制实验4.doc

《嵌入式矩阵键盘检测控制实验4.doc》由会员分享,可在线阅读,更多相关《嵌入式矩阵键盘检测控制实验4.doc(9页珍藏版)》请在冰豆网上搜索。

嵌入式矩阵键盘检测控制实验4.doc

昆明理工大学信息工程与自动化学院学生实验报告

(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)调试程序、编译程序

程序代码:

-9-

#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的平方

五、总结

经过这个试验我对矩阵键盘检测控制实验的相关知识的了解,不过我这个试验的程序编辑、编译不太熟悉,搞了好久也没有得到结果,最后在老师的帮助下完成了一个困难的问题又来到了,我对试验板又不知道如何操作,经过同学们的帮助我最终完成了这个试验这个程序,并开始将编译生成的目标码文件传入实验板中。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1