4X4扫描式矩阵键盘课程设计要点.docx
《4X4扫描式矩阵键盘课程设计要点.docx》由会员分享,可在线阅读,更多相关《4X4扫描式矩阵键盘课程设计要点.docx(16页珍藏版)》请在冰豆网上搜索。
4X4扫描式矩阵键盘课程设计要点
4X4扫描式矩阵键盘课程设计
课程设计名称:
4_4扫描式矩阵键盘设计
姓名:
DUKE
班级:
电子1008班
学号:
10086
成绩:
日期:
2014年1月6日
摘要
随着21世纪的到来,电子信息行业将是人类社会的高科技行业之一,式设施现代化的基础,也是人类通往科技巅峰的直通路。
电子行业的发展从长远来看很重要,但最主要的还是科技问题。
矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。
是它能准时、实时、高效地显示按键信息,以提高工作效率和资源利用率。
矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,显示在LED数码管上。
单片机控制依据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用AT89C51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。
单片机将检测到的按键信号转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
目录
第一章:
系统功能要求--------------------------------------------------------
1.14*4矩阵式键盘系统概述------------------------------------------------
1.2本设计任务和主要内容---------------------------------------------------
第二章:
方案论证---------------------------------------------------------------
第三章:
系统硬件电路的设计------------------------------------------------
3.1单片机控制系统原理-----------------------------------------------------
3.2原理图绘制说明----------------------------------------------------------
3.3画出流程图----------------------------------------------------------------
3.4原理图绘制---------------------------------------------------------------
第四章:
系统程序的设计------------------------------------------------------
4.1程序的编写步骤-----------------------------------------------------------
4.2编写的源程序--------------------------------------------------------------
第五章:
调试及性能分析------------------------------------------------------
第六章:
心得体会---------------------------------------------------------------
参考文献----------------------------------------------------------------------------
第一章:
系统功能要求
1.14*4矩阵式键盘系统概述
AT89C51单片机对4*4矩阵键盘进行动态扫描,当有按键盘的键时,可将相应按键值(0~F)实时显示在数码管上。
由p1.0—p1.3(列)和p1.4—p1.7(行)组成4*4矩阵键盘,p0口接LED静态显示电路。
由于p0口内部无上拉电阻,因此必须外部接上上拉电阻,其值的选择可以根据LED数码管发光电流及其亮度来决定。
通过编写4*4键盘的驱动程序,当有键盘按下时,能够在数码管显示器与按键的键值对应的数字。
0
3
2
1
最常见键盘布局如下图1.1所示。
一般由16个按键组成,在单片机中正好可以用一个p口实现16个按键功能,这也是单片机系统中最常见的形式,本设计就采用这个键盘模式。
4
5
6
7
8
B
9
A
F
C
D
E
图1.1
1.2本设计任务和主要内容
本论文主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软、硬件各个部分进行研究。
主要内容如下:
1.2.1根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计;
1.2.2熟练掌握protues软件的使用,并能够按要求对设计的电路进行仿真,实现相应的功能;
1.2.3LED实时显示按键的信息;
1.2.4采用软件编程的方法实现按键信息的提取和显示。
第二章:
方案论证
2.1用proteus仿真软件进行仿真
2.1.1按照设计任务在proteus7professional中绘制电路原理图。
2.1.2根据设计任务的要求编写程序,画出程序流程图,并在proteus下进行仿真,实现相应功能。
2.1.3以AT89C51为核心,设计系统硬件电路,并根据所设计的电路制作实物。
第三章:
系统硬件电路的设计
3.1原理图绘制说明
3.1.1用AT89C51单片机对4*4矩阵键盘进行动态扫描,当按键盘的键时,可以将相应的按键值(0~F)实时显示在数码管上。
4*4矩阵键盘是用4条I/O线作为行线,4条I/O线作为列线,在行线和列线的交叉点上设置一个按键,每个按键有它的行值和列值。
3.1.2在“单片机系统”区域中,把单片机的P1.0-P1.7端口通过8联拨动拨码开关连接到“4×4行列式键盘”区域的相应端口上。
3.1.3在“单片机系统”区域中,把单片机的P0.0-P0.7端口连接到“静态数码显示模块”区域中的任何一个a-g端口上;要求:
P0.0对应着a,P0.1对应着b,……,P0.6对应着g。
3.2画出流程图
流程开始先对第一列进行扫描,如果没有按键,再对第二列、第三列、第四列分别进行扫描,如果没有返回到开始;如果第一列有按键,分别对第一行、第二行、第三行、第四行进行扫描,若有按键按下分别显示0、1、2、3;第二列、第三列、第四列类似第一列,分别对第一行、第二行、第三行、第四行进行扫描,有按键相应的显示出数值。
判断有无按键按下的方法是:
第一步,置列线P1.4—P1.7为输入状态,从行线P1.0—P1.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。
第二步,行线轮流输出低电平,从列线P1.4—P1.7读入数据,若有某一列为低电平,则对应行线上有按键按下。
综合一二两步的结果,可以确定按键的编号。
但是键闭合一次只能进行一次键功能操作,因此必须等到按键释放后,再进行键功能操作,否则按键一次,有可能会连续多次进行同样的操作。
流程图如下:
开始
扫描一行
扫描一列
扫描下一行
扫描下一行
该行该列是否有按键按下
延时去抖
Y
四列全部扫描完?
N
扫描下一行
再次扫描原列
扫描下一行
N
四行全部扫描完?
是否与原值相符?
N
返回表示无键按下
释放按键
YNY
Y
根据行列号求键值
根据键值查询数码显示值表
返回
图3.1
3.3原理图绘制
3.3.1打开protrus仿真软件,进入主界面,然后新建一个图纸文件,软件默认为A4纸张,符合我们的要求,所以不需要修改。
3.3.2开始绘图,点击按钮P,弹出选择添加的器件框图,在Keywords里直接输入所需器件的名称或者在Category的下面各个选项里一次查找所需的器件名称,然后点击ok将所需器件添加进去。
3.3.3依次添加AT89C51芯片,共阳极的7段数码管,16个按键,8个电阻R0~R7,一个晶片,3个电容,地及电源。
3.3.4按照设计的要求正确的连接电路,连接时注意管脚的分配及AT89C51的工作原理。
3.3.5对连接好的电路图进行仿真,如果有错误要先按下暂停,然后对电路进一步的调整与修改,再进行仿真,保存原理图文件。
用protrus仿真软件所画的仿真图如下:
图3.2仿真原理图
第4章:
系统程序的设计
4.1程序的编写步骤
4.1.1判断是否有键按下;
4.1.2识别被按下的键;
4.1.3查数码显示编码表;
4.2编写的源程序
#include
#defineucharunsignedchar//数据类型的宏定义
#defineuintunsignedint//数据类型的宏定义
sbitP07=P2^1;
Unsigned;chartcode
table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};
//共阳数码管显示字型码数组10111111"-"
voiddelay1ms(uinti)
{
ucharj;
while(i--)
{
for(j=0;j<115;j++)//1ms基准延时程序
{
;
}
}
}
voiddisplay(unsignedchari)
{
P07=1;//选通最有端的数码管显示
P0=~table[i];//显示i参数传来的字型码
}
voidmain(void)
{
unsignedchartemp;
display(16);//初始显示"-"
while
(1)
{
//P1=0xff;//先向P1口写1;端口读状态
P1=0xf0;
temp=P1;
if(temp!
=0xf0)
{
delay1ms(15);
if(temp!
=0xf0)
{
P1=0xfe;
temp=P1;
switch(temp)
{
case(0xee):
display(0);break;
case(0xde):
display(4);break;
case(0xbe):
display(8);break;
case(0x7e):
display(12);break;
}
P1=0xfd;
temp=P1;
switch(temp)
{
case(0xed):
display
(1);break;
case(0xdd):
display(5);break;
case(0xbd):
display(9);break;
case(0x7d):
display(13);break;
}
P1=0xfb;
temp=P1;
switch(temp)
{
case(0xeb):
display
(2);break;
case(0xdb):
display(6);break;
case(0xbb):
display(10);break;
case(0x7b):
display(14);break;
}
P1=0xf7;
temp=P1;
switch(temp)
{
case(0xe7):
display(3);break;
case(0xd7):
display(7);break;
case(0xb7):
display(11);break;
case(0x77):
display(15);break;
}
}
}
}
}
第5章:
调试及性能分析
5.1仿真结果:
将此程序在汇编器中生成的“.hex”文件,导入AT89C51芯片中,用鼠标右键点击AT89C51,然后点鼠标左键,弹出编辑元件的框图,在programfile里添加.hex文件,再点OK。
5.2点击“开始”按键,进行仿真,点击右边4*4按键,则数码管显示0~F,仿真结果符合实验要求,仿真结果如下图所示:
图5.1仿真结果显示图(图中显示4)
5.3系统实现的功能
5.3.1基本功能:
通过键盘输入,在数码管上显示相应的数值;
5.3.2功能优势:
键盘输入,单片机控制,数码管显示,在数码管连接方面克服了共阳极数码管显示不清晰的困难。
第6章:
心得体会
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。
使我对抽象的理论有了具体的认识。
通过本次电子线路设计,我不仅加深了对单片机理论知识的理解,学会了学以致用的重要性;而且还学会了如何去加强锻炼创新精神,同时也提高了自身的动手能力,让我深刻的意识到理论与实际结合的重要性。
电子线路的学习对于我们专业来说非常的重要,通过本次设计也让我更加清晰了对专业的了解,理论知识再丰富,没有实际的操作经验也是不行的;本次设计也运用到了proteus仿真软件,由于之前没有学过该仿真软件,所以在操作的过程中遇到了很多困难,但庆幸的是通过不断的学习,对proteus软件也有了很大的了解,也学会了一些简单的操作,所以也让我意识到,如果你想学好,通过自己的努力就一定会学好。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
参考文献:
【1】张朝等;电子线路原理及串口外设接口技术;北京航空航天大学出版社,2008年10月;
【2】曾志海、姜连鑫;电子线路设计原理及应用;北京;机械工业出版社;
【3】刘志刚等;电子线路应用系统设计;北京;机械工业出版社;
【4】赵秋爽、洪绍龙等;电子线路开发基础与经典设计实例;北京;机械工业出版社;
【5】王星寒等;从0开始教你学电子线路;北京;北京航空航天大学出版社;