利用单片机及DS1302制作电子时钟Word格式.docx

上传人:b****5 文档编号:21650272 上传时间:2023-01-31 格式:DOCX 页数:12 大小:76.50KB
下载 相关 举报
利用单片机及DS1302制作电子时钟Word格式.docx_第1页
第1页 / 共12页
利用单片机及DS1302制作电子时钟Word格式.docx_第2页
第2页 / 共12页
利用单片机及DS1302制作电子时钟Word格式.docx_第3页
第3页 / 共12页
利用单片机及DS1302制作电子时钟Word格式.docx_第4页
第4页 / 共12页
利用单片机及DS1302制作电子时钟Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

利用单片机及DS1302制作电子时钟Word格式.docx

《利用单片机及DS1302制作电子时钟Word格式.docx》由会员分享,可在线阅读,更多相关《利用单片机及DS1302制作电子时钟Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

利用单片机及DS1302制作电子时钟Word格式.docx

(2)DS1302的电路图

2.应用中的几个小问题

(1)子程序必须满足三线通信的时序要求。

单片机晶振频率不同,相应的子程序中的延时也要调整。

否则,运行结果可能出现错误。

(2)注意LED数码管动态扫描显示程序的设计及单片机晶振频率的选择。

否则,会因LED数码管数量多而导致显示闪烁或不正确。

所以在程序设计中,应使动态扫描频率大于视觉暂留频率,要考虑避免出现串显现象。

四、元件清单

规格型号

元件名称

数量(个)

7SEG-MPX6-CA-BLUE

六个共阳数码管

1

74LS47

译码器

74LS245

收发器

4002

四输入或非门

AT89C51

单片机

BUTTON

开关

2

CAP

电容

4

CRYSTAL

晶振

DS1302

时钟

RX8

排阻

RES

电阻

CELL

电源

CAP-ELEC

陶瓷电容

五、原理图

六、程序

SCLKEQUP3.2

IOEQUP3.3

RSTEQUP3.4

JIA1EQUP3.6;

"

加一"

TSHEQUP3.7;

调时间"

HOURDATA62H

MINTUEDATA61H

SECONDDATA60H

DS1302_ADDRDATA32H

DS1302_DATADATA31H

ORG0H

MOVSP,#70H

LCALLDELY1

MOVDS1302_ADDR,#8EH;

允许写1302

MOVDS1302_DATA,#00H

LCALLWRITE

MOVDS1302_ADDR,#81H;

从1302读秒

LCALLREAD

ANLA,#7FH;

启动1302振荡器

MOVDS1302_ADDR,#80H

MOVDS1302_DATA,A

MOV20H,#0;

调整时标识单元

MOV21H,#0FH;

调整时工作单元

MAIN1:

JBTSH,MAIN2F;

按调时键往下执行

MOVDS1302_ADDR,#81H;

LCALLREAD

ORLA,#80H;

停1302振荡器

MOVDS1302_ADDR,#81H

MOVDS1302_DATA,A

LCALLWRITE

SSS:

LCALLDISP;

显示

JNBTSH,SSS;

等待调键盘弹起

MOV20H,#8;

设置调"

时"

标志

SSS3:

JNBTSH,FFF;

按调时键转调"

分"

JBJIA1,SSS3;

按"

键往下执行

SSS2:

JNBJIA1,SSS2;

等待"

键弹起

MOVR7,HOUR

LCALLJIAYI;

加一

MOVHOUR,A

CJNEA,#24H,SSS1;

不等于24时转

MOVHOUR,#0;

等于24时归零

SSS1:

MOVDS1302_ADDR,#84H;

将"

写入1302

MOVDS1302_DATA,HOUR

MOVR0,HOUR;

分离

LCALLDIVIDE

MOV44H,R1

MOV45H,R2

SJMPSSS

MAIN2F:

LJMPMAIN2

FFF:

NOP;

调"

等待调时键弹起

MOV20H,#4;

置调"

FFF3:

JNBTSH,MMM;

安调时键转调"

秒"

JBJIA1,FFF3;

若按"

FFF2:

JNBJIA1,FFF2;

MOVR7,MINTUE

MOVMINTUE,A

CJNEA,#60H,FFF1;

不等于60转

MOVMINTUE,#0;

等于60则归零

FFF1:

MOVDS1302_ADDR,#82H;

MOVDS1302_DATA,MINTUE

MOVR0,MINTUE

LCALLDIVIDE;

MOV42H,R1

MOV43H,R2

