基于单片机的多功能液晶显示数字毕业设计.docx
- 文档编号:23481460
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:103
- 大小:1.35MB
基于单片机的多功能液晶显示数字毕业设计.docx
《基于单片机的多功能液晶显示数字毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的多功能液晶显示数字毕业设计.docx(103页珍藏版)》请在冰豆网上搜索。
基于单片机的多功能液晶显示数字毕业设计
基于单片机的多功能液晶显示数字毕业设计目录
1引言
单片机是指一个集成在一块芯片上的完整计算机系统。
尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:
CPU、内存、内部和外部总线系统,目前大部分还会具有外存。
同时集成诸如通讯接口、定时器,实时时钟等外围设备。
而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
目前单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
本次设计的多功能数字时钟,以AT89C51芯片为核心,辅以必要的电路,通过液晶显示器能够准确显示数字时钟。
它也是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。
该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。
2总体方案介绍
整个电子时钟系统电路可分为五大部分:
中央处理单元(CPU)、电源电路部分、显示部分、键盘输入部分、温度采集部分。
2.1系统设计思想
本系统由控制时钟芯片DS1302、温度芯片DS18B20、AT89C51单片机和字符点阵型LCD1602液晶显示器等器件构成。
用DS1302产生时钟信号,用温度芯片DS18B20产生温度信号,再由单片机负责接收并且对其进行控制,然后通过编写程序实现具体的功能,如年、月、日、星期、时、分、秒及温度的显示,以及时间的校准、闹钟的设置等。
再通过编写液晶器件的驱动程序,使其信息显示在LCD1602液晶显示器上。
最后,将设计的硬件电路在Proteus仿真软件中进行仿真。
2.2系统框架图
根据上述的系统设计总思想设计出如下总体框架图(图2-1):
图2-1系统总体框架图
3硬件仿真电路设计
在前面的章节给出了系统设计的粗略轮廓,在本章节中,将画出详细的电路仿真原理图,并按照要求仔细地在Proteus中完成硬件的仿真电路。
总体上来说,本系统主要由显示电路,功能控制电路、传感器电路三部分组成。
吸收了硬件软件化的思想,大部分功能通过软件来实现,使电路简单明了,系统稳定性大大提高。
本系统不仅成功的实现了电子时钟的基本功能,而且还可以通过对程序的改变来实现其它方面的开发及学习。
3.1Proteus
3.1.1Proteus简介
ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。
目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
(3)提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision3等软件。
(4)具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
3.1.2Proteus的基本操作
双击桌面上的ISIS7Professional图标或者单击屏幕左下方的“开始”→“程序”→“Proteus7Professional”→“ISIS7Professional”,出现如图3-1所示屏幕,进入ProteusISIS集成环境。
图3-1启动时的屏幕
ProteusISIS的工作界面是一种标准的Windows界面,如图3-2所示。
包括:
标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图3-2ProteusISIS的工作界面
进入ProteusISIS的工作界面后,选择“对象选择器窗口”中的“对象选择按钮”,选择所需的元器件,然后放置到“图形编辑窗口”中,以些类推将原理图中的元器件放置完毕,再用相应的线联接起来,绘图完毕后点击保存即可。
如果想对本系统进行仿真时,还要将编译过的源程序载下AT89C51中,操作过程为:
在AT89C51芯片上单击右键选择“EditComponent”如图3-3,在“ProgramFile”框中选择编译好的源程序文件,选择“OK”键关闭“EditComponent”对话框。
最后点击仿真进程控制按钮中的“开始”按钮即可进行仿真操作。
图3-3EditComponent对话框
3.2AT89C51的电路设计
3.2.1AT89C51简介
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图3-4所示:
图3-4AT89C51
管脚说明:
VCC——供电电压。
GND——接地。
P0口——8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口——带内部上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口——带内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口——带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
在编程/校验时,P3口可接收某些控制信号。
具体的P3口功能,如表3-1所示。
表3-1P3口的特殊功能
引脚替代功能说明
P3.0RXD串行数据接收
P3.1TXD串行数据发送
P3.2INT0外部中断0申请
P3.3INT1外部中断1申请
P3.4T0定时器0外部事件计数输入
P3.5T1定时器1外部事件计数输入
P3.6WR外部RAM写选通
P3.7RD外部RAM读选通
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.2AT89C51的时钟电路设计
时钟电路是产生CPU校准时序,是单片机的控制核心。
AT89C51的时钟信号可通过内部振荡方式和外部振荡方式两种方式得到。
本次设计使用的是片内振荡方式,通过外接12MHz的晶振来实现时钟电路的时序控制。
在使用片内振荡器时,XTAL1和XTAL2分别为反向放大器的输入端和输出端。
外接晶体以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。
当使用外部时钟驱动时,XTAL2引脚应悬空,而由XTAL1引脚上的信号驱动,或者XTAL1引脚应悬空,而由XTAL2引脚上的信号驱动。
外部振荡器再通过一个2分频的触发器来形成内部时钟所需要的信号。
在电容器C1、C2选择时方面,一般选择其值为5~30pF。
本系统中所用的电容值为22pF,具体的电路接法如图3-5所示。
图3-5晶振电路图
3.2.3AT89C51的复位电路设计
根据应用的要求,复位操作通常由上电复位和开关复位2种基本形式。
本系统使用的复位电路是在基本复位电路的基础上所改进的一种混合方法,使其两种形式巧妙地糅合在一起,即做到了上电复位,又可以在发生预料之外的问题时,随时进行开关复位单片机。
具体的电路连接接法如图3-6所示。
图3-6复位电路
单片机复位后的状态:
单片机的复位操作使单片机进入初始化过程,其中包括使程序计数器PC=0000H,P0~P3=FFH,SP=07H,其他寄存器处于零。
这表明程序从0000H地址单元开始执行。
单片机复位后不改变片内RAM区中的内容,21个特殊功能寄存器复位后的状态如表3-2所示。
表3-28051单片机复位后特殊功能寄存器的初始状态[1]
特殊功能寄存器
初始状态
特殊功能寄存器
初始状态
A
00H
TMOD
00H
B
00H
TCON
00H
表3-2续8051单片机复位后特殊功能寄存器的初始状态[1]
特殊功能寄存器
初始状态
特殊功能寄存器
初始状态
PSW
00H
TH0
00H
SP
07H
TL0
00H
DPL
00H
TH1
00H
DPH
00H
TL1
00H
P0~P3
FFH
SBUF
不定
IP
***00000B
SCON
00H
IE
0**00000B
PCON
0*******B
注:
表中的符号*为随机状态
需要指出的是,记住一些特殊功能寄存器复位后的状态,对于熟悉单片机操作,减短应用程序中的初始化部分是十分必要的。
3.3AT89C51液晶显示模块的连接
3.3.1液晶显示器LCD1602简介
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。
本系统使用是是LCD1602液晶显示器,它可以显示两行,每行16个字符,采用单+5V电源电,外围电路配置简单,价格便宜,具有很高的性价比。
LCD1602外观如图3-7所示。
图3-7LCD1602外观
LCD1602采用标准的14脚接口,其中VSS为地电源,VDD接5V正电源,VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
D0~D7为8位双向数据线。
LCD1602液晶模块内部的控制器共有11条控制指令,具体的命令见表3-3所示。
表3-3LCD1602控制指令
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清屏
0
0
0
0
0
0
0
0
0
1
2
光标复位
0
0
0
0
0
0
0
0
1
*
3
光标和显示模式设置
0
0
0
0
0
0
0
1
I/D
S
4
显示开关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址(AGG)
8
置数据存贮器地址
0
0
1
显示数据存贮器地址(ADD)
9
读忙标志或地址
0
1
BF
计数器地址(AC)
10
写入CGRAM/DDRAM
1
0
要写的数
11
读CGRAM/DDRAM数
1
1
读出的数据
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(1)清屏指令
功能:
1)清除液晶显示器,即将DDRAM的内容全部填入“空白”的ASCII码20H;
2)光标归位,即将光标撤回液晶显示屏的左上方;
3)将地址计数器(AC)的值设为0;
2.光标复位指令
功能:
1)把光标撤回到显示器的左上方;
2)把地址计数器(AC)的值设置为0;
3)保持DDRAM的内容不变;
(3)光标和显示模式设置指令
功能:
设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
参数设定的情况表3-4所示。
表3-4显示模式设置指令参数设定
位名
设置
I/D
0=写入新数据后光标左移
1=写入新数据后光标右移
S
0=写入新数据后显示屏不移动
1=写入新数据后屏整体右移1个字符
(4)显示开关控制指令
功能:
控制显示器开/关、光标显示/关闭以及光标是否闪烁。
参数设定的情况如表3-5。
表3-5显示开关控制指令参数设定
位名
设置
D
0=显示功能关
1=显示功能开
C
0=无光标
1=有光标
B
0=光标闪烁
1=光标不闪烁
(5)设定显示屏或光标移动方向指令
功能:
使光标移位或使整个显示屏幕移位。
参数设定的情况如表3-6。
表3-6设定显示屏或光标移动方向指令参数设定
S/C
R/L
设定情况
0
0
光标左移1格,且AC值减1
0
1
光标右移1格,且AC值加1
1
0
显示器上字符全部左移一格,但光标不动
1
1
显示器上字符全部右移一格,但光标不动
(6)功能设定指令
功能:
设定数据总线位数、显示的行数及字型。
参数设定的情况如表3-7。
表3-7功能设定指令参数设定
位名
设置
DL
0=数据总线为4位
1=数据总线为8位
N
0=显示1行
1=显示2行
F
0=5×7点阵/每字符
1=5×10点阵/每字符
(7)设定CGRAM地址指令
功能:
设定下一个要存入数据的CGRAM的地址。
(8)设定DDRAM地址指令
功能:
设定下一个要存入数据的CGRAM的地址。
(9)读取忙信号或AC地址指令
功能:
1)读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;
2)读取地址计数器(AC)的内容。
(10)数据写入DDRAM或CGRAM指令一览
功能:
1)将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;
2)将使用者自己设计的图形存入CGRAM;
(11)从CGRAM或DDRAM读出数据的指令一览
功能:
读取DDRAM或CGRAM中的内容。
表3-8基本操作时序
命令名
输入
输出
读状态
RS=L,RW=H,E=H
DB0~DB7=状态字
写指令
RS=L,RW=L,E=下降沿脉冲, DB0~DB7=指令码
无
读数据
RS=H,RW=H,E=H
DB0~DB7=数据
写数据
RS=H,RW=L,E=下降沿脉冲,DB0~DB7=数据
无
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3-8是1602的内部显示地址。
图3-81602LCD内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?
这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
3.3.2AT89C51与LCD1602的连接
在LCD1602液晶显示模块和单片机AT89C51相连接时需要在液晶显示的数据口加上10K左右的上拉电阻,具体的接法为:
将VSS接地,VDD接高电平,VEE接入一个电位器来调整LCD1602的对比度。
将RS接到P2.0口,R/W接到P2.1口,E接到P2.2口。
D0~D7接到P0口来控制命令输入及数据的输入/输出。
具体的连接仿真电路可见图3-9所示。
图3-9LCD1602液晶显示模块和单片机AT89C51接口电路
3.4AT89C51与时钟芯片的连接
3.4.1时钟芯片DS1302简介
DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。
实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。
DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:
RES复位线、I/O数据线、SCLK串行时钟。
时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。
DS1302工作时功耗很低保持数据和时钟信息时功率小于1mW。
DS1302器件外观如图3-10所示,DS1302管脚的功能描述可见表3-9所示。
图3-10DS1302器件
表3-9DS1302管脚的功能描述
管脚名
功能说明
X1,X2
32.768KHz晶振管脚
GND
地
RST
复位脚
I/O
数据输入/输出引脚
SCLK
串行时钟
Vcc1,Vcc2
电源供电管脚
DS1302的控制字如图3-11所示。
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
图3-11DS1302的控制字
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3-10所示。
表3-10日历、时间寄存器及其控制字
寄存器名称
写操作
读操作
取值范围
7
654
321
秒寄存器
80H
81H
00~59
CH
10SEC
SEC
分寄存器
82H
83H
00~59
0
10MIN
MIN
时寄存器
84H
85H
00~23
12/24
10HR
HR
日寄存器
86H
87H
01~31
0
10DATE
DATE
月寄存器
88H
89H
01~12
0
010M
MONTH
周寄存器
8AH
8BH
01~07
0
000
DAY
年寄存器
8CH
8DH
00~99
10YEAR
YEAR
DS1302的主要特性:
(1)实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力
(2)31*8位暂存数据存储RAM
(3)串行I/O口方式使得管脚数量最少
(4)宽范围工作电压:
2.0~5.5V
(5)工作电流2.0V时,小于300nA
(6)读/写时钟或RAM数据时,有两种传送方式:
单字节传送和多字节传送(字符组方式)
(7)8脚DIP封装或可选的8脚SOIC封装(根据表面装配)
(8)简单3线接口
(9)与TTL兼容(Vcc=5V)
(10)可选工业级温度范围-40~+85
3.4.2AT89C51与时钟芯片DS1302的连接
在使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 多功能 液晶显示 数字 毕业设计