收藏 分享(赏)

单片机应用课程设计基于DS1302电子时钟的设计 报告参考模板.doc

上传人:精品资料 文档编号:10707418 上传时间:2019-12-29 格式:DOC 页数:24 大小:1.61MB
下载 相关 举报
单片机应用课程设计基于DS1302电子时钟的设计 报告参考模板.doc_第1页
第1页 / 共24页
单片机应用课程设计基于DS1302电子时钟的设计 报告参考模板.doc_第2页
第2页 / 共24页
单片机应用课程设计基于DS1302电子时钟的设计 报告参考模板.doc_第3页
第3页 / 共24页
单片机应用课程设计基于DS1302电子时钟的设计 报告参考模板.doc_第4页
第4页 / 共24页
单片机应用课程设计基于DS1302电子时钟的设计 报告参考模板.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、单片机应用课程设计报告(20122013 学年第 2 学期)设计题目:基于 DS1302 电子时钟的设计班别: 2010 级自动化 1 班 姓名: 李永兴 贺孝言 王永伟 指导教师: 颜丽娜 时间: 2013 年 5 月 物理与电子工程学院2目录1 设计任务 32 系统总体方案设计 32.1 各个模块方案论证 .32.1.1 时钟芯片的选择 32.1.2 显示器的选择 32.2 总体方案设计 43 硬件电路设计 43.1 单片机最小系统 .43.2 1302 时钟电路 .53.3 按键调时电路 .54 系统软件设计 64.1 主程序流程图 .64.2 子程序流程图 .74.2.1 DS1302

2、 子程序流程图 .74.2.2 1602 子程序流程图 .84.3 按键校正调时程序 .85 实物调试 95.1 实物性能分析 95.2 总结 12附录 114(1)系统总电路图 .14(2)系统仿真图 .14附录 216部分程序清单 16物理与电子工程学院31 设计任务基本要求:采用 DS1302 时钟芯片与单片机 STC89C52 相结合设计电子时钟,能够显示出实时年、月、日、时、分、秒等时间,并且可以通过按键进行时间调整。2 系统总体方案设计2.1 各个模块方案论证2.1.1 时钟芯片的选择由于设计的是电子时钟, 而单片机 STC89C52 自带计时功能,利用单片机实现数据的显示和调整是

3、可行的,采用单片机计时,利用它的一个 16 位定时器/计数器每 50ms 产生一个中断信号,中断 20 次后产生一个秒信号,然后根据时间进制关系依次向分、时、日、星期、月、年进位。这样可以直接用单片机的内部定时/计数器来完成电子万年历的设计。用单片机内部的定时/计数器来制作电子万年历,虽然无须外接其他芯片,充分利用了单片机的资源,但是计时精度不够高,误差较大,掉电后所有数据将被丢失,且软件编程较为复杂。在以单片机为核心构成的装置中,经常需要一个实时的时钟和日历,以便对一些实时发生事件记录时给予时标。采用 DS1302 作为实时时钟芯片,利用单片机进行控制,外加掉电存储电路、显示电路、键盘电路,

4、即构成一个基本的电子万年历系统。由于在系统设计时,需要考虑以下几点因素:功耗低、精确度高、软件程较简单,芯片的体积小、芯片成本低等,而 DS1302 芯片有上面所述的诸多优点,所以本设计采用 DS1302 作为实时时钟芯片。2.1.2 显示器的选择此次设计需要显示汉字,如果选用数码管来显示汉字,则需要数十个,这样就会增加成本,而且接线不方便,不符合设计的初衷。LCD1602 具有微功耗、体积小、显示内容丰富、超薄轻巧,对比度可调、内含复位电路、提供各种控制命令等特点,完全满足本次设计的需要,因此,选择 LCD1602 作为显示器进行使用。物理与电子工程学院42.2 总体方案设计DS1302 具

5、有自身计时的功能,但是自身却没法显示并且调整时间,这时就不可避免地要使用到单片机 STC89C52,它可以作为一个桥梁,架接液晶显示器和 DS1302,并且利用单片机的输入/输出端口可以实现调整时间的功能。利用单片机 STC89C52 实现数据的显示和调整是整个系统的关键所在,在整个系统中,使用单片机的 P0 口作为液晶显示屏的显示端口,液晶显示屏所显示的数据全都通过 P0 口发送 ,P1 口用作调整按键的电路连接接口,这样单片机可以较好地完成时间的显示与调整。DS1302 电子时钟总体设计方案图如图 1 所示。图 1 DS1302 电子时钟总体设计方案图3 硬件电路设计3.1 单片机最小系统