SJMPFFF3

MMM:

若按调时键则转调"

MOV20H,#2;

MMM3:

JNBTSH,MAIN3;

按调时键退出调时

JBJIA1,MMM3;

MMM2:

JNBJIA1,MMM2;

MOVR7,SECOND

MOVSECOND,A

CJNEA,#60H,MMM1;

MOVSECOND,#0

MMM1:

ORLSECOND,#80H

MOVDS1302_ADDR,#80H;

写"

MOVDS1302_DATA,SECOND

ANLSECOND,#7FH

MOVR0,SECOND

MOV40H,R1

MOV41H,R2

SJMPMMM3

MAIN3:

MOV20H,#0

MOV21H,#0FH

读"

ANLA,#7FH;

MOVDS1302_ADDR,#80H

LJMPMAIN1

MAIN2:

MOVP1,#0;

读时分秒并显示

MOVDS1302_ADDR,#85H;

MOVHOUR,DS1302_DATA

MOVDS1302_ADDR,#83H;

MOVMINTUE,DS1302_DATA

MOVSECOND,DS1302_DATA

MOVR0,MINTUE;

MOVR0,SECOND;

LCALLDISP

DISP:

NOP

MOVP1,40H;

显示"

低位

JNB01H,MIAOL

MOVA,21H

RLA

MOV21H,A

CJNEA,#78H,MIAO1

MIAO1:

JCMIAOL

CLRP2.4

CLRP2.5

SJMPFEN

MIAOL:

SETBP2.5

LCALLDELY1

LCALLDELY2

MOVP1,41H;

高位

SETBP2.4

FEN:

MOVP1,42H;

JNB02H,FENL

CJNEA,#78H,FEN1

FEN1:

JCFENL

CLRP2.2

CLRP2.3

SJMPSHI

FENL:

SETBP2.3

MOVP1,43H;

SETBP2.2

SHI:

MOVP1,44H;

地位

JNB03H,SHIL

CJNEA,#78H,SHI1

SHI1:

JCSHIL

SJMPSHI2

SHIL:

SETBP2.1

CLRP2.1

MOVP1,45H;

SETBP2.0

CLRP2.0

SJMPSFM

SHI2:

SFM:

RET

DELY1:

MOVR7,#5;

晶振12MHz,延时2.58ms

DELY11:

MOVR6,#0

DJNZR6,$

DJNZR7,DELY11

DELY2:

MOVR7,#1;

晶振12MHz,延时0.52ms

DELY21:

DJNZR7,DELY21

DELY3:

MOVR7,#40;

晶振12MHz,延时8x2.58ms

DELY31:

DJNZR7,DELY31

JIAYI:

MOVA,R7

ADDA,#1

DAA

DIVIDE:

MOVA,R0;

分离子程序

ANLA,#0FH

MOVR1,A

MOVA,R0

SWAPA

MOVR2,A

;

以下为DS1302在单片机晶振频率为4MHz时的串行通信子程序

WRITE:

CLRSCLK;

1302写子程序

SETBRST

MOVA,DS1302_ADDR

MOVR4,#8

WRITE1:

RRCA

CLRSCLK

MOVIO,C

SETBSCLK

DJNZR4,WRITE1

MOVA,DS1302_DATA

WRITE2:

DJNZR4,WRITE2

CLRRST

READ:

1302读子程序

READ1:

DJNZR4,READ1

READ2:

MOVC,IO

DJNZR4,READ2

END

七、总结

通过这次设计与仿真,让我对PROTEUS仿真有了一定的了解,其中也碰见了许多不会用的,后来经过网上查阅懂得了怎么使用,如,画总线工具在什么地方,怎么使用这个东西来画总线,怎么画网络标号。

在这次画图中,被这些细节难住许多次,感觉平时对细节太过轻视了,以后一定要改正。

对于程序部分,汇编语言和内部打交道,与我平时用的C语言有了很大的出入,但也没有办法,只有硬着头皮去记一些。

这次程序中使用了寄存器、定时器、中断等内部器件,再根据原理图编写必要的程序,查询了很多资料,中间出现了,很多程序的错误,经过多次调试,最终写好了程序。

然后,将程序导入到PROTEUS中,在结合元器件的情况下,进行再次调试,这是一个细心的过程,有时候可能因为你的一个中文引号而出现错误。

最后,这种设计让我学会了很多东西,让我逐渐走进自己专业有关的东西,希望以后能有这种设计实验。

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

当前位置:首页 > 初中教育

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

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