lcd实时日历时钟评测报告.docx
《lcd实时日历时钟评测报告.docx》由会员分享,可在线阅读,更多相关《lcd实时日历时钟评测报告.docx(30页珍藏版)》请在冰点文库上搜索。
lcd实时日历时钟评测报告
lcd实时日历时钟评测报告
部门:
xxx
时间:
xxx
制作人:
xxx
整理范文,仅供参考,可下载自行修改
课程设计说明书
课程名称:
单片机原理及应用
设计题目:
LCD日历
院系:
学生姓名:
学号:
专业班级:
2018年3月1日
摘要4
一.设计任务和要求4
二.方案论证4
三.核心元件的性能4
1.AT89C514
1.1功能特性概括:
5
1.2管脚说明:
5
2.DS13027
2.1DS1302引脚功能7
2.2DS1302的控制字8
2.3DS1302的寄存器9
2.4DS1302的数据输入输出10
四.理论分析与计算11
五.电路与程序设计11
1.系统硬件设计11
1.1系统总原理图11
1.2主控部分(单片机MCS-51>11
1.3计时部分<实时时钟芯片DS1302)12
1.4Proteus仿真图12
2.系统软件设计13
2.1程序流程图12
2.2程序源代码12
六.结果分析23
七.设计体会总结24
参考文献25
摘要
此次课程设计的要求是通过LCD与单片机的连接模块能够显示数字<如时间)、字符<如英文)和图形等,这就需要专门的时钟芯片-----DS1302。
DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出的时间数据送到LM044L上显示。
程序运行时,必须先对LM044L进行初始设置,然后,通过单片机从DS1302中获取时间并通过LM044L显示。
同时,进行循环赋值,使LCD动态显示当前的时间。
b5E2RGbCAP
关键字:
AT89C51、DS1302,LM044L显示器
朗读
显示对应的拉丁字符的拼音
字典-查看字典详细内容
一.设计任务和要求
1.利用DS1302实现年月日时分秒,并用LCD显示。
2.通过LCD模块与单片机的接口,能显示数字<如时间)、字符<如英文)。
3.硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。
设计的单元电路必须有工作原理,器件的作用,分析和计算过程;p1EanqFDPw
4.软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;DXDiTa9E3d
5.原理图设计部分,根据所确定的设计电路,利用Protel工具软件绘制电路原理图,提供元器件清单。
6计算说明书部分包括方案论证报告打印版或手写版,程序流程图具体程序等
7.图纸部分包括具体电路原理图打印版
8.设计要求还包括利用一天时间进行资料查阅与学习讨论,利用5天时间在实验室进行分散设计,最后三天编写报告。
最后一天进行成果验收。
RTCrpUDGiT
二.方案论证
实现数字电子钟的设计有以下两种基本方案,现就两种基本方案的优劣进行具体论证,从而说明选择方案二的理由。
5PCzVD7HxA
方案一:
直接用单片机的内部定时器来实现时间。
该方案以MCS-51单片机为主控芯片,以MCS-51的内部定时器产生的1s中断作为时钟的驱动,然后再通LCD液晶显示器来组成数字钟电路。
但是此方案最大的缺点在于单片机89C51产生的1s中断存在误差,如果工作时间长的话,数字时钟显示的时间将会出现严重的偏差,不够精确。
jLBHrnAILg
方案二:
使用串行接口时钟芯片DS1302设计时钟电路。
该设计方案以MCS-51单片机为主控芯片,以串行时钟芯片DS1302为核心计时芯片,然后再通过一个LCD液晶显示器组成数字时钟电路。
更重要的是,DS1302时钟芯片的加入大大提高了数字钟时间的准确性,而且该电路在断电后不丢失时间和数据信息时也使得该方案的研究与提升更具有开发的意义。
xHAQX74J0X
三.核心芯片功能介绍
1.AT89C52
AT89S52[3]美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4KBytesISP(In-systemprogrammable>的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元。
单片机AT89S51强大的功能可为许多嵌入式控制应用系统提供高性价比的解决方案。
LDAYtRyKfE
AT89C51芯片的引脚结构如图1所示:
1.1功能特性概括:
AT89S51提供以下标准功能:
40个引脚、4KBytesFlash片内程序存储器、128Bytes的随机存取数据存储器此外,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲模式下,图1AT89C51引脚图CPU暂停工作,而RAM、定时/计数器、串行通信口、外中断系统可继续工作。
掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
Zzz6ZB2Ltk
1.2管脚说明:
P0口:
P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口。
作为输出口用时,能驱动8个TTL逻辑门电路。
对端口写“1”时,被定义为高阻输入。
dvzfvkwMI1
在访问外部数据存储器或程序存储器时,这组口线分时转换地址<低8位)和数据总线复用,在访问期间激活内部上拉电阻。
rqyn14ZNXI
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动(吸收或输出电流>4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I
>。
EmxvxOtOco
在Flash编程和程序校验期间,P1接收低8位地址。
部分端口还有第二功能,如表1所示:
端口引脚
第二功能
P1.5
MOSI(用于ISP编程>
P1.6
MISO(用于ISP编程>
P1.7
SCK(用于ISP编程>
表1P1口部分引脚第二功能
P2口:
P2口是一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲级可驱动(吸收或输出电流>4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I
>。
SixE2yXPq5
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令>时,P2口送出高8位地址数据。
在访问8位地址的外部数据寄存器(例如执行MOVX@Ri指令>时,P2口线上的内容(也即特殊功能寄存器(SFR>区中P2寄存器的内容>,在整个访问期间不改变。
6ewMyirQFL
在Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一个带有内部上拉电阻的双向8位I/O口,P3口的输出缓冲级可驱动(吸收或输出电流>4个TTL逻辑门电路。
对P3口写“1”时,它们被内部的上拉电阻拉高并可作为输入端口。
作输入口使用时,被外部信号拉低的P3口将用上拉电阻输出电流(I
>。
kavU42VRUs
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如表2所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
端口引脚
第二功能
P3.0
RXD(串行输入口>
P3.1
TXD(串行输出口>
P3.2
(外中断0>
P3.3
(外中断1>
P3.4
T0(定时/计数器0>
P3.5
T1(定时/计数器1>
P3.6
(外部数据存储器写选通>
P3.7
(外部数据存储器读选通>
表2P3口引脚第二功能
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上的高电平时间将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH>可打开或关闭该功能。
DISRTO位缺省为RESET输出高电平打开状态。
y6v3ALoS89
ALE/
:
当访问外部存储器或数据存储器时,ALE(地址锁存允许>输出脉冲用于锁存地址的低8位字节。
即使不访问外部寄存器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
值得注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
M2ub6vSTnP
对Flash存储器编程期间,该引脚还用于输入编程脉冲(
>。
如有必要,可通过对特殊功能寄存器(SFR>区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只要一条MOVX和MOVC指令才会激活ALE。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
0YujCfmUCw
:
程序存储允许(
>输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据>时,每个机器周期两次
有效,即输出两个脉冲。
当访问外部数据存储器时,没有两次有效的
信号。
eUts8ZQVRd
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器<地址为0000H-FFFFH),EA端必须保持低电平(接地>。
需要注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
sQsAEJkW5T
如EA端保持高电平(接VCC端>,CPU则执行内部程序存储器中的指令。
Flash存储器编程期间,该引脚用于施加+12V编程电压XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入端。
XTAL2:
反向振荡放大器器的输出端。
2.DS1302
DS1302[1]是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
时钟可工作在24小时格式或12小时DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。
可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
GMsIasNXkA
2.1DS1302引脚功能
DS1302的引脚功能如表3所示,管脚图如图2所示
引脚号
引脚名称
功能
1
VCC2
主电源
2、3
X1、X2
振荡源,外接32768Hz晶振
4
GND
地线
5
RST
复位/片选线
6
I/O
串行数据输入/输出端<双向)
7
SCLK
串行时钟输入端
8
VCC1
后备电源
表3DS1302引脚功能表
图2DS1302管脚图
通过把
输入驱动置高电平来启动所有的数据传送。
输入有两种功能:
首先,
接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,
提供了终止单字节或多字节数据的传送手段。
当
为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中置
为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,
必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
TIrRGchYzg
2.2DS1302的控制字
DS1302的控制字节如图3所示:
76543210
1
RAM
A4
A3
A2
A1
A0
RAM
图3控制字节如图
控制字节的最高有效位<位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据。
位5至位1指示操作单元的地址。
最低有效位<位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
7EqZcWLZNX
2.3DS1302的寄存器
DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。
其日历、时间寄存器及其控制字见表5。
lzq7IGf02E
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。
DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H--FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH<写)、FFH<读)。
zvpgeqJ1hk
寄存器名
命令字
取值范围
各位内容
写操作
读操作
7
6
5
4
3
2
1
0
秒寄存器
80H
81H
00--59
CH
10SEC
SEC
82H
83H
00--59
0
10MIN
MIN
时寄存器
84H
85H
01-12或00-23
12/24
0
10
HR
HR
日寄存器
86H
87H
01-28,29,30,31
0
0
10DATE
DATE
月寄存器
88H
89H
01--12
0
0
0
10M
MONTH
周寄存器
8AH
8BH
01--07
0
0
0
0
0
DAY
年寄存器
8CH
8DH
00--99
10YEAR
YEAR
表5DS1302的日历、时钟寄存器及其控制字
2.4DS1302的数据输入输出
在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302NrpoJac3v1
图4读写数据如图所示
的数据,读出数据时从低位0位至高位7,数据读写时序如图4所示:
四.理论分析与计算
本次设计的电路由主控部分(单片机MCS-51>、计时部分<实时时钟芯片DS1302)、显示部分各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的计时功能。
现就各部分的硬件电路设计作出如下分析:
1nowfTG4KI
1.主控部分(单片机MCS-51>
MCS-51单片机作为主控芯片,控制整个电路的运行。
通过分析我们发现要想显示时间,必须先把DS1302中的时间信息通过单片机获取,存放到40H到46H等RAM单元。
并且是实时存放,刷新时间。
fjnFLDa5Zo
2.计时部分<实时时钟芯片DS1302)
时钟芯片DS1302能够准确的记录当前的时间,所以,通过单片机向其写入命令来获取相应的时间,而且一个命令字节控制读一个时间。
tfnNhnE6e5
3.显示部分
LM044L能够显示简单的汉字及数字,功能十分强大,而且属于动态显示,所以将单片机中存的时间信息传送到LM044L中。
另外还需要循环赋值。
HbmVN777sL
五.电路与程序设计
1.、系统硬件设计
本次设计的硬件电路由主控部分(单片机MCS-51>、计时部分<实时时钟芯片DS1302)、显示部分各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的计时功能。
现就各部分的硬件电路设计作出如下论述.V7l4jRB8Hs
1.1系统总原理图
1.2主控部分(单片机MCS-51>
MCS-51单片机作为主控芯片,控制整个电路的运行。
其外围电路主要有两部分:
复位电路和晶体振荡器。
复位电路的功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降<电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
83lcPA59W9
晶体振荡电路:
MCS-51单片机中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。
这个反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷谐振器>及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。
如果使用石英晶体,电容应该使用30pF
10pF。
电路图如下:
mZkklkzaaP
图5主控部分电路图
1.3计时部分<实时时钟芯片DS1302)
时钟芯片DS1302与外围电路的连接:
与MCS-51单片机的接口是由3条线来完成的,MCS-51单片机的P1.0与时钟芯片的数据传输端I/O相连,P1.1用来作为DS1302输入时钟SCLK控制端,P1.2控制DS1302的复位输入端RST。
DS1302的X1和X2管脚外接标DS1302的复位引脚通过把
输入驱动置高电平来启动所有的数据传送。
输入有两种功能:
首先,
接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,
提供了终止单字节或多字节数据的传送手段。
当
为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中置
为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。
上电运行时,在Vcc≥2.5V之前,
必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
AVktR43bpw
图6计时部分电路图
图7protues仿真图
2.系统软件设计
单片机AT89S51对时钟芯片DS1302的控制需要通过程序驱动来实现,程序主要完成两个方面的任务:
①利用单片机实现对DS1302寄存器的地址定义和控制字的写入,②实现对DS1302的数据读取。
ORjBnOwcEd
初始化DS1302要求
为低电平,SCLK为低电平。
被设置为高电平就启动了一个数据传送的过程。
SCLK的16个方波完成一次数据传送,前8个方波用于输入命令字节,后8个方波用于数据的输出<读DS1302)或数据的输入<写DS1302)。
在SCLK的上升沿,I/O线上的数据被送入DS1302;在SCLK的下降沿,DS1302输出数据在I/O线上。
写和读各需要一个程序,写DS1302程序流程图如图8所示,读DS1302程序流程图如图9所示。
2MiJTy0dTT
2.1程序流程图
gIiSpiue7A
图8写DS1302流程图图9读DS1302流程图
2.2程序源代码
IOBITP1.0
SCLKBITP1.1
RSTBITP1.2
RWBITP1.6
RSBITP1.7
EBITP1.5
ORG0000H
JMPMAIN
ORG000BH
LJMPDVTO
ORG0100H
MAIN:
MOVSP,#5FH
MOVTMOD,#01H
MOVTH0,#4EH
MOVTL0,#20H
MOVR7,#01
MOVR0,#30H
MOV30H,#01H。
秒
MOV31H,#01H。
分
MOV32H,#01H。
时
MOV33H,#01H。
日
MOV34H,#01H。
月
MOV35H,#01H。
星期
MOV36H,#10H。
NIAN年
LCALLINIT。
对LCD进行初始化
LCALLKEY
SETBET0
SETBEA
SETBTR0
SJMP$
DVTO:
LCALLLOP5
LCALLABC
RETI
NTO:
MOVTH0,#4EH
MOVTL0,#20H
SETBTR0
RETI
KEY:
CLRRST
CLRSCLK
SETBRST
MOVB,#8EH
CALLWRITE
MOVB,#00H
CALLWRITE
SETBSCLK
CLRRST
MOVR0,#30H
MOVR7,#7
MOVR1,#80H
LOOP:
CLRRST
CLRSCLK
SETBRST
MOVB,R1
CALLWRITE
MOVA,@R0
MOVB,A
CALLWRITE
INCR0
INCR1
INCR1
SETBSCLK
CLRRST
DJNZR7,LOOP
CLRRST
CLRSCLK
SETBRST
MOVB,#8EH
CALLWRITE
MOVB,#80H
CALLWRITE
SETBSCLK
CLRRST
RET
INIT:
MOVA,#01H
CALLWRC
MOVA,#38H
CALLWRC
MOVA,#0CH
CALLWRC
MOVA,#98H
CALLWRC
MOVA,#83H。
DDRAM的地址进行设置,选择从哪里开始显示
CALLWRC
MOVA,#54H。
T的ASCII码
CALLWRD
MOVA,#49H。
I的ASCII码
CALLWRD
MOVA,#4DH。
M的ASCII码
CALLWRD
MOVA,#45H。
E的ASCII码
CALLWRD
MOVA,#3AH。
:
的ASCII码
CALLWRD
MOVA,#097H。
DDRAM的地址进行设置,选择从哪里开始显示
CALLWRC
MOVA,#30H
CALLWRD
MOVA,#38H
CALLWRD
MOVA,#32H
CALLWRD
MOVA,#3AH
CALLWRD
MOVA,#4CH。
L的ASCII码
CALLWRD
MOVA,#49H。
I的ASCII
CALLWRD
MOVA,#20H。
的ASCII码
CALLWRD
MOVA,#4AH。
J的ASCII
CALLWRD
MOVA,#49H。
I的ASCII码
CALLWRD
MOVA,#41H。
A的ASCII码
CALLWRD
MOVA,#4eH
CALLWRD。
N的ASCII码
MOVA,#20H。
的ASCII码
CALLWRD
CALLWRD
MOVA,#57H。
W的ASCII码