基于DS1302与LCD1602的电子日历时钟的设计与实现.docx

上传人:b****5 文档编号:7607524 上传时间:2023-01-25 格式:DOCX 页数:39 大小:1.06MB
下载 相关 举报
基于DS1302与LCD1602的电子日历时钟的设计与实现.docx_第1页
第1页 / 共39页
基于DS1302与LCD1602的电子日历时钟的设计与实现.docx_第2页
第2页 / 共39页
基于DS1302与LCD1602的电子日历时钟的设计与实现.docx_第3页
第3页 / 共39页
基于DS1302与LCD1602的电子日历时钟的设计与实现.docx_第4页
第4页 / 共39页
基于DS1302与LCD1602的电子日历时钟的设计与实现.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

基于DS1302与LCD1602的电子日历时钟的设计与实现.docx

《基于DS1302与LCD1602的电子日历时钟的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于DS1302与LCD1602的电子日历时钟的设计与实现.docx(39页珍藏版)》请在冰豆网上搜索。

基于DS1302与LCD1602的电子日历时钟的设计与实现.docx

基于DS1302与LCD1602的电子日历时钟的设计与实现

武汉纺织大学高职学院

毕业设计(论文)

 

2014—2015学年第1学期

 

题目:

基于DS1302与LCD1602的电子日历时钟的设计与实现

 

学生姓名曹强

学号1218092183

指导教师王骏

评阅教师

时间2014年10月

 

武汉纺织大学高职学院毕业设计(论文)开题报告

课题名称(来源、类型):

基于DS1302与1602LCD电子日历时钟的设计与实现

指导教师:

王骏学生姓名:

曹强

开题报告内容:

