用LCD显示实时日历时钟单片机课程设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(用LCD显示实时日历时钟的应用设计) 课程设计说明书
目录
一.设计任务和要求 (2)
二.核心芯片功能介绍 (2)
1.AT89C51 (2)
1.1 功能特性概括: (3)
1.2 管脚说明: (3)
2.DS1302 (5)
2.1 DS1302引脚功能 (5)
2.2DS1302的控制字 (6)
2.3 DS1302的复位引脚 (6)
2.4 DS1302的数据输入输出 (7)
2.5 DS1302的寄存器 (7)
三.系统方案 (9)
四.理论分析与计算 (9)
五.电路与程序设计 (8)
1.电路设计 (9)
1.1分电路图及原理说明 (9)
1.2 主控部分(单片机MCS-51) (9)
1.3 计时部分(实时时钟芯片DS1302) (9)
2.Protues仿真图 (10)
3.程序设计流程图 (11)
4.具体程序 (13)
六.结果分析 (21)
七.总结 (21)
八.设计体会与今后的改进意见 (23)
参考文献 (23)
摘要
本次课程设计是使用专门的时钟芯片DS1302在LCD上显示的日历时钟, DS1302是一种高性能、低功耗、带RAM的实时时钟芯片,它能够对时,分,秒进行精确计时,它与单片机的接口使用同步串行通信,仅用3条线与之相连接,就可以实现MCS-51单片机对其进行读写操作,把读出的时间数据送到LM044L上显示。

程序运行时,必须先对LM044L进行初始设置,然后,通过单片机从DS1302中获取时间并通过LM044L显示。

同时,进行循环赋值,使LCD动态显示当前的时间。

关键字:MCS-51单片机、DS1302,LM044L显示器,动态显示
Abstract: This course is designed to use special clock chip DS1302 is displayed on LCD and the calendar, clock DS1302 is a kind of high performance, low power consumption, take the RAM chips, which can real-time clock diffculties, points, seconds for accurate timing, it and single-chip microcomputer interface USES synchronous serial communication, with only three line and the connected, can come true - 51 SCC of the MCS reading operation, to read the time data sent to LCD display on. When the program is running, you must first for the initial set of LCD, then, by microcontroller from getting times in DS1302 through LCD display. Meanwhile, cyclicly assignment, make LCD dynamic display the current time
一.设计任务和要求
1.利用DS1302实现年月日时分秒,并用LCD显示。

2. 硬件设计部分,根据设计的任务选定合适的单片机,根据控制对象设计接口电路。

设计的单元电路必须有工作原理,器件的作用,分析和计算过程;
3. 软件设计部分,根据电路工作过程,画出软件流程图,根据流程图编写相应的程序,进行调试并打印程序清单;
4.原理图设计部分,根据所确定的设计电路,利用Protel工具软件绘制电路原理图,提供元器件清单。

5计算说明书部分包括方案论证报告打印版或手写版,程序流程图具体程序等
6. 图纸部分包括具体电路原理图打印版
7. 设计要求还包括利用一天时间进行资料查阅与学习讨论,利用5天时间在实验室进行分散设计,最后三天编写报告。

最后一天进
行成果验收。

二.核心芯片功能介绍
1.AT89C51
AT89S51[3]美国ATMEL公司生产的低
功耗,高性能CMOS 8位单片机,片内
含4K BytesISP(In-system programmable)
的可反复擦写1000次的Flash只读程序
存储器,器件采用ATMEL公司的高密
度、非易失性存储技术制造,兼容标准
MCS-51指令系统及AT89C51引脚结构,
芯片内集成了通用8位中央处理器和ISP
Flash存储单元。

单片机AT89S51强大的
功能可为许多嵌入式控制应用系统提供
高性价比的解决方案。

