《基于LCD的单片键盘显示系统的设计与开发.docx》由会员分享,可在线阅读,更多相关《基于LCD的单片键盘显示系统的设计与开发.docx(20页珍藏版)》请在第一文库网上搜索。
1、单片机原理及应用课程设计报告课题名称:基于LCD的单片机键盘显示系统设计院(系):电气信息学院专 业:电子信息工程2011级姓 名:隆秀芸学 号:1 1 0 7 0 3 0 1 0 2指导老师:孙晓玲日期:2 0 14. 7.4摘要3一、设计任务3二、方案设计3三、硬件设计33. 1单片机控制系统原理33.2单片机主机系统电路43. 2. 1 时钟电路43. 2. 2 复位电路53.3矩阵式键盘电路53. 4 译码显示电路6四、软件设计74. 1 软件流程图74.2源程序编写8五、调试过程8六、实验结果9七、心得体会9参考文献10附 录10摘要: 矩阵式键盘乃是当今使用最为广泛的键盘模式,该系
2、统以N个端口连接控制N*N个按键,显示在1602LCD液晶显示器上。单片机控制的就是键盘显示系统,该系统可以对不同的按键进行实时显示,其核心是单片机和键盘矩阵电路部分,主要对按键与显示电路的关系、矩阵式技术及设备系统的硬件、软件等各个部分进行实现。4*4矩阵式键盘采用89c51单片机为核心,主要由矩阵式键盘电路、译码电路、显示电路等组成,软件选用C语言编程。单片机将检测到的按键信号转换成数字量,显示于LCD显示器上。该系统灵活性强,易于操作,可靠性高,将会有更广阔的开发前景。关键词:单片机液晶显示器矩阵式键盘一、设计任务本设计主要研究单片机控制的键盘识别显示系统,分别对按键信息和显示电路以及软
3、、硬件各个部分进行研究。任务要求:1)用键盘和LCD作为输入/输出设备。2)将按键输入的键码在LCD上显示出来。二、方案设计本设计选用单片AT89c51作为控制系统,结构简单、效率高且易于操作;以4X4的矩阵式键盘最为输入,可显示“0-9”和“+、-、*、/、=、ON/C”字符,为计算器的设计做准备;以1602LCD液晶显示器作为输出,可显示2行16个字符,体积小,功耗低,显示内容丰富。三、硬件设计3.1单片机控制系统原理电路的整体设计主要由三大模块组成:矩阵式键盘电路、单片机和译码与显示电路。如图3-1所示:图3-13. 2单片机主机系统电路AT89c51单片机是51系列单片机的一个成员,是
4、8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能C0MS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89c2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。单片机的实图如图3-2所示:U1192 -456 二78XTAL1XTAL2DOTPO.O/ADOPO.1/AD1P0.2/AD2P0.3/AD3PO.4/AD4P0.5/AD5P0.6/AD6oc T /A
5、IS7Ko IP2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0/T2P3.0/RXDP1.1/T2EXP3.1/TXDP1.2P3.2/INT0P1.3P3.3/INT1P1.4P3.4/TOP1.5P3.5/T1P1.6rs.c/wr-P1.7P3.7/RD183937363534333222 23AT89C52图3-23. 2.1时钟电路时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于构成振荡器的高增益反向
6、放大器,引脚XTAL1和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图3-2-1所示:图 3-2-1在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。3. 2.2复位电路为了初始化单片机内部的某些特殊功能寄存器,必须利用复位电路,复位后可使CPU及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要RST引脚上出现两个机器周期时间以上的高电
7、平,即可引起系统复位,但如果RST引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为FFH,堆栈指针SP置为07H, SBUF内置为不定值,其余的寄存器全部清0,内部RAM的状态不受复位的影响,在系统上电时RAM的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用手动复位方式,如图3-2-2所不:RSTvcc10uR6293031PS日ALEEA-100R-R7.820R .2345678P1QP1.hP1.2P1.3P1.4P1.5P1.6P1 7图 3-2-23.3矩阵式键盘电路AT89C51单片机的并行口 P1接4X4矩阵
8、键盘,以P1. 0 P1. 3作输入线,以PL4 PL7作输出线;P1 口输出按键信息,当矩阵键盘上有按键被按下,液晶显示器上会显示相应的字符,键盘的实图如图3-3所示:9 6 1 3 一8 5 1 2 一rol口 口口A B c D图3-33. 4 1602液晶显示器液晶显示模块具有体积小、功耗低、显示内容丰富等特点。现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件。1602能够显示2行16个字符,有8位数据总线DO-D7,和RS、RW、EN三个控制端口,工作在5V的电压下。1602液晶显示器的实图如图3-4所示:LCD1LM016LC/) Q LB (Z) Q LUW ol
9、cnco b scdz (T (K UJ QQQQQQQQ图3-4四、软件设计4、1软件设计流程图把一个多功能的复杂程序划分为若干个简单的、功能单一的程序模块,各程序模块完成明确的任务,实现某个具体的功能,在具体需要时调用相应的模块即可。软件设计流程图如图4-1所示:根据当前状态识别按键显示键值wI 结束 I图4-14、2源程序编写源程序编写见附件。五、调试过程调试与运行:1、程序调试顺序。2、键盘扫描程序调试。3、液晶模块的写指令代码子程序。4、液晶模块的写显示数据代码子程序。5、初始化液晶显示模块子程序。6、液晶显示一个字符子程序。程序调试1、当各个部分的子程序调试无误后,按照源程序的调用
10、顺序,将各个部分连接起来,进行编程。2、得到的结果是当用户按下某个键是,在液晶显示器上显示该键被按下后实现功能对应的参数。六、实验结果经调试后,最终得到结果。当键盘上有相应的键被按下,在LCD就显示出相应的字符;当复位键被按下时,清除LCD显示器上的字符,以备下一次的输入,输出结果如图6-1所示:LCD1LM016L平XT,0123456789/+-+=CSitu SESS3SSS图6-1七、心得体会通过此次的单片机课程设计,我不仅加深了对单片机理论的理解,深刻懂得了要不断地时间才能掌握知识,而且还学会了如何去加强锻炼创新精神,从而不断地战胜自己,超越自己。创新,是要我们将理论很好地联系实际,
11、并不断地去开动自己的脑子,从为先到并做到别人没想到没做到的事,不断地超越别人,超越自己;同时,更重要的是,在这一设计过程中,我懂得了坚持不懈,不轻易言弃是每个理工科学子应具备的良好素质。设计过程,也好比是我们的成长的历程,常有一些不如意的事情发生,这就对我们提出了挑战。只要自己坚持,坚持,再坚持,再苦再累也值得。机遇青睐有准备的人。这个设计过程中,我遇到过许多的考验,给整个设计带来的困扰,但最后还是坚持了下来.回头想想这个设计的过程,我明白了,原来结果并不是那么得重要,我们更应该注重的是过程。系统以单片机AT89c51为核心部件,单片机系统完成对按键信号识别、检测、处理、显示等功能,用Prot
12、eus软件绘制电路原理图,利用C语言编制程序。这个系统设计能让我们更好地去认识和使用单片机,矩阵式键盘,节约I/O 口资源,引脚分配,实时显示,芯片应用,编程实践,还有诸如此类的优点。参考文献1李智奇著. MSP430系列低功耗单片机原理与设计.西安电子科技大学出版社,2008.2谭浩强著.C语言程序设计(第三版).清华大学出版社,2005.3胡大可著.MSP430系列超低功耗16位单片机原理与应用(第三版).北京航空航天出版社,2006.4孙传友等.测控电路及装置.北京航空航天大学出版社,2002.5李朝青著.单片机原理及接口技术.北京航空航天大学出版社,2005.6李建忠著.单片机原理及应
13、用.西安电子科技大学出版社,2007.附录:主程序段:ttinclude include include HT.h#define uchar unsigned char#define uint unsigned intuchar m;int i;/uchar Keyscan(void)(uchar i, j, temp, Buffer4 = Oxef, Oxdf, Oxbf, 0x7f;for(j = 0; j 4; j+) 循环四次Pl二Bufferj;在Pl高四位分别输出一个低电平temp = 0x01;计划先判断Pl.0位for(i = 0; i 4; i+) 循环四次if(! (Pl & temp) 从Pl低四位,截取1位return (i + j * 4); 返回取得的按键值temp = 1;判断的位,左移一位 )return 16;判断结束,没有键按下,返回16f/ /* 主程序 */f/f/main()led init ();/ lcd_pos(0);while(1) m 二 Keyscan (); 读入