基于单片机的多功能电子万年历的设计

上传人:仙*** 文档编号:34102404 上传时间:2021-10-20 格式:DOC 页数:59 大小:515.93KB
收藏 版权申诉 举报 下载
基于单片机的多功能电子万年历的设计_第1页
第1页 / 共59页
基于单片机的多功能电子万年历的设计_第2页
第2页 / 共59页
基于单片机的多功能电子万年历的设计_第3页
第3页 / 共59页
资源描述:

《基于单片机的多功能电子万年历的设计》由会员分享,可在线阅读,更多相关《基于单片机的多功能电子万年历的设计(59页珍藏版)》请在装配图网上搜索。

1、基于单片机的多功能电子万年历的设计摘 要随着科技的快速发展,自从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。本文主要介绍了基于单片机的智能电子万年历的研制,该万年历能够实时显示公历年、月、日、时、分、秒,以及对应的农历日期、24节气、天干地支、闹铃功能,同时还能够实时测取环境温度。本系统的硬件部分主要由AVR单片机、时钟芯片、温度传感器等部件组成,文中给出了详细的硬件设计实现及相关电路图;软件部分主要包含公历转农历的算法设计模块、显示模块、时间的读取、温度的检测模块,按键的扫描输入模块等,文中给出了系统的软件程序流程图及各功能模块的软件程序清单,最后介绍了整体系统的设计实现、仿真及调

2、试过程,给出了下一步的改进方案等。关键词:单片机;液晶技术;万年历;时钟芯片Design of Multifunctional digital Perpetual Calendar Based on MCUAbstractWith the development of technology,Since the concept of the sun, Baizhong, andnow the electronic bell,human beings continue to study and constant innovation record。This paper-based Microcon

3、troller Development of Intelligent electronic calendar, The calendar can display real-time in the calendar year, month, day, hours, minutes and seconds,a nd the correspond ing date of the Lunar New Year, 24 Solar Terms,at the same time also to real-time measurement from the ambient temperature,In ad

4、dition to the user through the keyboard input years of history,for the correspond ing period of the Lunar.The system hardware from some of the major AVR microcontroller, a number of digital control, decoder, the clock chip,temperature sensors and other components,the paper gives a detailed design an

5、d implementation of hardware and related circuit;Software contains some of the major Lunar calendar to the algorithm design module,dynamic digital display modules,time to read,temperature detection module,Press enter the scanning module.In this paper, the system software modules and flow chart of th

6、e list of software programs,Finally, the realization of the overall system design, simulation and debugging process, the next step is the improvement programmes.Keywords:MCU;crystal technology;Calendar;Clock chip目录引言1第1章 绪论2 1.1 课题的背景与意义2 1.2 数字万年历的现状与发展2 1.3 论文的主要工作及章节安排3 1.4 本章小结3第2章 方案论证比较 4 2.1

7、多功能数字万年历系统概述 42.2计时方案42.3温度检测方案52.4显示方案5 2.5本章小结5第3章 系统硬件设计63.1 主控制器ATmega16 单片机介绍63.2 时钟电路DS130263.3 温度检测DS18B2073.4 动态显示83.5 键盘接口83.6 语音闹铃模块83.7 电源设计9 3.8本章小结11第4章 系统软件设计124.1 公历计算显示程序设计134.1.1 DS1302 内部寄存器134.1.2 时间读取程序设计154.2 农历转换程序设计164.2.1 公历转农历算法研究164.2.2 干支纪年简介184.2.3 公历转农历程序184.3 温度测量程序设计20

8、4.3.1 DS18B20 的测温原理204.3.2 温度程序214.4 二十四节气算法研究234.5系统仿真24 4.6本章小结25结论与展望26致谢27参考文献28附录 A 电子万年历原理图29附录 B 外文文献与译文30英文原文:30中文译文:33附录 C 参考文献题录及摘要35附录D 电子万年历源程序37插图清单图2-1 数字万年历系统框图4图3-1 DS1302与ATmega16连接图7图3-2 DS18B20与AtMEGA16连接图8图3-3 报时电路9图3-4 稳压电源原理图10图3-5 电源电路10图4-1 系统程序流程图13图4-2 公历程序流程图14图4-3 DS18B20

