单片机课程设计液晶显示器与键盘系统 精品.docx
- 文档编号:4010760
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:29
- 大小:966.43KB
单片机课程设计液晶显示器与键盘系统 精品.docx
《单片机课程设计液晶显示器与键盘系统 精品.docx》由会员分享,可在线阅读,更多相关《单片机课程设计液晶显示器与键盘系统 精品.docx(29页珍藏版)》请在冰豆网上搜索。
单片机课程设计液晶显示器与键盘系统精品
微机原理与接口技术
综合实践设计书
设计题目:
液晶显示器与键盘系统
一、设计要求
◆系统上电显示初始化界面,如“欢迎使用本系统!
”;
◆按数字键显示相应数字;
1、按功能键“A”,发光二极管发光;
2、按功能键“B”,发光二极管不发光;
3、按功能键“C”,蜂鸣器报警;
4、按功能键“D”,蜂鸣器停止报警;
5、按功能键“E”,显示“机电1007,THAKYOU!
!
”;
6、按功能键“F”,显示“GOODBYE”。
二、任务分工及进度安排
2.1、任务分工表
2.2、进度安排
◆资料查询与元器件的选择,1天
◆电路连接与Protues仿真,程序编写与调试;2天
◆硬件焊接,硬件调试;2天
◆综合调试,2天
◆课程设计任务书,2天
三、主要元器件介绍
3.1、AT89C51
AT89C51简介:
AT89C51是一个低功耗,高性能 8位,片内含4kB的可反复擦写1000次的只读程序存储器,器件采用的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
✧AT89C51主要特征:
Ø4kBytesFlash片内程序存储器;
Ø128bytes的随机存取数据存储器()
Ø32个外部双向输入/输出(I/O)口;
Ø2个、2层中断;
Ø6个中断源;
Ø2个16位可编程/;
Ø2个全双工串行通信口;
Ø()电路;
Ø片内和;
Ø与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
H/L
读写操作选择:
1、读;0、写
6
E
H,H→L
使能信号:
ENABLE
7~14
DB0~DB7
H/L
数据总线
第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、Protues仿真软件的相关介绍
Proteus是英国Labcenterelectronics公司出版的EDA(该软件总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,20XX年又增加了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
按数字键1显示数字1如图9:
图9
按下功能键E显示内容如图10:
图10
按下功能键F显示如图11:
图11
五、硬件电路及相关功能显示
5.1、硬件电路整体图:
P2.7口为高电平,为打开LCD的CE
LCD的个端口地址为:
8000H:
写指令端口地址
8100H:
写数据端口地址
8200H:
读数据端口地址
P3.5为低电平灯亮,为高电平灯灭
P3.4为低电平不响,送高电平响
5.2、相关功能显示图:
系统最初界面硬件显示如图12按数字键6后硬件显示如图13
图12图13
按功能键A后硬件显示如图14按功能键B后硬件显示如图15
图14图15
按E键后显示如图16按功能键F后显示如图17
图16图17
六、程序流程图及相关程序
6.1、程序构思:
a、参考《微机原理与接口技术》教科书中的9.2——点阵字符型LCD显示器与4*4键盘的应用为基础进行编写。
b、认真研读参考程序,掌握了LCD液晶显示器的功能及使用方法。
C、在源程序基础上修改、加工,加入满足实验要求的子程序。
d、对每个子程序进行详细编写,对于4x4的键盘采用行列式扫描法,并在得到键值之后调用子程序将键值转化成ASCII码来显示在LCD显示屏上。
e、针对不同的按键功能以及不同的显示要求编写相对的子程序包括显示初始化子程序,按键显示子程序,功能键显示子程序以及蜂鸣器发声的子程序,这一系列的程序都由主程序来安排执行。
f、对每个程序进行了单独的调试,并在综合起来之后进行了系统的仿真,解决实际遇到的问题比如各个显示之间的干扰、按键扫描对功能键实现的干扰等等,最终实现了基本的操作功能。
g、考虑到整个系统的使用,设置F键位关机键。
6.2、程序流程图:
七、遇到问题及解决方案
7.1、硬件问题
a、LCD屏未接通电源
解决方案:
用万用表检查焊接中是否有连线断路,发现有焊接处接触不良,重新焊接后即可正常使用。
b、按下C键后蜂鸣器不响
解决方案:
查看仿真电路,发现P3.4处不论置1还是清0蜂鸣器处电平不改变。
分析三极管原理后发现电阻R1与R2接反,经调换之后蜂鸣器正常。
c、正确连接后,发现LCD不亮
解决方案:
组内讨论后,发现应调节蓝色电位器,调试之后正常。
7.2、软件问题
a、E键按下后第二行显示”THANKYOU!
!
”时预计在第二行显示但是显示在了第一行
解决方案:
在E键功能下调用LCD3显示机电1007时错将选择DDRAM中显示字符的地址删除,导致没能显示出汉字,将下面的程序添加后恢复正常:
LCD33:
MOVDPTR,#8100H
INCA
MOVX@DPTR,A
ACALLBUSY
ACALLDEL
DJNZR5,LCD33
b、设置P3.4为低电平后,蜂鸣器不响
解决方案:
将清0改为输入方波,在高低电平的变化下,蜂鸣器响。
输入方波程序如下:
CLRP3.4
MOVR7,#0FFH
CA:
MOVR6,#0FFH
CA6:
DJNZR6,CA6
CPLP3.4
DJNZR7,CA
CLRP3.4
c、在文字显示过程中,有些文字较为复杂,例如机电,很难在8x5的LCD上完整显示。
解决方案:
将要显示的文字拆成两半,分别在两个8x5的LCD上显示即可。
CGRAM的内容如下:
DB04H,1FH,04H,0EH,15H,04H,04H,04H
DB00H,0EH,0AH,0AH,0AH,0BH,13H,13H
DB01H,0FH,09H,0FH,09H,0FH,01H,01H
DB00H,1CH,04H,1CH,04H,1CH,01H,1FH
DB04H,04H,04H,04H,04H,04H,04H,04H
DB1FH,11H,11H,11H,11H,11H,11H,1FH
DB1FH,11H,11H,11H,11H,11H,11H,1FH
DB1FH,01H,01H,02H,02H,04H,04H,08H
d、在显示字母及汉字时,都遇到显示不全的情况。
如:
初始值显示“欢迎使用本系统”时只能显示“欢迎使用本系”,而且字没有显示完全。
解决方案:
经过组员的讨论之后发现是第一行显示的字型码没有完全输入显示屏,最后在修改过控制输入的字符量的R1之后问题得到解决。
修改后程序如下:
AAA:
MOVDPTR,#TAB
MOVA,R1
MOVCA,@A+DPTR
MOVDPTR,#8100H
MOVX@DPTR,A
ACALLBUSY
INCR1
CJNER1,#40H,AAA
针对字形没有显示完全,经过与课本上例题的对比发现是工作方式控制存在问题,在LCD初始化子程序中将方式控制字修改:
由5x7改为5x10显示,即由38H改为3CH,光标不显示。
LCDINI:
MOVDPTR,#8000H
MOVA,#3CH
MOVX@DPTR,A
ACALLBUSY
MOVDPTR,#8000H
MOVA,#0CH
MOVX@DPTR,A
ACALLBUSY
RET
f、按下F键结束之后,原先的显示还在LCD上,出现了重叠的现象
解决方案:
没有进行清屏,原先存入的字型码依然存在DDRAM中,需要赋值清除DDRAM和AC的值。
改进后的程序如下:
NEXT05:
CJNE@R0,#46H,NEXT4
MOVDPTR,#8000H
MOVA,#01H
MOVX@DPTR,A
LJMPMAIN
八、体会与感想
我们所实践的这门课,使我们机电类本科生教学的主要基础课之一,课程紧密结合机电大类专业特点,围绕单片机原理和应用主题,系统介绍单片机的基本知识,基本组成,体系结构和工作模式等,从而让我们能清楚地了单片机的结构与工作流程,建立起系统的概念,为以后的更深层次的研究打下坚实基础。
这次微机原理课程设计历时约十天完成,在这些天里,我们发扬团队合作的精神,共同克服了很多难题,在较短的时间里成功完成了本次实验,看着我们的劳动成果,我们每个人都觉得自己的付出得到了回报。
不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
从各种元器件的资料查阅和电路的设计,到程序的编写和仿真电路的调试,再到硬件电路的焊接和硬件整体调试等,一个个都被我们解决了,我们收获很大。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,就比如在这次实践中,我们部分同学虽然对理论掌握得很不错,但在开始那段时间还是不能得心应手地进行设计与实践,这就是实践与理论的联系的过程,我们体会到了所谓的“纸上谈兵”,因此只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
通过本次课程设计,我们能够更深层次地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握汇编语言的设计和调试方法,熟悉设计的流程及程序的组合、调用和系统的调试。
总之,我们默对单片机的应用有所了解,这对我们以后的研究与学习会有很大帮助!
这次课程设计,也让我们意识到小组合作的重要性。
在团队的共同努力下,每个成员都有明确分工,大家有自己的任务,同时也参与其他的任务环节,这样,我们小组的每一个成员既完成了自己的任务,同时又对整个设计十分了解。
大家的一起努力下,众人拾材火焰高,才使我们的课设顺利完成。
这次课程设计终于顺利完成了,在设计中遇到了很多编程、硬件调试问题,在小组讨论、老师及学长指导下找到了。
在此,我们小组所有成员,感谢老师的指导与帮助,我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课程设计液晶显示器与键盘系统 精品 单片机 课程设计 液晶显示器 键盘 系统