键盘扫描单片机课程设计论文Word文档格式.docx
《键盘扫描单片机课程设计论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《键盘扫描单片机课程设计论文Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
3.3矩阵式键盘电路·
8
3.4译码显示电路·
第4节系统的软件设计·
11
第5节课程设计心得体会·
16
参考文献·
16
第一节课程设计任务书
南昌工程学院
课程设计(论文)任务书
1、
一、课程设计(论文)题目:
二、课程设计(论文)使用的原始资料(数据)及设计技术要求:
利用实验箱上的键盘,编写键盘扫描程序。
1编写键盘扫描程序,识别按键
2对识别的按键赋予一定的定义,在LED数码管上显示
要求:
1画出逻辑硬件图
2画出程序流程图,设计出程序并通过检查。
三、课程设计(论文)工作内容及完成时间:
6.13-6.17查阅资料,画出逻辑图及流程图
6.20-6.24软件编制、调试、完成课程设计
四、主要参考资料:
1.嵌入式技术基础与实践王宜怀清华大学出版社
2.郁文工作室,嵌入式C语言程序设计—使用MCS-51[M].北京:
人民邮电出版社,2006
信息工程学院系09计算机应用技术专业1班
学生:
XXX
日期:
自2011年6月13日至2011年6月24日
指导教师:
助理指导教师(并指出所负责的部分):
教研室:
教研室主任:
第二节引言
引言
矩阵式键盘乃是当今使用最为广泛的键盘模式,该系统以N个端口连接控制N*N个按键,即时在LED数码管上。
单片机控制的据这是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。
4*4矩阵式键盘采用AT89S51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用汇编语言编程。
单片机将检测到的按键信号转换成数字量,显示于LED显示器上。
该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。
2.14*4矩阵式键盘识别显示系统概述
矩阵式键盘模式以N个端口连接控制N*N个按键,实时在LED数码管上显示按键信息。
显示按键信息,既降低了成本,又提高了精确度,省下了很多的I/O端口为他用,相反,独立式按键虽编程简单,但占用I/O口资源较多,不适合在按键较多的场合应用。
并且在实际应用中经常要用到输入数字、字母、符号等操作功能,如电子密码锁、电话机键盘、计算器按键等,至少都需要12到16个按键,在这种情况下如果用独立式按键的话,显然太浪费I/O端口资源,为了解决这一问题,我们使用矩阵式键盘。
矩阵式键盘简介:
矩阵式键盘又称行列键盘,它是用N条I/O线作为行线,N条I/O线作为列线组成的键盘。
在行线和列线的每个交叉点上设置一个按键。
这样键盘上按键的个数就为N*N个。
这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。
最常见的键盘布局如图1-1所示。
一般由16个按键组成,在单片机中正好可以用一个P口实现16个按键功能,这也是在单片机系统中最常用的形式,本设计就采用这个键盘模式。
如图1-1所示
图2-1键盘布局
随着21世纪的到来,资源危机接踵而至。
快速席卷整个国家,这一状况还将随着时间的推移和社会的发展而更加严重。
国家提倡资源节约型社会,资源危机已成为全球性的突出问题,利用科技手段缓解这一危机,将是人类主要的出路。
电子信息行业是人类社会的高科技行业之一,是设施现代化的基础,也是人类通往科技巅峰的直通路。
电子行业的发展从长远来看很重要,但最主要的还是科技问题。
国家设施的现代化的根本出路在于全面提高科技水平,现代的社会经营模式由传统模式向现代化、高科技模式转变,由粗放型向集约型方向转变,必须要求科技有一个大的发展,进行一次新的技术革命。
矩阵式键盘提高效率进行按键操作管理有效方法,它可以提高系统准确性,有利于资源的节约,降低对操作者本身素质的要求。
是它能准确、实时、高效地显示按键信息,以提高工作效率和资源利用率。
随着计算机技术和电子科技的迅猛发展,计算机和电子产品的价格日益降
低,可靠性日益提高。
本文旨在设计一套能对按键信息进行自动实时显示的系
统。
2.2本设计任务和主要内容
本论文主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软、硬件各个部分进行研究。
主要内容如下:
①根据矩阵式键盘的特点,进行键盘控制系统的整体研究与设计;
②LED实时显示按键信息(显示按键的坐标);
③采用软件编程的方法实现按键信息的提取和显示。
第三节系统主要硬件电路设计
3.1单片机控制系统原理
图3-1单片机控制系统原理框图
3.2单片机主机系统电路
AT89C51单片机是51系列单片机的一个成员,是8051单片机的简化版。
内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与IntelMCS-51系列单片机的指令和输出管脚相兼容。
由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。
图3-2仿真原理图
3.3矩阵式键盘电路
AT89C51单片机的并行口P1接4×
4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;
P1口输出按键信息,在数码管上显示每个按键的“0-F”序号。
实际电路图连接如图2-4所示。
图3-3矩阵式键盘电路
3.4译码显示电路
译码电路中常用的显示器有LED(数码管)和LCD(液晶显示器)。
这两种显示器都具有线路简单、耗电少、成本低、寿命长等优点。
本系统输出结果选用2个LED显示。
数码管有共阴共阳之分,本系统采用8段共阳型LED,其原理图如图3-5所示。
数码管内部有8个发光二极管,公共端由8个发光二极管的阴极并接而成,正常显示时公共端接低电平(GND),各发光二极管是否点亮取决于a-dp各引脚上是否是高电平。
LED数码管的外形结构如图3-4,外部有10个引脚,其中3,8脚为公共端也称位选端,其余8个引脚称为段选端,当要使某一位数码管显示某一数字((0-9中的一个)必须在这个数码管的段选端加上与数字显示数字对应的8位段选码(也称字形码),在位选端加上低电平即可。
由于系统要显示的内容比较简单,显示量不多,所以选用数码管既方便又经济。
LED有共阴极和共阳极两种。
如图3-4所示。
二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。
一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)a~g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压时,该段笔划即亮;
不加电压则暗。
符号和引脚共阳极共阴极
图3-4LED数码管结构
图3-5译码显示电路
当无按键闭合时,P1.0--P1.3与P1.4--P1.7之间开路。
当有键闭合时,与闭合键相连的两条I/O口线之间短路。
判断有无按键按下的方法是:
第一步,置列线P1.0--P1.3为输入状态,从行线P1.4--P1.7输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。
第二步,行线轮流输出低电平,从列线P1.0--P1.3读入数据,若有某一列为低电平,则对应行线上有键按下。
综合一二两步的结果,可确定按键编号。
但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
由于本显示电路功能简单,为使编程简单,采用直接输出模式,即把P2.0-P2.6端口用8芯排线连接到数码显示模块区域中的a-g端口上,要求:
P2.0对应着a,P2.1对应着b,……,P2.6对应着g。
将行列分别送到两个数码管,显示按键的坐标。
第四节系统的软件设计
4.1软件流程图
开始
键盘值
初始化
读列线是否有键按下
N
延时
去抖动
Y
读列是否有
按键按下
根据当前状态
识别按键
Y
显示
按键坐标
图3-1软件设计流程图
4.2系统程序设计
#include<
reg51.h>
#defineucharunsignedchar//宏的定义变量类型uchar代替unsignedchar
#defineuintunsignedint//宏的定义变量类型uint代替unsignedint
uchardis_buf,dis_buf1;
//显示缓存
uchartemp;
ucharl,h;
//键顺序吗
voiddelay0(ucharx);
//x*0.14MS
//此表为LED的字模
0123456789abcdef
unsignedcharcodeLED7Code[]={~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
/*************************************************************
**
*延时子程序*
*************************************************************/
voiddelay(ucharx)
{ucharj;
while((x--)!
=0)//CPU执行x*12次,x=10
{for(j=0;
j<
125;
j++)
{;
}
}
*键扫描子程序(4*3的矩阵)P1.4P1.5P1.6P1.7为行*
*P1.1P1.2P1.3为列*
**
voidkeyscan(void)
{temp=0;
P1=0xF0;
//高四位输入行为高电平列为低电
delay
(1);
//延时
temp=P1;
//读P1口
temp=temp&
0xF0;
//屏蔽低四位
temp=~((temp>
>
4)|0xF0);
if(temp==1)//p1.4被拉低
h=1;
elseif(temp==2)//p1.5被拉低
h=2;
elseif(temp==4)//p1.6被拉低
h=3;
elseif(temp==8)//p1.7被拉低
h=4;
dis_buf=h;
dis_buf=dis_buf&
0x0f;
//else
//key=16;
P1=0x0F;
//低四位输入列为高电平行为低电平
//延时
0x0F;
temp=~(temp|0xF0);
if(temp==1)//p1.0被拉低
l=1;
elseif(temp==2)//p1.1被拉低
l=2;
elseif(temp==4)//p1.2被拉低
l=3;
elseif(temp==8)//p1.3被拉低
l=4;
//else
dis_buf1=l;
//键值入显示缓存
dis_buf1=dis_buf1&
*判断键是否按下*
voidkeydown(void)
{
P2=0xF0;
P3=0xf0;
//将高4位全部置1低四位全部置0
if(P1!
=0xF0)//判断按键是否按下如果按钮按下会拉低P1其中的一个端口
{
keyscan();
//调用按键扫描程序
*主程序*
*************************************************************/
main()
P1=0xFF;
//置P0口
P2=0xFF;
P3=0xff;
//置P1口
delay(10);
//延时
while
(1)
keydown();
//调用按键判断检测程序
P2=LED7Code[dis_buf%16]&
0x7f;
P3=LED7Code[dis_buf1%16]&
//LED70x7f为小数点共阴和共阳此处也是不一样;
%16表示输出16进制
delay(150);
}
第五节课程设计心得体会
通过此次的单片机课程设计,我不仅加深了对单片机理论的理解,深刻懂得了要不断地时间才能掌握知识,而且还学会了如何去加强锻炼创新精神,从而不断地战胜自己,超越自己。
创新,是要我们将理论很好地联系实际,并不断地去开动自己的脑子,从为先到并做到别人没想到没做到的事,不断地超越别人,超越自己;
同时,更重要的是,在这一设计过程中,我懂得了坚持不懈,不轻易言弃是每个理工科学子应具备的良好素质。
设计过程,也好比是我们的成长的历程,常有一些不如意的事情发生,这就对我们提出了挑战。
只要自己坚持,坚持,再坚持,再苦再累也值得。
机遇青睐有准备的人。
这个设计过程中,我遇到过许多的考验,给整个设计带来的困扰,真想要就此放弃,然而,我还是挺了过来,
回头想想这个设计的过程,我明白了,原来结果并不是那么得重要,我们更应该注重的是过程。
系统以单片机AT89C51为核心部件,单片机系统完成对按键信号识别、检测、处理、显示等功能,用Protel软件绘制电路原理图,利用MCS-51汇编语言编制程序。
这个系统设计能让我们更好地去认识和使用单片机,矩阵式键盘,节约I/O口资源,引脚分配,实时显示,芯片应用,编程实践,还有诸如此类的优点。
然而由于时间有点紧张,本来想设计一个数码管动态扫描电路,或者用液晶屏显示的电路来显示按键信息,这样更加清晰,而且还可以显示其他的东西,比如时间,排序等等。
主要参考资料:
1.嵌入式技术基础与实践王宜怀清华大学出版社
2.郁文工作室,嵌入式C语言程序设计—使用MCS-51[M].北京:
.