基于单片机C51的简单万年历设计毕业设计

合集下载

基于单片机C51的万年历设计课程设计

基于单片机C51的万年历设计课程设计

课程设计说明书设计题目:基于单片机的万年历设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

单片机c51万年历设计

单片机c51万年历设计

1. 综述本课题要求设计一个常用的万年历。

该电路是用于反应年、月、日、时、分、秒、星期的实时状态,液晶显示屏上显示第一排显示“湖南工学院”第二排显示“年、月、日”第三排显示“时、分、秒”第四排显示“星期”。

当接通时液晶屏上一次显示,并且可以通过矩阵键盘调节年、月、日、时、分、秒、星期的实时状态。

假设液晶显示屏显示的是2008年8月1日,要求是:通过矩阵键盘的调节可以实时时间。

经过以上所述的设计内容及要求的分析,可以将电路分为以下几部分:首先,通过晶振电路产生频率为32.768KH z的脉冲信号,该脉冲信号用于提供给DS1302的时钟脉冲信号。

接通电源时,液晶屏上显示“湖南工学院”“电气与信息工程系”“电信0901”“蒋赞荣”。

当按下第一个按键时进入“欢迎进入万年历”界面。

按下第二个按键时进入显示经典万年历界面。

理论部分已用protues软件进行仿真,并且达到设计要求。

实际部分在电子实验室和同组的成员在老师的指导下一进行模拟,能够达到理论设计要求。

在设计的过程中应该本着元件通用化,成品化,程序的精简化,以满足大规模生产的要求,以便在日后产品的更新维护能够更好的方便的进行。

同时也要尽量减少设计过程中掉电现象和不稳定现象。

使产品在使用过程中能够稳定的运行,达到良好的无故障率。

二者必须达到一定的标准,才能在工厂进行量产。

2. 方案设计与分析方案通过DS1302时钟芯片产生时钟数据信息,通过读写该芯片内的时钟信号通过单片机的控制将其显示在液晶屏幕上。

该芯片的三总线SCLK、I/O、CE分别接在单片机的P3^2、P3^3、P3^4三端效果是最好的,因为P3^0、P3^1位接在液晶屏的RS、RW,P3^5接在液晶屏的E端,其它的三态数据线接在P0口,矩阵键盘可以通过跳线接P1口或P2口,在使程序设计起来比较简单,可以很好的利用者一点,设计的复杂程度适中,而且达到了预期的设计目的。

在此电路中由于P0口用于液晶电路的三态八根数据线了,而P3口也用作了特殊作用,所以矩阵键盘的跳线只能是在P1口或者是P2口作为键盘的输入信号。

(完整版)基于51单片机的万年历的设计

(完整版)基于51单片机的万年历的设计

单片机课程实训SCM PRACTICAL TRAINING目录第一部分课程设计任务书 (1)一、课程设计题目 (1)二、课程设计时间 (1)三、实训提交方式 (1)四、设计要求 (1)第二部分课程设计报告 (2)一、单片机发展概况 (2)二、MCS-51单片机系统简介 (2)三、设计思想 (3)四、硬件电路设计 (3)1. 总体设计 (3)2. 晶振电路 (4)3. 复位电路 (4)4. DS1302时钟电路 (5)5. 温度采集系统电路 (5)6. 按键调整电路 (6)7. 闹钟提示电路 (6)五、软件设计框图 (7)六、程序源代码 (8)1. 主程序 (8)2. 温度控制程序 (11)3. 日历设置程序 (13)4. 时钟控制程序 (18)5. 显示设置程序 (20)七、结束语 (23)八、课程设计小组分工 (23)九、参考文献 (23)第一部分课程设计任务书一、课程设计题目用中小规模集成芯片设计制作万年历。

二、课程设计时间五天三、实训提交方式提交实训设计报告电子版与纸质版四、设计要求(1)显示年、月、日、时、分、秒和星期,并有相应的农历显示。

(2)可通过键盘自动调整时间。

(3)具有闹钟功能。

(4)能够显示环境温度,误差小于±1℃(5)计时精度:月误差小于20秒。

第二部分课程设计报告一、单片机发展概况单片机诞生于20世纪70年代末,它的发展史大致可分为三个阶段:第一阶段(1976-1978):初级单片机微处理阶段。

该时期的单片机具有 8 位CPU,并行 I/O 端口、8 位时序同步计数器,寻址范围 4KB,但是没有串行口。

第二阶段(1978-1982):高性能单片机微机处理阶段,该时期的单片机具有I/O 串行端口,有多级中断处理系统,15 位时序同步技术器,RAM、ROM 容量加大,寻址范围可达 64KB。

第三阶段(1982-至今)位单片机微处理改良型及 16 位单片机微处理阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。

基于51单片机的多功能电子万年历的设计结题报告

基于51单片机的多功能电子万年历的设计结题报告

基于51单片机的多功能电子万年历的设计作者1(哈尔滨工程大学,黑龙江省哈尔滨市150000)摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。

该电路采用STC89C51单片机作为核心,功耗小,电压可选用5V电压供电。