6、单片机是电子时钟系统的主控制器。其最小系统主要由 STC89C52 单片机、晶振电路及单片机复位电路组成。晶振系统由两个 30pf 的陶瓷电容和一个 12MHz 的晶振组成,分别接在XTAL1、XTAL2 上,在单片机内部,这两个端口是一个反相放大器的输入端,这个放大器构成了片内振荡器,它决定了单片机的时钟周期。单片机有一个复位引脚 RST,高电平有效,只要 RST 保持高电平,单片机单 片 机 按 键 调 整电 路1602显 示 器 电 路1302电 子时 钟 P0端 口P1端 口物理与电子工程学院5将循环复位,复位期间,ALE、PSEN 输出高电平。RST 从高电平变为低电平之后,PC 指

7、针变为 0000H,使单片机从程序存储器地址为 0000H 的单元开始执行。当单片机执行程序出错或进入死循环时,也可按复位按钮重新启动。单片机最小系统如图 1 所示。 图 2 单片机最小系统电路3.2 1302 时钟电路时钟电路是时间计时的基本电路,时钟电路一般由 DS1302 时钟芯片和32.768MHz 晶振构成。理论上在晶振两端加两个 6pf 的电容,可以使晶振频率更为精确。DS1302 时钟电路图如图 2 所示。物理与电子工程学院6图 3 1302 时钟电路3.3 按键调时电路 按键调时电路主要的作用是校正时间,它包含有五个动作:进入(S3),退出(S6),加一(S4),减一(S5),

8、切换(S2)。要进行校正调时,要首先按启动按钮,启动按键有效之后,其他按键才能被解锁,如果启动按键判断无效,其余按键将被锁定,按退出按键就会退出校正调时状态。按键调时电路如图 3 所示。物理与电子工程学院7图 4 按键校正调时电路4 系统软件设计由于单片机是可编程的控制器, 故需要采用 C 语言对单片机进行程序的编写。主程序主要由 DS1302 程序、按键调整程序及 1602 液晶屏程序组成。4.1 主程序流程图 图 5 主程序流程图开始时,先对变量进行初始化,然后对 DS1302 进行处理,使其不具备写保物理与电子工程学院8护,这样才能确保单片机与 DS1302 进行正常的数据交换。给 DS

9、1302 连续的脉冲,接着向 1302 内部写入地址,直至写完。最后由单片机与 DS1302 通信,读取 DS1302 内部的地址,直至读取完毕,然后单片机把所读到的数据传送给1602,使数据显示在液晶屏上,这样,整个主程序流程图就完成了。主程序流程图如图 4 所示。4.2 子程序流程图4.2.1 DS1302 子程序流程图 DS1302 子程序流程图如图 5 所示。是否 图 6 DS1302 子程序流程图图 5 展示了 DS1302 的一个工作流程:首先是对 DS1302 进行初始化,使其不受写保护,方便数据写入,在连续的脉冲作用下,不断有数据写入 1302 的地址中,直至需要调时,这时改变

10、后的数据就会储存在新的地址上,读取时便可把新的数据传输在 1602 上,即完成了调时。 开始DS1302 初始化写入数据计数是 否 校正 调 时读出数据物理与电子工程学院94.2.2 1602 子程序流程图 否是图 7 1602 子程序流程图1602 显示器的工作流程图展示了 1602 的工作流程:启动时,首先对 1602进行初始化,然后检测有没有数据写入,当有数据写入时,1602 便读出数据并显示,没有数据写入时,1602 就一直处于等待中,直至有数据写入。1602 子程序流程图如图 6 所示。4.3 按键校正调时程序if(num=1)enable(0xc0+12);if(jia=0)del

