《单片机原理及应用》实验五按键及显示实验任务书.docx

上传人:b****1 文档编号:1987968 上传时间:2023-05-02 格式:DOCX 页数:9 大小:626.33KB
下载 相关 举报
《单片机原理及应用》实验五按键及显示实验任务书.docx_第1页
第1页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第2页
第2页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第3页
第3页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第4页
第4页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第5页
第5页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第6页
第6页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第7页
第7页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第8页
第8页 / 共9页
《单片机原理及应用》实验五按键及显示实验任务书.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《单片机原理及应用》实验五按键及显示实验任务书.docx

《《单片机原理及应用》实验五按键及显示实验任务书.docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》实验五按键及显示实验任务书.docx(9页珍藏版)》请在冰点文库上搜索。

《单片机原理及应用》实验五按键及显示实验任务书.docx

《单片机原理及应用》实验五按键及显示实验任务书

 

单片机原理及应用

随堂实验报告

 

实验五按键与显示实验

 

学院计算机与电子信息学院

专业电子信息工程班级电信12-1班

姓名许锐佳学号12034490129

指导教师左敬龙

 

实验报告评分:

_______

 

一、实验原理及电路

实验原理:

单片机80c51的P2口接一矩阵键盘,P0和P3口接两个数码管,P1口通过接两个3-8译码器控制16个灯。

刚开始时,电路处于扫描按键是否按下的状态,当有某个键按下时,在扫描函数作用下,会有一小段消抖时间,确定没抖动的情况下再次判断是否真的有按键按下,如果真的有按下,通过先检查行,再检查列的方法判断是哪个键按下,判断完后执行对应case后面的语句,即实现相应的功能。

下图为实验原理电路图

(此时按下的是第10个按键):

二、功能说明

16个开关形成矩阵键盘,当按下第一个键时,数码管显示1,第一个led灯亮;当按下第二个键时,数码管显示2,第二个led灯亮;当按下第三个键时,数码管显示3,第三个led灯亮···依次类推,按下第几号键,数码管显示对应号数,对应led灯亮。

三、实验框图:

四、实验代码

#include

#defineucharunsignedchar

#defineuintunsignedint

uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};

ucharnum;

voiddelay(uchartime)

{

uchari,j;

for(i=0;i

for(j=0;j<110;j++);

}

voiddisplay1(ucharnum)

{

P0=table[0];

P3=table[num];

}

voiddisplay2(ucharnum)

{

P0=table[1];

P3=table[num];

}

voidkeyscan()

{

uchart,key;

P2=0xfe;

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

delay(10);

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

t=P2;

switch(t)

{

case0xee:

key=1;display1(key);P1=0x80;break;

case0xde:

key=2;display1(key);P1=0x81;break;

case0xbe:

key=3;display1(key);P1=0x82;break;

case0x7e:

key=4;display1(key);P1=0x83;break;

}

}

}

P2=0xfd;

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

delay(10);

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

t=P2;

switch(t)

{

case0xed:

key=5;display1(key);P1=0x84;break;

case0xdd:

key=6;display1(key);P1=0x85;break;

case0xbd:

key=7;display1(key);P1=0x86;break;

case0x7d:

key=8;display1(key);P1=0x87;break;

}

}

}

P2=0xfb;

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

delay(10);

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

t=P2;

switch(t)

{

case0xeb:

key=9;display1(key);P1=0x40;break;

case0xdb:

key=10;display2(key);P1=0x48;break;

case0xbb:

key=11;display2(key);P1=0x50;break;

case0x7b:

key=12;display2(key);P1=0x58;break;

}

}

}

P2=0xf7;

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

delay(10);

t=P2;

t=t&0xf0;

if(t!

=0xf0)

{

t=P2;

switch(t)

{

case0xe7:

key=13;display2(key);P1=0x60;break;

case0xd7:

key=14;display2(key);P1=0x68;break;

case0xb7:

key=15;display2(key);P1=0x70;break;

case0x77:

key=16;display2(key);P1=0x78;break;

}

}

}

}

voidmain()

{

P1=0x00;

P0=0x3f;

P3=0x3f;

while

(1)

{

keyscan();

}

}

五、实验过程

一开始实验时,16个led灯不知要怎么接,因为每个灯接一个接口太浪费,后来想到可以用3-8译码器,这样就能节省很多接口,只需占用P1六个接口就能实现对16个灯的控制。

但是后来又发现,译码器E1给高电平,E2非、E3非给低电平虽然能实现译码,但是没法独立控制16个灯,只能控制一排8个灯,另一排的显示结果与前一排相似,于是,再次查看3-8译码器各引脚功能,发现E1给低电平时能保持原有结果,而且P1口剩两个接口,因此我立马将两个译码器的E1口接到P1口剩下的两个接口,通过给E1高低电平实现对第一排8个led灯和第二排8个led灯的独立控制。

六、实验小结

本次按键与显示实验难度适中,虽然成功完成实验,但是个人感觉自己做的这个功能比较简单,而且程序也编的比较繁琐,不够简洁,编程方面还得多练,自己也得尝试做一些功能更为复杂的,不能满足于现状。

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2