9、测温原理21表格清单表3-1 LCD12864显示内容8表4-1 DS1302的寄存器及其控制字14表4-2 RS位配置15- 51 -引言人类的日常生活离不开时间,任何具有周期性变化的自然现象都可以用来测量时 间。远古时代的中国人通过观测日影的位置以确定当时的时辰或刻数,发明了古老的计 时工具日晷。日晷虽然只由一根晷针和刻有刻线的晷面组成,但是它确利用了复杂的天 体运动规律,这反映了我国古代劳动人民的智慧。随着科技的进步以及中西文化的交融 , 希腊人根据水流从一个容器滴漏到另一个容器的数量来计量时间从而发明了滴漏,在当 时得到了普遍的应用。到十四世纪,简易的机械钟开始在欧洲流行,1656 年

10、出现了有摆 的座钟。它是以伽利略发现的摆动具有规则性这个原理为基础而发明的。自此以后人类 掌握了比较精确的计时工具,并不断改进计时方法。现在人们日常生活中广泛使用的是 机械表、电子表、电子钟等。对于日以上的时间系统计量与安排则属于历法范畴,历法在我们几千年的华夏文明 中占有重要的地位,中华子孙繁衍生息,最早就是依靠耕种为主的农业,那时人们是日 出而作、日落而息。后来经过长期的经验积累,掌握了太阳的变化,发现年、月、日都 直接与天体运行周期相关。因此,人们就把四季更迭的周期定为年,把月亮盈亏变化的 周期定为月。一回归年 365.2422 日,一朔望月为 29.5306 日,它们既不是月的整数倍,

11、 也不是日的整数倍,使用起来很不方便。因此在人为规定历法中的年和月都是整数日, 这种整数日的年和月,称为历年和历月。这就是早期的历法,根据春夏秋冬的季节变化 及天干地支时间为依据,来确定什么时候应该耕种,什么时间该收获,这些历法一直延 续了几千年,这是在世界上也是首屈一指的。现在人们日常生活中广泛使用的有日历和 挂历等。以上介绍的记录时间的钟表和记录年、月、日的挂历都只具有某一方面的功能,比 如钟表只能记录时间,即便是比较先进的钟表顶多也只能多一个记录日期的功能;挂历 也只能记录日期而不能记录时间。随着科技的发展,电子技术和计算机应用领域不断扩 大,特别是单片机的出现,是近代计算机技术发展史上

12、的一个重要里程碑,因为单片机 的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机 单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表 、 汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端 及通讯产品中,成为现代电子系统中最重要的智能化工具,于是基于单片机的醒目而时 尚的电子版万年历顺应而生。基于单片机的电子万年历结合了时钟和日历的功能,将其二者融为一体,在显示时间的同时还能显示日期和年、月,它主要是通过单片机来读取时钟芯片的时间、日期,然后送给显示设备显示出来。本文设计的数字万年历与普通万年历相比具有一下特点:1.

13、除了能显示通用的公历外还能显示我国的农历,除了能显示农历的日、月外还能显示农历的年号、节气。它是根据单片机读取到的时钟芯片的日期计算出农历的日期、年号和节气,然后通过单片机的I/O口直接送给液晶显示屏,通过软件程序来控制显示内容; 2.能查询1921年2月8日至2100年2月8日间任意一天的公历和农历的对应关系;3.能实时准确显示它所处环境的温度。本设计所采用的测温元件是美国DALLAS半导体公司生产的一种智能温度传感器DS18B20,测温范围为55125,最高分辨率达到0.0625;4.能实现多点定时并且语音报时。第1章 绪论1.1 课题的背景与意义随着电子技术的迅速发展,特别是大规模集成电

14、路出现,给人类生活带来了根本性的改变,尤其是单片机技术的应用产品已经走进了千家万户。近年来,我国科技的不断发展,我国经济发展的支柱产业电子产业获得长足发展,各种电子产品琳琅满目,随处可见,随着电子产品的更新速度的加快,各种功能强大,款式新颖的电子产品不断问世。数字万年历便是这一发展趋势中的代表,数字万年历则顺应了人们对时间方面的要求。它的出现给人们的生活带来的诸多方便,在时间极显宝贵的现代生活中,其作用更是不言而喻。它在学校、车站、码头、剧院、医院、办公室等公共场所的应用非常广泛。但传统的数字万年历除显示时间之外,功能较为单一,逐渐失去了市场。顺应技术发展和人们生产、生活需求,各种功能的新式万

15、年历不断涌现,且功能不断更新。数字万年历作为电子类的小产品以其方便、实用等优势成为市场上的宠儿,同时也成为单片机设计培训中一个很实用的课题。因为这个课题有很好的的开发性和可发挥性,因此对设计者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且要求设计的数字万年历在操作上力求简洁,功能上尽量齐全,显示界面也要出色。所以数字万年历无论从实用的角度和培养能力的角度都很有价值。1.2 数字万年历的现状与发展当前,数字万年历技术已经进入了优化人-家庭 -环境的整体关系的阶段,它向着超微型、超高效以及集成电路的微型化方向发展,并为数字万年历上的集中控制提供了基础。目前,市场上出售