11、ay(5);if(jia=0) while(!jia);sec=bcdtodec(uc_R1302(0x81)开始1602 初始化写入数据是 否 有写 入读出数据显示物理与电子工程学院10sec+;if(sec59)sec=0;L1602_char(2, 12, sec/10+48); L1602_char(2, 13, sec%10 + 48);v_W1302(0x80,dectobcd(sec)|0x80); if(jian=0) delay(5);if(jian=0)while(!jian);sec=bcdtodec(uc_R1302(0x81);sec-;if(sec=-1)sec=5

12、9;L1602_char(2, 12, sec/10+48);L1602_char(2, 13, sec%10 + 48);v_W1302(0x80,dectobcd(sec)|0x80);这是整个调时系统的一部分,它实现了时间的调整这一功能。全部程序详见附录。5 实物调试5.1 实物性能分析用 KEIL 编写程序软件编写程序、经过 Proteus 仿真软件仿真调试之后,确认了此系统可正常运行,在这样的前提下,我们利用一个单片机最小系统、一块用万用板焊接的模块和一个 1602 液晶完成了第一次实物仿真。本次实物如图7 所示。虽然本次调试测试没有达到要求,但是为后续工作打下了不可替代的基础。物理

13、与电子工程学院11图 8 万用板实物我们在第一次的尝试之后,发现无较大问题存在,于是就尝试着做出了我们此次课程设计的第一块 PCB 板,在仔细检查了整个电路无误之后我们就开始了我们的尝试,第一块板的造型是深思熟虑之后才最终定稿的。可能是由于第一次做双面板,技术不熟练,所以打板的时候就难免出现这样那样的问题,我们的第一块板同样出现了问题:液晶显示屏上只显示三个小亮点,不显示数字,实物如图 8 所示。物理与电子工程学院12图 9 第一块 PCB 板经过这一次的挫折,我们发现了本来不会出错的地方,无缘无故的出现了好多问题,导致了第一次试验没能成功。但是我们并不气馁,经过细致的检查,我们找到了大部分的

14、问题,最终我们的第二块板也很快做出来了,可是问题又出现了:时钟不走。第二块 PCB 板如图 9 所示。图 10 第二块 PCB 板物理与电子工程学院13因为时间数据一直不走,我们查阅了好多资料,又认真的把相关知识复习了一遍,最终问题解决了:原来是 DS1302 的两个数据传输线的电流太小,于是我们就在 P3.5、P1.6 的端口加上了上拉电阻,加大了电流,最终我们完成了设计。完成的实物如图 10 所示。图 11 最终设计5.2 总结首先,这次设计让我们更加了解了单片机及其运用,让我们受益匪浅,在这次设计中,我们想挑战一下自己,于是就选用了 1602 液晶屏来显示数字时钟,我们知道这对我们来说还

15、是有难度的,但是我相信我们一定会克服这个困难的,因为我坚信只有给自己真正的压力,自己才会获得真正的知识!在整个方案的探究与决策中,我们自己动手分析设计程序加深了对自己未知知识的理解和对指令的灵活运用。通过对程序的编译和电路的仿真,让我们更加熟悉了仿真软件的应用,最重要的是使我们能够更直观的看到程序运行的结果,这给了我们极大地鼓励与信心!此外,通过这次单片机课程设计,不仅对我们的动手能力有进一步的提高,物理与电子工程学院14而且还对我们的性格成长上也产生了很大的影响:设计操作量大,对我们的习惯和技能要求高,对我们的素质发展有着相当重要的作用,要在操作前应该认真学习理论知识,以便更好地指导实践,之

16、后应该继续思考,把理论与实践更好地结合起来,凡事不能操之过急,静下心来,认真的思考,谨慎的处理好动手与动脑的有效结合。这种改变无疑让我们在以后的生活中能获取更多的益处与经验。本次课程设计给我印象最深刻的是它给我们启发:理论和实践是两个不同的过程,理论是不能等于实践,反之也不行,两者是有区别的,有时理论是对的,实践不一定能体现出来。实践出来了,不一定能和理论稳合呼应。比如,我们在仿真的时候,我们电路和程序没有问题,完全正确,实验结果也与我们预期的一样,这是我们产生了“此次设计如此简单,只要把电路图连对就行了”错误想法,结果做出来的实物并没有按照我们的预期展现给我们:又有问题了!经过我们认真仔细的

17、检查,又查阅了众多的资料,把以前的资料又习一遍,最终问题找到了。在找到问题的那一瞬间,我真切的感受到了理论与实际的切切实实的联系,所有的东西并不是理论是正确的,实际也是正确的:我们按照仿真的电路图连结起来的电路在真正做出来时,DS1302 的两个数据传输端口因为电流过小而不能工作,我们在 P3.5 和 1.6 端口的后面接上了上拉电阻,这样我们的作品才真正的完成了。“读万卷书,不如行万里路” ,现在我终于明白这句从古至今都在流传的话了,一句名言存在自有它存在的道理。我们会谨记此次设计带给我们的启发,我们一定会认真的去思,仔细的去体会此次设计的真正意义参考文献1谭浩强主编. C 程序设计题解与上

18、机指导(第 3 版)M. 北京,清华大学出版社,2005.16-24 2谢维成 杨家国 董秀成,单片机原理与应用及 C51 程序设计(第 2 版)M,北京,清华大学出版社,2009.7.25-36 物理与电子工程学院15附录 1(1)系统总电路图系统总电路图,如图 11 所示。图 11 系统总电路图(2) 系统仿真图系统仿真图,如图 12 所示。图 12 系统仿真图 物理与电子工程学院16(3) PCB 板 设计使用的 PCB 如图 13、14 所示图 13 PCB 板正面物理与电子工程学院17图 14 PCB 板反面附录 2程序清单:#include#include#define uchar

19、 unsigned char#define uint unsigned intsbit ACC0 = ACC0;sbit ACC7 = ACC7;sbit t=P10; sbit jia=P11; sbit jian=P12;sbit m=P13; sbit T_CLK = P16; sbit T_IO = P35; sbit T_RST = P17; sbit E=P27; /1602 sbit RW=P26; sbit RS=P25; void v_W1302(uchar ucAddr, uchar ucDa); uchar uc_R1302(uchar); uchar dectobcd(

20、uchar bcd);uchar bcdtodec(uchar);void delay(uchar x)uchar i;while(x-)for(i=0;i59)sec=0;L1602_char(2, 12, sec/10/*%10*/+48); L1602_char(2, 13, sec%10 + 48);v_W1302(0x80,dectobcd(sec)|0x80); if(jian=0) delay(5);if(jian=0)while(!jian);sec=bcdtodec(uc_R1302(0x81);sec-;if(sec=-1)sec=59;L1602_char(2, 12,

21、sec/10/*%10*/+48);L1602_char(2, 13, sec%10 + 48);v_W1302(0x80,dectobcd(sec)|0x80);物理与电子工程学院20if(num=2) enable(0xc0+9);if(jia=0)delay(5);if(jia=0)min = bcdtodec(uc_R1302(0x83);min+;while(!jia);if(min59)min=0;L1602_char(2, 9, min / 10 /*% 10 */+ 48);L1602_char(2, 10, min % 10 + 48);v_W1302(0x82,dectob

22、cd(min);if(jian=0)delay(5);if(jian=0)min = bcdtodec(uc_R1302(0x83);min-;while(!jian);if(min=-1)min=59;L1602_char(2, 9, min / 10/*% 10 */+ 48);L1602_char(2, 10, min % 10 + 48);v_W1302(0x82,dectobcd(min);if(num=3) enable(0xc0+6);if(jia=0)delay(5);if(jia=0)hour = bcdtodec(uc_R1302(0x85);hour+;while(!ji

23、a);if(hour23)hour=0;L1602_char(2, 6, hour / 10 /*% 10*/ + 48);物理与电子工程学院21L1602_char(2, 7, hour % 10 + 48);v_W1302(0x84,dectobcd(hour);if(jian=0)delay(5);if(jian=0)while(!jian);hour = bcdtodec(uc_R1302(0x85);hour-;if(hour=-1)hour=23;L1602_char(2, 6, hour / 10/* % 10*/+ 48);L1602_char(2, 7, hour % 10

24、+ 48);v_W1302(0x84,dectobcd(hour);if(num=0) enable(0x0c); v_W1302(0x80,uc_R1302(0x81) void v_RTInputByte(uchar ucDa)uchar i;ACC = ucDa;T_RST = 1;for(i=8; i0; i-) T_IO = ACC0; T_CLK = 1; T_CLK = 0; ACC = ACC 1;uchar uc_RTOutputByte(void)uchar i;T_RST = 1;物理与电子工程学院22for(i=8; i0; i-) ACC = ACC 1;ACC7 =

25、 T_IO;T_CLK = 1;T_CLK = 0;return(ACC);void v_W1302(uchar ucAddr, uchar ucDa)T_RST = 0;T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr); _nop_();_nop_();v_RTInputByte(ucDa); T_CLK = 1;T_RST = 0;uchar uc_R1302(uchar ucAddr)uchar ucDa;T_RST = 0; T_CLK = 0;T_RST = 1;v_RTInputByte(ucAddr); _nop_();_nop_();ucDa

26、= uc_RTOutputByte(); T_CLK = 1;T_RST = 0;return(ucDa);uchar bcdtodec(uchar bcd)uchar data1;物理与电子工程学院23data1=(bcdreturn data1;uchar dectobcd(uchar dec)uchar dat;dat=(dec/10)4|(dec%10);return dat;void Write_DS1302Init(void)v_W1302(0x8e,0);v_W1302(0x80,0x00);v_W1302(0x8e,0);v_W1302(0x82,0x00); v_W1302(

27、0x8e,0);v_W1302(0x84,0x00); void Run_DS1302(void)uchar sec, min, hour;v_W1302(0x8f, 0);sec = bcdtodec(uc_R1302(0x81);v_W1302(0x8f, 0); min = bcdtodec(uc_R1302(0x83); v_W1302(0x8f, 0);hour = bcdtodec(uc_R1302(0x85); L1602_char(2, 6, hour / 10 /*% 10 */+ 48); L1602_char(2, 7, hour % 10 + 48);L1602_cha

28、r(2, 8, :);L1602_char(2, 9, min / 10/* % 10 */+ 48);L1602_char(2, 10, min % 10 + 48);L1602_char(2, 11, :);L1602_char(2, 12, sec / 10 /*% 10*/ + 48);L1602_char(2, 13, sec % 10 + 48);void int0() interrupt 0timechange();物理与电子工程学院24void Main(void)L1602_init();EA=1;EX0=1;IT0=1;while(1)if(t=0) Run_DS1302();

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报