微机原理与接口技术液晶显示器与键盘系统.docx
- 文档编号:11792546
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:32
- 大小:756.80KB
微机原理与接口技术液晶显示器与键盘系统.docx
《微机原理与接口技术液晶显示器与键盘系统.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术液晶显示器与键盘系统.docx(32页珍藏版)》请在冰点文库上搜索。
微机原理与接口技术液晶显示器与键盘系统
微机原理与接口技术
综合实践说明书
课程名称:
微机原理与接口技术综合实践
设计题目:
液晶显示器与键盘系统
院系:
机电学院热能与动力工程系
班级:
1112
曹家皓陈哲
王明波王天辉
设计者:
马茜
指导教师:
肖燕彩
设计时间:
2013.7.1-2013.7.12
微机原理与接口技术综合实践任务书
组长:
马茜
组员:
曹家皓陈哲王明波王天辉
专业:
热能与动力工程
班级:
机电1112
任务起止日期:
2013年7月1日至2013年7月12日
课程设计题目:
液晶显示器与键盘系统
设计要求:
◆扩展一块液晶显示器和一块4*4键盘;
◆系统上电显示初始化界面,如“欢迎使用本系统!
”;
◆按数字键显示相应数字;
◆按功能键“A”,发光二极管发光;
◆按功能键“B”,发光二极管不发光;
◆按功能键“C”,蜂鸣器报警;
◆按功能键“D”,蜂鸣器停止报警;
◆按功能键“E”,显示“机电1112;
◆按功能键“F”,实现返回初始状态的功能。
工作计划安排:
◆分组、选题,1天
◆方案设计,1天(软硬件总体结构)
◆硬件搭接,2天;软件程序设计,3天;综合调试,2天
◆课程设计任务书,2天
同组设计者及分工:
马茜11223044软件仿真,编写实验报告,程序注释。
曹家皓11223032整合实验电路,软件仿真,调试硬件电路。
陈哲11223033编写显示字型码,编写程序,调试硬件电路。
王明波11223052查阅资料,调试硬件电路。
王天辉11223053查阅资料,调试硬件电路。
目录
一、总体设计5
1.单片机选型5
2.按键扫描5
3.1620LCD显示5
二、主要元件介绍6
1.AT89S51概述6
1.1AT89S51主要特征6
1.2管脚说明7
1.3本设计中的应用8
2.1620LCD11
2.11620LCD概述11
2.21620LCD控制指令13
三、基于PROTEUS的硬件电路设计15
1.PROTEUS软件相关15
2.电路组成15
2.1复位电路15
2.2时钟电路16
2.31620LCD显示电路16
2.4按键扫描电路17
2.5蜂鸣器和发光二级管控制电路17
四、硬件配置18
1.按键扫描程序18
2.1620LCD显示程序20
五、电路仿真22
六、总结25
七、附件26
1.电路原理图26
2.源程序26
一、总体设计
1.单片机选型
AT89S51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
根据万向开关的的档位,控制小直流电动机执行相应的动作。
2.按键扫描
运用P0口第四位进行行扫描,高四位进行列扫描。
循环判断,得到按键位置。
并在相应按键按下后实现特定功能:
按键10按下时,发光二级管点亮,按键11按下时,发光二级管停止亮;按键12按下时,蜂鸣器响,按键13按下时,蜂鸣器停止响。
3.TS1620-1显示
将按键扫描值通过LCD显示出来,并在LCD上显示“WELCOM!
”及“欢迎!
!
!
”。
二、主要元件介绍
1.AT89C51概述
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1.1AT89C51主要特征
与MCS-51兼容
·4K字节可编程FLASH存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
。
1.2管脚说明
图1AT89C51引脚图
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
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.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
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:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
1.3本设计中的应用
在本设计中,AT89S51是整个系统的核心。
I/O口主要用来连接键盘、蜂鸣器、以及控制LCD显示。
P0口用来控制按键扫描。
其中P1、P2口分别用来连接LCD的数据口和命令口;P2.0,2.1用于连接发光二级管和蜂鸣器。
2.1620LCD
2.11620LCD概述
1620LCD主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95×4.35(W×H)mm
引脚功能说明:
1620LCD采用标准的14脚(无背光)或16脚(带背光)接口,引脚接口说明如表一。
表一1620LCD引脚接口说明
第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脚:
背光源负极。
2.21620LCD控制指令
1620液晶模块内部的控制器共有11条控制指令,如下表二所示。
表二1620LCD控制指令
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
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液晶显示模块可以和单片机直接接口。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。
程序在开始时对液晶模块功能进行了初始化设置,约定了显示格式。
三、基于PROTEUS的硬件电路设计
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等多种编译器。
2.电路组成
根据设计要求,硬件电路主要包括复位电路、晶体振荡电路、LCD显示电路、按键扫描电路以及蜂鸣器和发光二级管控制电路。
2.1复位电路
复位是任何一种微型计算机都必须具备的工作方式。
复位操作使单片机处于一种初始化的状态。
MCS-51单片机的RST引脚上出现持续24个振荡周期的高电平信号时,单片机进入复位。
通常有上电复位与人工按钮复位两种方式。
本设计中采用上电复位方式。
如下图3所示。
图3上电复位电路
2.2时钟电路
通常单片机系统电路的实际有内部时钟和外部时钟两种形式,两种电路都向单片机提供最基本的振荡脉冲信号。
本设计中的晶体振荡电路如下图四所示。
图4晶体振荡电路
2.31620LCD显示电路
1620LCD采用标准的14脚(无背光)或16脚(带背光)接口。
本设计中采用14脚LCD。
VSS和VDD为电源端和接地端,VEE用于调整液晶显示器对比度。
D0~D7为8位双向数据线。
电路连接图如图五。
图5LCD显示电路
2.4按键扫描电路
设计中采用行列式非编码键盘,由行线、列线和键盘开关矩阵3部分组成。
在这种键盘中,每根行线和列线的交叉处都有一个按键,当某个键被按下时,与这个按键相连的行线和列线就会接通,否者行线和列线不接通。
如电路图6。
图6按键扫描电路
2.5蜂鸣器和发光二级管控制电路
如下图所示:
图7蜂鸣器和发光二级管控制电路
四、硬件配置
在单片机的开发运用中,逐渐引入了高级语言,C语言就是其中一种。
在使用汇编语言的过程中,其可读性和可维护性不强,其次它的代码可重用性比较低,使用高级语言编程能很好的解决问题。
C语言具有良好的模块化、容易阅读和维护的优点。
由于模块化,所以用C语言编写的程序有很好的可移植性,功能化的代码能够很方便地从一个工程移植到另一个工程,从而减少开发时间。
本设计将采用C语言编程。
1.按键扫描程序
本设计中4*4按键扫描是一个难点。
按键高四位为列,第四位为行。
当P0.0置为0,判断第一行是否有键按下,如果第一个键被按下,P0.4口变为低电平,P0口值变为0XEE。
当第二个键被按下,P0.5口变为低电平,P0口值变为0XDE,以此类推。
没判断一个键,返回一个按键值。
循环查询按键值,再执行相应的操作。
当第一个键被按下,发光二级管点亮,第二个键被按下,蜂鸣器接通。
下图8、图9即为按键2前后,电平跳转对比。
按键程序流程图如图10.
图8按键扫描按键前
图9按键扫描按键2后蜂鸣器接通
图10按键扫描流程图
2.1620LCD显示程序
第二章中已对1620LCD控制指令进行了详细介绍,其读写时序如下图11、图12。
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图13是1620的内部显示地址。
图111620LCD读操作时序
图121620LCD写操作时序
图131620LCD内部显示地址
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1620液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
CGROM、CGRAM中字符代码与字符图形对应关系如下表三所示。
表三CGROM、CGRAM中字符代码与字符图形对应关系
五、电路仿真
扫描4*4按键,当按键按下时显示按键,并在LCD上显示“WELCOME,欢迎!
!
!
”,。
当按键10按下时发光二级管发光,按键11按下时发光二级管停止亮;按键12按下时,蜂鸣器响,按键13按下时,蜂鸣器停止响。
系统仿真图如图14.
图14系统仿真图
、
六、总结
经过两周设计,克服了LCD显示和4*4键盘扫描的难点,完成了课程设计所有要求,此次的课程设计我们收获颇多。
不仅学会使用PROTEUS软件绘制电路图及程序仿真,以及电路图设计的基础知识,能够运用汇编语言编程控制单片机工作,而且也很好的锻炼了我们的团队合作意识,小组的所有组员都能积极认真的参与我们的课程设计,经过多次的讨论研究克服了重重苦难,最终我们顺利的完成了液晶与键盘显示系统课程设计的所有要求。
最后感谢老师传授的知识,让我们能够一点点不断进步。
七、附件
1.电路原理图
2.源程序
ORG0000H
AJMPMAIN
ORG0300H
MAIN:
MOVSP,#60H
ACALLLCDINI;调用LCD初始化子程序
ACALLLCD1
ACALLLCD4
LOOP:
ACALLKEY;调用键扫描子程序
MOVR0,#50H
CJNE@R0,#0FFH,NEXT0;若50H单元不等于0FFH,有键,转到NEXT0处执行
AJMPLOOP;若50H单元等于0FFH,无键,转到LOOP处执行
NEXT0:
ACALLXIANG
CJNE@R0,#0AH,NEXT1;判断是否是数字键
NEXT1:
JNCNEXT2;不是则转到NEXT2处执行
ACALLBUSY
ACALLASC;键值转换为ASCII码
ACALLLCD2;键值显示
AJMPLOOP;转到LOOP处执行
NEXT2:
CJNE@R0,#10H,NEXT3;判断是否是功能键
NEXT3:
JNCNEXT4;不是功能键,转至LOOP循环
ACALLBUSY
ACALLASC
NEXT00:
CJNE@R0,#41H,NEXT01;A键二极管闪烁
ACALLLCD2
CLRP3.5
MOVR7,#10H
LOOP7:
MOVR5,#0FFH
DL1:
MOVR6,#0FFH
DL2:
DJNZR6,DL2
DJNZR5,DL1
CPLP3.5
DJNZR7,LOOP7
CLRP3.5
LJMPLOOP
NEXT01:
CJNE@R0,#42H,NEXT02;B键二极管熄灭
SETBP3.5
ACALLLCD2
LJMPLOOP
NEXT02:
CJNE@R0,#43H,NEXT03;C键蜂鸣器响
ACALLLCD2
CLRP3.4
MOVR7,#0FFH
CA:
MOVR6,#0FFH
CA6:
DJNZR6,CA6
CPLP3.4
DJNZR7,CA
CLRP3.4
ACALLLCD2
LJMPLOOP
NEXT03:
CJNE@R0,#44H,NEXT04;D键蜂鸣器静音
SETBP3.4
ACALLLCD2
LJMPLOOP
NEXT04:
CJNE@R0,#45H,NEXT05;E键
ACALLLCD3
ACALLLCD5
LJMPLOOP
NEXT05:
CJNE@R0,#46H,NEXT4;F键
MOVDPTR,#8000H
MOVA,#01H
MOVX@DPTR,A
LJMPMAIN
NEXT4:
AJMPLOOP
KEY:
MOV50H,#0FFH;键扫描子程序,无键按下,50H为0FFH
ACALLKS1;调用判断有无键按下子程序
CJNEA,#0F0H,LK1;有键按下时,转消抖延时
AJMPKRET;无键按下返回
LK1:
ACALLTIM;调延时子程序消抖
ACALLKS1;再查有无键按下,若有则需进行按键处理
CJNEA,#0F0H,LK2
AJMPKRET;无键按下,返回
LK2:
MOVR4,#00H;列号送入R4
JBP3.5,TIAOZHUAN
MOVR2,#0CEH
AJMPLK3
TIAOZHUAN:
MOVR2,#0FEH;第一次扫描输出信号11111110送入R2
LK3:
MOVA,R2;输入列扫描信号
MOVP3,A;
MOVP1,#0FFH;P1口置0FFH
MOVA,P1;读入行状态
JBACC.4,L1;第一行无键按下,转查第二行
MOVA,#00H;第一行有键按下,该行首键号#00H送入A
AJMPLK;转求键号
L1:
JBACC.5,L2;第二行无键按下,转查第三行
MOVA,#04H;第二行有键按下,该行首键号#04H送入A
AJMPLK;转求键号
L2:
JBACC.6,L3;第三行无键按下,转查第四行
MOVA,#08H;第三行有键按下,该行首键号#08H送入A
AJMPLK;转求键号
L3:
JBACC.7,KNEXT;第四行无键按下,转查下一列
MOVA,#0CH;第四行有键按下,该行首键号#0CH送入A
LK:
ADDA,R4;求键号,键号=行首键号+列号
PUSHACC;键号进栈保护
LK4:
ACALLKS1;等待键释放
CJNEA,#0F0H,LK4;未释放,等待
POPACC;键释放,键号送入A
MOV50H,A;
AJMPKRET;扫描结束,出口状态50H=键号
KNEXT:
INCR4;列号加1
MOVA,R2
JNBACC.3,KRET;四列扫描完毕,返回主程序
RLA;形成下次扫描输出信号
MOVR2,A
AJMPLK3
KRET:
RET
ASC:
MOVDPTR,#ASCTAB;键值转换为ASCII码子程序
MOVA,50H
MOVCA,@A+DPTR
MO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 液晶显示器 键盘 系统