(调研资料的准备,设计/论文的目的、要求、思路与预期成果;任务完成的阶段内容及时间安排;完成设计(论文)所具备的条件因素等。

1.目的:

实现日历和时钟的显示并且能够调整

2.要求:

完成电子日历和时钟的软件和硬件的设计,包括单片机的相关内容;日历时钟模块的设计,液晶显示模块的设计,控制程序的编写等。

3.预期成果:

仿真成功,做出实物。

(1)显示初始值日历时钟初始值;

4.时间安排:

第3周:

熟悉课题的基本要求,查阅相关资料,初步拟定设计的

整体方案,完成开题报告。

第4—5周:

自学这次课题所涉及的相关内容,包括器件基础知识、单片机,DS1302时钟芯片工作原理和相关软件的使用以及LCD1602液晶显示屏的相关内容。

并设计一些简单的实际电路,熟练所学内容并加以巩固.

第6—8周:

设计DS1302时钟模块的控制电路、LCD1602液晶显示电路、电源电路等硬件电路,并用Proteus仿真

第8—10周:

焊接调试电路,根据个部分的作用对硬件进行调试,最后联机调试。

第10—12周:

写毕业设计论文,作品展示,完成全部毕业设计

 

指导教师签名:

日期:

2014年

 

3.2DS1302子程序..。

.。

..。

.。

..。

....。

..。

....。

12

3。

4位定义。

...。

.。

...。

....。

......。

.。

.。

.。

.。

.。

.。

..18

附录五PCB图············································33

摘要

随着现代科技的快速发展,时间的不断流逝,从观太阳、摆钟到现在的电子时钟,人类凭借非凡的智慧不断研究,又创造出新的纪录.美国Dallas公司推出了一种具有涓细电流充电能能力的低功耗实时时钟时钟芯片DS1302。

它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

对于可调电子日历采用直观的数字显示,可以同时显示年、月、日、星期、时、分、秒信息,还具有时间校准等功能。

该电路采用STC89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3—5V电压供电。

用LCD1602液晶显示,较直观。

综上所述此可调电子日历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

 

关键词

时钟电路;DS1302;LCD1602;单片机STC89C52

 

Abstract

Withtherapiddevelopmentofmodernscienceandtechnology,thepassageoftime,fromtheviewofthesun,thependulumclocksarenowelectronicclock,humanwithextraordinarywisdomcontinuouslyresearch,createanewrecord.TheDallascompanylaunchedahasJuanfinecurrentchargeabilityoftherealtimeclocklowpowerconsumptionDS1302chip.Itcanbetoyear,month,day,week,when,minutesandsecondsforthetime,alsohasaleapyearcompensationandotherfunctions,andtheDS1302longservicelifeandsmallerror.Foradjustableelectroniccalendarbyusingobjectdigitaldisplay,canalsoshowsthatyear,month,day,week,when,minutesandsecondsinformation,butalsohastimecalibrationetc.Function。

ThiscircuitSTC89C52singlechipmicrocomputerasthecore,itspowerconsumptionissmall,canbein3Voflow—pressurework,voltagecanchoose3~5Vvoltagepowersupply.WithLCD1602liquidcrystaldisplay,moreintuitive.

Tosumuptheadjustableelectroniccalendarhasreadtheconvenient,directdisplay,functionaldiversity,simplecircuit,lowcost,andmanyotheradvantages,conformtothetrendofthedevelopmentofelectronicinstruments,andhasabroadmarketprospect.

 

KeyWords

TheclockDianZhong;DS1302;LCD1602;STC89C52singlechipmicrocomputer

 

第一章设计要求与方案论证

1.1设计要求:

1具有年、月、日、星期、时、分、秒等功能;

1.2系统基本方案选择和论证

1。

2。

1单片机芯片的选择方案和论证

方案一:

采用STC89C52芯片作为硬件核心,采用FlashROM,内部具有4KBROM存储空间,能于3V的超低压工作,而且与MCS—51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。

方案二:

采用STC89C52芯片内ROM全都采用FlashROM;能以3V的超底压工作;同时也与MCS—51系列单片机完全该芯片内部存储器为8KBROM存储空间,同样具有STC89C52的功能,且具有在线编程可擦除技术,对所下载的程序能够加密,比较安全。

当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

所以选择采用STC89C52作为主控制系统。

1.2。

2显示模块选择方案和论证

方案一:

采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以不用此种作为显示。

方案二:

采用LED数码管动态扫描,虽然LED数码管价格适中,但要显示多个数字所需要的个数偏多,功耗较大,所以也不用此种作为显示。

方案三:

采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,与普通数码管相比功耗较小,硬件连接简单。

所以显示部分采用1602液晶显示。

1.2。

3时钟芯片的选择方案和论证

方案一:

直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数.采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。

所以不采用此方案.

方案二:

采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、周、月、年一级闰年补偿的年进行计数,而且精度高,

RAM作为数据暂存区,工作电压2。

5V~5.5V范围内,2。

5V时耗电小于300nA。

1.3电路设计最终方案决定

综上各方案所述,对此次作品的方案选定:

采用STC89C52作为主控制系统;DS1302提供时钟;LCD1602液晶作为显示

第二章系统的硬件设计与实现

2.1电路设计框图

图1电路设计框图

2。

2系统硬件概述

本电路是由STC89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5。

5V。

采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。

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

可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本电路采用DS1302单字节传送方式实现与主控机之间数据的传送;显示部分由1602构成。

2。

3主要单元电路的设计

2。

3.1单片机主控制模块的设计

STC89C52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3,MCS—51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。

单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。

第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,如图-2

 

图2主控制系统

2。

3.2时钟电路DS1302

1.DS1302的性能特性

DS1302是一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据.实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2。

5~5。

5V。

采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。

图3示出DS1302的引脚排列图,其中Vcc1为后备电源,Vcc2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由Vcc1或Vcc2两者中的较大者供电.当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。

当Vcc2小于Vcc1时,DS1302由Vcc1供电.X1和X2是振荡源,外接32。

768KHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。

RST输入有两种功能:

首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段.当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作.如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态.上电动行时,在Vcc大于等于2.5V之前,RST必须保持低电平。

中有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向).SCLK始终是输入端。

DS1302_SCLK接P3^6;实时时钟时钟线引脚

DS1302_I/O接P3^4;实时时钟数据线引脚

DS1302_RST接P3^5;实时时钟复位线引脚

图3DS1302的引脚图

2。

DS1302数据操作原理

图4DS1302数据时序图

DS1302是通过SPI串行总线跟单片机通信的,当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作。

第二个字节就是要读或写的数据了。

单字节读:

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

所以在进行操作之前先将SCLK置低电平,然后将CE置为高电平,接着开始在IO上面放入要传送的电平信号,然后跳变SCLK。

数据在SCLK上升沿时,DS1302读取数据,在SCLK下降沿时,DS1302放置数据到IO上.

3.DS1302的时钟寄存器

图5时钟寄存器图

时钟/日历包含在7个寄存器中,数据在时钟/日历寄存器中是二进制编码的十进制格式存储的,也就是常说的BCD码存储的。

时钟寄存器的第8个字节是写保护寄存器.当WP为“1”的时候是开启写保护,这个时候是禁止对DS1302进行写操作的。

当WP为“0”的时候是关闭写保护,这个时候才能对DS1302进行写操作。

4.关于BCD码

BCD码是通过4位二进制码来表示1位十进制中的0~9这10个数码。

二进制码转换为BCD码的方式为:

4位二进制码大于1001时加6。

如:

BCD码00001100的二进制码为:

00001100+6=00010010

图6DS1302BCD代码

2。

3。

3显示模块的设计

1。

1602介绍

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。

下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。

一般1602字符型液晶显示器实物如图—4:

图71602字符型液晶显示器实物图

