用数码管显示实时日历时钟的应用设计.docx

上传人:b****4 文档编号:6119466 上传时间:2023-05-09 格式:DOCX 页数:27 大小:649.25KB
下载 相关 举报
用数码管显示实时日历时钟的应用设计.docx_第1页
第1页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第2页
第2页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第3页
第3页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第4页
第4页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第5页
第5页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第6页
第6页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第7页
第7页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第8页
第8页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第9页
第9页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第10页
第10页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第11页
第11页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第12页
第12页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第13页
第13页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第14页
第14页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第15页
第15页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第16页
第16页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第17页
第17页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第18页
第18页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第19页
第19页 / 共27页
用数码管显示实时日历时钟的应用设计.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

用数码管显示实时日历时钟的应用设计.docx

《用数码管显示实时日历时钟的应用设计.docx》由会员分享,可在线阅读,更多相关《用数码管显示实时日历时钟的应用设计.docx(27页珍藏版)》请在冰点文库上搜索。

用数码管显示实时日历时钟的应用设计.docx

用数码管显示实时日历时钟的应用设计

(用数码管显示实时日历时钟的应用设计)

一、设计内容及要求

利用DS1302实现年月日时分秒,并用数码管显示。

(用proteus实现)

二、设计原始资料

单片机原理及应用教程范立南2006年1月

单片机原理及应用教程刘瑞新2003年07月 

三、设计完成后提交的文件和图表

1.计算说明书部分

1)方案论证报告打印版或手写版

2)程序流程图

3)具体程序

2.图纸部分:

具体电路原理图打印版

四、进程安排

教学内容学时地点

资料查阅与学习讨论1天单片机实验室

分散设计5天单片机实验室

编写报告3天单片机实验室

成果验收1天单片机实验室

五、主要参考资料

《电子设计自动化技术基础》马建国、孟宪元编清华大学出版2004年4月

《实用电子系统设计基础》姜威2008年1月

《单片机系统的PROTEUS设计与仿真》张靖武2007年4月

 

指导老师成绩

答辩小组成绩

总成绩

 

摘要

DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。

实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。

工作电压宽达2.5~5.5V。

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

本课程设计是基于DS1302实现实时时钟日历的应用设计。

通过对AT89C51写入程序实现对DS1302读写,读写过正确的年月日时分秒,然后通过74LS164串行输出再输入到七段数码管显示出时间日期。

本设计利用外部中断实现分别显示时间和日期,当按键按下的时候数码管显示年月日,松开则显示时分秒。

具体的读写及显示程序将在下文中做详细介绍。

关键字:

DS1302AT89C5174LS164数码管

 

 

一、设计目的:

(1)掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、测试方法;

(2)进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力;利用软件设计程序仿真运行

(3)学习使用仿真软件做线路图,提高电路布局﹑布线及检查和排除故障的能力

二、设计内容及要求

利用DS1302实现实时年月日时分秒,用数码管显示,并用proteus实现仿真效果。

三、数码管显示实时时钟日历的基本原理

DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。

数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。

时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为

8加最多可达248的数据。

DS1302的寄存器和控制命令

对DS1302的操作就是对其内部寄存器的操作,DS1302内部有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。

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

时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。

DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。

单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。

物理上,DS1302的通讯接口由3个口线组成,即RST,SCLK,I/O。

其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。

具体的读写时序参考图5,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:

平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。

 

四、元件明细表如下表1

表1

元件民称

数量

AT89C51

1

DS1302

1

74LS164

6

LED显示器

6

晶振

1

电容

2

开关

1

电源

若干

导线

若干

五、主要元件介绍

5.1、AT89C52芯片如图1

图1

AT89C52是51系列单片机的一个型号,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时\计数器,2个全双工串行通信口,2个读写口线。

主要管脚有:

XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振;RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路;VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端;P0~P3口为可编程通用I/O脚,其功能用途由软件定义。

本设计中,31脚接高电平VCC,提供电源;D0~D7接74HC573译码器,XTAL1和XTAL2引脚外接晶振,晶振CYS的振荡频率为12MHz。

 

5.2、DS1302图2

 

图2

各引脚的功能为:

Vcc1:

主电源;Vcc2:

备份电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2

SCLK:

串行时钟,输入,控制数据的输入与输出;

I/O:

三线接口时的双向数据线;

CE:

输入信号,在读、写数据期间,必须为高。

该引脚有两个功能:

第一,CE开始控制字访问移位寄存器的控制逻辑;其次,

CE提供结束单字节或多字节数据传输的方法。

DS1302有下列几组寄存器:

①DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器