本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。

在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。

在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要哪种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。

在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写。

关键词:电子时钟;DS1602;STC89C51中图分类号:(作者本人填写)文献标识码:A 文章编号:1006-7043 (2004) xx-xxxx-xThe Design of electronics clock according to 51 MCUNAME Name1Xiangkai Xu,2Xinchi Dun,3Binkai Y u,4Yuehu Liu (Harbin Engineering university, Harbin City Heilongjiang Province , 150000, China) Abstract:E-calendar day time is a very wide range of tools, increasingly popular in modern society. It can be year, month, day, Sunday, hours, minutes, seconds for time, but also has a leap year compensation to a variety of functions, and the DS1302's long life, small error. For the digital electronic calendar using an intuitive digital display can simultaneously display year, month, day, Sunday, hours, minutes, seconds, and other information, but also a time-calibration and other functions. The circuit uses STC89C51 microcontroller as the core, power consumption, the voltage can choose 5V voltage supply.The design is based on 51 series of microcontrollers to the design of electronic calendar, you can display date information on when the minutes and seconds, and weeks, with adjustable date and time functions. At the same time in the design of the theoretical basis of the MCU and peripheral expansion of knowledge of the more comprehensive preparation. The hardware and software design, there is no good basic knowledge and practical experience will be greatly limited, each feature is required to achieve the kind of hardware, procedures, how to write, how to implement such algorithms, there is no certain foundation can not be good implementation. Found during the preparation process to the existing knowledge to complete the preparation of the task alone difficult,In the help of teachers and students to complete the program part of the preparation.Key words:Clock electric clock:DS1302;STC89C51引言:随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在的电子钟,人类不断研究,不断创新纪录。

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

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

基于单片机的多功能电子万年历的设计摘要随着科技的快速发展,自从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。

本文主要介绍了基于单片机的智能电子万年历的研制,该万年历能够实时显示公历年、月、日、时、分、秒,以及对应的农历日期、24节气、天干地支、闹铃功能,同时还能够实时测取环境温度。

本系统的硬件部分主要由A VR单片机、时钟芯片、温度传感器等部件组成,文中给出了详细的硬件设计实现及相关电路图;软件部分主要包含公历转农历的算法设计模块、显示模块、时间的读取、温度的检测模块,按键的扫描输入模块等,文中给出了系统的软件程序流程图及各功能模块的软件程序清单,最后介绍了整体系统的设计实现、仿真及调试过程,给出了下一步的改进方案等。

关键词:单片机;液晶技术;万年历;时钟芯片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 Microcontroller 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 addition 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 A VR microcontroller, a number of digital control, decoder, the clock chip,temperature sensors and other components,the paper gives a detailed design and 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 the 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 多功能数字万年历系统概述 (4)2.2计时方案 (4)2.3温度检测方案 (5)2.4显示方案 (5)2.5本章小结 (5)第3章系统硬件设计 (6)3.1 主控制器ATmega16 单片机介绍 (6)3.2 时钟电路DS1302 (6)3.3 温度检测DS18B20 (7)3.4 动态显示 (8)3.5 键盘接口 (8)3.6 语音闹铃模块 (8)3.7 电源设计 (9)3.8本章小结 (11)第4章系统软件设计 (12)4.1 公历计算显示程序设计 (13)4.1.1 DS1302 内部寄存器 (13)4.1.2 时间读取程序设计 (15)4.2 农历转换程序设计 (16)4.2.1 公历转农历算法研究 (16)4.2.2 干支纪年简介 (18)4.2.3 公历转农历程序 (18)4.3 温度测量程序设计 (20)4.3.1 DS18B20 的测温原理 (20)4.3.2 温度程序 (21)4.4 二十四节气算法研究 (23)4.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测温原理 (21)表格清单表3-1 LCD12864显示内容 (8)表4-1 DS1302的寄存器及其控制字 (14)表4-2 RS位配置 (15)引言人类的日常生活离不开时间,任何具有周期性变化的自然现象都可以用来测量时间。

基于单片机C51的万年历课程设计报告

基于单片机C51的万年历课程设计报告

课程设计说明书课程名称:《单片机技术》设计题目:基于单片机的万年历设计院(部):电子信息与电气工程学院学生:学号:专业班级:电子信息工程10-1指导教师:2013年 05 月 17 日课程设计任务书万年历设计摘要:以AT89S52为主控芯片设计了一个带温度显示的万年历电路系统,该电路具有年、月、日、星期、时、分、秒、闹钟显示和调整,并且还能显示温度和按键提示音、整点鸣叫、定时闹钟鸣叫等功能。

本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。

温度采集选用DS18B20芯片,数据显示采用1602A液晶显示模块,主芯片利用定时中断产生时间,控制着液晶的显示更新、温度的实时变化以及按键的读取处理,而对于闹钟,实际上就是时间里的一个嵌套程序。

时间和闹钟的值由按键调整设置,采用通用的二十四小时制。