16、的数字万年历品种很多,其中大部分是基于单片机技术设计的电子系统。它们一般由输入脉冲电路、单片机、晶振和复位电路、外部存储器电路和LED显示电路组成。当今,数字万年历主要还是用于计时、自动报时、定时、日期查询以及自动控制等方面。由于单片机技术以及数字集成电路技术的发展和采用了先进的石英技术,使得如今的数字万年历系统具有体积小、耗电省、计时准确、性能稳定、维护方便、走时准确、携带方便等优点,此外,现在市场上已有现成的数字万年历集成电路芯片出售,而且价格便宜、使用也很方便。日历的发展经历了数千年的历史。现代日历随着使用范围的不断扩大,功能日益增加,种类也越来越多。从70年代以来,随着单片机和超大规模

17、集成电路的发展,为数字万年历的飞速发展奠定了物质基础。近几年来,数字万年历的发展方向是朝着走时精度高、稳定性好、使用方便、耗电量小、走时延续时间长、体积小、功能多、制造成本低等方向发展。最新的数字万年历,它除了具有常见万年历功能外,而且还具有倒计时、多点定时、语音报时、实时温度测量等功能。在硬件方面它并没有太大的变化,主要是通过增加软件部分来实现倒计时、多点定时的功能。 不难想像,随着科学技术的飞速发展, 各种高新技术的出现并被广泛应用到生产、生活中,未来数字万年历产品也必将沿着体积小、耗电省、计时准确、性能稳定、维护方便、走时准确、性能稳定、携带方便等方向发展而其成本却越来越低。1.3 论文

18、的主要工作及章节安排论文主要围绕对数字万年历系统的设计为主线展开,主要包括复位电路设计、时钟电路设计、按键电路设计、实时控制电路设计、报时电路设计、数字万年历显示电路设计等硬件电路的设计以及为实现其各项功能而编写的软件程序设计等。论文具体章节的安排如下:第一章:阐述本课题的背景与意义,并对数字万年历系统的现状与发展展开了叙述,以及按章节具体介绍了论文所需要完成的工作。第二章:介绍了本套系统的组成,并讨论了本套数字万年历系统的几种方案设计以及主要电路的方案设计与比较,从而从理论上得出了本套系统最合理的方案设计。第三章:介绍了本套系统的各硬件模块设计,提出了几种基本硬件电路的设计。第四章:介绍了数

19、字万年历系统的软件设计以及如何读取DS1302时间以及公历与农历如何转换等。1.4 本章小结 本章首先讲述了本文的选题来源及研究意义,然后讲述了数字万年历系统在国内外的发展过程及当前现状,其中叙述了数字万年历系统的优点,最后根据论文需要研究的主要内容,对课题的来源与所要完成的工作做了进一步的交代。第2章 方案论证比较2.1 多功能数字万年历系统概述本设计是利用键盘模块进行输入控制,将控制指令传送到单片机,通过单片机的数据处理,配合复位电路以及时钟电路来驱动LCD显示和闹铃音乐,从而实现该数字万年历的各项功能。单片机是整个系统的核心,它既是协调整机工作的控制器,又是数据处理器,AVR公司的Meg

20、a系列能完成本系统所要求的所有功能,所以选用单片机ATmega16;时钟芯片采用DALLAS公司的DS1302涓流充电时钟芯片;按键电路拟采用四个按键,分别实现校时、定时功能,并且定时时间到可报时;显示电路采用12864点阵字符液晶显示器;语音系统是提示用户系统的实时状态或对系统进行操作,语音电路可提供整点报时、闹铃等功能,本系统选用简单的蜂鸣器来完成。系统整体设计框图如图 2-1 所示:图 2-1 系统总体框图2.2 计时方案时钟是本电子万年历最主要的部分,根据需要,可利用两种方案实现。方案一:本方案完全用软件实现走时,原理为:利用定时器与软件结合实现 1 秒定时中断,每产生一次中断,存储器

21、内相应的秒值加 1;若秒值达到 60,则将其清零,并 将相应的分字节值加 1;若分值达到 60,则清零分字节,并将时字节值加 1;若时值达 到 24,则将十字节清零。该方案具有硬件电路简单的特点,但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高,而且,由于是软件实现,当单片机不上电,程序不执行时,时钟 将不工作。方案二:采用 Dallas 公司的专用时钟芯片 DS1302。该芯片内部采用石英晶体振荡器,其芯片精度不大于 10ms/年,可直接读取时间、日期,使得软件编程相对简单。而 且 DS1302 可以在很小电流的后备电源(2.5V-5.5V,在2.5V 时耗电小于 300nA)

