键盘输入与液晶显示系统设计最终版Word格式文档下载.docx
《键盘输入与液晶显示系统设计最终版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《键盘输入与液晶显示系统设计最终版Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
8、按功能键“F”:
显示“Thankyou!
JiDian1213”
工作计划安排:
(1)认真阅读课本,查阅资料,学习课程设计中所用芯片及器件,尤其是对LCD液晶显示器的学习和键盘扫描的复习
(2)分析硬件和电路图
(3)进行程序设计分工,根据课本9-2节程序编写课程设计程序
(4)编写键盘扫描程序
(5)编写功能按键分支程序并控制灯和蜂鸣器
(6)编写显示数字子程序
(7)编写功能键子程序
(8)将程序进行组合,进行protues软件仿真
(9)不断调试和改进源程序
(10)完善实验报告,总结经验收获
同组设计者及分工:
张威12223084程序编写与调试,Proteus仿真,撰写设计书
张古琴12223083Proteus仿真,E、F键盘功能键设计,制作ppt
丁国华12223060程序编写与调试,Proteus仿真电路优化
摘要
键盘输入与液晶显示系统是单片机应用中最常见的一种形式,几乎涉及到人们日常生产和生活中的各个方面。
键盘是用于实现单片机应用系统中的数据和命令的输入,液晶显示器LCD能使人直观的获得需要了解的信息。
实现人机的交流互动。
因此,对液晶显示与键盘系统的研究与应用是很有必要的,对于我们今后的学习有着很强的推动作用。
一、设计要求
◆系统上电显示初始化界面,“欢迎使用本系统!
”;
◆按数字键显示相应数字;
◆按功能键实现相应功能;
1、按功能键“A”,发光二极管发光;
2、按功能键“B”,发光二极管不发光;
3、按功能键“C”,蜂鸣器报警;
4、按功能键“D”,蜂鸣器停止报警;
5、按功能键“E”,显示组员姓名(Zhangweizhangguqindingguohua);
6、按功能键“F”,显示“Thankyou!
JiDian1213”。
二、任务分工
姓名
任务分工
张威
程序编写与调试,Proteus仿真,撰写设计书
张古琴
Proteus仿真,E、F键盘功能键设计,制作ppt
丁国华
程序编写与调试,Proteus仿真电路优化
三、主要元器件介绍
3.1、AT89C51
AT89C51简介:
AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kB的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
✧AT89C51主要特征:
Ø
4kBytesFlash片内程序存储器;
128bytes的随机存取数据存储器(RAM)
32个外部双向输入/输出(I/O)口;
2个中断优先级、2层中断嵌套中断;
6个中断源;
2个16位可编程定时器/计数器;
2个全双工串行通信口;
看门狗(WDT)电路;
片内振荡器和时钟电路;
与MCS-51兼容;
全静态工作:
0Hz-33MHz;
三级程序存储器保密锁定;
可编程串行通道;
低功耗的闲置和掉电模式。
✧管脚说明
VCC:
供电电压
GND:
接地
P0口:
P0口为一个8位漏级开路双向I/O
口,每脚可吸收8TTL门电流。
当
P1口的管脚第一次写1时,被定义
为高阻输入。
P0能够用于外部程序
数据存储器,它可以被定义为数据
/地址的第八位。
在FIASH编程时,
P0口作为原码输入口,当FIASH
进行校验时,P0输出原码,此时
P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的
8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1
后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输
出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为
第八位地址接收。
P1.0T2(定时器/计数器T2的外部计数输入),
时钟输出;
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向
控制);
P1.5MOSI(在系统编程用);
P1.6MISO(在系统编程用);
P1.7
SCK(在系统编程用)。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输
出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,
且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部
数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,
它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口
输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位
地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门
电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上
拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INT0(外部中断0)
P3.3INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.2、1602LCD概述
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别.
16字×
2行的字符型液晶显示器显示模块可以与8位或4位微处理器直接接口,其内置式字符发生器ROM可提供160种符合工业标准的字符,包括全部英文大小写字母,阿拉伯数字,以及32个特殊字符或符号,其内置的RAM可以根据用户需要,由用户自行设计字符或符号,其指令系统为用户提供了方便的操作指令,点阵字符型液晶显示模块采用了+5V单电源供电,功耗低。
✧1602LCD主要技术参数:
显示容量:
16×
2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
✧引脚功能说明:
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,引脚接口说明如下表。
引线号
符号
电平
功能
1
VSS
0V
GND
2
VDD
+5V
电源电压+5V
3
V0
0~5V
液晶驱动电压
4
RS
H/L
寄存器选择:
1、数据寄存器;
0、读写寄存器
5
R/W
读写操作选择:
1、读;
0、写
6
E
H,H→L
使能信号:
ENABLE
7~14
DB0~DB7
数据总线
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对
比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
✧1602LCD控制指令:
1620液晶模块内部的控制器共有11条控制指令,如下表所示。
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置
指令2:
光标复位,光标返回到地址00H
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移
S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符
指令7:
字符发生器RAM地址设置
指令8:
DDRAM地址设置
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据
指令11:
读数据
1620液晶显示模块可以和单片机直接接口。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。
3.3、发光二极管
光是能量的一种形式,一种可以被原子释放出来。
是由许多有能量和动力但没质量的微小粒子似的小捆组成的。
这些粒子被叫做光子,是光的最基本单位。
光子是因为电子移动才释放出来。
在原子中,电子在原子的四周围以轨道形式移动。
电子在不同的轨函数有着不同等的能量。
通常来说,有着更大能量的电子以轨道移动远离了核子。
当电子从一个更低的轨道跳到一个更高的轨道,能量水平就增高,反过来,当从更高轨函数跌落到更低的轨函数里时电子就会释放能量。
能量是以光子形式释放出来的。
更高能量下降释放更高能量的光子,它的特点在于它的高频率。
自由电子从P型层通过二极管落入空的电子空穴。
这包含从传导带跌落到一个更低的轨函数,所以电子就是以光子形式释放能量。
这在任何二极管里都会发生的,当二极管是由某种物质组成的时候,你只是可以看见光子。
在标准硅二极管的原子,比如说,当电子跌落到相对短距离原子是以这样的方式排列。
结果,由于电子频率这么低的情况下人的眼睛是无法看得到的。
可见光发光二极管,比如用在数字显示式时钟的,间隙的大小决定了光子的频率,换句话说就是决定了光的色彩。
当所有二极管都发出光时,大多数都不是很有效的。
在普通二极管里,半导体材料本身吸引大量的光能而结束。
发光二极管是由一个塑性灯泡覆盖集中灯光在一个特定方向。
发光二极管比传统的白炽灯有几个优点。
第一个是发光二极管没有灯丝会烧坏,所以寿命就更长。
此外,发光二极管的小小塑性灯泡使得发光二极管更持久耐用。
还可以更加容易适合现在的电子电路。
传统白炽灯的发光过程包含了产生大量热量。
这是完全是浪费能源。
除非你把灯当做发热器用,因为绝大部分有效电流并不是直接产生可见光的。
发光二极管所发出的热非常少,相对来说,越多电能直接发光就是越大程度上减少对电能的需求。
3.4、蜂鸣器
蜂鸣器是一种一体化结构的电子讯响器,广泛应用于计算机、打印机、报警器、定时器等电子产品中作发生器件;
主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
本试验中应用电磁式,所以只介绍这一种。
电磁式蜂鸣器由振荡器、电磁线圈、磁圈、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
电磁式蜂鸣器驱动原理:
蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图:
驱动蜂鸣器原理图蜂鸣器实物图
如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极发射管的发射极E,三极管的基级B经过限流电阻R2后由单片机的P3.4引脚控制,当P3.4输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;
当P3.4输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
因此,我们可以通过程序控制P3.4引脚的电平来使蜂鸣器发出声音和关闭。
程序中改变单片机P3.4引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色,音调的声音。
另外,改变P3.4输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。
四、仿真电路设计与系统仿真图
4.1、Proteus仿真软件的相关介绍
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
4.2、复位电路仿真电路图:
复位是任何一种微型计算机都必须具备的工作方式。
复位操作使单片机处于一种初始化的状态。
MCS-51单片机的RST引脚上出现持续24个振荡周期的高电平信号时,单片机进入复位。
通常有上电复位与人工按钮复位两种方式。
本设计中采用上电复位方式。
如图2所示。
图2
4.3、时钟电路仿真电路图
通常单片机系统电路的实际有内部时钟和外部时钟两种形式,两种电路都向单片机提供最基本的振荡脉冲信号。
本设计中的晶体振荡电路如图3所示。
图3
4.4、1602LCD显示仿真电路图
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口。
本设计中采用14脚LCD。
VSS和VDD为电源端和接地端,VEE用于调整液晶显示器对比度。
D0~D7为8位双向数据线。
电路连接图如图4所示。
图4
4.5、键盘仿真电路图
设计中采用行列式非编码键盘,由行线、列线和键盘开关矩阵3部分组成。
在这种键盘中,每根行线和列线的交叉处都有一个按键,当某个键被按下时,与这个按键相连的行线和列线就会接通,否者行线和列线不接通。
如图5所示。
图5
4.6、蜂鸣器和发光二极管电路仿真图如图6和图7
4.7、相关功能仿真显示图
系统初始界面如图8:
图8
按数字键0显示数字0如图9:
图9
按下功能键E显示内容如图10:
图10
按下功能键F显示如图11:
图11
P2.7口为高电平,为打开LCD的CE
LCD的个端口地址为:
8000H:
写指令端口地址
8100H:
写数据端口地址
8200H:
读数据端口地址
P3.5为低电平灯亮,为高电平灯灭
P3.4为低电平不响,送高电平响
五、程序流程图及相关程序
5.1、程序思路:
本程序以《微机原理与接口技术》教科书中的9.2——点阵字符型LCD显示器与4*4键盘的应用为基础进行编写。
首先,我们先读懂了书上的参考程序,掌握了LCD液晶显示器的功能及使用方法。
在此基础上,对源程序进行改编,加工,填入了能满足实验要求的子程序。
通过调用这些子程序,最终使我们的程序实现我们要求的功能。
其次我们对每个子程序进行了详细的分析和编写,对于4x4的键盘采用行列式扫描法,并在得到键值之后调用子程序将键值转化成ASCII码来显示在LCD显示屏上。
针对不同的按键功能以及不同的显示要求编写相对的子程序包括显示初始化子程序,按键显示子程序,功能键显示子程序以及蜂鸣器发声的子程序,这一系列的程序都由主程序来安排执行。
在确定方案之后,我们对每个程序进行了单独的调试,并在综合起来之后进行了系统的仿真,解决意料之外的问题比如蜂鸣器的不能持续发声,LCD的显示问题等等,最终实现了基本的操作功能。
在功能键显示二极管子程序以及蜂鸣器子程序都加入了循环,使得二极管和蜂鸣器能持续工作。
5.2、程序流程图:
六、遇到问题及解决方案
6.1、软件问题
1.初步仿真时所有按键都不能起作用
按照原理图连好之后,液晶显示出初始化界面,但按下任何按键之后都没有任何反应,开始我们认为仿真电路图自己没有连对,我们又重新练了一遍电路,但还是出现连原来的问题。
我们在一起仔细研究之后发现,原来是按键的电位接反了,改过之后,一切都正常了
2、Proteus仿真时使用5个管脚的排阻功能不能实现
解决方案:
网上查阅资料后,选择8个管脚的排阻,解决了上述问题。
3.正确连接后,上电后发现LCD不亮,不显示任何数字或是字母。
组内讨论后,发现LCD的VSS端口没有和地线连接在一起,改变连线之后正常。
4.C键不能让蜂鸣器长响
在软件仿真中当按下C键后P3.4口始终是低电平,然而蜂鸣器却不能常响,只会响一声。
经过查资料之后我们发现只有出现脉冲才能让蜂鸣器正常工作,之后,我们通过修改程序,加入循环语句,通过不断按改变蜂鸣器一端的电位,加入键盘扫描程序,用D键关闭蜂鸣器,终于实现蜂鸣器可以长时间的响,并且按D键时蜂鸣器会停止工作。
七、体会与感想
通过了本次的课程设计,我们成功的将课堂上学习的知识通过软件仿真出来,通过运用课堂上学习到的分析元器件的方法,我们学会了LCD的使用。
我们也学会如何使用proteus和keil联合进行单片机系统的程序调试及仿真开发。
这些实践大大地加深了我们对单片机使用过程的理解,也让我们对单片机程序的编程更加熟悉。
虽然在这个过程中也遇到了一些无法预料到的的困难,但是经过学习和讨论,我们都将其一一克服。
总之,经过这次的研究性教学,我们不仅加深了Proteus仿真软件的了解和使用,还学到了许多课本上没有涉及知识,练习了电路原理图的设计和仿真运行,同时对本学期学习的单片机课程进行了一次全面的复习和巩固,收益很大。
通过本次课程设计,我们能够更深层次地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机与微机原理接口这门课程,掌握汇编语言的设计和调试方法,熟悉设计的流程及程序的组合、调用和系统的调试。
了解了单片机的应用对于我们以后的研究与学习会有很大帮助!
八、参考文献
1.赵嘉蔚,张家栋,霍凯,肖燕彩.单片机原理与接口技术.北京:
清华大学出版社,2010
2.朱大奇,李念强.单片机原理、接口及应用.南京:
南京大学出版社,2003
3.胡汉才.单片机原理及其接口技术(第二版)。
北京:
清华大学出版社,2004
4.张家田.液晶显示器件应用技术.北京:
机械工业出版社,2004
5.刘法治.常用电子元器件及典型芯片的应用技术.北京:
机械工业出版社,2007
九、附件
程序清单:
ORG0000H
AJMPMAIN
ORG0030H
MAIN:
MOVSP,#60H
CLRP3.4
ACALLLCDINI;
初始设置
ACALLLCDY;
显示初始化界面
LOOP:
ACALLKEY;
键盘扫描程序
MOVR0,#50H
CJNE@R0,#0FFH,NEXT0
AJMPLOOP
NEXT0:
CJNE@R0,#0AH,NEXT1;
判断是否是数字键
NEXT1:
JNCNEXT2
MOVDPTR,#8000H
MOVA,#01H
MOVX@DPTR,A
ACALLBU