关键词:单片机;液晶显示屏;温度传感器;时钟芯片目录1. 设计背景 (1)1.1 概述 (1)1.2 万年历设计目的 (1)2.设计方案 (2)2.1 按键控制模块设计与论证 (2)2.2 时钟模块设计与论证 (2)2.3 显示模块模块设计与论证 (3)3. 方案实施 (4)3.1系统整体框图 (4)3.2原理图设计 (4)3.2.1 单片机最小系统模块 (4)3.2.2 电源模块 (5)3.2.3 时钟芯片DS1302模块 (6)3.2.4温度采集DS18B20模块 (6)3.2.5 闹钟模块 (7)3.2.6 LCD1602显示模块 (8)3.2.7 按键模块 (9)3.3 软件设计 (9)3.4 系统仿真 (10)3.5系统制作 (11)4. 结果与结论 (12)4.1 结果 (12)4.2 结论 (12)5. 收获与致 (13)6. 参考文献 (14)7. 附件 (15)7.1 原理图 (15)系统电路图如图7.1所示: (15)7.2 元器件清单 (15)7.3 实物图 (16)7.3.1 正常工作 (16)7.3.2 调试状态 (17)7.3.3 闹钟设置状态 (18)1. 设计背景1.1 概述如今万年历已经在人们生活中广泛的使用,它不仅是记录日期和时间的工具,而且也成为了一种装饰品。

基于单片机的万年历设计毕业设计

基于单片机的万年历设计毕业设计

摘要现代电子万年历在家庭居室、学校、车站和广场使用的越来越广泛,给人们的生活、学习、工作带来了极大的方便。

针对以往的电子万年历断电后的需要重新调整时间与日期,并且计时误有差现象。

本系统设计采用了实时芯片(DS1302)作为计时器件,该芯片内部自带晶振荡器,这样就有效的保证了计时的精确性,并且内部自带电池使得在断电的情况下能够继续的更新时间信息。

本设计采用了AT89C51作为主要控制器,为了提高电路的使用性加入了报时和闹钟功能。

电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。

该电路采用AT89C51单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。

本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。

在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。

在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。

在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写。

万年历的设计过程在硬件与软件方面进行同步设计。

硬件部分主要由AT89C51单片机,LCD显示电路,以及调时按键电路等组成。

在单片机的选择上本人使用了AT89C51单片机,该单片机适合于许多较为复杂控制应用场合。

最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。

AbstractE-calendar-bedroom at home,schools,stations and more extensive use of plaza for people’s lives,study,work great convenience.Electronics calendar for the past need to re-adjust after power-off time and date,and time is a big error,Designed the system using real-time clock chip(DS1302) as a time parts,the chip comes with an internal crystal oscillator,so thateffectively guarantee the accuracy of the time and hang own internal battery power makes the situation will continue to update the time information.This design uses AT89C51 as the main controller,in order to improve the practicality of the cricuit add temperature measurement circuit ,timekeeping and alarm funtinons.E-calendar day time is a very wide range of tools, increasingly popular in modern society. It can be year, month, day, Sunday, hours, minutes, seconds for time, but also has a leap year compensation to a variety of functions, and the DS1302's long life, small error. For the digital electronic calendar using an intuitive digital display can simultaneously display year, month, day, Sunday, hours, minutes, seconds, and temperature and other information, but also a time-calibration and other functions. The circuit uses AT89C51 microcontroller as the core, power consumption, low-voltage work in 3V, the voltage can choose 3 ~ 5V voltage supply.The design is based on 51 series of microcontrollers to the design of electronic calendar, you can display date information on when the minutes and seconds, and weeks, with adjustable date and time functions. At the same time in the design of the theoretical basis of the MCU and peripheral expansion of knowledge of the more comprehensive preparation. The hardware and software design, there is no good basic knowledge and practical experience will be greatly limited, each feature is required to achieve the kind of hardware, procedures, how to write, how to implement such algorithms, there is no certain foundation can not be good implementation. Found during the preparation process to the existing knowledge to complete the preparation of the task alone difficult, In the help of teachers and students to complete the program part of the preparation.Calendar of the design process in hardware and software to synchronize the design. Hardware mainly by the AT89C51 microcontroller, LED display circuit, and the tune composed of the circuit when the button. In the SCMchoice I used the AT89C51 microcontroller, which is suitable for many of the more complex control applications. The final overall the teacher to help students, as well as their own efforts to complete the design of the electronic calendar.目录【摘要】 (1)第一章、设计要求与方案论证1.1 设计要求 (5)1.2 系统基本方案选择和论证 (5)1.2.1单片机芯片的选择方案和论证 (5)1.2.2 显示模块选择方案和论证 (6)1.2.3时钟芯片的选择方案和论证 (6)1.3 电路设计最终方案决定 (7)第二章、系统的硬件设计与实现2.1 电路设计框图 (7)2.2主要单元电路的器件 (7)2.2.1单片机主控制模块 (7)2.2.2时钟电路模块 (10)2.2.3显示电路 (13)2.2.4按键电路 (14)2.2.5 晶振电路 (15)第三章、日历算法3.1电子日历优化算法 (16)第四章、系统的软件设计4.1程序流程框图 (18)第五章、软件仿真5.1仿真过程 (21)5.2显示模块的设计 (22)第六章、总结 (23)参考文献 (24)致谢 (25)附录一:系统程序清单 (26)第一章、设计要求与方案论证1.1 设计要求:设计一个能够显示年、月、日、时、分、秒、星期功能的数字万年历。