2.1602LCD的基本参数及引脚功能

1602LCD分为背光和不带背光两种,基控制大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,引脚功能说明

1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

表1:

引脚接口说明表

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄器。

第5脚:

R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15脚:

背光源正极。

第16脚:

背光源负极。

1602LCD的一般初始化(复位)过程

延时15mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)

延时5mS

写指令38H(不检测忙信号)

以后每次写指令、读/写数据操作均需要检测忙信号

写指令38H:

显示模式设置

写指令08H:

显示关闭

写指令01H:

显示清屏

写指令06H:

显示光标移动设置

写指令0CH:

显示开及光标设置

3.LCD1602液晶显示如图8所示:

图8LCD液晶显示

第三章系统的软件设计

3。

1主程序流程图

图—A主程序流程图

 

主程序:

voidLcdDisplay();

/*******************************************************************************

*函数名:

main

*函数功能:

主函数

*输入:

*输出:

*******************************************************************************/

voidmain()

LcdInit();

Ds1302Init();

while

(1)

{

Ds1302ReadTime();

LcdDisplay();

}

}

/*******************************************************************************

*函数名:

LcdDisplay()

*函数功能:

显示函数

*输入:

*输出:

*******************************************************************************/

voidLcdDisplay()

{

LcdWriteCom(0x80+0X40);

LcdWriteData(’0'+TIME[2]/16);//时

LcdWriteData(’0’+(TIME[2]&0x0f));

LcdWriteData(’-');

LcdWriteData(’0'+TIME[1]/16);//分

LcdWriteData('0’+(TIME[1]&0x0f));

LcdWriteData(’-’);

LcdWriteData(’0’+TIME[0]/16);//秒

LcdWriteData(’0'+(TIME[0]&0x0f));

LcdWriteCom(0x80);

LcdWriteData(’2');

LcdWriteData('0');

LcdWriteData('0'+TIME[6]/16);//年

LcdWriteData(’0’+(TIME[6]&0x0f));

LcdWriteData('-');

LcdWriteData('0’+TIME[4]/16);//月

LcdWriteData('0'+(TIME[4]&0x0f));

LcdWriteData(’—’);

LcdWriteData(’0'+TIME[3]/16);//日

LcdWriteData(’0’+(TIME[3]&0x0f));

LcdWriteCom(0x8D);

LcdWriteData(’0'+(TIME[5]&0x07));//星期

3。

2DS1302子程序

#include”ds1302。

h"

//———DS1302写入和读取时分秒的地址命令-—-//

//—--秒分时日月周年最低位读写位;-———--—//

ucharcodeREAD_RTC_ADDR[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};

ucharcodeWRITE_RTC_ADDR[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c};

//-—-DS1302时钟初始化2013年1月1日星期二12点00分00秒。

--—//

//---存储顺序是秒分时日月周年,存储格式是用BCD码—--//

ucharTIME[7]={0x00,0x24,0x12,0x01,0x01,0x02,0x13};

/*******************************************************************************

*函数名:

Ds1302Write

*函数功能:

向DS1302命令(地址+数据)

*输入:

addr,dat

*输出:

*******************************************************************************/

voidDs1302Write(ucharaddr,uchardat)

{

ucharn;

RST=0;

_nop_();

SCLK=0;//先将SCLK置低电平。

_nop_();

RST=1;//然后将RST(CE)置高电平。

_nop_();

for(n=0;n<8;n++)//开始传送八位地址命令

{

DSIO=addr&0x01;//数据从低位开始传送

addr〉>=1;

SCLK=1;//数据在上升沿时,DS1302读取数据

_nop_();

SCLK=0;

_nop_();

for(n=0;n〈8;n++)//写入8位数据

DSIO=dat&0x01;

dat〉>=1;

SCLK=1;//数据在上升沿时,DS1302读取数据

_nop_();

SCLK=0;

_nop_();

RST=0;//传送数据结束

_nop_();

/*******************************************************************************

*函数名:

Ds1302Read

*函数功能:

读取一个地址的数据

*输入:

addr

*输出:

dat

*******************************************************************************/

ucharDs1302Read(ucharaddr)

ucharn,dat,dat1;

RST=0;

_nop_();

SCLK=0;//先将SCLK置低电平。

_nop_();

RST=1;//然后将RST(CE)置高电平。

_nop_();

for(n=0;n<8;n++)//开始传送八位地址命令

{

DSIO=addr&0x01;//数据从低位开始传送

addr〉>=1;

SCLK=1;//数据在上升沿时,DS1302读取数据

_nop_();

SCLK=0;//DS1302下降沿时,放置数据

_nop_();

}

_nop_();

for(n=0;n<8;n++)//读取8位数据

{

dat1=DSIO;/

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

当前位置:首页 > 高等教育 > 理学

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

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