利用单片机及DS1302制作电子时钟Word格式.docx
- 文档编号:21650272
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:12
- 大小:76.50KB
利用单片机及DS1302制作电子时钟Word格式.docx
《利用单片机及DS1302制作电子时钟Word格式.docx》由会员分享,可在线阅读,更多相关《利用单片机及DS1302制作电子时钟Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
(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中,在结合元器件的情况下,进行再次调试,这是一个细心的过程,有时候可能因为你的一个中文引号而出现错误。
最后,这种设计让我学会了很多东西,让我逐渐走进自己专业有关的东西,希望以后能有这种设计实验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 单片机 DS1302 制作 电子 时钟