基于单片机C51的万年历设计课程设计

基于单片机C51的万年历设计课程设计

课程名称:《单片机技术》设计题目:基于单片机地万年历设计院(部):电子信息与电气工程学院学生姓名:学号:专业班级:电子信息工程10-1指导教师:2013年 05 月 17 日课程设计任务书万年历设计摘要:以AT89S52为主控芯片设计了一个带温度显示地万年历电路系统,该电路具有年、月、日、星期、时、分、秒、闹钟显示和调整,并且还能显示温度和按键提示音、整点鸣叫、定时闹钟鸣叫等功能.本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成. 温度采集选用DS18B20芯片,数据显示采用1602A液晶显示模块,主芯片利用定时中断产生时间,控制着液晶地显示更新、温度地实时变化以及按键地读取处理,而对于闹钟,实际上就是时间里地一个嵌套程序.时间和闹钟地值由按键调整设置,采用通用地二十四小时制.关键词:单片机;液晶显示屏;温度传感器;时钟芯片目录1. 设计背景 01.1 概述 01.2 万年历设计目地 02.设计方案 (1)2.1 按键控制模块设计与论证 (1)2.2 时钟模块设计与论证 (1)2.3 显示模块模块设计与论证 (2)3. 方案实施 (2)3.1系统整体框图 (2)3.2原理图设计 (3)3.2.1 单片机最小系统模块 (3)3.2.2 电源模块 (4)3.2.3 时钟芯片DS1302模块 (4)3.2.4温度采集DS18B20模块 (5)3.2.5 闹钟模块 (6)3.2.6 LCD1602显示模块 (6)3.2.7 按键模块 (7)3.3 软件设计 (8)3.4 系统仿真 (8)3.5系统制作 (9)4. 结果与结论 (10)4.1 结果 (10)4.2 结论 (10)5. 收获与致谢 (11)6. 参考文献 (12)7. 附件 (13)7.1 原理图 (13)系统电路图如图7.1所示: (13)7.2 元器件清单 (13)7.3 实物图 (14)7.3.1 正常工作 (14)7.3.2 调试状态 (15)7.3.3 闹钟设置状态 (16)1. 设计背景1.1 概述如今万年历已经在人们生活中广泛地使用,它不仅是记录日期和时间地工具,而且也成为了一种装饰品.现在地万年历可以说是多种多样,外观精美.放在家里既可以计时也可作为风景壁画,因此越来越受到大众消费者地喜爱.1.2万年历设计目地随着电子技术地发展,人类不断研究,不断创新纪录.万年历目前已经不再局限于以书本形式出现.以电脑软件或者电子产品形式出现地万年历被称为电子万年历.与传统书本形式地万年历相比,电子万年历得到了越来越广泛地应用,采用电子时钟作为时间显示已经成为一种时尚.目前市场上各式各样地电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们日常生活需求.本文提出了一种基于A T89S52单片机地万年历设计方案,利采用一个LCD显示.本方案以A T89S52单片机作为主控核心,与时钟芯片DS1302、温度芯片DS18B20、闹钟模块、按键、LCD显示等模块组成硬件系统.在硬件系统中设有5个独立按键和一个LCD显示器,能显示丰富地信息,根据使用者地需要可以随时对时间进行校准、选择时间、温度显示、综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表地发展趋势,具有广阔地市场前景.2.设计方案2.1 按键控制模块设计与论证方案一:直接加减:使用7按键,1按键切换闹钟,6按键对时分秒分别加减,控制方式相当简单,但需要较多按键与I/O口,功能一般,成本较高.方案二:矩阵键盘:使用16按键对时分秒直接设置,能最为灵活地对数字钟进行设置,功能强大,但控制方式相对困难,成本较高,需要较多按键与I/O口.方案三:换位调整:使用4按键,1设置闹钟,1键设置调整时间,1键调整,1键确定,此种控制方式相对简单,占用I/O口少,成本低廉,但功能一般.经过反复比较,在3种方案中选取了第3种——换位调整,此方案成本低,功能已经足够满足数字钟地需要,而且硬件软件均比较简单.2.2 时钟模块设计与论证方案一:不使用芯片,采用单片机地定时计数器这种方法原理是利用单片机芯片地定时器来产生固定地时间,模拟时钟地时, 分,秒.如:利用A T80C52芯片,定时器用工作方式1,每50ms产生一个中断,循环20次,即1s周期.每一个周期加1,那么1min为60个周期,1h就是60*60=3600个周期,一天就是3600*24=86400个周期.此方法优点是可以省去一些外围地芯片,但这种方法只能适用于一些要求不是十分精确,不做长期保留地场合.方案二:并行接口时钟芯片 DS12887特点:采用单片机应用系统并行总线(三总线)扩展地接口电路,采用这种接口电路具有操作速度快,编程方便地优点.但是对于80C52单片机来说,低位地址线要通过锁存器输出,还要地址译码器,而且并行口芯片地体积相对较大,会占用较多地空间.方案三:串行接口时钟芯片DS1302芯片主特性:(1)实时时钟具有能计算2100 年之前地秒分时日日期星期月年地能力,还有闰年调整地能力(2) 8 位暂存数据存储RAM(3)串行 I/O 口方式使得管脚数量最少(4)宽范围工作电压2.0~5.5V(5)工作电流 2.0V 时,小于300nA(6)读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式(7)8 脚DIP 封装或可选地8 脚SOIC 封装根据表面装配(8)简单 3 线接口(9)与 TTL 兼容V cc=5V(10)可选工业级温度范围-40~+85优点:串行接口地日历时钟芯片,使用简单,接口容易,与微型计算机连线较少等特点,在单片机系统尤其是手持式信息设备中己得到了广泛地应用.比较以上三种方案地优缺点,综合考虑最终选择串行时钟芯片DS1302.2.3 显示模块模块设计与论证方案一:采用静态显示方法,静态显示模块地硬件制作较复杂及功耗大,要用到多个移位寄存器,但不占用端口,只需两根串口线输出.方案二:采用动态显示方法,动态显示模块地硬件制作简单,段扫描和位扫描各占用一个端口,总需占用单片机14个端口,采用间断扫描法功耗小、硬件成本低及整个硬件系统体积相对减小.方案三:采用LCD地方法,具有硬件制作简单可直接与单片机接口,显示内容多,功耗小,成本低等优点,LCM1602可显示32个字符,采用LCD地缺点是亮度不够.比较以上三种方案:方案一硬件复杂体积大、功耗大;方案二硬件简单、功耗小;方案三硬件简单,显示内容多,功耗小,成本低等.本系统设计要求达到功耗小、体积小、成本低,显示信息多等要求,权衡三种方案,选择方案三.3.方案实施3.1系统整体框图按照系统设计地要求,初步确定系统由电源模块、复位电路、时钟模块、显示模块、按键模块、温度采集模块和蜂鸣器组成,电路系统构成责整体框图如图3.1所示:图3.1 整体框图3.2原理图设计3.2.1 单片机最小系统模块单片机最小系统设计为如图3.2:图3.2 单片机最小系统本设计中选择了内部时钟方式和按键电平复位电路,来构成单片机地最小电路.复位是单片机地初始化操作,单片机在启动运行时,都需要先复位,其作用是使CPU和系统中其他部件都处于一个确定地初始状态,并从这个状态开始工作.此设计中P0口做为输出口用来驱动LCD显示,而P0口内部又没有上拉电阻,所以加上10K上拉电阻.复位电路本设计中地复位电路集手动复位及上电自动复位于一体.1)上电自动复位通过外部复位电路地电容C3地充电来实现,只要电源VCC地上升时间不超过1ms,就可以实现自动上电复位.2)按键手动复位是通过使复位端经电阻与VCC接通而实现地.时钟振荡电路考虑系统运行速度,采用12MHZ地石英晶振,并使用两个小电容作为微调电容.3.2.2 电源模块3.2.3 时钟芯片DS1302模块时钟芯片电路设计如图3.4:图3.4 时钟芯片电路如图3.4所示,其中Vcc1为后备电源,Vcc2为主电源.VCC1在单电源与电池供电地系统中提供低电源并提供低功率地电池备份.VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源地情况下能保存时间信息以及数据.DS1302由VCC1或VCC2 两者中较大者供电.当VCC2大于VCC1+0.2V时,VCC2给DS1302供电.当VCC2小于VCC1时,DS1302由VCC1供电.DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲;DS1302地控制字地位7必须置1,若为0则不能对DS1302进行读写数据.对于位6,若对时间进行读/写时,CK=0,对程序进行读/写时RAM=1.位1至位5指操作单元地地址.位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0.控制字节总是从最低位开始输入/输出地.DS1302地日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行.“WP”是写保护位,在任何地对时钟和RAM地写操作之前,“WP”必须为0.当“WP”为1时,写保护位防止对任一寄存器地写操作.3.2.4温度采集DS18B20模块温度采集电路设计如图3.5所示:图3.5 温度采集电路如3.5图所示,该系统中采用数字式温度传感器DS18B20,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,用P3.7与DS1802地DQ端口连接,V cc接电源,GND接地.DS18B20地读写时序和测温原理与DS1820相同,只是得到地温度值地位数因分辨率不同而不同,且温度转换时地延时时间由2s减为750ms. DS18B20测温原理如图3.6所示.图中低温度系数晶振地振荡频率受温度影响很小,用于产生固定频率地脉冲信号送给计数器1.高温度系数晶振随温度变化其振荡率明显改变,所产生地信号作为计数器2地脉冲输入.计数器1和温度寄存器被预置在-55℃所对应地一个基数值.计数器1对低温度系数晶振产生地脉冲信号进行减法计数,当计数器1地预置值减到0时,温度寄存器地值将加1,计数器1地预置将重新被装入,计数器1重新开始对低温度系数晶振产生地脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值地累加,此时温度寄存器中地数值即为所测温度.3.2.5 闹钟模块闹钟电路如图3.6所示:3.6 闹钟电路我们采用地有源蜂鸣器,由于单片机地输出电流较小所以我们采用PNP形地三极管作为驱动电路,来驱动蜂鸣器发声,当单片机给低电平时蜂鸣器响.3.2.6 LCD1602显示模块显示电路如图3.7所示:图3.7 显示电路LCD1602是指显示地内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字).第1脚:VSS为电源地.第2脚:VDD接5V电源正极.第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高.第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器.第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作.第6脚:E(或EN)端为使能(enable)端.第7~14脚:D0~D7为8位双向数据端.第15~16脚:空脚或背灯电源.15脚背光正极,16脚背光负极.LCD地D0~D7分别接单片机地地P0口,作为数据线,因为P0口内部没有上拉电阻,所以外部另外加上10K地上拉电阻;P2.4—P2.6分别接LCD地RS、RW、E三个控制管脚.3.2.7 按键模块按键电路设计如图3.8所示:图3.8 按键电路本系统用到了5个按键,其中一个用作系统手动复位,另外4个采用独立按键,该种接法查询简单,程序处理简单,可节省CPU资源,按键电路如图3.18所示,4个独立按键分别与AT89S52地P3.0、P3.1、P3.2、P3.3接口相连.对以上4个按键作简要说明:S2——SET 键,S3——UP键,S4——DOWN键,S5——OUT/STOP键.SET 键:按下SET键进入时间校准状态,按一下进入秒调整,两下分调整,依此类推可进行各年月日,时分秒以及星期地校准;UP键:当SET键按下时,UP进行SET选定项(如:小时)地加操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十届学生科技节-----单片机设计大赛作品名称:万年历专业:物联网班级:1指导老师:郑旭丹组长:邓清兰学号:3112113111组员:黄孟秋学号:3112113101目录一、绪论 (1)二、系统功能 (1)三、硬件电路 (1)3.1. 电路设计框图 (1)3.2. 系统硬件概述 (2)四、各模块功能及工作原理 (2)4.1. 单片机主控制模块的设计 (2)4.2. LCD1602显示模块 (3)4.3. 键盘模块 (6)五、实现结果 (9)六、系统的实用性及创新性 (9)七、调节中遇到的问题及心得体会 (10)八、程序设计 (11)8.1. 流程图 (11)8.2. 源代码 (12)九、总结及感谢 (24)一、绪论众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

