利用单片机及DS1302制作电子时钟

上传人:桔**** 文档编号:431728031 上传时间:2022-10-11 格式:DOC 页数:20 大小:410.50KB
返回 下载 相关 举报
利用单片机及DS1302制作电子时钟_第1页
第1页 / 共20页
利用单片机及DS1302制作电子时钟_第2页
第2页 / 共20页
利用单片机及DS1302制作电子时钟_第3页
第3页 / 共20页
利用单片机及DS1302制作电子时钟_第4页
第4页 / 共20页
利用单片机及DS1302制作电子时钟_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《利用单片机及DS1302制作电子时钟》由会员分享,可在线阅读,更多相关《利用单片机及DS1302制作电子时钟(20页珍藏版)》请在金锄头文库上搜索。

1、单片机原理及应用基于Proteus和Keil C实 习 报 告课程名:利用单片机及DS1302制作电子时钟指导教师: 专业: 年级: 组员: 设计时间: XXX大学 XXX学院摘 要为了进一步熟悉51单片机的编程以及学习电子时钟的相关设计方法,在老师的指导下我们进行了本次电子时钟的设计。我们在实习期间基于51单片机AT89C51和时钟芯片DS1302设计并实现了电子时钟显示。在PCB板制作完成并且调试成功之际,为了进一步提高自己的动手能力和编程能力,对这次电子时钟的设计和制作的过程中遇到的问题及设计思路做一次总结。本电子时钟是一种利用时钟芯片DS1302及51单片机来显示时、分、秒和年、月的装

2、置。默认显示为时间,由四个按键分别控制定时设置、时间调整、分钟调整、日期显示;设计电路工作电源为5V;由4位LED数码管显示时间,格式为时时分分,中间点每隔1S亮暗;有备用电池,掉电后再上电能正常显示时间。电子时钟大体可以分为三大模块,数码管的显示模块、DS1302时钟芯片与单片机的时钟模块和按键与单片机的模块。单片机在5V电压下,各个模块正常工作。单片机从DS1302芯片中读出一组时间日期数据,同时单片机通过按键设置当前要求显示的信息给单片机。单片机接收到各个数据时,把各个数据显示出来。目录一、总体设计41.1 设计目的41.2 硬件功能描述41.3 设计方案选择41.4 设计任务及要求4二

3、、电子时钟软件和硬件设计52.1 硬件电路设计52.1.1 工作原理52.1.2 单元模块电路52.1.3 元器件清单62.2 软件设计72.2.1 程序设计流程7三、电路调试7四、心得体会8五、参考文献10附录:12附录:程序清单13附录:21一、总体设计此电子时钟利用AT89C51单片机和时钟芯片DS1302 设计完成。1.1 设计目的1、通过对电子时钟的设计,进一步熟练掌握单片机编程方法及思想。2、通过对电子时钟的设计,掌握实时时钟芯片DS1302的使用方法。3、通过对电子时钟的设计,进一步掌握独立式键盘的编程控制并认识独立式键盘在实际中的运用。4、通过对电子时钟的设计,增强对单片机的兴

4、趣及动手能力。并在此过程中学会对程序的逐步调试。 1.2 硬件功能描述数字钟能够完成24 小时制计时,计时初始化值为00:00:00,用户可以通过按键调整时钟的初值实现校时功能,并且可以通过按键设定一个24 小时以内任意时刻的闹铃,用户可以手动选择闹铃的开或者关两种状态。1.3 设计方案选择计时方案:方案1:采用实时时钟芯片现在市场上有许多实时时钟集成电路,如:DS1287、DS2887、DS1302等。这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需要程序干预。因此,在工业实时测控系统中多采用这这一类专用芯片来实现实时时钟功能。方案2:是

5、用单片机内的可编程定时器。利用单片机内部的定时计数器进行中断定时,配合软件延时实现时分秒的计时。该方案节省硬件成本,但程序设计较复杂。显示方案:一个良好的显示模块对一个系统非常重要,所有操作结果和计时结果,都要通过显示模块来显示出来。同时显示模块提供了良好的人机交互平台。常用的显示模式有LED 7段数码管显示、点阵显示和液晶显示。液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。但由于液晶其成本偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片。鉴于LED 7段数码管成本低,也比较容易实现的

6、特点,最终确定使用共阳极数码管来显示。1.4 设计任务及要求任务:设计一个可调时及日期显示的电子时钟要求:1、用DS1302来实现对时间的计算2、用7段LED来显示时间3、加独立式键盘来进行调时二、电子时钟软件和硬件设计2.1 硬件电路设计2.1.1 工作原理此电子时钟可显示的时间范围为:2000年1月1日0点至2100年12月31日23时59分。此时钟在正常计时模式下具有自动调整每月的天数的变化,并用内接电池对时间保持。时间为24小时至。接通电源对时间进行调整,按定时设置键确定被修改位的值。用时钟芯片记忆当前时间并保持,待下次接通电源无须调整能正确显示当前时间。定时设置:菜单按键,松开按键时

7、有效此按键实现闹铃功能,设定一个时间,此时四位数码管第四位的小数点亮起,表示有闹铃设置;当闹铃是可按此键结束闹铃。时、分调整: 加一键,松开按键有效当定时设置键选中要修改的位时,如分(分闪烁时),按此键可以使分的值从当前值开始加一,加至60时变为00(59过后即显示00,不显示60);而时则在加至24时变为00(23过后即显示0,不显示24);日在加至32时变为00(即31过后即显示0,不显示32);月在加至13时变为00(即12过后即显示0,不显示13);年在至2100时变为2000(即2099过后即显示2000,不显示2100)日期显示: 年、月显示键,松开按键有效按下此键松开后,显示为日

