利用单片机及DS1302制作电子时钟课程设计

上传人:无*** 文档编号:41526134 上传时间:2021-11-21 格式:DOC 页数:12 大小:155KB
返回 下载 相关 举报
利用单片机及DS1302制作电子时钟课程设计_第1页
第1页 / 共12页
利用单片机及DS1302制作电子时钟课程设计_第2页
第2页 / 共12页
利用单片机及DS1302制作电子时钟课程设计_第3页
第3页 / 共12页
点击查看更多>>
资源描述
单片机原理及应用基于Proteus仿真设 计 报 告课程名:利用单片机及DS1302制作电子时钟专业: 班级: 学号: 姓名: 设计时间: 一、简介这是一种“基于单片机和DS1302的电子时钟”(简称“电子时钟”)。单片机为控制核心,DS1302为应用广泛且走时准确的时钟芯片。二、功能与操作1.功能(1)时钟功能:动态显示时、分、秒。(2)调时功能:可依据标准时钟调校时间。 (3)因DS1302接有辅助纽扣电池,即使电源断电也能准确计时数年。2.操作(1)上电后时钟开始计时并显示。(2)调时。按下“调时”按键,则进入调校时间状态,可依次调校时、分、秒。 三、技术要点1.时钟芯片DS1302的应用(1)DS1302的简介DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。(2)DS1302的电路图2.应用中的几个小问题(1)子程序必须满足三线通信的时序要求。单片机晶振频率不同,相应的子程序中的延时也要调整。否则,运行结果可能出现错误。(2)注意LED数码管动态扫描显示程序的设计及单片机晶振频率的选择。否则,会因LED数码管数量多而导致显示闪烁或不正确。所以在程序设计中,应使动态扫描频率大于视觉暂留频率,要考虑避免出现串显现象。四、元件清单规格型号元件名称数量(个)7SEG-MPX6-CA-BLUE六个共阳数码管174LS47译码器174LS245收发器14002四输入或非门1AT89C51单片机1BUTTON开关2CAP电容4CRYSTAL晶振2DS1302时钟1RX8排阻1RES电阻1CELL电源1CAP-ELEC陶瓷电容1五、原理图六、程序SCLKEQUP3.2IOEQUP3.3RSTEQUP3.4JIA1EQUP3.6;加一口TSHEQUP3.7;调时间口HOURDATA62HMINTUEDATA61HSECONDDATA60HDS1302_ADDRDATA32HDS1302_DATADATA31HORG0HMOVSP,#70HLCALLDELY1MOVDS1302_ADDR,#8EH;允许写1302MOVDS1302_DATA,#00HLCALLWRITEMOVDS1302_ADDR,#81H;从1302读秒LCALLREADANLA,#7FH;启动1302振荡器MOVDS1302_ADDR,#80HMOVDS1302_DATA,ALCALLWRITEMOV20H,#0;调整时标识单元MOV21H,#0FH;调整时工作单元MAIN1: JBTSH,MAIN2F;按调时键往下执行MOVDS1302_ADDR,#81H;从1302读秒LCALLREADORLA,#80H;停1302振荡器MOVDS1302_ADDR,#81HMOVDS1302_DATA,ALCALLWRITESSS: LCALLDISP;显示JNBTSH,SSS;等待调键盘弹起MOV20H,#8;设置调时标志SSS3: JNBTSH,FFF;按调时键转调分LCALLDISP;显示JBJIA1,SSS3;按加一键往下执行SSS2: LCALLDISP;显示JNBJIA1,SSS2;等待加一键弹起MOVR7,HOURLCALLJIAYI;时加一MOVHOUR,ACJNEA,#24H,SSS1;不等于24时转MOVHOUR,#0;等于24时归零SSS1:MOVDS1302_ADDR,#84H;将时写入1302MOVDS1302_DATA,HOURLCALLWRITEMOVR0,HOUR;时分离LCALLDIVIDEMOV44H,R1MOV45H,R2SJMPSSSMAIN2F:LJMPMAIN2FFF:NOP;调分LCALLDISP;显示JNBTSH,FFF;等待调时键弹起MOV20H,#4;置调分标志FFF3:JNBTSH,MMM;安调时键转调秒LCALLDISP;显示JBJIA1,FFF3;若按加一键往下执行FFF2:LCALLDISP;显示JNBJIA1,FFF2;等待加一键弹起MOVR7,MINTUELCALLJIAYI;分加一MOVMINTUE,ACJNEA,#60H,FFF1;不等于60转MOVMINTUE,#0;等于60则归零FFF1:MOVDS1302_ADDR,#82H;将分写入1302MOVDS1302_DATA,MINTUELCALLWRITEMOVR0,MINTUELCALLDIVIDE;分分离MOV42H,R1MOV43H,R2SJMPFFF3MMM:LCALLDISP;显示JNBTSH,MMM;若按调时键则转调秒MOV20H,#2;置调秒标志MMM3:JNBTSH,MAIN3;按调时键退出调时LCALLDISP;显示JBJIA1,MMM3;按加一键往下执行MMM2:LCALLDISP;显示JNBJIA1,MMM2;等待加一键弹起MOVR7,SECONDLCALLJIAYI;秒加一MOVSECOND,ACJNEA,#60H,MMM1;不等于60转MOVSECOND,#0MMM1:ORLSECOND,#80HMOVDS1302_ADDR,#80H;写秒MOVDS1302_DATA,SECONDLCALLWRITEANLSECOND,#7FHMOVR0,SECONDLCALLDIVIDE;秒分离MOV40H,R1MOV41H,R2SJMPMMM3MAIN3:LCALLDISP;显示JNBTSH,MAIN3;等待调时键弹起MOV20H,#0MOV21H,#0FHMOVDS1302_ADDR,#81H;读秒LCALLREADANLA,#7FH;启动1302振荡器MOVDS1302_ADDR,#80HMOVDS1302_DATA,ALCALLWRITELJMPMAIN1MAIN2:MOVP1,#0;读时分秒并显示MOVDS1302_ADDR,#85H;读时LCALLREADMOVHOUR,DS1302_DATAMOVDS1302_ADDR,#83H;读分LCALLREADMOVMINTUE,DS1302_DATAMOVDS1302_ADDR,#81H;读秒LCALLREADMOVSECOND,DS1302_DATAMOVR0,HOUR;时分离LCALLDIVIDEMOV44H,R1MOV45H,R2MOVR0,MINTUE;分分离LCALLDIVIDEMOV42H,R1MOV43H,R2MOVR0,SECOND;秒分离LCALLDIVIDEMOV40H,R1MOV41H,R2LCALLDISPLJMPMAIN1DISP:NOPMOVP1,40H;显示秒低位JNB01H,MIAOLMOVA,21HRLAMOV21H,ACJNEA,#78H,MIAO1MIAO1:JCMIAOLCLRP2.4CLRP2.5SJMPFENMIAOL:SETBP2.5LCALLDELY1CLRP2.5LCALLDELY2MOVP1,41H;显示秒高位SETBP2.4LCALLDELY1CLRP2.4LCALLDELY2FEN:MOVP1,42H;显示分低位JNB02H,FENLMOVA,21HRLAMOV21H,ACJNEA,#78H,FEN1FEN1:JCFENLCLRP2.2CLRP2.3SJMPSHIFENL:SETBP2.3LCALLDELY1CLRP2.3LCALLDELY2MOVP1,43H;显示分高位SETBP2.2LCALLDELY1CLRP2.2LCALLDELY2SHI:MOVP1,44H;显示时地位JNB03H,SHILMOVA,21HRLAMOV21H,ACJNEA,#78H,SHI1SHI1:JCSHILSJMPSHI2SHIL:SETBP2.1LCALLDELY1CLRP2.1LCALLDELY2MOVP1,45H;显示时高位SETBP2.0LCALLDELY1CLRP2.0LCALLDELY2SJMPSFMSHI2:CLRP2.0CLRP2.1SFM:RETDELY1:MOVR7,#5;晶振12MHz,延时2.58msDELY11:MOVR6,#0DJNZR6,$DJNZR7,DELY11RETDELY2:MOVR7,#1;晶振12MHz,延时0.52msDELY21:MOVR6,#0DJNZR6,$DJNZR7,DELY21RETDELY3:MOVR7,#40;晶振12MHz,延时8x2.58msDELY31:MOVR6,#0DJNZR6,$DJNZR7,DELY31RETJIAYI:MOVA,R7ADDA,#1DAARETDIVIDE:MOVA,R0;分离子程序ANLA,#0FHMOVR1,AMOVA,R0SWAPAANLA,#0FHMOVR2,ARET;以下为DS1302在单片机晶振频率为4MHz时的串行通信子程序WRITE:CLRSCLK;1302写子程序SETBRSTMOVA,DS1302_ADDRMOVR4,#8WRITE1:RRCACLRSCLKMOVIO,CSETBSCLKDJNZR4,WRITE1CLRSCLKMOVA,DS1302_DATAMOVR4,#8WRITE2:RRCACLRSCLKMOVIO,CSETBSCLKDJNZR4,WRITE2CLRRSTRETREAD:CLRSCLK;1302读子程序SETBRSTMOVA,DS1302_ADDRMOVR4,#8READ1:RRCANOPMOVIO,CSETBSCLKCLRSCLKDJNZR4,READ1MOVR4,#8READ2:CLRSCLKMOVC,IORRCASETBSCLKDJNZR4,READ2MOVDS1302_DATA,ACLRRSTRETEND七、总结通过这次设计与仿真,让我对PROTEUS仿真有了一定的了解,其中也碰见了许多不会用的,后来经过网上查阅懂得了怎么使用,如,画总线工具在什么地方,怎么使用这个东西来画总线,怎么画网络标号。在这次画图中,被这些细节难住许多次,感觉平时对细节太过轻视了,以后一定要改正。对于程序部分,汇编语言和内部打交道,与我平时用的C语言有了很大的出入,但也没有办法,只有硬着头皮去记一些。这次程序中使用了寄存器、定时器、中断等内部器件,再根据原理图编写必要的程序,查询了很多资料,中间出现了,很多程序的错误,经过多次调试,最终写好了程序。然后,将程序导入到PROTEUS中,在结合元器件的情况下,进行再次调试,这是一个细心的过程,有时候可能因为你的一个中文引号而出现错误。最后,这种设计让我学会了很多东西,让我逐渐走进自己专业有关的东西,希望以后能有这种设计实验。12
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!