矩阵键盘控制16个LED灯.docx

上传人:b****8 文档编号:9112152 上传时间:2023-05-17 格式:DOCX 页数:13 大小:134.93KB
下载 相关 举报
矩阵键盘控制16个LED灯.docx_第1页
第1页 / 共13页
矩阵键盘控制16个LED灯.docx_第2页
第2页 / 共13页
矩阵键盘控制16个LED灯.docx_第3页
第3页 / 共13页
矩阵键盘控制16个LED灯.docx_第4页
第4页 / 共13页
矩阵键盘控制16个LED灯.docx_第5页
第5页 / 共13页
矩阵键盘控制16个LED灯.docx_第6页
第6页 / 共13页
矩阵键盘控制16个LED灯.docx_第7页
第7页 / 共13页
矩阵键盘控制16个LED灯.docx_第8页
第8页 / 共13页
矩阵键盘控制16个LED灯.docx_第9页
第9页 / 共13页
矩阵键盘控制16个LED灯.docx_第10页
第10页 / 共13页
矩阵键盘控制16个LED灯.docx_第11页
第11页 / 共13页
矩阵键盘控制16个LED灯.docx_第12页
第12页 / 共13页
矩阵键盘控制16个LED灯.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

矩阵键盘控制16个LED灯.docx

《矩阵键盘控制16个LED灯.docx》由会员分享,可在线阅读,更多相关《矩阵键盘控制16个LED灯.docx(13页珍藏版)》请在冰点文库上搜索。

矩阵键盘控制16个LED灯.docx

矩阵键盘控制16个LED灯

一、任务说明

本次的任务是利用51单片机设计一个4*4矩阵键盘输入系统,用16个发光二级管对应16个不同的按键。

每按下一个按键对应的发光二极管就亮。

矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。

在行线和列线的每个交叉点上设置一个按键。

这样键盘上按键的个数就为N*N个。

这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。

最常见的键盘布局如图1所示。

一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。

键盘布局1图

利用单片机的并行口P1连接4×4矩阵键盘,并以单片机的P1.0-P1.3各管脚作输入线,以单片机的P1.4-P1.7各管脚作输出线;利用P2、P3口控制灯1-灯16,。

用Proteus绘制其电路原理图(附录一)。

此任务用到了AT89C51芯片,还用到了晶体振荡器、按钮开关、发光二级管以及一些电阻。

这次任务中采用C语言编写程序,在编译过程中设置成自动产生HEX文件,将此文件导入AT89C51中,即可实现相应的功能。

二、原理图绘制说明

电路原理图的设计与绘制是整个电路设计的基础,设计一个电路原理图的工作包括:

设置电路图图纸的大小,规划电路图的总体布局,在图纸上放置元器件并对元器件进行调整,进行布线和整体布局,最后保存并打印输出等几个步骤。

安装完Proteus后,运行ISIS7Professional,在原理图编辑窗口绘制电路图,在该界面下还有预览窗口和元件列表区,在左侧的工具箱中还有模型选择工具栏,方向工具栏及仿真按钮等工具。

其具体的使用步骤如下:

所示。

2运行该软件后,新建一个设计文件,设置图纸大小。

选择界面如图1.

图2选择图纸大小界面

2.接下来开始查找任务中所用到的元器件,查找界面如图3所示。

元器件查找界面图3

3.将查找的元器件放置到界面中,并进行相应的引脚连线,本次是采用标注的方式进行引脚连接,标注符号相同的表示引脚相连接,具体操作是先将引脚引出一小段导线,所示。

4右击导线选择放置网络标号,标注标号界面如图

图4标注标号界面

4.按照题目设计要求连接好各元件,完成后的原理图如附录Ⅰ所示。

三、流程图绘制

开始扫描N

是否有键按下Y识别哪一个键按下P3口显示或在P2返回

四、原理图仿真步骤及过程结果说明

1.在完成原理图的连接之后,要进行仿真,AT89C51还需要导入编写的程序文件,这次任务我是用用C语言编写的程序,用的是KEIL编程软件,用它产生HEX文件,将此文件导入到AT89C51中,然后就可以进行仿真了。

