基于DS1302数字钟.docx

上传人:b****4 文档编号:836150 上传时间:2022-10-13 格式:DOCX 页数:18 大小:351.34KB
下载 相关 举报
基于DS1302数字钟.docx_第1页
第1页 / 共18页
基于DS1302数字钟.docx_第2页
第2页 / 共18页
基于DS1302数字钟.docx_第3页
第3页 / 共18页
基于DS1302数字钟.docx_第4页
第4页 / 共18页
基于DS1302数字钟.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于DS1302数字钟.docx

《基于DS1302数字钟.docx》由会员分享,可在线阅读,更多相关《基于DS1302数字钟.docx(18页珍藏版)》请在冰豆网上搜索。

基于DS1302数字钟.docx

基于DS1302数字钟

目录

摘要-1-

1.引言-3-

2.硬件电路设计:

-4-

2.1DS1302-4-

2.2AT89C52-6-

2.3LCD1602-7-

2.4设计方案-8-

3.软件程序设计-9-

3.1主程序-9-

3.2LCD1602程序:

-10-

3.3DS1302应用程序:

-13-

4.课设的心得体会-17-

参考文献-20-

 

摘要

本设计选取串行接口时钟芯片DS1302与单片机同步通信构成数字时钟电路并用LCD1602显示。

其简单的三线接口能为单片机节省大量资源,DS1302的后备电源及对后备电源进行涓细电流充电的能力保证电路断电后仍能保存时间和数据信息等。

这些优点解决了目前常用的实时时钟所无法解决的问题。

该时钟电路强大的功能和优越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的测控系统等对时钟精确性和可靠性有较高要求的场合,具有很高的使用价值。

关键词:

AT89C52;LCD1602;DS1302;数字钟。

abstract

ThisdesigntoselecttheserialinterfaceclockchipDS1302andMCUsynchronouscommunicationdigitalclockelectricroad.It’ssimplethree-wireinterfacecansavealotofresources,MCUDS1302backpowersupplyandpowersupplybackfortricklingwaterfinecurrentchargingcanstillsavetimewhenthepoweristheabilitytoensurecircuitanddatainformation,etc.Theseadvantagestosolvethecurrentcommonlyusedreal-timeclockareunabletosolvetheproblem.Thepowerfulfunctionandoptimalperformanceoftheclockcircuit,inmanyfieldsofapplication,especiallysomeautomationandunattendedmeasurementcontrolsystemforalongtimehavehigherrequestfortheclockaccuracyandreliabilityofoccasions,hastheveryhighusevalue。

Keyword:

AT89C52;LCD1602;DS1302;Digitalclock;

 

1.引言

嵌入式经过数十年的发展,已经从深入到我们生活的方方面面,比如我们的手机、电脑以及最基本的电子钟。

电子钟虽小,但也涵盖了嵌入式的所有方面。

从古代的滴漏更鼓到近代的机械钟,从电子表到目前的数字时钟,为了准确的测量和记录时间,人们一直在努力改进着计时工具。

钟表的数字化,大力推动了计时的精确性和可靠性。

在单片机构成的装置中,实时时钟是必不可少的部件。

目前常用的实时时钟,很多采用单片机的中断服务来实现,这种方式一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许;有的则使用并行接口的时钟芯片,如MC146818、DS12887等,它们虽然能满足单片机系统对实时时钟的要求,但是这些芯片与单片机接口复杂,占用地址、数据总线多,芯片体积大,占用空间多,给其它设计带来诸多不便。

本设计选取串行接口时钟芯片DS1302与单片机同步通信构成数字时钟电路。

其简单的三线接口能为单片机节省大量资源,DS1302的后背电源及对后背电源进行涓细电流充电的能力保证电路断电后仍能保存时间和数据信息等。

这些优点解决了目前常用的实时时钟所无法解决的问题。

该时钟电路强大的功能和优越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的测控系统等对时钟精确性和可靠性有较高要求的场合,具有很高的使用价值。

2.硬件电路设计:

2.1DS1302

DS1302的引脚功能如图所示:

DS1302控制字:

控制字节最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。

位6如果为0,则表示存取日历时钏娄据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。

DS1302的复位引脚:

通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能:

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

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

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

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

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

DS1302的数据输入与输出:

在控制指令字输入后的下一个SCLK时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。

同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0至高位7,数据读写时序如下图:

DS1302寄存器:

DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据为BCD码形式。

此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。

2.2AT89C52

功能特性概述:

AT89C52提供以下标准功能:

8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

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

空闲方式停止CPU的工作,但通话RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

引脚功能说明:

Vcc:

电源电压GND:

P0口:

P0口是一组8位漏极开中型双向I/O口,也即地址/数据总线复用口。

作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。

P1口、P2口、P3口:

是一组带内部上拉电阻的8位双向I/O口,其输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。

作输入口使用时,因为内部存在上拉电阻某个引脚被外部信号拉低时会输出一个电流。

2.3LCD1602

接口信号说明:

基本操作时序:

读状态:

输入:

RS=L,RW=H,E=H输出:

D0~D7=状态字

写指令:

输入:

RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:

读数据:

输入:

RS=H,RW=H,E=H输出:

D0~D7=数据

写数据:

输入:

RS=H,RW=L,D0~D7=数据,E=高脉冲输出:

读操作时序:

写操作时序:

2.4设计方案

以AT89C52为主控芯片,串行时钟芯片DS1302为核心计时芯片,LCD1602为主要显示器件,组成数字时钟电路。

将AT89C52的P0口分别与LCD1602的D0~D7相连,P2.0接DS1302的SCKL引脚,P1.5接DS1302的RST引脚,P1.7接DS1302的I/O引脚,P2.2接LCD1602的使能端E,P2.0接LCD1602的RS引脚,P2.1接LCD1602的RW引脚。

3.软件程序设计

3.1主程序

#include

#include"LCD1602.h"

#include"DS1302.h"

voidDelay1ms(unsignedintcount)

{

unsignedinti,j;

for(i=0;i

for(j=0;j<120;j++);

}

main()

{

SYSTEMTIMECurrentTime;

LCD_Initial();

Initial_DS1302();

GotoXY(0,0);

Print("shuzizhong");

GotoXY(0,1);

Print("Time:

");

while

(1)

{

DS1302_GetTime(&CurrentTime);

TimeToStr(&CurrentTime);

GotoXY(6,1);

Print(CurrentTime.TimeString);

Delay1ms(400);

}

}

3.2LCD1602程序:

#ifndefLCD_CHAR_1602_2005_4_9

#defineLCD_CHAR_1602_2005_4_9

#include

//PortDefinitions**********************************************************

sbitLcdRs=P2^0;

sbitLcdRw=P2^1;

sbitLcdEn=P2^2;

sfrDBPort=0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

//内部等待函数**************************************************************************

unsignedcharLCD_Wait(void)

{

LcdRs=0;

LcdRw=1;_nop_();

LcdEn=1;_nop_();

//while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,

//可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80

//实际硬件时打开此语句

LcdEn=0;

returnDBPort;

}

//向LCD写入命令或数据************************************************************

#defineLCD_COMMAND0//Command

#defineLCD_DATA1//Data

#defineLCD_CLEAR_SCREEN0x01//清屏

#defineLCD_HOMING0x02//光标返回原点

voidLCD_Write(bitstyle,unsignedcharinput)

{

LcdEn=0;

LcdRs=style;

LcdRw=0;_nop_();

DBPort=input;_nop_();//注意顺序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1