本设计要制作的就是单片机于生活中最为常见的几种应用——万年历。

本设计以AT89S52单片机作为核心,可以显示当前的日历和时间,时间也可以人为设定,显示格式为年(四位),月(两位),日(两位),时(两位),分(两位),秒(两位)。

设置时间的位切换、设定数值、启动定时器、切换日历通过外部中断来实现。

万年历显示电路由LCD1602组成,制作该装置的材料需要有软硬件的支持,硬件方面AT89C51单片机,晶振,电源,液晶屏LCD1602。

二、系统功能本次设计的是万年历,采用LCD1602显示,实现的功能如下:1.显示当前时间,显示格式为年(四位),月(两位),日(两位),时(两位),分(两位),秒(两位);2.时钟计时,自动进行时间的位切换;3.键盘设置,能通过键盘设定当前时间和计时,并通过键盘人为设定时间。

三、硬件电路3.1.电路设计框图3.2.系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作,本系统选用12MHZ的晶振,使得单片机有合理的运行速度;利用液晶屏LCD1602显示时间信息,通过对AT89S52单片机的编程控制液晶屏LCD1602的显示。

显示时间在LCD1602,通过按键切换选择。

外部按键可及时设定或调整时间信息。

四、各模块功能及工作原理4.1.单片机主控制模块的设计AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。

AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。

18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。

第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。

引脚图如图图4.1:图4.1 AT89S52 引脚结构图4.2.1 LCD1602 引脚结构4.2.LCD1602显示模块4.2.1LCD1602引脚介绍LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,引脚图第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W 为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

4.2.2LCD1602指令1602液晶模块内部的控制器共有11条控制指令,如表4.2.31602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。

指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

指令4:显示开关控制。

D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。

指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:字符发生器RAM地址设置。

指令8:DDRAM地址设置。

指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:写数据。

指令11:读数据。

4.2.3 LCD1602读/写操作LCD1602基本操作时序说明,如表4.2.44.2.4 LCD1602显示模块流程图开始LCD 1602初始界面显示欢迎界面N按下按键?Y显示初始时间结束4.3.键盘模块本设计采用4乘4键盘的反转法控制万年历的计时和时间设定,4乘4键盘电路图如图图4.3.1图4.3.24.3.1键盘功能图4.4计时模块4.4.1计数器工作原理计数器:是单片机应用中的重要部件,工作方式灵活,可以对外部事件计数和检测等;实现计数功能。

其核心是特殊功能寄存器中能进行加1计数的寄存器。

实现原理:对T0或T1引脚输入的外部脉冲计数,如下图:4.4.2五、实现结果六、系统的实用性及创新性基本功能:能显示当前时间和计时,实现基本时钟功能。