(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如下表所示。

②DS1302有关RAM的地址

DS1302中附加31字节静态RAM的地址如下表所示。

③DS1302的工作模式寄存器

所谓突发模式是指一次传送多个字节的时钟信号和RAM数据。

突发模式寄存器如下表所示。

5.3、74LS164

 

C、74LS164

 

图3

引脚功能:

CLOCK:

时钟输入端CLEAR:

同步清除输入端(低电平有效)A,B:

串行数据输入端QA-QH:

输出端

当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。

串行数据输入端(A,B)可控制数据。

当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。

当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。

5.4、LED显示器

图3

八段LED数码管显示器由8个发光二极管组成,其中7个长条形的发光管排列成“日”字形,另一个发光管在数码管显示器的右下角作为显示小数点。

8个笔划段hgfedcba对应于一个字节(8位)的D7D6D5D4D3D2D1D0,因此用8位二进制码就能表示欲显示字符的字形代码。

 

六、流程图

 

七、程序设计

IOEQUP1.0;实时时钟数据线引脚

SCLKEQUP1.1;实时时钟时钟线引脚

RSTEQUP1.2;实时时钟复位线引脚

SECONDEQU40H

MINUTEEQU41H

HOUREQU42H

DAYEQU43H

MONTHEQU44H

WEEKEQU45H

YEAREQU46H

ORG0000H

JMPMAIN

ORG0003H

jmpINT_0

ORG0020H

MAIN:

CLRIT0

SETBEX0

SETBEA

LCALLGET;从DS1302读取时间

DISPALY:

MOVa,40H;显示秒

ANLa,#0FH;低位保留

lcallwww

lcalldelay

mova,40h

anla,#0f0h

swapa;高位低位互换

lCALLaaa

lcalldelay

MOVa,41H;显示分

ANLa,#0FH;低位保留

lcallwwwf

lcalldelay

mova,41h

anla,#0f0h

swapa;高位低位互换

lCALLaaaf

lcalldelay

MOVa,42H;显示时

ANLa,#0FH;低位保留

lcallwwws

lcalldelay

mova,42h

anla,#0f0h

swapa;高位低位互换

lCALLaaas

lcalldelay

ljmpmain

sjmp$

INT_0:

MOVa,43H;显示日

ANLa,#0FH;低位保留

lcallwwwr

mova,43h

anla,#0f0h

swapa;高位低位互换

lCALLaaar

lcalldelay

MOVa,44H;显示月

ANLa,#0FH;低位保留

lcallwwwy

lcalldelay

mova,44h

anla,#0f0h;高位低位互换

swapa

lCALLaaay

lcalldelay

MOVa,46H;显示年

ANLa,#0FH;低位保留

lcallwwwn

lcalldelay

mova,46h

anla,#0f0h

swapa;高位低位互换

lCALLaaan

lcalldelay

RETI

;把寄存器中的内容传给74ls164的子程序

www:

;给秒的低四位数码管赋值

mov49h,#8h

lcallL0

eee:

jbacc.7,rrr

clrp0.0

jmpttt

rrr:

setbp0.0

ttt:

clrp2.0

setbp2.0

rla

djnz49h,eee

ret

aaa:

;给秒的高四位数码管赋值

mov49h,#8h

lcallL0

sss:

jbacc.7,ddd

clrp0.1

jmpfff

ddd:

setbp0.1

fff:

clrp2.1

setbp2.1

rla

djnz49h,sss

ret

wwwf:

;给分的低四位数码管赋值

mov49h,#8h

lcallL0

eeef:

jbacc.7,rrrf

clrp0.2

jmptttf

rrrf:

setbp0.2

tttf:

clrp2.2

setbp2.2

rla

djnz49h,eeef

ret

aaaf:

;给分的高四位数码管赋值

mov49h,#8h

lcallL0

sssf:

jbacc.7,dddf

clrp0.3

jmpffff

dddf:

setbp0.3

ffff:

clrp2.3

setbp2.3

rla

djnz49h,sssf

ret

wwws:

;给时的低四位数码管赋值

mov49h,#8h

lcallL0

eees:

jbacc.7,rrrs

clrp0.4

jmpttts

rrrs:

setbp0.4

ttts:

clrp2.4

setbp2.4

rla

djnz49h,eees

ret

aaas:

;给时的高四位数码管赋值

mov49h,#8h

lcallL0

ssss:

jbacc.7,ddds

clrp0.5

jmpfffs

ddds:

setbp0.5

fffs:

clrp2.5

setbp2.5

rla

djnz49h,ssss

ret

wwwr:

;给日的低四位数码管赋值

mov49h,#8h

lcallL0

eeer:

jbacc.7,rrrr

clrp0.0

jmptttr

rrrr:

setbp0.0

tttr:

clrp2.0

setbp2.0

rla

djnz49h,eeer

ret

aaar:

;给日的高四位数码管赋值

mov49h,#8h

lcallL0

sssr:

jbacc.7,dddr

clrp0.1

jmpfffr

dddr:

setbp0.1

fffr:

clrp2.1

setbp2.1

rla

djnz49h,sssr

ret

wwwy:

;给月的低四位数码管赋值

mov49h,#8h

lcallL0

eeey:

jbacc.7,rrry

clrp0.2

jmpttty

rrry:

setbp0.2

ttty:

clrp2.2

setbp2.2

rla

djnz49h,eeey

ret

aaay:

;给月的高四位数码管赋值

mov49h,#8h

lcallL0

sssy:

jbacc.7,dddy

clrp0.3

jmpfffy

dddy:

setbp0.3

fffy:

clrp2.3

setbp2.3

rla

djnz49h,sssy

ret

wwwn:

;给年的低四位数码管赋值

mov49h,#8h

lcallL0

eeen:

jbacc.7,rrrn

clrp0.4

jmptttn

rrrn:

setbp0.4

tttn:

clrp2.4

setbp2.4

rla

djnz49h,eeen

ret

aaan:

;给年的高四位数码管赋值

mov49h,#8h

lcallL0

sssn:

jbacc.7,dddn

clrp0.5

jmpfffn

dddn:

setbp0.5

fffn:

clrp2.5

setbp2.5

rla

djnz49h,sssn

ret

delay:

;延时60ms

mov47h,#60

lop11:

mov48h,#0ffh

lop22:

nop

nop

djnz48h,lop22

djnz47h,lop11

ret

;判断时钟每位是几(1,2,3,4,5,6,7,8,,9,)

L0:

cjnea,#0h,L1

mova,#0c0h

ret

L1:

cjnea,#1h,L2

mova,#0f9h

ret

L2:

cjnea,#2h,L3

mova,#0a4h

ret

L3:

cjnea,#3h,L4

mova,#0b0h

ret

L4:

cjnea,#4h,L5

mova,#99h

ret

L5:

cjnea,#5h,L6

mova,#92h

ret

L6:

cjnea,#6h,L7

mova,#82h

ret

L7:

cjnea,#7h,L8

mova,#0f8h

ret

L8:

cjnea,#8h,L9

mova,#80h

ret

L9:

mova,#90h

RET

从DS1302读取时间

GET:

MOVR0,#40H

MOVR1,#81H;DS1302中读时间的首地址

MOVR7,#7

GETLOOP:

CLRRST

nop

CLRSCLK

nop

SETBRST

nop

MOVB,R1

LCALLWRITE;写命令字

LCALLREAD;读时间

MOV@R0,A

;将从DS1302中读取的时间从内存中保存

INCR0;修改地址指针

INCR1

INCR1

SETBSCLK

nop

CLRRST

nop

DJNZR7,GETLOOP

RET

WRITE:

MOV30H,#8;写入命令子程序DS1302

LOP1:

MOVA,B

RRCA

MOVB,A

MOVP1.0,C

SETBP1.1

CLRP1.1

DJNZ30H,LOP1

RET

READ:

;读出数据子程序DS1302

MOV30H,#8

LOP2:

MOVC,P1.0

RRCA

SETBP1.1

CLRP1.1

DJNZ30H,LOP2

RET

END

八、电路图及其显示结果

1、电路图的连接如图4

 

图4

 

2、时分秒的显示如图5

 

图5

3、年月日的显示

 

图5

3、年月日的显示图6

图6

九、心得体会

历经两个周的课程设计很快就结束了,不得不感叹时间的飞逝!

通过这次的课程设计我学到了很多东西:

1、当面对一个毫无头绪的题目时,我学会了如何去着手以及慢慢找到解决的方法!

2、通过这次设计我加强了自己的思考以及动手能力,最主要的就是对一个整天解体,对其每一模块思考理解,进而对整体理解!

3、这次设计也让我对课本的知识进行了巩固,尤其是一条条繁琐的指令,平时背背忘忘,这次的实践使其深深扎根于我脑海中。

同时,对keil以及proteus软件运用的更加熟练,相信在今后的实验设计中操作上不会出现问题了。

4、再次体会到细节问题有多么的重要,这次设计,很多次都是一个小小的错误使得整体运行错误。

而这些错误却是一些字母符号的输错、少输。

除了上述之外,我的耐心及毅力也得到了很大的锻炼,这不仅对我的学业,而且对我的整个人生也会产生巨大的作用。

 

十、参考文献

1、《电子设计自动化技术基础》马建国、孟宪元编清华大学出版200年4月

2、《实用电子系统设计基础》姜威2008年1月

3、《单片机系统的PROTEUS设计与仿真》张靖武2007年4月

 

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2