电子万年历
电子万年历报告(SPI总线、含仿真图及程序)
目录目录 0摘要 (1)1课题研究 (2)2 设计要求与方案论证 (2)2.2方案研究 (6)3. 系统硬件电路设计 (7)3.1电路设计 (7)3.2系统硬件概述 (7)3.2.1主控制器AT89C51 (7)3.2.2时钟电路DS1302 (8)3.3主要单元电路设计 (9)3.3.1时钟电路 (9)4 系统的软件设计 (12)4.1程序设计 (12)4.2程序流程图 (12)4.2.1 显示驱动程序流程图 (12)4.2.3 时间控制流程图 (14)5 结束语 ..................................................................................... 错误!未定义书签。
参考文献 ..................................................................................... 错误!未定义书签。
附录一(电路原理图) (15)附录二(程序清单) (15)摘要随着单片机应用技术的发展,单片机的应用模式也在不断变化,一方面,单片机系统的规模越来越大,其外未连接了种,类繁多的外设;一方面,单片机进入了计算机网络系统,工业控制系统多采用多机分布式系统。
同时单片机的嵌入式系统应用模式使其体积越来越小且器件数目越来越少。
近年来,串行接口设备凭借其控制灵活,接口简单、占用资源少等优点在工业控制、仪器仪表等领域被广泛应用。
这些发展趋势更加使得串行通信功能加强了,同时带有串行接口器件也被广泛使用。
本次设计就是对不同总线方式进行研究,并选取带有一种总线接口的器件进行系统设计。
本文以AT89C51单片机作为主控中心,由带有SPI接口的DS1302时钟芯片提供时钟,并用LCD1602液晶显示器进行显示。
AT89C51单品即使有Atmel公司推出的,功耗小,电压可选用4-6V电压供电。
电子万年历 gai
本设计是电子万年历。
具备三个功能:能显示:年、月、日、时、分、秒及星期信息,并具有可调整日期和时间功能。
我选用的是单片机8052来实现电子万年历的功能。
该电子万年历能够成功实现时钟运行,调整,显示年月日时分秒及星期,温度等信息。
该电子万年历使用12MHZ晶振与单片机8052相连接,通过软件编程的方法实现了以24小时为一个周期,同时显示小时、分钟和秒的要求。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。
同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
电子万年历设计与制作可采用数字电路实现,也可以采用单片机来完成。
若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,这样一来就降低了硬件电路的复杂性,从而使得其成本降低,更适合我们大学生自主研发。
所以在该设计与制作中我选用了单片机8052,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外, 单片机8052的指令系统和引脚与8051完全兼容,片内有128B 的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
因此,采用单片机8052原理制作的电子万年历,不仅仅在原理上能够成功实现计时等功能,也更经济,更适用,更符合我们实际生活的需要,对我们大学生来说也更加有用。
8052 是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图图1:图1 8052引脚P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。
P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。
P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。
微机原理课程设计---万年历设计
微机原理课程设计---万年历设计目录目录.....................................................1、课程设计内容 (1)1.1任务要求 (1)1. 2方案选择 (1)1. 3项目进度计划 (2)2、硬件选型及电路设计 (3)2. 1硬件的选型 (3)2.2电路的设计 (4)3.系统软件设计 (10)3.1 DS1302读写程序设计 (10)3.2 PCB板设计源文件及原理图展示 (12)4.课程设计总结 (13)4. 1 本人在项目实现中的分工 (13)4.2 个人遇到的困难与获得的主要成果 (14)4.3 课程设计完成结果分析与个人小结 (14)参考文献 (15)1 课程设计内容1.1任务要求目的系统以AT89S52单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,从而以达到对时间计时,完成万年历的基本功能。
背景二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代扮演着极为重要的角色。
电子万年历的开发与研究在信息化时代的今天亦是当务之急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共场地等场合,可以说遍及人们生活的每一个角落。
所以说电子万年历的开发是国家之所需,社会之所需,人民之所需。
由于社会对信息交换不断提高的要求及高新技术的逐步发展,促使电子万年历发展并且投入市场得到广泛应用。
随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。
它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用STC89C52单片机作为核心,功耗小,能在5V的低压工作,电压可选用4.5~5.5V电压供电。
可以无限使用的万年历
万年历是一种常见的时间记录工具,用于查阅特定日期的星期、月历、节假日等信息。
它通常以纸质形式存在,但在现代科技的发展下,电子万年历也成为了常见的替代产品,通过手机、电脑等设备进行使用。
本文将介绍一种可以无限使用的电子万年历,该产品具有长久耐用、功能多样、便捷使用等特点。
首先,这种无限使用的电子万年历采用了先进的电子显示技术,如液晶显示屏或者电子墨水屏。
与传统纸质万年历相比,它不会因使用频繁而磨损或者损坏,因此使用寿命更长久,可以支撑几十年甚至更长时间的使用。
其次,这种电子万年历具有多样的功能。
除了基本的公历和农历日期显示外,它还可以提供详细的日期查询功能。
用户可以通过选择日期,获得该日期的星期、阳历、农历、节气等相关信息。
此外,该款电子万年历还集成了世界时钟、闹钟、日程提醒等实用功能,方便用户管理时间。
再次,这种电子万年历的使用简便方便。
它不需要纸质版的翻页操作,用户只需轻轻点击屏幕,即可查看指定日期的相关信息。
同时,它还支持触摸交互,用户可以通过手指滑动屏幕,快速切换至其他日期,十分便捷。
此外,这种电子万年历还具备数据存储功能,用户可以将重要的日期或备忘录保存在其中,随时查看或修改。
此外,这种电子万年历还可以通过连接互联网,实现更多的功能扩展。
用户可以将其与个人电脑、手机等设备同步,方便进行日期管理和数据备份。
更重要的是,互联网连接使得该款电子万年历能够自动更新节假日、农历日期等信息,保持其准确性和实用性。
最后,这种电子万年历的设计致力于可持续发展。
它采用了低功耗的电子显示技术,有效延长了电池使用寿命,减少了对环境的影响。
同时,该产品还具备可回收材料和可拆卸设计,方便用户更换电池或进行维修,以减少资源浪费。
总结起来,这种无限使用的电子万年历具有长久耐用、功能多样、便捷使用和环保节能等特点。
它不仅满足了用户对日期查询和时间管理的需求,还提供了一种可持续发展的解决方案。
虽然目前市面上已经有很多类似产品,但不难预见,随着技术的进步和用户需求的不断迭代,未来的电子万年历将会更加智能、实用和可靠。
MSP430-电子万年历
目录1. 系统总体设计 0功能说明 0任务分配情况 (1)系统工作流程 (1)2.硬件设计 (1)MSP430F5438A芯片简介 (1)矩阵键盘模块 (2)矩阵键盘介绍 (2)矩阵键盘实物图 (3)矩阵键盘与MSP430F5438A接口电路 (3)液晶12864模块 (3)液晶介绍 (3)液晶与MSP430F5438A接口电路 (4)DS1302实时时钟芯片模块 (5)DS1302实时时钟芯片简介 (5)DS1302实时时钟芯片实物图 (6)DS1302实时时钟芯片与MSP430F5438A接口电路 (6)SPI协议简介 (7)DS18B20温度芯片模块 (7)DS18B20温度芯片简介 (7)DS18B20温度芯片实物图 (8)DS18B20温度芯片与MSP430F5438A接口电路 (8)单总线协议简介 (9)3. 软件设计 (9)系统总体设计 (10)系统流程图 (10)矩阵键盘模块 (11)按键进入修改界面 (11)按键选择修改内容 (11)按键修改时间 (12)液晶模块 (13)DS1302实时时钟芯片模块 (14)DS1302的初始化 (14)DS1302的读写 (14)DS18B20温度芯片模块 (15)DS18B20初始化 (15)DS18B20写操作 (16)DS18B20读操作 (16)芯片值转化为显示值模块 (17)4.实验结果 (17)整体图 (17)运行过程 (17)5. 缺陷与调试 (21)调试过程 (21)程序的缺陷 (22)6. 实验心得 (22)7. 附录 (22)1.系统总体设计1.1功能说明本次课程设计的要求是制作一个电子万年历,要求在显示屏上显示年、月、日、时、分、秒、周、温度等信息,并且能够自行修改相关信息,且在修改信息时时钟停振。
根据要求所设计的系统的总体框架如图1所示:矩阵键盘MSP430F5338ADS1302 12864 DS18B20时钟芯片显示屏温度芯片图1 系统总体框架图1、单片机最小系统要求系统设计使用Texas Instrument公司的MSP430F5438A单片机作为系统的核心控制器。
毕业设计_电子万年历设计
毕业设计(论文)题目电子万年历设计副标题性质:毕业设计毕业论文学生姓名班级系别专业指导教师评定成绩优良中及格不及格1电子万年历设计摘要:随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活中。
日历是人们不可或缺的日常用品。
但一般日历都为纸制用品,使用不便,寿命不长。
电子万年历采用智能电子控制和显示技术,改善了纸制日历的缺陷。
本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和24C02FLASH存储器,完成时间的自动调整和掉电保护,全部信息用液晶显示。
时间、日期调整由三个按键来实现,并可对闹铃开关进行设置。
日历能显示阳历和阴历年、月、日以及星期、时、分、秒。
在显示阴历月份时,能标明是否闰月。
关键词:电子万年历 52系列单片机时钟芯片FLASH存储器液晶显示The Design of Electronic CalendarAbstract: With the rapid development of world economy and the forthcoming of information era, many kinds of mini-type intelligent domestic electric appliances appear in our life one after another. Calendars are necessary daily goods in people’s life. But they are generally paper goods with inconvenient use and short life. Electronic calendar adopts the technology of intelligent electronic control and display, and then improves the deficiency of paper calendars. The design adopts the core of AT89S52 single chip microcomputer, which constitutes controlling circuit, and integrates DS1302 clock chip and 24C02FLASH memory, which achieve self-adjusting of time and no power protecting. LCD displays all information. Time and date adjusting is carried out by three keys, which can also set the alarm clock. The calendar can display solar and lunar year, month, day, week, hour, minute, second. When displaying lunar months, leap month is showed.Keywords: electronic calendar 52 series single chip microcomputer clock chip flash memory LCD2目录1 引言 (1)2 系统概述 (1)3 方案选择 (1)3.1 方案1——基于AT89S52单片机的电子万年历设计 (1)3.2 方案2——基于DS1302的电子万年历设计 (2)4 系统硬件电路的设计 (2)4.1 系统核心部分---闪电存储型器件AT89S52 (3)4.2 DS1302时钟电路 (5)4.3 存储电路 (9)4.4 液晶显示电路 (11)4.5 键盘电路 (15)4.6 闹铃电路 (15)5 系统程序的设计 (16)5.1 阳历程序的设计 (16)5.2 时间调整程序的设计 (16)5.3 阴历程序的设计 (17)6 测试结果 (20)7 结论 (20)参考文献 (21)致谢 (22)附录1:电子万年历设计电路原理图 (23)附录2:主程序 (24)31 引言在日新月异的21世纪里,家用电子产品得到了迅速发展。
基于单片机的电子万年历设计报告
基于单片机的万年历设计报告一、研究意义随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活当中。
日历是人们不可或缺的日常用品。
但一般日历都为纸制用品,使用不便,寿命不长。
电子万年历采用智能电子控制和显示技术,改善了纸制日历的缺陷。
本设计以AT89S52单片机为核心,构成单片机控制电路,AT89C52是一种带8K字节闪速可编程可擦除只读存储器(PEROM)的低电压、高性能CMOS 8位为控制器。
该器件采用ATMEL 非易失存储器制造技术制造,与工业标准的80C51和80C52指令集和输出管脚相兼容。
结合DS1302时钟芯片和24C02 FLASH存储器,完成时间的自动调整和掉电保护,全部信息用液晶显示。
时间、日期调整由三个按键来实现,并可对闹铃开关进行设置。
日历能显示阳历和阴历年、月、日以及星期、时、分、秒。
在显示阴历月份时,能标明是否闰月。
二、总体方案设计本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和24C02 FLASH存储器,显示阳历的年、月、日、星期、时、分、秒和阴历的年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示出来。
输入接口由三个按键来实现,用这三个按键可以对日期和时间进行调整,并可以对闹铃的开关和闹铃的时间进行设置。
闹铃功能通过蜂鸣器来实现。
软件控制程序实现所有的功能。
整机电路使用+5V稳压电源,可稳定工作。
系统框图如图2-1所示,其软硬件设计简单,时间记录准确,可广泛应用于长时间连续显示的系统中。
三、系统硬件设计按照系统设计功能的要求,初步确定设计系统由主控模块、时钟模块、存储模块、键盘接口模块、显示模块和闹铃模块共6个模块组成,电路系统构成框图如图3-1所示。
主控芯片使用52系列AT89S52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片DS1302,存储模块采用美国ATMEL公司生产的低功耗CMOS串行EEPROM存储芯片AT24C02。
单片机课程设计—万年历[1]
郑州轻工业学院软件学院单片机与接口技术课程设计总结报告设计题目:电子万年历学生:系别:专业:班级:学号:指导教师:2021年12月16日设计题目:电子万年历设计任务与要求:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能方案比拟:方案一:系统分为主控制器模块、显示模块、按键开关模块,主控制模块采用AT89C52单片机为控制中心,显示模块采用普通的共阴LED数码管,键输入采用中断实现功能调整,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通过按键盘开关实现对时间、日期的调整。
方案二:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。
主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作。
两个方案工作原理大致相同,只有显示模块和时钟电路不同。
LED数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少; LCD1602液晶显示屏,显示功能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说要昂贵些,但是基于本设计显示的东西较多,假设采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块。
DS1302是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广泛的应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整,并具有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。
单片机有定时器的功能,但时间误差较大,且需要编写时钟程序,因此采用DS1302作为时钟电路。
比照以上方案,结合设计技术指标与要求我们选择了方案二进行设计。
逻辑总框图:该电子万年历的总体设计框图如图(1)所示。
基于单片机的电子万年历的设计与实现毕业论文
保密类别编号毕业论文基于单片机的电子万年历的设计与实现摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行.它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能.在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。
在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现.在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写.关键词:单片机万年历DS1302 STC89C52第1章绪论 (1)1。
1 课题研究的背景 (1)1。
2 国内外关于该论题的研究现状和发展趋势 (1)1。
3 本课题研究的目的 (1)第2章系统基本方案选择和论证 (1)2。
1 单片机芯片的选择 (1)2.2 显示模块选择方案和论证 (1)2.3 时钟芯片的选择方案和论证 (1)2。
4 温度传感器的选择方案与论证 (2)第3章系统的硬件设计与实现 (3)3.1电路设计框图 (3)3.2 主要单元电路的设计 (4)3.3 单片机中断系统 (5)3.4 温度采集模块设计 (8)3。
5显示模块的设计 (9)3.6系统的软件设计 (10)结论1。
硬件测试 (12)2.软件测试 (12)参考文献 (13)附录 (14)后记 (16)第1章绪论1.1 课题研究的背景随着微电子技术和超大规模集成电路技术的不断发展家用电子产品不但种类日益丰富而且变得更加经济实用。
基于51单片机的电子万年历系统的设计
参考内容
一、引言
单片机是现代电子设备中的重要组成部分,广泛应用于各种嵌入式系统设计。 51单片机作为一种经典的微控制器,因其结构简单、易于编程、可靠性高等优点, 被广泛用于各种领域,如智能家居、工业控制、物联网等。万年历作为一种日常 生活中常见的计时工具,具有显示日期、时间、星期、月份等功能,对于人们的 日常生活和工作有着重要的作用。本次演示将介绍一种基于51单片机的万年历设 计。
二、系统设计
1、硬件设计
基于51单片机的万年历设计需要硬件和软件的配合实现。硬件部分主要包括 51单片机、显示模块、按键输入模块和时钟芯片等。其中,51单片机作为主控制 器,负责处理各种数据和控制信号;显示模块用于显示日期、时间等信息;按键 输入模块用于用户输入操作;时钟芯片则为系统提供实时时间。
基于51单片机的电子万年历系 统的设计
目录
01 一、概述
03 三、软件设计
02 二、硬件设计 04 四、系统调试与优化
目录
05 五、应用场景及前景
07 参考内容
06 六、结论
随着科技的不断发展,单片机已经成为现代于51单片机的电子万年历系统设计具有广泛的实际应用价值。 本次演示将详细介绍这种系统的设计过程和实现方法。
感谢观看
首先需要进行硬件搭建,包括选择合适的单片机、显示模块、按键输入模块 和时钟芯片等,并将其连接起来。需要注意的是,在搭建硬件时需要考虑各个模 块之间的接口和连接方式,以确保系统能够正常工作。
2、软件编程
在硬件搭建完成后,需要进行软件编程。首先需要进行系统初始化,包括对 单片机进行初始化和对显示进行清屏处理。然后需要进行按键处理和时钟数据处 理,以实现用户输入和实时时间的读取。最后需要进行显示处理,将处理后的数 据显示到显示模块上。
电子万年历设计
电子万年历设计摘要单片机在电子万年历的应用已是非常普遍了,本设计是一个基于AT89C58单片机的日历显示系统,本设计能显示公历年、月、日、星期,以及时、分、秒、温度、星期等信息,而且还提供了农历信息,具有调整时间,温湿度采集,闹钟及个性化的闹铃等功能。
系统所用的时钟日历芯片DS1302具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。
采用AT89C 58单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。
此系统计时精确,可以广泛应用在生活,学习和工作等任何领域,并且起到重要作用。
关键词温湿度传感器;DS1302 ;数码管显示;语音模块The design of electronic calendarABSTRACTThe monolithic integrated circuit in the electronic permanent calendar's applications already was very common ,and this design was based on AT89C58 monolithic integrated circuit's calendar display system, which could display information as previous calendar years, the month, the date ,the hour ,the minute ,the second ,the temperature ,the week and so on ,which also supplied information of the lunar calendar ,which functions contains adjusting the time ,the acquisition of temperature and humidity , alarm clock and personalized alarum and so on. The system uses clock calendar chip DS1302 has the advantages of the high performance, the low power dissipation, the simple connector, simplified this system circuit, and the programming is convenient, meanwhile the function is also very powerful . Adopt AT89C58 monolithic integrated circuit's permanent calendar system instead of traditional to use the analogous circuit which causes to be inaccurate time, unreliable, uniformity bad and so on questions. This system keeping time is precise, may widely applied in the life, the study ,the work and so on, and plays an important role.KEY WORDS Temperature and humidity sensors;DS1302 ;Digital display; V oice module目录摘要 (I)ABSTRACT (II)前言 (1)1. 系统概述 (2)1.1电子万年历的简介 (2)1.2电子万年历的设计要求 (2)1.3整体设计 (2)2. 电子万年历的硬件设计 (4)2.1主控模块设计(MCU) (4)2.2时钟芯片模块的设计 (4)2.3看门狗模块设计 (5)2.4温湿度模块设计 (6)2.5显示、按键模块设计 (7)2.6电源模块设计 (8)2.7语音模块设计 (10)3. 电子万年历软件设计 (14)3.1阴历转换算法 (14)3.2主程序设计 (14)3.3子程序设计 (15)4. 整体系统调试 (17)4.1硬件的调试 (17)4.2设计优缺点 (18)参考文献 (19)附录一原理图 (20)致谢 (22)前言现在是一个知识爆炸的新时代,新产品、新技术层出不穷,电子技术的发展更是日新月异。
电子万年历(数码管显示)
程序#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define jump_ROM 0xCC#define start 0x44#define readdata 0xBEsbit dq=P1^7;sbit w1=P0^6;sbit w2=P0^5;sbit w3=P0^4;sbit w4=P0^7;sbit wela=P0^3;sbit A=P0^0;sbit b=P0^1;sbit C=P0^2;sbit SCLK=P1^0; //DS1302通讯线定义sbit DIO=P1^1;sbit RST=P1^2;sbit k1=P1^6;sbit k2=P1^5;sbit add=P1^4;sbit sub=P1^3;uchar code smgw[]={0,1,2,3,4,5,6,7};uchar code smgd[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//uchar code tab[]={0x077,0x12,0x0c7,0x0d3,0x0b2,0x0f1,0x0f4,0x13,0x0f7,0x0b3,0x00}; uchar temperature[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uchar code xingqi[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f};uchar tab1[9];uchar tab2[9];uchar nian,yue,ri,zhou,shi,fen,miao,a,shan,tt,shan;uchar knum;uchar q,j,tempp;void display();void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=55;y>0;y--);}void delay1(int useconds){int s;for(s=0;s<useconds;s++);}uchar resetds(void){uchar presencesignal;dq=0;delay1(30);dq=1;delay1(3);presencesignal=dq;delay1(30);return presencesignal;}void writebit(char val){ dq=0;if(val==1)dq=1;elsedq=0;delay1(5);dq=1;}void writebyte(char val) {uchar i;uchar temp;for(i=0;i<8;i++){temp=val>>i;temp&=0x01;writebit(temp);}delay1(5);}uchar readbit(void) {uchar i;dq=0;dq=1;for(i=0;i<3;i++)return dq;}uchar readbyte(void) {uchar i;uchar value=0;for(i=0;i<8;i++) {if(readbit())value|=0x01<<i;delay1(7);}return (value);}void temper(){uchar get[9];uchar k,lsb,msb,n;int m;float t;m=0;resetds();writebyte(jump_ROM);writebyte(start);delay1(5);resetds();writebyte(jump_ROM);writebyte(readdata);display();for(k=0;k<9;k++){get[k]=readbyte();}msb=get[1];lsb=get[0];if((msb&0x80)!=0) // /取补码/ {m=1;msb=~msb;lsb=( ~lsb)+1;if(lsb==0){msb++;}}display();n=lsb;msb=msb<<4;lsb=lsb>>4;tempp=msb|lsb;n=n&0x0f;t=(float )(n);t=t*0.0625;j=(int)(t*100);P2=temperature[j%10];w4=1;w1=0;delay(2);P2= temperature[j/10];w1=1;w2=0;delay(2);P2=temperature[tempp%10]+0x80;w2=1;w3=0;delay(2);P2= temperature[tempp/10];w3=1;w4=0;delay(2);w4=1;}void write(uchar date) //写入DS1302一个字节{uchar temp,i;RST=1;SCLK=0;temp=date;for(i=0;i<8;i++){SCLK=0;if(temp&0x01)DIO=1;elseDIO=0;SCLK=1;temp>>=1;}}uchar read() //读出DS1302一个字节{uchar a,temp;RST=1;for(a=8;a>0;a--){temp>>=1;SCLK=1;_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();SCLK=0;if(DIO){temp=temp|0x80;}else{temp=temp|0x00;}}return (temp);}void write_1302(uchar add,uchar dat) //写DS1302数据{RST=0;SCLK=0;RST=1;write(add);write(dat);SCLK=1;RST=0;}uchar read_1302(uchar add) //读DS1302数据{uchar dat1,dat2;RST=0;SCLK=0;RST=1;write(add);dat1=read();SCLK=1;RST=0;dat2=dat1/16; //数据进制转换dat1=dat1%16;dat1=dat1+dat2*10; //十六进制转十进制return(dat1);}void ds1302_init() //1302初始化{RST=0;SCLK=0;write_1302(0x8e,0x00); //允许写入write_1302(0x80,0x00);//设置初始值SECwrite_1302(0x82,0x59);//设置初始值MINwrite_1302(0x84,0x23);//设置初始值HRwrite_1302(0x86,0x20);//设置初始值DA TEwrite_1302(0x88,0x4);//设置初始值MONTH write_1302(0x8A,0x03);//设置初始值DAYwrite_1302(0x8C,0x12);//设置初始值YEARwrite_1302(0x8e,0x80);}void display(){ P2=temperature[j%10];w4=1;w1=0;delay(2);P2= temperature[j/10];w1=1;w2=0;delay(2);P2=temperature[tempp%10]+0x80;w2=1;w3=0;delay(2);P2= temperature[tempp/10];w3=1;w4=0;delay(2);w4=1;miao=read_1302(0x81); //读秒fen=read_1302(0x83); //读分shi=read_1302(0x85);//&0x3f; //读时ri=read_1302(0x87); //读日yue=read_1302(0x89); //读月nian=read_1302(0x8d); //读年zhou=read_1302(0x8B); //读星期if(knum==7){wela=0; //年A=0;b=1;C=1;P2=0x5b&shan;delay(2);A=1;b=1;C=1;P2=0x3f&shan;delay(2);wela=1;A=0;b=0;C=0;P2=smgd[nian/10]&shan;delay(2);A=1;b=0;C=0;P2=smgd[nian%10]&shan;delay(2);}else{wela=0; //年A=0;b=1;C=1;P2=0x5b;delay(2);A=1;b=1;C=1;P2=0x3f;delay(2);wela=1;A=0;b=0;C=0;P2=smgd[nian/10];delay(2);A=1;b=0;C=0;P2=smgd[nian%10];delay(2);}if(knum==6){ wela=1;A=0;b=1;C=0; // 月P2= smgd [yue/10]&shan;delay(2);A=1;b=1;C=0;P2= smgd [yue%10]&shan;delay(2);}else{ wela=1;A=0;b=1;C=0; // 月P2=smgd [yue/10];delay(2);A=1;b=1;C=0;P2= smgd [yue%10];delay(2);}if(knum==4){ wela=1;A=0;b=1;C=1; // 星期P2=xingqi[zhou%10]&shan;delay(2);}else{A=0;b=1;C=1; // 星期P2=xingqi[zhou%10];delay(2);}if(knum==5){wela=1;A=0;b=0;C=1; // 日P2= smgd [ri/10]&shan;delay(2);A=1;b=0;C=1;P2= smgd [ri%10]&shan;delay(2);}else{ wela=1;A=0;b=0;C=1; // 日P2= smgd [ri/10];delay(2);A=1;b=0;C=1;P2= smgd [ri%10];delay(2);}if(knum==3){ wela=0;A=0;b=0;C=0; // 时P2= smgd [shi/10]&shan;delay(2);A=1;b=0;C=0;P2= smgd [shi%10]&shan;delay(2);}else{ wela=0;A=0;b=0;C=0; // 时P2= smgd [shi/10];delay(2);A=1;b=0;C=0;P2= smgd [shi%10];delay(2);}if(knum==2){ wela=0;A=0;b=1;C=0; // 分P2= smgd [fen/10]&shan;delay(2);A=1;b=1;C=0;P2= smgd [fen%10]&shan;delay(2);}else{ wela=0;A=0;b=1;C=0; // 分P2= smgd [fen/10];delay(2);A=1;b=1;C=0;P2= smgd [fen%10];delay(2);}if(knum==1){ wela=0;A=0;b=0;C=1; // 秒P2= smgd [miao/10]&shan;delay(2);A=1;b=0;C=1;P2= smgd [miao%10]&shan;delay(2);wela=1;A=1;b=1;C=1;}else{ wela=0;A=0;b=0;C=1; //秒P2= smgd [miao/10];delay(2);A=1;b=0;C=1;P2= smgd [miao%10];delay(2);wela=1;A=1;b=1;C=1;}}void key(){uchar temp;display();if(k1==0){delay1(20);if(k1==0){while(!k1);knum++;if(knum==8){knum=1;}}}if(k2==0){delay1(20);if(k2==0){while(!k2);knum--;if(knum==0){knum=7;}}}if(knum!=0){if(add==0){delay1(20);if(add==0){while(!add);switch(knum){case 1: miao++;if(miao==60){miao=0;}temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x80,temp);write_1302(0x8e,0x80); //打开写保护break;case 2:fen++;if(fen==60)fen=0;temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x82,temp);write_1302(0x8e,0x80); //打开写保护}break;case 3: shi++;if(shi==24){shi=0;}temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x84,temp);write_1302(0x8e,0x80); //打开写保护break;case 5:ri++;switch(yue){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(ri==32)ri=1;break;case 4:case 6:case 9:case 11:if(ri==31)ri=1;break;case 2:if(nian%4==0||nian%400==0){if(ri==30)ri=1;}elseif(ri==29)ri=1;}break;}temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x86,temp);write_1302(0x8e,0x80); //打开写保护break;case 4:zhou++;if(zhou==8)zhou=1;temp=(zhou)/10*16+(zhou)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x8a,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;case 6: yue++;if(yue==13)yue=1;temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x88,temp);write_1302(0x8e,0x80); //打开写保护break;case 7:nian=(((nian>>4)&0x0f)*10+(nian&0x0f))+1;if(nian==99)nian=0;//temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x8c,((nian/10)<<4)+((nian%10)&0x0f)); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;}}if(sub==0){delay1(20);if(sub==0){while(!sub);switch(knum){case 1: miao--;if(miao==-1)miao=59;temp=(miao)/10*16+(miao)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x80,temp);//write_1302(0x80,((miao/10)<<4)+((miao%10)&0x0f)); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;case 2:fen--;if(fen==-1)fen=59;temp=(fen)/10*16+(fen)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x82,temp);//write_1302(0x82,((fen/10)<<4)+((fen%10)&0x0f)); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护}break;case 3:shi--;if(shi==-1)shi=23;temp=(shi)/10*16+(shi)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x84,temp);//write_1302(0x84,((shi/10)<<4)+((fen%10)&0x0f)); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;case 5:ri--;switch(yue){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(ri==0)ri=31;break;case 4:case 6:case 9:case 11:if(ri==0)ri=30;break;case 2:if(nian%4==0||nian%400==0){if(ri==0)ri=29;}else{if(ri==0)ri=28;}break;}temp=(ri)/10*16+(ri)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x86,temp);//write_1302(0x86,((ri/10)<<4)+((ri%10)&0x0f)); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;case 4:zhou--;if(zhou==0)zhou=7;temp=(zhou)/10*16+(zhou)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x8a,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;case 6: yue--;//yue=(((yue>>4)&0x01)*10+(yue&0x0f))-1;if(yue==0)yue=12;temp=(yue)/10*16+(yue)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x88,temp); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;case 7:nian=(((nian>>4)&0x0f)*10+(nian&0x0f))-1;if(nian==-1)nian=99;//temp=(nian)/10*16+(nian)%10;//十进制转换成DS1302要求的DCB码write_1302(0x8e,0x00); //允许写,禁止写保护write_1302(0x8c,((nian/10)<<4)+((nian%10)&0x0f)); //向DS1302内写秒寄存器80H写入调整后的秒数据BCD码write_1302(0x8e,0x80); //打开写保护break;}}}}}void main(){ds1302_init();IT0=1;EX0=1;TMOD=1;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;shan=0x00;temper();while(1){temper();for(q=0;q<230;q++)key();display();}}void int0() interrupt 0{TR0=~TR0;knum=0;shan=0x0ff;}void time0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==9){tt=0;shan=~shan;}}。
【完美升级版】多功能电子万年历设计_毕业论文设计
论文题目:多功能电子万年历的设计学院电气工程学院多功能电子万年历设计专业:自动化姓名:指导老师:摘要随着科学技术的快速发展,纵观太阳、摆钟到现在电子钟,人类不断研究,不断创新进步。
目前,单片机技术的应用产品已经走进了千家万户。
多功能电子万年历的出现给人们的生活带来了诸多方便。
此产品是基于STC89C52RC单片机的日历显示系统,它能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还具有调整时间,温度采集,闹钟及个性化的闹铃等功能。
系统所用的时钟日历芯片DS1302具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。
采用STC89C52RC单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。
此系统计时精确,价格低廉,可以广泛应用在生活,学习和工作等任何领域,并且起到重要作用。
关键词:万年历,单片机,时钟芯片,温度芯片ABSTRACTAlong with the technical fast development, time passing, to from the view sun, the pendulum clock to the present electron clock, the humanity studies unceasingly, innovates unceasingly the record. At present, the monolithic integrated circuit technology's application product already entered everyone. The electronic ten thousand calendar's appearances have brought conveniently many for people's life.This design is one based on STC89C52RC single-chip microcomputer calendar display system, it can demonstrate years, the month, the date of the Gregorian calendar, and hour, minute, second, temperature, week and so on. Moreover it has also provided the lunar calendar information, adjustable time pattern, temperature sample, alarm system, individual quarter-bell and so on. The system clock calendar DS1302 with high performance, low power consumption and simple interface features Circuit enable the system to streamline programming convenience, but also highly functional. The problems of inaccurate, unreliable, and the uniform inferior can be come up when you use the analogous circuit. However, it can be improved when you use the clock system based on STC89C52RC single-chip microcomputer. The system time accurate, low cost and can be widely applied to the life, study and work in any field, and has played an important role.Key words:The Electronic Calendar Clock, Single-chip Microcomputer, The Time Calendar Clock, Temperature Chip目录ABSTRACT (3)1 绪论 (8)1.1多功能电子万年历的研究背景与意义 (8)1.2多功能电子万年历的发展现状 (9)1.3论文研究的内容 (9)1.4 本设计进行的主要工作 (10)1.5本多功能电子万年历系统主要要实现的功能 (10)2单片机的简介 (11)2.1单片机的介绍 (11)3 方案设计与论证 (13)3.1单片机芯片设计与论证 (13)3.2 电源模块设计与论证 (14)3.3 按键控制模块设计与论证 (14)3.4 时钟模块设计与论证 (15)3.5 温度采集模块的设计与论证 (15)3.6 显示模块设计与论证 (15)4 系统的硬件设计 (17)4.1 主控芯片STC89C52RC与复位电路和时钟振荡电路 (17)4.1.1 STC89C52RC的概述 (17)4.1.2复位电路和时钟振荡电路 (19)4.2 时钟芯片DS1302接口设计和性能分析 (20)4.2.1 DS1302性能简介 (20)4.2.2 DS1302接口电路设计 (21)4.3 温度芯片DS18B20接口设计和性能分析 (25)4.3.1 DS18B20的性能介绍 (25)4.3.2 DS18B20的接口电路设计 (26)4.4 闹钟模块系统设计于性能分析 (26)4.4.1 AT24C02器件分析 (27)4.4.2 接口电路的设计 (28)4.5 LCD显示模块 (28)4.5.1 LCM1602的特性及使用说明 (28)4.5.2 LCM1602与STC89C52RC单片机的接口电路 (30)4.6 按键模块设计 (31)4.7蜂鸣器设计 (32)5 软件设计 (34)5.1 软件总体部分的设计 (34)5.2 LCD驱动及液晶显示 (36)5.3 按键识别及处理 (36)5.4 温度数据采集 (36)5.5 时间数据采集 (38)5.6 闹钟程序 (40)6 系统的测试 (42)总结 (45)致谢 (46)参考文献 (47)附录 (48)1 绪论1.1多功能电子万年历的研究背景与意义伴随着单片机和电子技术的快速发展,人类不断研究,不断创新纪录。
多功能电子万年历讲解
兰州理工大学第六届大学生电子设计竞赛题目:多功能电子万年历学院:计算机与通信学院班级:xxxxxxxx12级1班姓名:xxxx、xxxxxx、xxxxxx学号:12xx0xxx、12xx01xx、12xx01xx兰州理工大学目录摘要 (2)1 系统方案 (3)1.1比较与选择 (3)1.1.1 界面显示和语音提示: (3)1.1.2 时间的实现 (3)1.1.3 处理器的选择 (3)1.2方案描述 (4)2 理论分析与计算 (4)2.1日程设定与日期计算 (4)2.1.1 日期计算 (4)3 电路与程序设计 (7)3.1硬件设计 (7)3.1.1 硬件系统分析 (7)3.1.2 硬件描述 (7)3.2软件系统设计 (12)3.2.1 软件流程图 (12)3.2.2 各模块功能主程序设计 (14)4 测试方案与测试结果 (17)4.1各模块调试方案 (17)4.1.1 STC89C52主芯片调试 (17)4.1.2 DS1302时钟芯片调试 (18)4.1.3 蜂鸣器调试 (19)4.1.4 AT24C08数据存储器调试 (20)4.1.5 12864LCD显示模块调试 (20)4.1.6 总体调试 (21)结论 (22)系统功能 (22)操作说明: (23)参赛总结 (23)参考文献 (24)附录 (25)附录一系统原理图 (25)附录二原程序代码 (26)多功能电子万年历摘要电子万年历是一种非常广泛日常计时工具。
它可以对年、月、日、周日、时、分、秒进行精确计时,同时可显示闰年农历温度信息,在日常生活中极为实用,DS1302是常用的时钟芯片,价格低廉,精度高且对于数字电子万年历采用直观的数字显示,还具有时间校准等功能。
该系统以STC89C52单片机作为系统控制处理器,采用具有涓细电流充电能的低功耗实时时钟电路DS1302。
它可以对年、月、日、周日、时、分、秒进行计时。
同时通过蜂鸣器进行半整点报时和闹钟提示,并采用AT24C08数据存储器实现掉电数据存储功能.系统各个界面通过LCD12864显示。
电子万年历
绪论近年来,电子技术和计算机应用领域不断扩大,单片机技术已经成为电子技术领域中的一个新的亮点;电子产品已应用到各个行业,电子产品也逐步人性化,以各种方式显示出来,非常醒目,让人一下就能感受到这是个电子产品。
单片机不仅体积小、成本低、可靠性高,而单片机还易于扩展,控制功能很强,使用灵活,很容易构成各种规模的应用系统,目前单片机在各个领域中都得到了广泛的应用。
MCS---51系列单片机以其优越的性能,成熟的技术及高可靠性和性能价格比迅速占领了工业测控和智能化等领域,成为国内单片机应用的主流。
万年历设计是用单片机通过外接扩展电路及必要的通道接口构成的计算机应用系统。
由于时钟芯片的出现可以将芯片与单片机结合起来,通过单片机对芯片的控制可以使走时更加的准确,也可以直接通过单片机的编写达到以上效果。
现在的单片机发展相当迅速,进而万年历所显示的功能也越来越多从而使使用的人更加方便。
对于设计者来说采用单片机来实现万年历的各种功能主要是因为单片机集成度体积小、有很高的可靠性。
单片机把各功能部件集成在一块芯片上,内部采用总线结构,减少了各芯片之间的连线,大大提高了单片机的可靠性与抗干扰能力正是如此才使设计者能够更多的实现万年历的功能扩展。
本设计的主要设计思想是通过设计硬件控制电路和软件控制程序,从而实现能够正确地显示某年某月某日某时某分某秒,万年历应具有校时功能,定时功能,报时功能。
可能除了上边的功能还有其他的功能,如果需要还可以不断的向上加功能。
在万年历电子表的上面还有调整时间和定时用的几个功能键(复位键、选择位键、各个位数值的增大和减小两个键等)硬件控制电路主要用了80S51芯片处理器、74LS164移位寄存器、LED显示器等。
根据各自芯片的功能互相连接成万年历电子表的控制电路。
软件控制程序主要有主控程序、万年历电子表的时间控制程序。
主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是万年历电子表中比较重要的部分。
多功能电子万年历
用户可以根据自己的需求,调节闹 钟的音量大小,确保及时唤醒。
温度显示功能
01
02
03
温度传感器
多功能电子万年历内置温 度传感器,可以实时显示 室内温度,方便了解室内 环境温度情况。
温度单位切换
用户可以根据自己的需求 ,在摄氏度与华氏度之间 自由切换温度显示单位。
温度预警
根据用户设定的温度范围 ,多功能电子万年历可以 发出预警声音或提示信息 ,提醒您注意温度变化。
课外活动安排
多功能电子万年历可以记录学生 的课外活动安排,如社团活动、 义工活动等,方便学生合理安排 时间。
学习备忘录
多功能电子万年历可以作为学生 的学习备忘录,记录学习笔记、 心得体会等,方便学生随时回顾 和总结。
06
产品未来展望
技术创新方向
智能化升级
引入人工智能技术,实现万年历的语音交互 、智能推荐等功能,提升用户体验。
功能丰富
除了基本的日期和时 间显示外,还具备闹 钟、计算器、备忘录 等多种实用功能。
易于操作
配备触摸屏或按键操 作,简单易懂,方便 用户使用。
耐用性强
采用高品质材料制造 ,经久耐用,适合家 庭和办公场所使用。
产品的重要性
提高生活品质
多功能电子万年历可以提醒用 户重要日期和时间,避免错过
重要事件,提高生活品质。
计时的时间范围。
倒计时提醒
02
在倒计时结束之前,多功能电子万年历会发出提醒声音或提示
信息,避免错过重要时刻。
倒计时进度显示
03
多功能电子万年历会实时显示倒计时的剩余时间,让您可以随
时掌握时间进度。
03
产品使用说明
操作界面说明