创新性:界面友好,能实现计时和键盘数字的时间设定和自增、自减的时间设定。

七、调节中遇到的问题及心得体会问题一LCD1602的初始化不规范,导致无法正确在LCD1602上显示相应的字符,时间等。

解决在网上及课本上查找有关LCD1602初始化的程序,找出错误的地方并及时改正,最终解决了LCD1602的初始化问题。

问题二在对秒、分、时、日、月、年等的大小判断时,采用逐位判断,导致程序冗长,不利于程序的优化。

解决通过老师的指导及其他相关程序的借鉴,对时间大小的判断进行优化,将秒的十位和各位合为一个整体进行判断,分、时、日、月、年类似。

问题三在计时模块中,因为细节问题,找不到导致不能正常计时的原因。

解决通过老师的精心指导,找到不能正常计时的原因,将中断次数的判断if(count>100)改为if(count>=100)即可。

问题四在键盘设计模块中,对空数组的定义无效。

解决通过查找相关资料,了解到空数组的定义要放在data中,不能放在code 中。

将空数组定义为uchar a[14]使其默认放在data中就解决了该问题。

八、程序设计8.1.流程图8.2.源代码#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code Buffer[4]={0xfe,0xfd,0xfb,0xf7};uchar code table[]={'0','1','2','3','4','5','6','7','8','9','<','>','+','-','!','@'};uchar code w[14]={0x83,0x84,0x85,0x86,0x88,0x89,0x8b,0x8c,0xc4,0xc5,0xc7,0xc8,0xca,0xcb};uchar a[14];sbit E=P2^7; //1602使能引脚sbit RW=P2^6; //1602读写引脚sbit RS=P2^5; //1602数据/命令选择引脚void Delay(uint xms); //延时void Time0_Init(); //中断请求void timer1_int(void); //中断void charge(); //判断秒分时日月等是否大于额外值,若大于向上一位加一void ftime(); //初始时间void timeon(); //计时void add(); //自加void sub(); //自减void wcmd(uchar del); //1602写指令void write(uchar del); //1602写数据void L1602_init(void); //1602初始化void second(); //秒显示void minute(); //分显示void hours(); //时显示void days(); //日显示void month(); //月显示void years(); //年显示void other(); //符号显示void number(); //键盘输入数字uint count,t; //中断执行次数,光标位置参数uchar sec=0; //初始秒uchar min=0; //初始分uchar hour=0; //初始时uchar day=0; //初始日uchar mon=0; //初始月uchar yearh=0; //初始年前两位uchar yearl=0; //初始年后两位//1602命令函数void wcmd(uchar del){P0 = del;RS = 0;RW = 0;E = 1;Delay(1);E = 0;Delay(1);}// 1602写数据函数void write(uchar del){P0 = del;RS = 1;RW = 0;E = 1;Delay(1);E = 0;Delay(1);}// 1602初始化void L1602_init(void){wcmd(0x38);wcmd(0x38);wcmd(0x38);wcmd(0x0e);wcmd(0x06);wcmd(0x01);}//显示秒void second()uchar i,j;i=sec/10;j=sec%10;wcmd(0xca);write(table[i]);write(table[j]); }//显示分void minute(){uchar i,j;i=min/10;j=min%10;wcmd(0xc7);write(table[i]);write(table[j]); }//显示时void hours(){uchar i,j;i=hour/10;j=hour%10;wcmd(0xc4);write(table[i]);write(table[j]); }//显示日void days(){uchar i,j;i=day/10;j=day%10;wcmd(0x8b);write(table[i]);write(table[j]); }//显示月void month(){uchar i,j;i=mon/10;j=mon%10;wcmd(0x88);write(table[i]);write(table[j]); }//显示年void years(){uchar i,j,m,n;i=yearh/10;j=yearh%10;m=yearl/10;n=yearl%10;wcmd(0x83);write(table[i]);write(table[j]);write(table[m]);write(table[n]); }//符号显示void other(){wcmd(0xc9);write(':');wcmd(0xc6);write(':');wcmd(0x87);write('-');wcmd(0x8a);write('-');}//延时void Delay(uint xms){uint i,j;for(i=0;i<xms;i++)for(j=0;j<110;j++);}//计时void timeon(){if(count>=100){ count=0;charge();}ftime(); //显示初始时间}//时间初值void ftime(){second();Delay(5);minute();Delay(5);hours();Delay(5);days();Delay(5);month();Delay(5);years();Delay(5);other();Delay(5);}//各个按键返回值uint Keyvalue(){ uint i,j;uchar temp;uint Key_value;while(1){P1=0xf0;if(P1!=0xf0){Delay(100);if(P1!=0xf0)for(j=0;j<4;j++){P1=Buffer[j];temp=0x10;for(i=0;i<4;i++){if(!(P1&temp)){Key_value=i+j*4;}temp<<=1;}}return Key_value;}}}//字符串显示void L1602_string(uchar hang,uchar lie,uchar *p){uchar a,b=0;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;while(1){wcmd(a++);b++;if((*p == '\0')||(b==16)) break;write(*p);Delay(500);p++;}}//自增void add(){wcmd(w[t]); //光标置位if(t==1) //光标在第二个位置时{if(yearh<99) //判断年前两位是否小于99,是,年前两位加1,并显示{yearh++;years();}}else if(t==3) //光标在第四个位置时{if(yearl<99) //判断年后两位是否小于99,是,年后两位加1,并显示{yearl++;years();}}else if(t==5) //光标在第六个位置时{if(mon<12) //判断月是否小于12,是,月加1,并显示{mon++;month();}}else if(t==7) //光标在第八个位置时{if(day<30) //判断日是否小于30,是,日加1,并显示{day++;days();}}else if(t==9) //当光标在第十个位置时{if(hour<12) //判断时是否小于12,是,时加1,并显示{hour++;hours();}}else if(t==11) //光标在第十二个位置时{if(min<59) //判断分是否小于59,是,分加1,并显示{min++;minute();}}else if(t==13) //光标在第十四个位置时if(sec<59) //判断秒是否小于59,是,秒加1,并显示{sec++;second();}}}//自减void sub(){wcmd(w[t]); //光标置位if(t==1) //光标在第二个位置时,判断年前两位是否大于0,是,年前两位减1,并显示{if(yearh>0){yearh--;years();}}else if(t==3) //光标在第四个位置时,判断年后两位是否大于0,是,年后两位减1,并显示{if(yearl>1){yearl--;years();}}else if(t==5) //光标在第六个位置时,判断月是否大于1,是,月减1,并显示{if(mon>1){mon--;month();}}else if(t==7) //光标在第八个位置时,判断日是否大于1,是,日减1,并显示if(day>1){day--;days();}}else if(t==9) //光标在第十个位置时,判断时是否大于0,是,时减1,并显示{if(hour>0){hour--;hours();}}else if(t==11) //光标在第十二个位置时,判断分是否大于0,是,分减1,并显示{if(min>0){min--;minute();}}else if(t==13) //光标在第十四个位置时,判断秒是否大于0,是,秒减1,并显示{if(sec>0){sec--;second();}}}//主函数void main(){ uchar keys;uint i,key; //数组a的参数i=0;t=0; //位置参数L1602_init(); //1602初始化L1602_string(1,5,"Showtime"); //初始界面显示L1602_string(2,5,"Welcome!"); //初始界面显示while(1){key=Keyvalue(); //将键值赋值给keykeys=table[key];if(keys=='@') //判断键值是否为@,是,执行计时{Time0_Init();while(1)timeon();}else if(keys=='!') //判断键值是否为!,是,显示初始时间,光标在第一个位置{ftime();wcmd(0x83);}else if(keys=='-'||keys=='+') //判断键值是否为+或-{if(keys=='+') //键值为+,执行自加函数{add();}else //键值为-,执行自减函数{sub();}}//判断键值是否为<,是,光标不在最左边时,光标左移一位else if(keys=='<'){if(t>=1){i--;t=t-1;wcmd(w[t]);}}else if(keys=='>') //判断键值是否为>,是,光标不在最右边时,光标右移一位{if(t<13){i++;t=t+1;wcmd(w[t]);}}else //键值为数字键时,将键值放入a数组中,在调用函数,显示当前设置的时间{ number();i=i%14;a[i]=key;i++;t++;number();}}}//输入数字void number(){yearh=a[0]*10+a[1];yearl=a[2]*10+a[3];mon=a[4]*10+a[5];day=a[6]*10+a[7];hour=a[8]*10+a[9];min=a[10]*10+a[11];sec=a[12]*10+a[13];ftime();}//中断请求void Time0_Init(){TMOD=0X10;TH1=(65536-10000)/256;TL1=(65536-10000)%256;EA=1;ET1=1;TR1=1;}//中断void timer1_int(void) interrupt 3{count++;TH1=(65536-10000)/256;TL1=(65536-10000)%256;}//判断年月日是否超过额外值void charge(){sec++; //秒加1if(sec==60) //秒等于60时,分加1,秒置0{ sec=0;min++; }if(min==60) //分等于60时,时加1 ,分置0{ m in=0;hour++; }if(hour==24) //时等于24时,日加1,时置0{ hour=0;day++; }if(day==31) //日等于30时,月加1,日置1{ day=1;mon++; }if(mon==13) //月等于613时,年后两位加1,月置1{ mon=1;yearl++; }if(yearl==99) //年后两位等于99时,年前两位加1,年后两位置0{yearh=0;yearh++;if(yearh==99) //年前两位等于99时,年前两位置0yearh=0;}}九、总结及感谢在用单片机实现万年历的设计中使用到了AT89S52、LCD1602及其4*4键盘的使用。

相关文档
最新文档