AT89C51芯片的引脚结构如图1所示:
1.1 功能特性概括:图1 AT89C51引脚图
AT89S51提供以下标准功能:40个引脚、4K Bytes Flash片内程序存储器、128 Bytes的
随机存取数据存储器(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编程定时/计数器、2个全双工串行通信口、看门狗(WDT)电路、片内振荡器及时钟电路。

此外,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲模式下,CPU暂停工作,而RAM、定时/计数器、串
行通信口、外中断系统可继续工作。

掉电模式冻结振荡器而保存RAM的数据,停止芯片其
它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

2.DS1302
DS1302[1]是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。

时钟可工作在24小时格式或12小时(AM/PM)格式。

DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。

可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。

DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。

DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。

2.1 DS1302引脚功能
DS1302的引脚功能如表3所示,管脚图如图2所示
表3 DS1302引脚功能表
图2 DS1302管脚图
表5 DS1302的日历、时钟寄存器及其控制字
三.系统方案
实现数字电子钟的设计有以下两种基本方案,现就两种基本方案的优劣进行具体论证,从而说明选择方案二的理由。

方案一:直接用单片机的内部定时器来实现时间。

该方案以MCS-51单片机为主控芯片,以MCS-51的内部定时器产生的1s中断作为时钟的驱动,然后再通LCD液晶显示器来组成数字钟电路。

但是此方案最大的缺点在于单片机89C51产生的1s中断存在误差,如果工作时间长的话,数字时钟显示的时间将会出现严重的偏差,不够精确。

方案二:使用串行接口时钟芯片DS1302设计时钟电路。

该设计方案以MCS-51单片机为主控芯片,以串行时钟芯片DS1302为核心计时芯片,然后再通过一个LCD液晶显示器组成数字时钟电路。

更重要的是,DS1302时钟芯片的加入大大提高了数字钟时间的准确性,而且该电路在断电后不丢失时间和数据信息时也使得该方案的研究与提升更具有开发的意义。

四.理论分析与计算
本次设计的电路由主控部分(单片机MCS-51)、计时部分(实时时钟芯片DS1302)、显示部分(LM044L)3个部分组成。

各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的计时功能。

现就各部分的硬件电路设计作出如下分析:
1. 主控部分(单片机MCS-51)
MCS-51单片机作为主控芯片,控制整个电路的运行。

通过分析我们发现要想显示时间,必须先把DS1302中的时间信息通过单片机获取,存放到40H到46H 等RAM单元。

并且是实时存放,刷新时间。

2. 计时部分(实时时钟芯片DS1302)
时钟芯片DS1302能够准确的记录当前的时间,所以,通过单片机向其写入命令来获取相应的时间,而且一个命令字节控制读一个时间。

3. 显示部分
LM044L能够显示简单的汉字及数字,功能十分强大,而且属于动态显示,所以将单片机中存的时间信息传送到LM044L中。

另外还需要循环赋值。

五.电路与程序设计
1.电路设计
1.1分电路图及原理说明
本次设计的硬件电路由主控部分(单片机MCS-51)、计时部分(实时时钟芯片DS1302)、显示部分(LM044L)3个部分组成。

各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的计时功能。

现就各部分的硬件电路设计作出如下论述.
1.2 主控部分(单片机MCS-51)
MCS-51单片机作为主控芯片,控制整个电路的运行。

其外围电路主要有两部分:复位电路和晶体振荡器。

复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。

为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。

该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。

晶体振荡电路:MCS-51单片机中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为该反向放大器的输入端和输出端。

这个反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。

外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。

对外接电容C1、C2虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性。

如果使用石英晶体,电容应该使用30pF 10pF。

电路图如下:
图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的复位引脚通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传
送手段。

当RST 为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中置RST 为低电平,则会终止此次数据传送,并且I/O 引脚变为高阻态。

上电运行时,在Vcc≥2.5V 之前,RST 必须保持低电平。

只有在SCLK 为低电平时,才能将RST 置为高电平。

图6 计时部分电路图
2.Protues 仿真图
图7 protues 仿真图
X12X23
VC C11GN D 4RST
5IO
6SCLK 7VC C28U4Y2
CR YSTAL +5V C4104P10P11P12
3.程序设计流程图
图8 写DS1302流程图 图9 读DS1302流程图
单片机AT89S51对时钟芯片DS1302的控制需要通过程序驱动来实现,程序主要完成两个方面的任务:①利用单片机实现对DS1302寄存器的地址定义和控制字的写入,②实现对DS1302的数据读取。

初始化DS1302要求RST 为低电平,SCLK 为低电平。

RST 被设置为高电平就启动了一个数据传送的过程。

SCLK 的16个方波完成一次数据传送,前8个方波用于输入命令字节,后8个方波用于数据的输出(读DS1302)或数据的输入(写
DS1302)。

在SCLK的上升沿,I/O线上的数据被送入DS1302;在SCLK的下降沿,DS1302输出数据在I/O线上。

写和读各需要一个程序,写DS1302程序流程图如图8所示,读DS1302程序流程图如图9所示。

总程序的流程图如图10所示。

图10 总程序的流程图
4.具体程序如下
IO EQU P1.0
SCLK EQU P1.1
RST EQU P1.2
RW BIT P1.6
RS BIT P1.7
E BIT P1.5
ORG 0000H
JMP MAIN
ORG 0030H
MAIN:
CALL INIT ;对LCD进行初始化
MOV A,#83H ;DDRAM的地址进行设置,选
择从哪里开始显示
CALL WRC
MOV A,#54H ;T的ASCII码
CALL WRD
MOV A,#49H ;I的ASCII码
CALL WRD
MOV A,#4DH ;M的ASCII码
CALL WRD
MOV A,#45H ;E的ASCII码
CALL WRD
MOV A,#3AH ;:的ASCII码
CALL WRD
MOV A,#097H ;DDRAM的地址进行设置,选
择从哪里开始显示
CALL WRC
MOV A,#30H
CALL WRD
MOV A,#38H
CALL WRD
MOV A,#32H
CALL WRD
MOV A,#3AH
CALL WRD
MOV A,#4CH ;L的ASCII码
CALL WRD
MOV A,#49H ;I的ASCII码
CALL WRD
MOV A,#55H ;U的ASCII码
CALL WRD
MOV A,#10H ; 的ASCII码
CALL WRD
MOV A,#53H ;S的ASCII码
CALL WRD
MOV A,#48H ;H的ASCII码
CALL WRD
MOV A,#55H ;U的ASCII码
CALL WRD
MOV A,#10H ; 的ASCII码
CALL WRD
MOV A,#54H ;T的ASCII码
CALL WRD
MOV A,#4FH ;O的ASCII码
CALL WRD
MOV A,#4EH ;N的ASCII码
CALL WRD
MOV A,#47H ;G的ASCII码
CALL WRD
MOV A,#0DBH ;DDRAM的地址进行设
置,选择从哪里开始显示CALL WRC
MOV A,#5AH ;Z的ASCII码
CALL WRD
MOV A,#48H ;H的ASCII码
CALL WRD
MOV A,#41H ;A的ASCII码
CALL WRD
MOV A,#4EH ;N的ASCII码
CALL WRD
MOV A,#47H ;G的ASCII码
CALL WRD
MOV A,#10H ; 的ASCII码
CALL WRD
MOV A,#10H ; 的ASCII码
MOV A,#10H ; 的ASCII码
CALL WRD
MOV A,#43H ;C的ASCII码
CALL WRD
MOV A,#48H ;H的ASCII码
CALL WRD
MOV A,#41H ;A的ASCII码
CALL WRD
MOV A,#4FH ;O的ASCII码
CALL WRD
LOP5:
MOV 30H,#8 ;以下为将DS1302的数据存到
单片机的40H到46H中MOV R0,#40H
MOV R7,#7
MOV R6,#81H
LOP:
CLR P1.2
CLR P1.1
SETB P1.2
MOV B,R6
ACALL WRITE
ACALL READ
MOV @R0,A
INC R0
INC R6
INC R6
DJNZ R7,LOP ;读出DS1302中的数据存到单片
机中
MOV A,#88H ;取出42H中的数据(小时)并
显示
MOV A,42H ;显示小时
ANL A,#0F0H
SWAP A
ADD A,#30H
ACALL WRD
MOV A,42H
ANL A,#0FH
ADD A,#30H
ACALL WRD
MOV A,#8AH ;对DDRAM地址进行设置CALL WRC
MOV A,#3AH ;:的ASCII码
CALL WRD
MOV A,41H ;显示分钟
ANL A,#0F0H
SWAP A
ADD A,#30H
ACALL WRD
MOV A,41H
ANL A,#0FH
ADD A,#30H
ACALL WRD
MOV A,#8DH ;对DDRAM地址进行设置CALL WRC
MOV A,#3AH ;:的ASCII码
CALL WRD
MOV A,40H ;显示秒
ANL A,#0F0H
SWAP A
ADD A,#30H
MOV A,40H
ANL A,#0FH
ADD A,#30H
ACALL WRD
MOV A,#0D4H ;对DDRAM地址进行设置CALL WRC
MOV A,#58H ;X的ASCII码
CALL WRD
MOV A,#51H ;Q的ASCII码
CALL WRD
DEC 45H
MOV A,45H ;显示星期
ANL A,#0FH
ADD A,#30H
ACALL WRD
MOV A,#0C3H
CALL WRC
MOV A,#44H ;D的ASCII码
CALL WRD
MOV A,#41H ;A的ASCII码
CALL WRD
MOV A,#54H ;T的ASCII码
CALL WRD
MOV A,#45H ;A的ASCII码
CALL WRD
MOV A,#3AH ;:的ASCII码
CALL WRD
MOV A,46H ;显示年
ANL A,#0F0H
SWAP A
ADD A,#30H
ACALL WRD
MOV A,46H
ANL A,#0FH
ADD A,#30H
ACALL WRD
MOV A,#0CAH ;对DDRAM地址进行设

CALL WRC
MOV A,#2DH ;-的ASCII码
CALL WRD
MOV A,44H ;显示月
ANL A,#0F0H
SWAP A
ADD A,#30H
ACALL WRD
MOV A,44H
ANL A,#0FH
ADD A,#30H
ACALL WRD
MOV A,#0CDH ;对DDRAM地址进行设

CALL WRC
MOV A,#2DH ;-的ASCII码
CALL WRD
MOV A,43H ;显示日
ANL A,#0F0H
SWAP A
ADD A,#30H
ACALL WRD
MOV A,43H
ANL A,#0FH
ADD A,#30H
ACALL WRD
AJMP LOP5
WRITE: ;以下全为子程序
MOV 30H,#8
LOP1:
MOV A,B
RRC A
MOV B,A
MOV P1.0,C
SETB P1.1
CLR P1.1
DJNZ 30H,LOP1
RET ;写入命令子程序DS1302
READ:
MOV 30H,#8
LOP2:
MOV C,P1.0
RRC A
SETB P1.1
CLR P1.1
DJNZ 30H,LOP2
RET ;读出数据子程序DS1302
INIT:
MOV A,#01H
CALL WRC
MOV A,#38H
CALL WRC
MOV A,#0CH
CALL WRC
MOV A,#06H
CALL WRC
RET ;对液晶显示器初始功能
设置
WRC:
CLR RS
CLR RW
SETB E
MOV P2,A
CLR E
CALL DELAY
RET ;写入LCD命令的程序WRD:
SETB RS
CLR RW
SETB E
MOV P2,A
CLR E
CALL DELAY
RET ;写入LCD要显示的数据的DELAY:
MOV R7,#035H
LP1:
MOV R6,#03FH
DJNZ R6,$
DJNZ R7,LP1
RET ;显示数据的延时
END
六.结果分析
结果分析如图11所示
图11 实验结果图
由图11可以看出LM044L可以正常显示时间,而且显示时间准确无误。

七.总结
通过本次设计,使我们对单片机的了解有了更加深一步,我发现只有动手做才会孰能技巧,还有对材料的整理和理解。

这次设计运用到的知识很多方面,尤其是单片机,像AT89C51,引脚多,硬件内部线路接通,所以用起来很方便,还有ds1302芯片与单片机之间的连接,以及如入使用ds1302芯片。

当然也要对这些元器件作相应调查。

主要就是电路原理图,还有对引脚的作用熟悉。

对于软件方面则是灵活运用单片机有关的程序语言,还有很多扩展功能,由于知识匮乏,但是理论知识还是比较详细的。

我们最大的成功之处是在这整个过程,动脑寻求解决一个一个问题的办法,对程序是不断思索,务必写出很简单的程序来,使得电子时钟能做成功!
本设计利用单片机AT89S51控制串行实时时钟芯片DS1302构成数字时钟电路,实现计时功能。

该电路使用简单的三线接口,为单片机节省大量的接口资源,时钟芯片DS1302带有后备电池,具备对后背电源进行涓细电流充电的能力,保证电路断电后仍保存时间和数据信息,这些优点解决了目前常用实时时钟占用单片机资源多以及计时不可靠等缺点。

该时钟功能强大,性能优越,能为很多领域,特别是对时钟工作的精确性和可靠性有较高要求的场合,提供较好的实时时钟。

但是,由于DS1302易受环境影响,会使该电路出现时钟精度不高、时钟混乱[5]等问题,还有待继续研究和改进。

八.设计体会与今后的改进意见
本设计利用单片机AT89S51控制串行实时时钟芯片DS1302构成数字时钟电路,实现计时功能。

该电路使用简单的三线接口,为单片机节省大量的接口资源,时钟芯片DS1302带有后备电池,具备对后背电源进行涓细电流充电的能力,保证电路断电后仍保存时间和数据信息,这些优点解决了目前常用实时时钟占用单片机资源多以及计时不可靠等缺点。

该时钟功能强大,性能优越,能为很多领域,特别是对时钟工作的精确性和可靠性有较高要求的场合,提供较好的实时时钟。

但是,由于DS1302易受环境影响,会使该电路出现时钟精度不高、时钟混乱[5]等问题,还有待继续研究和改进。

参考文献
1.《单片机原理及应用教程》(第2版)赵全利肖兴达主编机械工业出版社2008年6月
2.《电子设计自动化技术基础》马建国、孟宪元编清华大学出社2004年4月
3.《实用电子系统设计基础》姜威 2008年1月
4.《单片机系统的PROTEUS设计与仿真》张靖武 2007年4月。

相关文档
最新文档