微机原理与接口技术课程方案设计书液晶显示器与键盘系统1.docx
- 文档编号:29353491
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:31
- 大小:756.40KB
微机原理与接口技术课程方案设计书液晶显示器与键盘系统1.docx
《微机原理与接口技术课程方案设计书液晶显示器与键盘系统1.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程方案设计书液晶显示器与键盘系统1.docx(31页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术课程方案设计书液晶显示器与键盘系统1
微机原理与接口技术
综合实践说明书
课程名称:
微机原理与接口技术综合实践
设计题目:
液晶显示器与键盘系统
院系:
机电学院热能与动力工程系
班级:
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查阅资料,调试硬件电路。
一、总体设计
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
MOV50H,A
RET
ASCTAB:
DB30H,31H,32H,33H,34H,35H
DB36H,37H,38H,39H,41H,42H
DB43H,44H,45H,46H
KS1:
CLRP3.0;P3.0~P3.3列线输出0
CLRP3.1
CLRP3.2
CLRP3.3
MOVP1,#0FFH
MOVA,P1;输入P1口状态
ANLA,#0F0H;屏蔽低四位
RET;出口状态,累加器不等于0F时,有键按下
TIM:
MOVR7,#18H;延时子程序
TM:
MOVR6,#0FFH
TM6:
DJNZR6,TM6
DJNZR7,TM
RET
DEL:
MOVR7,#01H
DE:
MOVR6,#01H
DE6:
DJNZR6,DE6
DJNZR7,DE
RET
;LCD初始化子程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 课程 方案设计 液晶显示器 键盘 系统