基于单片机的12864时钟显示毕业设计.docx
《基于单片机的12864时钟显示毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的12864时钟显示毕业设计.docx(32页珍藏版)》请在冰点文库上搜索。
基于单片机的12864时钟显示毕业设计
学士学位毕业论文(设计)
题目:
基于单片机的12864时钟显示
摘要
电子时钟是一种非常广泛日常计时工具,给人们的带来了很大的方便,在社会上越来越流行。
它可以对年、月、日、星期、时、分、秒进行计时,采用直观的数字显示,可以同时显示年月日时分秒等信息,还有时间校准等功能。
该电子时钟主要采用STC89C52单片机作为主控核心,用DS1302时钟芯片作为时钟、液晶12864显示屏显示。
STC89C52单片机是由深圳宏晶科技公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的12864液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。
此外,该电子时钟还具有时间校准等功能。
关键词:
STC89C51单片机,DS1302时钟芯片,液晶12864
Abstract
Electronicclockisaveryextensivedailytimingtool,tothepeoplehasbroughtgreatconvenience,moreandmorepopularinthecommunity.Itcanbetheyear,month,date,day,hour,minute,secondforatime,usingintuitivedigitaldisplay,candisplayinformationsuchasyear,month,day,hour,andtimealignmentfunctions.TheelectronicclockisusedmainlyasamasterSTC89C52microcontrollercore,withtheDS1302clockchipasaclock,LCDdisplay12864.STC89C52SCMisaShenzhenHongCrystalTechnologyhasintroduced,powerconsumption,voltagecanbeselected4~6Vvoltagepowersupply;DS1302clockchipisAmericanDALLAScompanylaunchedwithafinecurrentcharginglow-powerreal-timeclockchip,itcanyear,month,date,day,hour,minute,secondforatime,alsohasaleapyearcompensationandotherfunctions,DS1302andlonglife,smallerror;12864LCDdigitaldisplayisusedtodisplaythatcandisplayyear,month,date,day,hour,minute,secondandsoon.Inaddition,theelectronicclockalsohasatimecalibrationfunction.
KeyWords:
STC89C51microcontroller,DS1302clockchip,LCD12864
1绪论
1.1时钟发展史
很早以前,人类主要是利用天文现象和流动物质的连续运动来计时。
例如,日晷是利用日影的方位计时,阴雨天和夜里没法使用且测量误差较大;漏壶和沙漏是利用水流和沙流的流量计时,虽然晚上可以使用,但是水容易结冰,误差还是大。
后来人们发明了机械钟,以机械振动系统为时间基准,实现对时间的计量,误差达到一天一分钟左右。
而如今的数字钟用数字电路实现时、分、秒,精度较高,一天的误差不到一秒。
目前精度最高的时钟要属原子钟,其每天的误差小于一亿分之一秒。
随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。
二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。
第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。
第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时和月差从分级缩小到秒级。
第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!
因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。
1.2目前的研究现状
我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。
商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。
在国内,电子钟因LCD数字显示效用直接有效,所以大多运用在城市的主要营业场所,以及车站、码头等公共场所。
在对公共场所的电子钟设定的时候,使用者还可根据周边的气候、温度等对LCD屏进行设置。
同时,因为LCD的显示耗电量很省,所以能够保持持续的工作效果。
1.3研究目的及意义
电子钟亦称数字显示钟,是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。
电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。
相对于其他时钟类型,它的特点可归结为“两强一弱”:
比机械钟强在观时显著,比石英钟强在走时准确,但是它的弱点为显示较为单调。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
除了采用集成化的时钟芯片外,还有采用MCU的方案,利用STC89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制输出,分别用来显示年、月、日、时、分、秒,其最大特点是:
硬件电路简单,安装方便易于实现,软件设计独特,可靠。
STC89C51是由深圳宏晶科技公司推出的一种小型单片机。
其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被广大用户接受。
本文介绍了基于STC89C51单片机设计的电子时钟。
可以同时显示年、月、日、星期、时、分、秒等信息,还具有时间红外校准等功能。
2总体方案设计
2.1方案的选择
2.1.1设计要求
A.具有年、月、日、周、时、分、秒的显示功能;
B.具有年、月、日、周、时、分、秒的校准功能;
C.具有图片显示功能;
D.具有红外遥控功能。
2.1.2方案的选择
本课题是基于单片机控制的电子时钟设计,MCS-51系列的单片机集成了8位CPU、4K字节ROM、128字节RAM、2个16位定时器/计数器和4个8位I/O口等基本功能部件,基本能满足本课题的研究,所以主控芯片选择STC89C51单片机。
时钟的显示功能用128*64LCD来实现,其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字,也可完成图形显示。
低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
为了更精确的显示时间,需要一时钟芯片来进行计时。
DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。
它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。
对于红外遥控功能,主要用来调整时间和切换显示页面。
本课题中选用通用红外遥控器和红外接收头。
2.2总体方案组成框图
根据以上硬件的选择,系统的硬件框图2.1所示。
图2.1系统硬件框图
3系统硬件设计
3.1主芯片模块
STC89C51单片的引脚功能图如图3.1所示,逻辑符号如图3.2所示,它有40个引脚。
图3.1STC89C51引脚图图3.2STC89C51逻辑图
(1)电源引脚
(a)VCC(40):
电源正端,外接+5V。
(b)VSS(20):
接地。
(2)时钟电路引脚
XTAL1(18)、XTAL2(19):
XTAL1为片内振荡电路的输入端,XTAL2为片内振荡电路的输出端。
8051的时钟有两种方式,一种是片内振荡方式,需在这两个脚外接石英晶体和振荡电容,振荡电容一般取10p~30p;另一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。
(3)控制引脚
(a)
ALE/PROG(30):
地址锁存控制信号/编程脉冲输入端。
(b)
PSEN(29):
外部程序存储器的选通信号。
(c)
EA/VPP(31):
外部程序存储器地址允许输入端/编程电压输入端。
(d)RESET/VPT(9):
复位/备用电源输入引脚。
在该引脚上输入24个时钟周期以上的高电平,系统即复位。
(4)输入/输出引脚
(a)P0.0~P0.7(39~32):
8位双向并行I/O口,P0口可作为通用双向I/O口。
在外接数据、程序存储器时,可作为低8位地址/数据总线复用引脚。
(b)P1.0~P1.7(1~8):
8位双向并行I/O口。
(c)P2.0~P2.7(21~28):
8位双向并行I/O口。
P0口可作为通用双向I/O口。
在外接数据、程序存储器时,可作为高8位地址输出引脚。
(d)P3.0~P3.7(10~17):
8位双向并行I/O口。
P3口除了作为通用I/O口使用外,每一个引脚都可以复用。
3.1.1中断系统
8051单片机允许5个中断源:
(1)外部中断源(2个)
由INT0(P3.2)引脚和INT1(P3.3)引脚引入。
这两个中断源的请求方式有两种:
低电平触发或下降沿触发。
(2)内部中断源(2个)
T0:
定时/计数器0中断,由T0溢出引起。
T1:
定时/计数器1中断,由T1溢出引起。
(3)TI/RI(1个)
串行I/O口中断,由一帧字符发送/接收完后引起。
3.1.2常用寄存器
(1)定时器方式控制寄存器TMOD
TMOD
(89H)
D7
D6
D5
D4
D3
D2
D1
D0
GATE
C/T
M1
M0
GATE
C/T
M1
M0
工作方式选择位M1、M0定义如下:
M1
M0
工作方式
功能描述
0
0
方式0
初值寄存器TL的低5位与TH的8位构成13位计数器
0
1
方式1
16位计数器
1
0
方式2
自动重装初值的8位计数器
1
1
方式3
仅用于T0,分为两个8位计数器,T1停止工作
GATE=0:
软件启动定时器,使TRx置“1”即可启动定时器;
=1:
软件和硬件共同启动定时器,除了要使TRx置“1”外,外部中断请求信号输入端INTx还必须输入高电平才能启动定时器。
C/T=0:
定时器方式工作;
=1:
计数器方式工作。
(2)定时控制寄存器TCON
TCON
(88H)
D7
D6
D5
D4
D3
D2
D1
D0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF0/TF1:
定时器溢出中断申请标志位(由硬件自动置位)。
TF0/TF1=0:
定时器未溢出;
=1:
定时器溢出时硬件自动置位,申请中断。
TR0/TR1:
定时器启动/停止控制位。
TR0/TR1=0:
定时器停止;
=1:
定时器启动。
IE0/IE1:
外部中断申请标志位(由硬件自动置位,中断响应后转向中断服务程序时,由由硬件自动清零)
IE0/IE1=0:
没有外部中断申请;
=1:
有外部中断申请。
IT0/IT1:
外部中断请求的触发方式控制位。
IT0/IT1=0:
在INT0/INT1端申请中断的信号低电平有效;
=1:
在INT0/INT1端申请中断的信号下降沿有效。
(3)中断允许寄存器IE。
IE
(A8H)
D7
D6
D5
D4
D3
D2
D1
D0
EA
-
ET2
ES
ET1
EX1
ET0
EX0
ES——串行口中断允许位。
=0:
禁止中断;=1允许中断。
ET1——定时/计数器T1的溢出中断允许位。
=0:
禁止中断;=1允许中断
EX1——外部中断1中断允许位。
=0:
禁止中断;=1允许中断
ET0——定时/计数器T0的溢出中断允许位。
=0:
禁止中断;=1允许中断
EX0——外部中断0中断允许位。
=0:
禁止中断;=1允许中断
EA——总的中断允许控制位(总开关)。
=0:
禁止所有中断;=1:
允许中断。
3.2晶振和复位电路
3.2.1晶振电路
如图3.3所示,STC89C51单片机的内部有一个用于构成振荡器的高增益反相放大器,它的输入端为XTAL1引脚,输出端为XTAL2引脚,两个跨接石英晶体及两个电容就可以构成稳定的自激振荡器。
电容器通常取30pF左右。
图3.3晶振电路图3.4复位电路
3.2.2复位电路
往单片机的复位引脚上输入24个时钟周期以上的高电平,即执行复位操作。
按键复位是指系统在运行时,按下一个开关,就能在RST引脚产生一段时间的高电平,使系统复位,常见的按键复位电路如图3.4所示。
对12MHz晶振频率而言,电路中C取10pF,R取1KΩ。
3.3DS1302时钟芯片电路
3.3.1DS1302引脚图
如图3.5为DS1302的引脚图,图3.6为逻辑图。
图3.5DS1302引脚图图3.6DS1302逻辑图
各引脚的功能为:
Vcc1:
主电源;
Vcc2:
备用电源。
当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电。
SCLK:
串行时钟,输入,控制数据的输入与输出;
I/O:
双向数据线;
X1、X2:
晶振引脚;
CE:
输入信号,在读、写数据期间,必须为高。
该引脚有两个功能:
第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。
3.3.2DS1302寄存器
DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81H~8DH,写时80H~8CH),存放的数据格式为BCD码形式,如图3.7所示。
图3.7DS1302日历、时间寄存器
小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。
当为高时,选择12小时模式。
在12小时模式时,位5是 ,当为1时,表示PM。
在24小时模式时,位5是第二个10小时位。
秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。
当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。
控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。
在任何的对时钟和RAM的写操作之前,WP位必须为0。
当WP位为1时,写保护位防止对任一寄存器的写操作。
3.3.3DS1302外围电路
图3.8DS1302外围电路
DS1302只有3个引脚与单片机相连,分别是RST(5)、SCLK(7)和I/O(6),其2、3引脚接32768Hz晶振,如图3.8。
3.4LCD12864显示模块
3.4.1LCD12864引脚功能
管脚号
管脚名称
管脚功能
1
VSS
接地
2
VDD
电源+5V
3
V0
对比度调整
4
RS
RS=H,DB0-DB7为数据
RS=L,DB0-DB7为指令
5
R/W
R/W=H,E=H,读数据
R/W=L,E=H→L,写数据
6
E
使能端
7--14
DB0—DB7
8位数据口
15
PSB
PSB=H,并行方式
PSB=L,串行方式
16
NC
空脚
17
RST
复位端,低电平有效
18
Vout
LCD驱动电压输出端
19
A
背光源正端+5
20
K
背光源负端
表3.1LCD12864引脚说明图3.912864引脚图
图3.9所示为带中文字库LCD12864引脚图,表3.1为引脚说明。
该液晶显示模块由128*64点阵组成,可显示汉字及图形,内置8192个中文汉字(16*16点阵)、128个字符(8*16)点阵,8位并行及串行连接方式。
控制引脚说明
(a)RS、R/W四种模式
RS
R/W
功能说明
L
L
MPU写指令到指令暂存器(IR)
L
H
读出忙标志(BF)及地址计数器(AC)状态
H
L
MPU写入数据到数据暂存器(DR)
H
H
MPU从数据暂存器(DR)中读出数据
(b)E信号
E状态
功能
H→L
配合/W进行写数据或指令
H
配合R进行读数据或指令
L/L→H
无动作
说明:
BF标志提供内部工作情况BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据。
3.4.2LCD12864指令说明
(1)显示开/关设置
R/W
R/S
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
H
H
H
H
H
H/L
功能:
设置屏幕显示开/关。
DB0=H,开显示;DB0=L,关显示。
(2)设置显示起始行
R/W
R/S
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
H
H
行地址(0~63)
功能:
执行该命令后,所设置的行将显示在屏幕的第一行。
显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。
Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。
(3)设置列地址
R/W
R/S
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
H
列地址(0~63)
功能:
DDRAM 的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DDRAM进行读写操作后,Y地址自动加一。
(4)状态检测
R/W
R/S
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
H
L
BF
L
ON/OFF
RST
L
L
L
L
功能:
读忙信号标志位(BF)、复位标志位(RST)以及显示状态位 (ON/OFF)。
BF=H:
内部正在执行操作;BF=L:
空闲状态。
RST=H:
正处于复位初始化状态;RST=L:
正常状态。
ON/OFF=H:
表示显示关闭;ON/OFF=L:
表示显示开。
(5)写显示数据
R/W
R/S
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:
写数据到DDRAM,DDRAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。
D7-D0位数据为1表示显示,数据为0表示不显示。
(6)读显示数据
R/W
R/S
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
H
H
D7
D6
D5
D4
D3
D2
D1
D0
功能:
从DDRAM读数据,读指令执行后Y地址计数器自动加1。
3.4.3LCD12864电路接线
单片机P2口作为指令/数据接口,右DB0-DB7输入,数据命令选择端RS接单片机P1.2,读写控制信号端R/W接单片机P1.1,使能端E接单片机P1.0,串/并行方式选择端PSB接P1.6,复位端RST接P1.7,16、18号引脚可以不接,如图3.10所示。
图3.10LCD12864电路图
3.5红外遥控模块
本课题采用红外遥控功能对时钟进行校准,包括年、月、日、周、时、分秒的加减操作,还有切换显示、复位的功能。
红外遥控装置包括红外发送(即遥控器)和红外接收两部分组成。
发射机一般由指令按键、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。
当按下指令键时,指令编码电路产生所需的指令编码信号,指令编码信号对载波进行调制,再由驱动电路进行功率放大后由发射电路向外发射经调制定的指令编码信号。
接收电路一般由接收电路、放大电路、调制电路、指令译码电路、驱动电路、执行电路等几部分组成。
接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将已调制的指令编码信号解调出来,即还原为编码信号。
指令译码器将编码指令信号进行译码,最后由驱动电路来驱动执行电路实现各种指令的操作控制。
其大致工作过程如图3.11所示。
图3.11红外工作原理
红外遥控器采用通用遥控器,接收器为红外接收头,如图3.11所示。
图3.12为红外接收头电路,其信号输出端接单片机引脚P3.2。
图3.11红外遥控器和接收头图3.12红外接收头电路
4系统软件设计
4.1主程序设计
本课题程序编写为C语言,编译软件为Keil5,程序分为4个模块,分别是主函数main.c、LCD12864程序LCD12864.h、时钟芯片DS1302程序DS1302.h和红外遥控程序IRIN.h。
程序流程图如图4.1所示。
图4.1程序流程图
4.2LCD12864驱动程序
图4.212864写操作时序
根据以上写时序,可以写出写指令函数和写数据函数。
(1)写指令
voidlcd