22、下继续计时,时钟在电网电压不足或突然掉电等突发情况下仍能正常工作。基于时钟芯片的上述优点,本电子万年历设计采用方案二完成时钟的功能。2.3 温度检测方案方案一:采用传统的方法,测温元件用热电偶或热电阻,但它们测出的一般都是电 压,再转换成对应的温度,需要比较多的外部硬件支持,电路复杂,软件调试复杂,制 作成本高。方案二:用一种智能传感器 DS18B20 作为检测元件,测温范围-55125,分辨 率最大可达 0.0625。DS18B20 可以直接读出被测温度值,而且采用 3 线制与单片机相 连,减少了外部硬件电路,具有低成本和易使用的特点。基于 DS18B20 的上述优点,本电子万年历的测温设计

23、采用方案二完成温度的检测。2.4 显示方案方案一:采用数字万年历显示。数字万年历亮度高、体积小、重量轻,但其显示信息简单、有限,在本题目中应用受到很大的限制。 方案二:采用液晶显示。液晶显示功耗低,轻便防震。采用液晶显示界面友好清晰,操作方便,显示信息丰富。能使成品具有美观与人性化等特点,故采用此方案。2.5 本章小结 章本章主要围绕电子万年历这一整套系统为主线展开,首先讲述了电子万年历的组成,然后介绍了计时方案、温度检测方案和显示方案的论证比较,选择最优方案。 第三章 系统硬件设计本系统以单片机为核心控制器,包含了时钟芯片的接口、键盘接口、温度检测接口以及液晶显示输出接口,因此在硬件设计中合

24、理分配单片机的输入输出端口尤为重要,通过综合比较市场上的元器件的价格以及分析单片机的I/O 口数量,本系统最终选择了AVR 单片机中的 MEGA16 型,设计的硬件电路图见附录2,其单片机的I/O的分配如下:11个I/O口用于液晶显示,4个I/O口用于按键输入,3个 I/O 口用于时钟芯片,1个 I/O口用于温度检测,1个I/O口用于声音输出,单片机的20个I/O口充分利用。下面从系统硬件的各个组成部分一一做介绍。3.1 主控制器 ATmega16 单片机介绍ATmega16带有16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字 节的EEPROM,1K字节的SRAM,