8、期,5秒后自动返回时间显示。2.1.2 单元模块电路1 独立按键模块系统有四个独立按键,分别接至单片机P1.4、P1.5、P1.6、P1.7口。2 显示模块 本系统显示模块电路由四个PNP三极管和一个四位一体7段LED数码管组成。PNP三极管用来驱动数码管。3 复位电路模块 复位电路主要的功能是使整个系统初始化,在每次上电时系统自动初始化。 使CPU及其他功能部件处于一个确定的初始状态,并从这个状态开始工作,单片机应用程序必须以此作为设计的前提。4 时钟芯片模块DS1302时钟芯片是本系统实现高精度计时的关键。利用DS1302 时钟芯片独立于单片机来计时,在提高计时进度的同时也提高了整个系统的

9、抗干扰能力。DS1302通过SCLK、I/O、RES端口和单片机AT89C51 进行通信。SCLK接至单片机P1.1口,在读写操作时给DS1302提供相应的时钟脉冲;I/O接至P1.2用来传送所有的数据;RES接至单片机P1.3上用来控制单片机与时钟芯片间的数据传送的开始与结束。DS1302 的工作原理及使用方法见附录。5 主控模块主控模块的核心组成部分是单片机AT89C51, 承担着所有操作任务的调控与分派工作。6 闹钟模块闹铃模块由蜂鸣器和蜂鸣器的驱动组成。在有闹铃发生的时候,蜂鸣器的驱动电路驱动蜂鸣器发声,产生闹铃的效果。2.1.3 元器件清单元件名称规格型号数量(个)单片机AT89S5

10、11时钟芯片DS130214位一体的共阳LED显示器7SEG-MPX4-CA-BLUE1按键BUTTON3电阻2K4排阻4.7K1三极管PNP4电阻10K102.2 软件设计2.2.1 程序设计流程 开始 主程序 定时器T1初始化Ds1302读取数值与设定数值是否相同Y掉电后重启 N初始化ds1302Flag=1&flag_time=1?显示闹钟值Set_flag=1 NY显示调节时的值显示走时 YN N响闹钟判断闹钟是否发生 Y 返回 N 三、电路调试各程序模块具有一定的独立性,因此可以先调试模块,在模块功能都能实现的前提下,再调试总程序,这样能快捷地检查判断硬件或软件上的问题。调试结果及解

11、决办法如下:1测试DS读写模块时,从LED显示能正确写入与读取当前时间,但DS1302的工作情况不太理想,主要表现在实时时间稍微偏快。DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768HZ,该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲,由于DS1302 在芯片本身已经集成了5pF的电容。所以,为了获得稳定的可靠的时钟,必须选用具有5pF 负载电容的晶振。然而,许多人在选用晶振时仅仅注意了晶振的额定频率值,而忽视了晶振的负载电容大小,甚至连许多经销商也不能提供所售晶振的负载电容,所以即使在使用中选用了符合32768

12、Hz的晶振,但如果该晶振的负载电容与DS1302 提供的5pF不一致时,就会影响晶振的起振或导致振荡频率的偏移。2测试显示模块时,数码显示管全亮显示“8.8.8.8.”而不是预设”的初值。利用Proteus软件仿真,发现仿真显示正常,再检查硬件,发现段码位选线与P0口接线错误。按原理图重新焊接后能正常显示。3测试蜂鸣模块时,没有时间显示一直保持蜂鸣,不能返回主程序。重新检查程序再次赋值给DS1302和闹钟时实物正常工作,证明现有程序语法和逻辑上没有错误。从赋值过的数字中找规律,发现当DS初值的“分”个位为9而闹钟的“分”为0时,蜂鸣出现错误。查阅DS的显示有关资料,由于DS的数据是BCD码形式

13、读取,因此“X9”的数据加1后为“*0”;但程序所用为十六进制,“X9”加1后为“*A”,所以当DS刚到达闹钟时间准备蜂鸣时,程序中用INC指令对“分”加1后只达到“*A”,与DS一分钟后读取到的“*0”一直不相等,程序无法向下执行,也就是无法同步显示当前时间以及关闭蜂鸣。解决办法:进入蜂鸣状态时,先对比是否是个位为9的数据,是则按照BCD码形式直接赋值为“*0”到暂存区,再加1;否则直接用INC指令加1。不断读取DS“分”的数据与暂存区数据比较,相等则表示满一分钟,关闭蜂鸣。修改程序后该模块运行正常。4测试调整模块,进入中断时,按键后有时出现显示错乱,按键失灵,出现连续加减的情况。有了蜂鸣模块的前例,增加了数据个位为9时的处理程序;分析出现连续加减可能是因为消抖延时不够,造成程序误判断为按键连击,因此增大延时时间。修改程序后该模块正常运作。5综合总程序测试,各部分功能运作正常,但是实际硬件与软件结合后没有达到达到任务要求,此次设计失败。四、心得体会 五、参考文献【1】51单片机应用从零开始 杨欣 编著 清华大学出版社 2008【2】单片机原理及接口技术(第三版) 李朝青 编著 北京航空航天大学出版社 2008【3】51单片机C语言教程 郭天祥 编著 电子工业出版社 2009附录:DS1302 时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号