导入HEX文件如图5所示。

图5HEX文件导入界面

2.4*4矩阵键盘输入控制系统,P1.0--P1.3口控制行,P1.4—P1.7口控制列,电路所示。

6如图

图64*4矩阵键盘

3.按钮按下后16个发光二级管中对应的二级接通,如图7所示。

发光二级管接通7图

4.振荡及复位电路如图8所示。

图8振荡及复位电路

五、总结

本次课设虽然只有短暂的一周,但是在这一周内学到了很多用的东西,以前学到的知识也得到了一定的巩固。

此次课设又学了一种新软件——Proteus,通过网上查阅相关资料,查看相关教学视频,对Proteus有了一定的了解,虽然用的不是熟练,但是其基本功能还是能掌握,包括元器件的查找、元器件引脚的连接、以及完成之后的仿真,还对一些芯片的使用也有所熟悉,例如AT89C51等。

通过这次的课程设计,我充分认识到理论与实际相结合的重要性,理论知识再丰富,没有实际的操作经验再多的理论知识也没用,理论知识最终还是要用在实践上,只有这样才能锻炼我们的实际动手操作能力和独立思考能力。

本次课设还得感谢老师同学们的细心帮助和指导,让我学会了很多新知识。

近年来,随着电子技术飞速的发展,出现了各式各样,各种型号的单片机,但是51单片机是所有单片机的基础,只有学好51系列单片机才能更好的学习更高端的单片机。

由于知识和经验方面的不足,本设计还存在不足的地方,本人还要不断学习相关知识和查阅资料,使系统结构和功能上不断完善。

六、参考文献

1.张毅刚.单片机原理及应用.[M]哈尔滨:

哈尔滨工业大学出版社,2004.

2.彭伟.单片机C语言程序设计实训100例.[M]北京:

电子工业出版社,2011.

3.周坚.单片机C语言轻松入门.第2版,[M]北京:

北京航空航天大学出版社,2011.

4.杨打生,宋伟.单片机C51技术应用.[M]北京:

北京理工大学出版社,2011

5.张义和,王敏男.例说51单片机.第3版,[M]北京:

人民邮电出版社社,2010.

2009.电子工业出版社.[M]北京:

C6.郭天祥.51单片机语言教程

附录Ⅰ仿真电路图

附录Ⅱ程序清单

#include

#defineuintunsignedint

#defineucharunsignedchar

ucharcodetable[4]={0xFE,0xFD,0xFB,0xF7};

ucharscan()

{

ucharTemp=0;

ucharnum=0,i=0;

for(i=0;i<4;i++)

{

P1=table[i];

Temp=P1&0xF0;

if(Temp!

=0xF0)

{

switch(Temp)

{Temp=P1;

case0xE0:

num=0;break;

case0xD0:

num=1;break;

case0xB0:

num=2;break;

case0x70:

num=3;break;

default:

num=50;break;

}

break;

}

}

returnnum+4*i+1;

}

voiddisplay(ucharnum1)

{

switch(num1)

{

case1:

P2=0xfe;P3=0xff;break;//1

case2:

P2=0xfd;P3=0xff;break;//2

case3:

P2=0xfb;P3=0xff;break;//3

case4:

P2=0xf7;P3=0xff;break;//4

case5:

P2=0xef;P3=0xff;break;//5

case6:

P2=0xdf;P3=0xff;break;//6

case7:

P2=0xbf;P3=0xff;break;//7

case8:

P2=0x7f;P3=0xff;break;//8

case9:

P2=0xff;P3=0xfe;break;//9

case10:

P2=0xff;P3=0xfd;break;//10

case11:

P2=0xff;P3=0xfb;break;//11

case12:

P2=0xff;P3=0xf7;break;//12

case13:

P2=0xff;P3=0xef;break;//13

case14:

P2=0xff;P3=0xdf;break;//14

case15:

P2=0xff;P3=0xbf;break;//15

case16:

P2=0xff,P3=0x7f;break;//16

default:

break;

};

}

voidmain()

{charnum1;

while

(1)

{

num1=scan();

display(num1);

}

}

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

当前位置:首页 > 经管营销 > 经济市场

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

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