25、32个通用I/O口线,32个通用工作寄存器,用于边界扫描 的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C), 片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可 选差分输入级可编程增益(TQFP 封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU 停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继

26、续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态;ADC噪声抑制模式时终止CPU和除了异步定时器与ADC以外所有I/O模块的工作,以降低ADC转换时的开关噪声;Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力;扩展 Standby 模式下则允许振荡器和异步定时器继续工作。该芯片是以Atmel高密度非易失性存储器技术生产的。片内ISP Flash允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引 导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用 Flash存

27、储区 (Application Flash Memory)。在更新应用 Flash存储区时引导 Flash区(Boot Flash Memory)的程序继续运行,实现了RWW操作。通过将8位RISC CPU与系统内可编程的Flash集成在一个芯片内,ATmega16成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。3.2 时钟电路 DS1302本系统时钟芯片选择了DS1302芯片,该芯片是DALLAS 公司推出的涓流充电时钟 芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行 通信实。时钟/日历电路提供秒、分、时、日、日期、月、年的信息

28、,每月的天数和闰 年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24或12小时格式。DS1302与 单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:(1)RES(复位);(2)I/O( 数 据 线 );(3)SCLK(串行时钟)。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302由DS1202改进而来,有主电源、后备电源双电源引 脚:Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;Vcc2在 双电源系统中提供主电源。在这种运用方式中,Vcc1连接到后备电源,以便在没有主电 源的情况下能保存 时间信息以 及数据。 DS

29、1302由Vcc1或Vcc2中较大者供电。当 Vcc2(Vcc1+0.2V)时,Vcc2给DS1302供电;当 Vcc2Vcc1时,DS1302由Vcc1供电。DS1302 工作时功耗很低,保持数据和时钟信息时功率小于1mW。DS1302与ATmega16的接口电路图如图3-1所示:图 3-1DS1302 与 ATmega16 的接口电路图3.3 温度检测 DS18B20随着现代信息技术的飞速发展和传统工业改造的逐步实现,温度自动检测和显示系统在很多领域得到广泛应用,传统的温度检测元件如热敏电阻、AD590,虽然成本低,但因其后续处理电路复杂、可靠性相对较差、测量准确度低,因此逐步被新型温度传

30、感器所代替,本万年历采用了美国 DAL-LAS公司最新推出的 DS18B20数字式温度传感器 ,并由 DS18B20和ATmega16组成了室温测量系统,可根据实际需要任意设定温度值,并进行自动控制。DS18B20 是美国DALLAS 公司继DS18B20 之后推出的增强型单总线数字式温度传感 器,它在转换速度、转换时间、传输距离、分辨率等方面较DS18B20 有了很大的改进,给 用户带来了更方便、更令人满意的效果。18B20与ATmega16的接口电路如图3-2所示:图 3-2 18B20与 ATmega16 的接口电路图3.4 液晶显示液晶显示模块具有体积小、功耗低、显示内容丰富等特点,现

31、在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件,功能介绍:LCD12864-12(黄色背光)是一款具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略

32、低于相同点阵的图形液晶模块。拟显示内容如表3-1所示。 表3-1 lcd12864画面1显示内容20090601星期一己丑年五月初九芒种19:25:0829.1度3.5 键盘接口按键输入部分主要用于时间调整、定时设置、闹钟设置以及查询公历某日对应的农历日期,最终确定由四个按键来实现上叙功能,由于按键比较少,所以用普通按钮接在 I/O 口,启用 I/O 口的内部上拉电阻,用查询法完成读键功能。3.6 语音闹铃模块报时是本套数字万年历的一个重要功能,报时器可用蜂鸣器和扬声器来实现,本次设计采用蜂鸣器实现闹铃报时,蜂鸣器俗称喇叭,是一种一体化结构的电子讯响器,它是目前被广泛应用于计算机、打印机、复印

33、机、报警器、电话机等各种电子产品中的一种元器件。它可用于提示、报警、音乐等许多应用场合。蜂鸣器发声原理是接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,蜂鸣器与家用电器上面的喇叭在用法上也有相似的地方,通常工作电流比较大,因此需要一定的电流才能驱动它。由于单片机I/O引脚输出的电流较小,所以单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。本次设计采用了一个很简单的电路来实现蜂鸣器的连接,利用一个三极管来放大驱动蜂鸣器,电路连接如图3-3所示。在本设计电路中,设计者采用PNP管9012来做为控制蜂鸣器的开关,由图3-3可以看出当

34、PD6引脚为高电平时,PNP管截止,蜂鸣器不工作;当PD6引脚为低电平时,PNP管导通,蜂鸣器工作,其中R2为限流电阻。采用PNP管9012的作用是为了防止系统上电时峰鸣器发出声音,因为系统复位以后,I/O口输出的是高电平。用户可以通过程序控制PD6管脚的置低和置高来使蜂鸣器发出声音和关闭,同时,蜂鸣器的声音大小及音调可以通过调整PD6管脚的置高时间及输出的波形进行控制,这一点可以在调试程序的时候来实现。 图3-3 报时电路3.7 电源的设计电源部分的设计目的就是为各个硬件提供工作电源。单片机ATmega16芯片,显示电路等都采用5V电源供电。具体的方案是用W7805集成稳压电源提供+5V的电

35、压供给单片机。其原理是(以+5V为例介绍)用交流电220V通过变压器变压,变为交流的9V电压,再经过整流变为直流电后,再接一个W7805使其转换为所需的直流电作为外接电源。集成稳压电源又称三端集成稳压器,它是指将功率调整管、取样电阻、基准电压、误差放大、启动及保护电路等全部集成在一块芯片上,具有特定输出电压的稳压集成电路。三端是指电压输入端、电压输出端和公共接地端。这类稳压器的输出为固定电压。国内外厂家均将此系列稳压器命名为78系列,如7805、7812等。其中“78”后面的数字代表该稳压器输出的正电压数值,以伏特为单位。例如7805即表示稳压输出为5V,7812表示稳压输出为12V等。有时我

36、们会发现型号78前面和后面还有一个或几个英文字母,如W78、AN78、L78CV等。前面的字母称“前缀”,一般是各生产厂(公司)的代号;后面的字母称“后缀”用以表示输出电压容差和封装外壳的类型。稳压电源由电源变压器、整流电路、滤波电路和稳压电路四个部分组成,如图3-4所示图3-4 稳压电源原理图电源变压器的作用是将来自电网的220V交流电压uI变换为整流电路所需要的交流电压u1。在稳压电源中一般用四个二极管组成桥式整流电路,整流电路的作用是将交流电压u2变换成脉动的直流电压u3。由于输入电压u3发生波动、负载和温度发生变化时,滤波电路输出的直流电压u3会随着变化。因此,为了维持输出电压U0稳定

37、不变,还需加一级稳压电路。稳压电源是单片机系统的重要组成部分,它不仅为系统提供多路电压源,还直接影响到系统的技术指标和抗干扰性能。一个稳压电源输出电压和最大输出电流决定于所选三端稳压器。在本次设计中采用+5V电压所以选用H7805稳压器。它的主要特点如下:1.输出电流可达1A 2.输出电压有:5V 3.过热保护 4.短路保护 5.输出晶体管SOA保护光靠一个稳压器还不行,还需要有电容或电阻与其连接才能得到较稳定的+5V电压。220V电压必须经过整流才可接到稳压器的输入端,则整个电源电路可分整流、滤波、稳压三部分。电路图如图3-5所示。图3-5 电源电路整流部分为桥式整流电路,其桥式整流电路的工

38、作原理如下:E为正半周时,对D1、D3加正向电压,Dl,D3导通;对D2、D4加反向电压,D2、D4截止。电路中构成E、Dl、后接负载、D3通电回路,在后接负载上形成上正下负的半波整洗电压,E为负半周时,对D2、D4加正向电压,D2、D4导通;对D1、D3加反向电压,D1、D3截止。电路中构成E、D2、D4通电回路,同样在后接负载上形成上正下负的另外半波的整流电压。如此重复下去,结果在后接负载上便得到全波整流电压。从图2-6中还不难看出,桥式电路中每只二极管承受的反向电压等于变压器次级电压的最大值,比全波整流电路小一半。滤波部分为带极性的电容,如图3-5中电容E2即为滤波电容其值取2200uF

39、。稳压部分接三端稳压集成芯片H7805,能输出5V稳压电源,电容C0来抵消输入线较长时的电感效应,以防止电路产生自激振荡,其容量较小,一般小于1uF。用E3消除输出电压中的高频噪声,并有滤波的作用。另外,二极管D5起保护作用。3.8本章小结本章主要介绍的是硬件结构设计,以单片机为核心控制器,介绍了主控制器ATmega16 单片机、时钟电路 DS1302、温度检测 DS18B20、键盘接口硬件电路、显示电路、语音电路以及电源电路等的设计。第4章 系统软件设计本系统的软件部分主要要进行公历计算程序设计,公历转农历的算法的研究,温度 测量程序设计,按键的扫描输入等。程序开始运行后首先要进行初始化,把

40、单片机的各引脚的状态按程序里面的初始化命令进行初始化,初始化完成后运行温度测量程序,读取出温度传感器测量出来的温度,然后运行公历计算程序,得到公历的时间、日期信息 , 再运行按键扫描程序,检测有无按键按下,如果没有按键按下则直接调用公历转农历程 序,根据得到的公历日期信息计算出农历的日期和年号,如果有按键按下则更新按键修 改后的变量后送给农历计算程序,由农历计算程序根据修改后的变量计算出对应的农历 年份,计算完成后运行显示程序,显示程序将得到的温度数据、公历信息、农历信息送给对应的数码管让其显示。系统总体程序流程图如图所示:图4-1 系统整体流程图4.1 公历计算显示程序设计本系统使用的是时钟

41、芯片 DS1302,公历程序主要完成从 DS1302 各个寄存器中读出 年、周、月、日、时、分、秒等数据,再进行处理。在首次对 DS1302 进行操作前,必 须对它进行初始化,然后从 DS1302 中读出数据,再经过处理后,送给液晶屏显示。公历程序流程图如图 4-2 所示:图 4-2 公历计算程序流程图4.1.1 DS1302内部寄存器DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD 码形式。其日历、时间寄存器及其控制字见表4-1。表4-1 DS1302的日历、时钟寄存器及其控制字寄存器名命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H

42、00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/24010/APHRHR日期寄存器86H87H00-28、29、30、310010DATADATA月份寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYEAR注:本数据均来自DS1302操作说明书。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关

43、的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为COHFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、 FFH(读)。CH:时钟停止位寄存器2 的第7 位12/24 小时标志 CH=0 振荡器工作允许bit7=1,12 小时模式CH=1 振荡器停止bit7=0,24 小时模式WP:写保护位寄存器2 的第5 位:AM/PM定义 WP=0 寄存器数据能够写入AP=1 下午模式WP=1 寄存器数据不能写入AP=0 上午模式 TCS:涓流充电选择DS:二极管选

44、择位 TCS=1010 使能涓流充电DS=01 选择一个二极管 TCS=其它 禁止涓流充电DS=10 选择两个二极管 DS=00 或11, 即使TCS=1010, 充电功能也被禁止表4-2RS位配置表RS位电阻典型位00没有没有01R12K10R24K11R38K注:数据来源于DS1302操作说明书。4.1.2 时间读取程序设计本系统的时间读取主要来源于单片机对DS1302的操作,在硬件上DS1302与单片机的 连接需要三条线,即SCLK(7)、I/O(6)、RST(5),具体连接图见系统硬件设计部分图2-1, DS1302与ATmega16的连接图。在软件上的操作可分为以下几个步骤:(1)初

45、始化DS1302:#asm.equ ds1302_port=0x18 ;PORTB.equ ds1302_io=5.equ ds1302_sclk=4.equ ds1302_rst=6#endasm/定义 DS1302 所使用的 I/O 口void rtc_init(unsigned char tc_on,unsigned char diodes,unsigned char res)res&=3;if (tc_on) res|=0xa0;if (diodes=1) res|=4;else if (diodes=2) res|=8; else res=0; ds1302_write(0x8e,0

46、); ds1302_write(0x90,res); ds1302_write(0x8e,0x80);该函数的主要功能是设置是否使用涓流充电,复位 DS1302,发控制命令,允许写 DS1302。(2)读取时间和日期。DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位 MSB(D7)必须为逻辑 1,如果 D7=0,则禁止写 DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定 RAM 数据;D5D1 指定输入或输出的特定寄存器;最低位 LSB(D0)为逻辑 0,指定写操作(输入),D0=1,指定读操作(输出)。void rtc_get_time(

47、unsigned char *hour,unsigned char *min,unsigned char *sec)*hour=bcd2bin(ds1302_read(0x85);*min=bcd2bin(ds1302_read(0x83);*sec=bcd2bin(ds1302_read(0x81);该函数的主要功能是读取 DS1302 的时间,读取小时、分钟、秒钟的具体值。void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char*year)*date=bcd2bin(ds1302_read(0x87);

48、*month=bcd2bin(ds1302_read(0x89);*year=bcd2bin(ds1302_read(0x8d); 该函数的主要功能是读取 DS1302 的日期,月份和年份。(3)时间设置。在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下

49、的RAM寄存器,在此方式下可一次性读、写所有的RAM的31个字节。void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec) ds1302_write(0x8e,0); ds1302_write(0x84,bin2bcd(hour); ds1302_write(0x82,bin2bcd(min); ds1302_write(0x80,bin2bcd(sec); ds1302_write(0x8e,0x80);该函数的主要功能是设置 DS1302 的时间,写入修改的小时、分钟、秒钟的具体值。void rtc_

50、set_date(unsigned char date,unsigned char month,unsigned char year) ds1302_write(0x8e,0); ds1302_write(0x86,bin2bcd(date); ds1302_write(0x88,bin2bcd(month); ds1302_write(0x8c,bin2bcd(year); ds1302_write(0x8e,0x80);该函数的主要功能是设置 DS1302 的日期,月份和年份。4.2 农历转换程序设计农历转换程序主要是通过对当前公历日期的计算,得到当前的农历日期。农历是同 时考虑太阳和月亮

51、运动的历法,它起源于夏朝,又名夏历、中历、旧历,民间也有称阴 历的。它用严格的朔望周期来定月,又用设置闰月的办法使年的平均长度与回归年相近 , 兼有阴历月和阳历年的性质,因此在实质上是一种阴阳合历,它采用的是干支纪年法。4.2.1 公历转农历算法研究农历以月为基本单位,一个月以新月出现的那一天为始直至下一个新月出现的前一天。由于月亮公转的周期介于 29 到 30 天之间,农历的一个月也就由新月出现时刻的早晚或是29天或是30天。大月为30天,小月为29天。与公历不同的是,大小月在不同的年中不固定。如春节的前一天常称为大年三十,但有不少年如 2000 年的农历十二月 只有 29 天。由于十二个月

52、的时间较阳历年即地球绕太阳公转一周的时间短 11 天左右, 为了使农历年与公历年保持相对稳定,每隔两三年就需要加入一个闰月。大约每十九年 要加入七个闰月。而二十四节气则是由地球在绕太阳公转的轨道上的位置确定的。以每年的冬至为始,每 15 度为一个节气。是故二十四节气在阳历的每月中有大概固定的日期。其中阳历下半月的十二个节气又称为中气。中气出现的时刻和闰月的确定有直接的关系。我国农历的计算有下列四条规则:(1)所有新月和节气出现的时刻的计算以东经 120 度即东八区标准时为准。但计算1929 年以前的阴历时应以北京即东经 116 度 25 分的当地时为准。此条规则用以区分中国阴历和其他类似阴历如

53、日本阴历。(2)新月出现的一天为一个月的第一天。如某个节气的出现时刻也在这一天,则不论该节气的出现时刻是否比新月晚,一律算落入新的一个月中。(3)每年的冬至总是出现在这年的农历十一月中。(4)从一年的冬至后一天起到下一年冬至这一天止的这段时间中,下称其间,如有 十三个新月出现,则其间要加入一个闰月。需要加入闰月时,其间第一个没有中气的月 为闰月。因为其间只有十二个中气,所以其间至少有一个月没有中气,也存在有两个月 没有中气的可能性。但这种情况下只有第一个没有中气的月为闰月。闰月的前一个月为 几月则该闰月称为闰几月。上述的农历的计算规则是在清朝顺治年间,即公元 1645 年开始采用的。以上规则

54、的一个重要特点就是理论上完全以天文观测为依据,其中没有任何数学关系。这和公历, 即格里历,完全是由数学关系确定的形成了鲜明的对比。当然,具体到未来农历的计算 , 仍然需要月亮与地球运动的数学模型,而且精度高的这种数学模型相当复杂,在没有电脑的情况下,一般人根本不可能推算出精确的农历来。而公历的数学关系则非常简单,这又形成了另外一种鲜明的对比。公历,也就是太阳历,其本质就是对太阳在黄道上的视位置进行划分。农历,也就是月亮历,其本质就是对月球在白道上的视位置进行划分。因此公历到农历的转换就是 : 已知太阳黄经刻度求月亮白经刻度的计算,说得通俗一点的解释就是已知地球轨道位置,求此时月球的视位置。粗略

55、的计算方法需要的参数就是地球、月球的基本轨道参 数(半长径、半短径、向径、偏心率、周期等)、质量,另外还包括轨道焦点的进动和地球的章动这两个偏移量。具体的计算公式就比较复杂了,其中包含大量的三角函数方程和迭代计算法。这种计算方法用于公历到农历的转换足够了,当然精确一点的方法则 要考虑到大行星的摄动,也就是他们的引力对地球和月球的轨道的影响,最主要的是离 我们最近的火星和金星,以及质量最大的木星,这种计算精度适用于阿波罗登月之类的 活动。最好的方法是把以上传统力学计算公式换成相对论公式,这样算出来的是最精确的。很显然,用单片机来直接计算农历这是不可能的。本系统采用的方案是用查表法来 实现的。把农

56、历的每年的月大月小和闰月情况编成一个用 32 位二进制数据,低 12/13 位表示每个月的大小,高16 位表示闰哪个月,最后把每个 32 位的二进制数据转换成 16 进制数据放在数组里,在查表的时候调用它。比如2006年农历的16进制数据为0x7155b,转换成二进制数如下:0000 0000 0000 01110001010101011011|-闰7月-|- 123456778910 11 12-|又如2007年农历的16进制数据为0x25d,转换成二进制数如下:0000 0000 0000 00000000001001011011|-无闰月-|- 12345678910 11 12 -|4

57、.2.2干支纪年简介农历纪年法叫干支纪年法。是以十天干和十二地支组合来纪年的,干支就字面意义 来说,就相当于树干和枝叶。我国古代以天为主,以地为从,天和干相连叫天干,地和 支相连叫地支,合起来叫天干地支,简称干支。天干有十个,就是甲、乙、丙、丁、戊 、 己、庚、辛、壬、癸,地支有十二个,依次是子、丑、寅、卯、辰、巳、午、未、申、 酉、戌、亥。古人把它们按照一定的顺序而不重复地搭配起来,从甲子到癸亥共六十对 , 依次为:01.甲子 02.乙丑 03.丙寅 04.丁卯 05.戊辰 06.己巳07.庚午 08.辛未 09.壬申 10.癸酉 11.甲戌 12.乙亥13.丙子 14.丁丑 15.戊寅 16.己卯 17.庚辰 18.辛巳19.壬午 20.癸未 21.甲申 22.乙酉 23.丙戌 24.丁亥25.戊子 26.己丑 27.庚寅 28.辛卯 29.壬辰 30.癸巳31.甲午 32.乙未 33.丙申 34.丁酉 35.戊戌 36.己亥37.庚子 38.辛丑 39.任寅 40.癸卯 41.甲辰 42.乙巳43.丙午 44.丁未 45.戊申 46.己酉 47.庚戌 48.辛亥49.壬子 50.癸丑 51.甲寅 5

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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