万年历的单片机技术课程设计论文
基于单片机的万年历设计毕业论文
XXX学院毕业论文课题名称:基于单片机的万年历设计作者: XXX 学号: XXX 系别:___ 电子工程系专业:__ 电子信息工程技术_指导教师:_______ XXXXX年 XX 月 XX 日中英文摘要摘要本设计以单片机芯片STC89C52为中心,通过外挂接DS12C887作为时钟芯片,为系统实时的更新时间、日历等。
DS18B20作为温度传感器芯片,用于实时采集当前所处的环境温度。
1602液晶作为实时显示器件,显示单片机采集的所有数据。
当在公共场所时,为了方便调节时间,外加红外遥控和键盘两种方式调时功能。
于此,构成了一个实时时钟万年历系统。
最后,通过软件对其原理图进行绘制和程序的编写,并且调试运行。
关键词:单片机芯片STC89C52;DS12C887芯片;DS18B20温度传感器;LCD1602液晶;红外遥控AbstractThe design on the single chip computer chip STC89C52 as the center, through the plugin meet DS12C887 as the clock chip, real-time updates for the system time, calendar, etc. As the temperature sensor DS18B20 chip to the real-time data acquisition at this temperature environment. 1602 LCD as real-time display device, shows all of the data collection single chip microcomputer. When in a public place, in order to facilitate the regulating time, plus infrared remote control and keyboard two ways when the function. In this, and form a real time clock calendar system. Finally, through the software to its principle chart draw and the writing of the program, and debug operation.Keywords: single chip microcomputer chip STC89C52; DS12C887 chip ;DS18B20 temperature sensor; LCD1602 liquid crystal ;infrared remote control目录1 引言 (1)1.1课题的来源和意义 (1)1.2系统总体方案介绍 (2)2 方案论证 (2)2.1 时钟芯片的选择 (2)2.2显示器件的选择 (4)3 单元电路设计 (4)3.1 DS12C887时钟电路设计 (4)3.1.1 DS12C887时钟芯片概述 (4)3.1.2时钟精度 (5)3.1.3 时钟、日历和闹钟单元 (5)3.1.4 控制寄存器 (6)3.1.5 基本原理 (8)3.1.6典型工作电路 (11)3.1.7工作时序 (11)3.1.8主要程序分析 (13)3.2 1602液晶显示电路设计 (14)3.2.1 1602液晶概述 (14)3.2.2 1602液晶基本原理 (15)3.2.3 1602液晶工作时序 (16)3.2.4 指令说明 (17)3.2.5 1602液晶主要程序分析 (18)3.3红外遥控电路设计 (19)3.3.1红外发射系统 (19)3.3.2红外接收系统 (20)3.3.3主要程序分析 (21)3.4 DS18B20温度传感器电路设计 (23)3.4.2 DS18B20温度传感器的主要特性 (23)3.4.3 DS18B20温度传感器基本原理 (23)3.4.4 DS18B20温度传感器配置寄存器 (23)3.4.5 DS18B20温度传感器暂存器中温度数值的储存形式 (24)3.4.6 DS18B20温度传感器工作时序 (25)3.4.7 控制器对DS18B20操作流程 (26)3.4.8 DS18B20芯片内部ROM操作指令 (27)3.4.9 DS18B20温度传感器芯片内部存储器RAM操作指令 (27)3.4.10 DS18B20温度传感器典型工作方式 (28)3.4.11 温度传感器DS18B20主要程序分析 (28)3.5键盘调时电路设计 (31)4 总体设计与制作 (31)4.1总体原理图绘制 (31)4.2 软件开发与调试 (32)4.2.1使用Keil软件编写系统程序 (32)4.2.2 系统调试 (33)4.3 搭建系统实物 (34)4.4系统实物展示 (35)5 收获与体会 (35)6 结论 (36)附录A (37)附录B (38)附录C (49)参考文献 (50)致谢 (51)1 引言电子是推动人类社会文明、进步与发展的巨大动力,随着电子产品的飞速发展,现已将人类带入了智能化的生活。
基于单片机电子万年历的设计毕业论文
基于单片机电子万年历-的设计毕业论文号:毕业设计(论文)说明书课题名称:基于单片机的电子万年历设计院(系):计算机工程系专业:通信工程班级:通信072班学生姓名:黄董学号: 200700402056指导教师:袁浩浩2011年 05月25日摘要电子万年历是一种应用非常广泛日常计时工具,对现代社会越来越重要。
此电子万年历在硬件方面主要采用STC89C52单片机作为主控核心,由DS1302时钟芯片提供时钟、1602LCD液晶显示屏显示。
STC89C52单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;对于数字电子万年历采用直观的数字显示,数字显示是采用的1602LED液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。
此外,该电子万年历还具有时间校准等功能。
在软件方面,主要包括日历程序、时间调整程序,显示程序等。
所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,烧写到单片机上进行测试。
此设计主要由时钟芯片DS1302和温度传感器DS18B20采集数据到单片机进行处理再通过LCD1602显示出来,本论文主要研究了液晶显示器LCD及时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较,在软件方面对日历算法也进行了论述。
关键词:单片机;DS1302;DS18B20;LCD1602AbstractElectronic calendar is a widely used tool for the daily time, more and more important in modern society. The electronic calendar in terms of hardware as the main control mainly STC89C52 microcontroller core, provided by the DS1302 clock chip clock, 1602LCD LCD display. STC89C52 microcontroller by Atmel introduced, the power consumption, voltage can be selected 4 ~ 6V voltage power supply; DS1302 clock chip introduced in the United States DALLAS low-power real time clock chip, which can be year, month, day, week, hours, minutes and seconds time, but also has leap-year compensation, and other functions, and the DS1302's long life, small error; for digital electronic calendar using an intuitive digital display, digital display is used 1602LED LCD screen to display, you can also shows year, month, day, week, hours, minutes, seconds and other information. In addition, the electronic calendar is also a time calibration and other functions. In terms of software, including calendar, time to adjust procedures, display procedures. All programming is completed, the Keil software debugging, make sure that no problem, programmed into the microcontroller for testing.This design mainly by the clock chip DS1302 temperature sensor to the microcontroller DS18B20 collect data for processing and then through the LCD1602 display, this thesis, the liquid crystal display LCD and clock chip DS1302, temperature sensor and microcontroller DS18B20 interconnection and communication between the hardware on Several hardware connection scheme for a detailed comparison of algorithms in software on the calendar have also been discussed.Key words: SCM; DS1302; DS18B20; LCD1602目录摘要 (I)Abstract (II)第 1 章绪论 (1)1.1课题背景 (1)1.2 课题意义 (1)1.3国内外现状及水平 (1)第2章基于单片机万年历的方案研究 (2)2.1 系统基本方案选择和论证 (2)2.1.1 单片机芯片的选择 (2)2.1.2 显示模块选择方案和论证 (3)2.1.3 时钟芯片的选择方案和论证 (3)2.1.4 温度传感器的选择方案与论证 (3)2.2 电路设计最终方案决定 (4)2.3 DS1302,DS18B20和LCD1602的原理及说明42.3.1 LCD1602工作原理及说明 (4)2.3.2 DS1302原理及说明 (5)2.3.3 DS18B20工作原理及说明 (6)第3章系统的硬件设计与实现 (7)3.1电路设计框图 (7)3.2系统硬件概述 (7)3.3 主要模块电路的设计 (8)3.3.1 STC89C52单片机主控制模块的设计. 83.3.2时钟电路模块的设计 (10)3.3.3温度采集模块设计 (11)3.3.4 显示模块的设计 (11)3.4各模块电路原理图 (12)3.4.1电源电路 (12)3.4.2复位电路 (12)3.4.3振荡电路 (13)3.4.4温度采集电路 (13)3.4.5通信电路 (14)3.4.6显示电路 (15)3.4.7键盘电路 (15)第4章系统的软件设计 (16)4.1 程序流程框图: (16)第5章系统测试 (19)5.1 硬件测试 (19)5.2 软件测试 (19)结束语 (20)致谢 (21)参考文献 (22)附录1:程序 (24)第 1 章绪论1.1课题背景在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响,随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。
电子万年历的设计与制作毕业论文
(5)矩阵式键盘及其接口26
(6)键盘扫描控制方式:26
四、测试结果分析与结果27
1.测试结果分析27
(1)在测试中遇到LEDLCD16824不显示27
(2)按键调整时,不是按单位递增和递减28
五、系统评价28
六、系统程序清单28
七、辞31
八、参考文献31
绪论
随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。
5.显示模块的设计17
三、系统的软件设计18
1.程序流程框图:18
2.子程序的设计:21
(1)键盘子程序的实现:21
(2).读写DS1302子程序21
3.系统硬件电路设计:23
4.系统硬件PROTEUS仿真原理图:24
5.主要单元电路的设计:24
(1)显示4.1显示部分设计24
(2)键盘接口:25
(3)按键开关去抖动问题:25
本设计采用的是AT89S52单片机,该单片机采用的MCU51核,因此具有很好的兼容性,部带有8KB的ROM,能够存储大量的程序,最突出特点是具有ISP在系统烧写功能,使得烧写程序更加方便。
计时芯片采用DALLAS公司的涓细充电时钟芯片DS1302,该芯片通过简单的串行通信与单片机进行通信,时钟/日历电路能够实时提供年、月、日、时分、秒信息,采用双电源供电,当外部电掉电时能够利用后备电池准确计时。
方案三:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字最合适,而且采用动态扫描法与单片机连接时,占用的单片机口线少。
LED显示数码管
常见的LED显示具有清晰明亮的特点。是显示接口也是绝大多数单片机应用系统必备的部件之一。
(完整版)单片机毕业课程设计—万年历
郑州轻工业学院软件学院单片机与接口技术课程设计总结报告设计题目:电子万年历学生姓名:系别:专业:班级:学号:指导教师:2011年12月16日设计题目:电子万年历设计任务与要求:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能方案比较:方案一:系统分为主控制器模块、显示模块、按键开关模块,主控制模块采用AT89C52单片机为控制中心,显示模块采用普通的共阴LED数码管,键输入采用中断实现功能调整,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通过按键盘开关实现对时间、日期的调整。
方案二:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。
主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作。
两个方案工作原理大致相同,只有显示模块和时钟电路不同。
LED 数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少; LCD1602液晶显示屏,显示功能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说要昂贵些,但是基于本设计显示的东西较多,若采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块。
DS1302是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广泛的应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整,并具有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。
单片机有定时器的功能,但时间误差较大,且需要编写时钟程序,因此采用DS1302作为时钟电路。
对比以上方案,结合设计技术指标与要求我们选择了方案二进行设计。
逻辑总框图:该电子万年历的总体设计框图如图(1)所示。
万年历单片机课程设计论文
单片机系统课程设计设计课题:万年历单片机系统课程设计任务书摘要:随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活中。
日历是人们不可或缺的日常用品。
但一般日历都为纸制用品,使用不便,寿命不长。
电子万年历采用智能电子控制和显示技术,改善了纸制日历的缺陷。
本设计以AT89C52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片,完成时间的调整和掉电保护,全部信息用LED 数码管显示。
时间、日期调整由按键来实现。
日历能显示阳历和时、分、秒。
关键词:万年历;52系列单片机;时钟芯片目录1 概述 (1)2 总体方案设计 (1)2.1 方案1——基于AT89C52单片机的万年历设计 (1)2.2 方案2——基于AT89C52单片机和DS1302的万年历设计 (2)2.3 总体方案 (2)3 硬件电路设计 (3)3.1 主控器 AT89C52 (3)3.1.1 AT89C52的主要性能 (4)3.1.2 AT89C52的引脚及其功能 (4)3.2 时钟电路的设计 (7)3.2.1 DS1302的性能特性 (7)3.3.2 DS1302数据操作原理 (8)3.3 显示电路的设计 (10)3.4 键盘接口的设计 (12)4 系统软件设计 (12)4.1 主程序设计 (13)4.2 中断服务程序设计 (13)4.3 子程序设计 (14)4.3.1 延时子程序 (14)4.3.2 数码管动态扫描子程序 (14)4.3.3 定时器初始化子程序 (15)4.3.4 键盘扫描子程序 (15)4.3.5 显示子程序 (16)5 系统调试与总结 (16)参考文献 (19)附录A 源程序 (20)附录B 系统原理图 (29)1 概述在日新月异的21世纪里,家用电子产品得到了迅速发展。
许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。
单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。
51单片机万年历毕业设计论文
专科毕业设计(论文)题目51单片机电子万年历论文51单片机电子万年历论文摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。
对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。
该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。
在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。
在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。
在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写。
万年历的设计过程在硬件与软件方面进行同步设计。
硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。
在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。
显示器使用2片7SEG-MPX8-CA和一片7SEG-MPX4-CA。
7SEG-MPX8-CA是一种八个共阳二极管显示器,7SEG-MPX4-CA是一种四个共阳二极管显示器。
为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。
74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。
软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。
程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。
所有程序编写完成后,在wave软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
单片机课程设计(论文)电子万年历的设计
目录1设计要求 (2)2方案论证与对比 (2)液晶显示器控制方式选择 (2)2.2并行接口动态显示电路选择 (2)2.3LCD液晶显示器的接口方法选择 (3)液晶显示器限流电阻选择 (4)3系统硬件电路的设计 (5)主控模块AT89C52 (5)3.2显示模块电路设计 (6)4系统软件设计 (7)4.1系统软件概述 (7)4.2主要子程序设计 (8)4.2.1 时钟中断服务子程序设计 (8)时间调整子程序设计 (9)4.2.3 判断闰年子程序设计 (9)4.2.4 精度分析分析与计算 (10)4.2.5 第一次初值的设置 (10)4.2.6 重载初值的方法 (10)5系统仿真与测试 (11)5.1系统仿真 (11)功能测试 (11)6总结 (12)参考文献 (13)1设计要求本课题以AT89C52单片机为核心,设计并制作出智能LCD电子钟,具有以下基本功能:能进行时间、年份、日期、星期显示;能区分是否闰年;能检测室温并显示。
扩展功能部分可以通过控制按键使时间暂停、可以调整校正时间并通过按键切换轮流显示时间、年份、日期、星期。
2方案论证与对比2.1液晶显示器控制方式选择采用LCD液晶显示,具有超精致影像画质、十足平面显示、节省空间、节省能源等优点,但按控制方式不同,LCD可分为被动矩阵式LCD及主动矩阵式LCD两种。
可根据不同需要采用不同的方式。
方案一被动矩阵式LCD被动矩阵式LCD在亮度及可视角方面受到较大的限制,反应速度也较慢。
由于画面质量方面的问题,使得这种显示设备不利于发展为桌面型显示器,但成本低廉。
方案二主动矩阵式LCD目前应用比较广泛的主动矩阵式LCD,也称TFT-LCD(Thin Film Transistor-LCD,薄膜晶体管LCD)。
TFT液晶显示器是在画面中的每个像素内建晶体管,可使亮度更明亮、色彩更丰富及更宽广的可视面积。
与CRT显示器相比,LCD显示器的平面显示技术体现为较少的零件、占据较少的桌面及耗电量较小,但CRT技术较为稳定成熟。
毕业设计(论文)-基于MCS-51的万年历设计
毕业设计(论文)-基于MCS-51的万年历设计1 引言1.1 万年历的背景与意义万年历作为一种常见的时间计数工具,被广泛应用于日常生活和工业生产中。
随着电子技术的飞速发展,电子万年历以其准确、方便、易操作等特点逐渐取代了传统的机械万年历。
基于MCS-51单片机的万年历设计,不仅满足了人们对时间精确计量的需求,同时也为单片机技术在时间测量领域的应用提供了新的思路。
1.2 MCS-51单片机的介绍MCS-51单片机是美国Intel公司推出的一种高性能的8位单片机,具有较高的性价比、丰富的指令集和灵活的I/O端口。
由于其结构简单、易于编程和扩展,MCS-51单片机被广泛应用于工业控制、家用电器、智能仪表等领域。
1.3 论文结构及内容安排本文主要分为七个章节,首先介绍万年历的背景与意义以及MCS-51单片机的基本情况;其次,阐述万年历的原理与设计要求,并提出基于MCS-51单片机的万年历设计方案;接着,详细介绍MCS-51单片机的硬件设计和软件设计;然后,进行系统调试与性能测试;在此基础上,探讨万年历的实际应用与拓展;最后,总结全文并指出创新与不足之处,展望未来的研究方向。
2. 万年历的原理与设计2.1 万年历的基本原理万年历是一种可以显示公历日期、时间,并且可以自动调整闰年和平年的日历。
它的核心是通过算法处理时间的流逝,计算出当前的日期。
基本原理涉及以下几个核心概念:•时间单位:秒、分、时、日、月、年•时间算法:通过累计秒数,进行时、日、月、年的进位处理•闰年规则:四年一闰,百年不闰,四百年再闰2.2 万年历的设计要求在设计万年历时,需要遵循以下要求:•准确性:确保时间显示准确无误•可靠性:系统稳定运行,适应不同的环境条件•易用性:用户界面友好,操作简便•经济性:在满足功能要求的前提下,尽可能降低成本2.3 基于MCS-51单片机的万年历设计方案基于MCS-51单片机的万年历设计主要包括以下几个部分:2.3.1 时间计算模块利用单片机内部的定时器,以秒为单位递增计数,通过编写中断服务程序来处理时间进位,实现时、分、秒的计算。
基于STM32单片机的万年历设计毕业设计论文
万年历是一种可以显示年、月、日、星期的电子设备,广泛应用于日常生活和办公场所。
本文将介绍一个基于STM32单片机的万年历的设计思路和实现过程。
首先,我们需要明确设计目标。
在这个项目中,我们的目标是使用STM32单片机开发一个功能齐全、易于操作的万年历。
具体地说,这个万年历应该能够显示当前的年、月、日和星期,并且能够进行日期的加减操作,同时应该具备一些辅助功能如闹钟设置、倒计时等。
接下来,我们需要进行硬件设计。
首先需要选择适当的显示屏,比如常见的LCD或OLED屏幕。
然后,我们需要选择合适的按键和外部触发器,用于用户的交互输入。
同时,还需要添加一些必要的接口,如USB接口用于数据传输和维护。
在软件设计方面,我们需要定义合适的数据结构来存储日期、时间、闹钟等信息。
同时,需要编写相应的程序来实现日期的显示和更新、日期的加减、闹钟的设置等功能。
在实现倒计时功能时,我们可以使用定时器中断来实现精确的计时。
此外,为了提高用户体验,我们可以添加一些额外的功能。
比如,我们可以为万年历设计一个简洁美观的用户界面,考虑使用图形库绘制用户界面元素。
同时,可以添加一些实用的功能如温湿度监测、天气预报等。
最后,在整个开发流程结束后,我们需要进行集成测试和调试,确保万年历的各项功能正常运行。
并且,我们还可以考虑为万年历添加一些优化和改进措施,如增加存储容量、优化节能技术等。
综上所述,基于STM32单片机的万年历设计主要涉及硬件设计和软件设计两个方面。
通过精心的设计和合理的实现,我们可以开发出一款功能丰富、易于使用的万年历产品,满足用户的各种需求。
基于51单片机万年历-毕业设计
摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。
它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能。
本系统选用DALLAS公司生产的日历时钟芯片DS1302来作为实时时钟芯片,为本系统提供详细的年、月、日、星期和小时、分钟等时间信息。
数字万年历采用直观数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有闹钟和时间校准等功能。
该电路采用AT89C52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。
本系统硬件部分由AT89S52单片机、DS1302时钟芯片、1062液晶显示器、DS18B20温度测量、键盘、蜂鸣器系统等部分构成。
软件部分在keil环境下用C51语言编写,包括时间设置、时间显示、定时设置、定时闹钟、温度显示。
没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。
在编写程序过程中发现以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成了程序部分的编写。
文章后附有电路原理图、程序清单,以供读者参考。
因水平有限,难免有疏落不足之处,敬请老师和同学能给与批评指正。
关键词:时钟芯片DS1302;温度采集DS18B20;单片机AT89S52;液晶显示1602目录第一章概述 (4)§1.1实时时钟研究的背景及意义 (4)§1.2论文主要研究内容 (4)1.2.1 系统设计实现的目标 (4)1.2.2 系统的总体设计 (4)第二章硬件电路设计 (6)§2.1单片机最小系统 (6)§2.2时钟芯片电路 (7)2.2.1 时钟芯片引脚介绍 (7)2.2.2时钟芯片DS1302,其内存空间介绍 (8)2.2.3 4个控制寄存器介绍 (8)§2.4温度采集电路设计 (10)2.4.1 DS18B20的主要特性 (10)2.4.2 DS1820的基本操作指令 (10)2.4.3 温度测量的步骤 (11)2.4.4 DS18B20的操作时序 (11)§2.5 1602LCD液晶显示屏 (12)2.5.1 1602字符型LCD简介 (12)2.5.2 1602引脚功能说明 (13)2.5.3 1602LCD的指令说明及时序 (13)2.5.4 1602LCD的RAM地址映射及标准字库表 (15)2.5.5 1602LCD的一般初始化(复位)过程 (17)2.4.6 1602LCD的电路连接 (17)§2.6 蜂鸣器闹铃电路 (18)§2.7 按键调整电路 (18)§2.8 电源模块 (19)第三章软件部分设计 (20)§3.1 主程序流程 (20)§3.2 时间设置子程序流程 (20)§3.3 闹钟设置子程序流程 (21)§3.4 程序设计问题 (22)3.4.1 按键抖动问题 (22)3.4.2 蜂鸣器设置 (22)3.4.3 液晶显示的设置 (22)3.4.4 中断设置 (22)3.4.5 时钟芯片设置 (22)第四章开发工具Proteus与Keil (25)2.1 Proteus软件 (25)2.1.1 Proteus简介 (25)2.1.2 4大功能模块 (25)2.1.3 ISIS智能原理图输入系统 (27)2.2 Keil软件 (28)2.2.1 Keil软件简介 (28)2.2.2 Keil软件调试功能 (28)2.3本章小结 (29)结束语 (30)致谢词 (31)参考文献 (32)附件1..................................................................................... 错误!未定义书签。
单片机万年历毕业设计
单片机万年历是一种非常实用的电子设备,它可以准确地显示日期和时间,并且可以自动调整闰年和月份的天数。
在现代社会,随着人们生活水平的提高和科技的发展,电子设备在人们的日常生活中发挥着越来越重要的作用。
在这种背景下,单片机万年历应运而生,它不仅可以帮助人们准确地了解日期和时间,还可以提醒人们重要的日程安排。
单片机万年历的设计原理是通过单片机的控制,实现对时钟芯片的读取和控制,从而实现准确的时间显示。
同时,通过编程控制,还可以实现闰年和月份天数的自动调整功能。
为了实现更加精确的时间显示,可以通过连接网络进行时间同步,从而保证万年历的准确性。
单片机万年历的设计需要考虑多个方面,包括硬件设计和软件设计。
在硬件设计方面,需要选择适合的单片机和时钟芯片,同时还需要设计合适的电路板和显示屏,以及其他必要的外围电路。
在软件设计方面,需要编写相应的程序代码实现对时钟芯片的读取和控制,并实现闰年和月份天数的自动调整功能。
此外,还可以添加一些其他功能,如闹钟、倒计时等,以增加万年历的实用性和娱乐性。
在进行单片机万年历的毕业设计过程中,需要注意以下几个关键点。
首先,要确保硬件电路的正常工作,包括各个元件的连接和供电的稳定性。
其次,要确保编写的软件程序能够准确地读取和显示时间,并能够自动调整闰年和月份天数。
再次,要确保设计的功能实用性和稳定性,如闹钟功能的准点提醒、倒计时功能的精确计算等。
最后,还需要注意外观的美观性和易用性,以增加用户的满意度和使用体验。
综上所述,单片机万年历作为一种实用的电子设备,在现代社会中具有广泛的应用前景。
通过对硬件和软件的设计,可以实现准确的时间显示和自动调整功能,从而方便人们的日常生活和工作。
在进行单片机万年历的毕业设计过程中,需要注重电路的稳定性和软件的功能完善性,并通过实际测试和调试,不断优化设计,以实现更好的效果。
希望通过这篇文献,能够为单片机万年历的毕业设计提供一些参考和帮助。
单片机课程设计--基于51单片机的万年历
单片机课程设计--基于51单片机的万年历单片机课程设计基于 51 单片机的万年历一、引言在现代生活中,时间的准确记录和显示对于我们的日常生活和工作具有重要意义。
万年历作为一种能够同时显示年、月、日、星期、时、分、秒等信息的设备,给人们带来了极大的便利。
本次课程设计旨在利用 51 单片机实现一个简单实用的万年历系统。
二、系统设计方案(一)硬件设计1、单片机选型选择经典的 51 单片机,如 STC89C52 单片机,其具有性能稳定、价格低廉、资源丰富等优点,能够满足本设计的需求。
2、显示模块采用液晶显示屏(LCD1602)作为显示设备,能够清晰地显示数字和字符信息。
3、时钟芯片选用DS1302 时钟芯片,它可以提供精确的实时时钟数据,包括年、月、日、星期、时、分、秒等。
4、按键模块设置三个按键,分别用于调整时间、选择调整项(年、月、日、时、分、秒等)以及切换显示模式(正常显示和设置模式)。
(二)软件设计1、主程序流程系统初始化后,首先读取 DS1302 中的时间数据,并将其显示在LCD1602 上。
然后进入循环,不断检测按键状态,根据按键操作进行相应的时间调整和显示模式切换。
2、时间读取与显示程序通过与 DS1302 进行通信,读取实时时间数据,并将其转换为适合LCD1602 显示的格式进行显示。
3、按键处理程序检测按键的按下状态,根据不同的按键执行相应的操作,如调整时间、切换显示模式等。
三、硬件电路设计(一)单片机最小系统单片机最小系统包括单片机芯片、晶振电路和复位电路。
晶振电路为单片机提供时钟信号,复位电路用于系统初始化时将单片机的状态恢复到初始值。
(二)显示电路LCD1602 显示屏通过数据总线和控制总线与单片机相连。
数据总线用于传输要显示的数据,控制总线用于控制显示屏的读写操作和显示模式。
(三)时钟电路DS1302 时钟芯片通过串行通信接口与单片机进行通信。
单片机通过发送特定的指令和数据,对 DS1302 进行读写操作,获取或设置时间信息。
基于51单片机的电子万年历系统的设计
参考内容
一、引言
单片机是现代电子设备中的重要组成部分,广泛应用于各种嵌入式系统设计。 51单片机作为一种经典的微控制器,因其结构简单、易于编程、可靠性高等优点, 被广泛用于各种领域,如智能家居、工业控制、物联网等。万年历作为一种日常 生活中常见的计时工具,具有显示日期、时间、星期、月份等功能,对于人们的 日常生活和工作有着重要的作用。本次演示将介绍一种基于51单片机的万年历设 计。
二、系统设计
1、硬件设计
基于51单片机的万年历设计需要硬件和软件的配合实现。硬件部分主要包括 51单片机、显示模块、按键输入模块和时钟芯片等。其中,51单片机作为主控制 器,负责处理各种数据和控制信号;显示模块用于显示日期、时间等信息;按键 输入模块用于用户输入操作;时钟芯片则为系统提供实时时间。
基于51单片机的电子万年历系 统的设计
目录
01 一、概述
03 三、软件设计
02 二、硬件设计 04 四、系统调试与优化
目录
05 五、应用场景及前景
07 参考内容
06 六、结论
随着科技的不断发展,单片机已经成为现代于51单片机的电子万年历系统设计具有广泛的实际应用价值。 本次演示将详细介绍这种系统的设计过程和实现方法。
感谢观看
首先需要进行硬件搭建,包括选择合适的单片机、显示模块、按键输入模块 和时钟芯片等,并将其连接起来。需要注意的是,在搭建硬件时需要考虑各个模 块之间的接口和连接方式,以确保系统能够正常工作。
2、软件编程
在硬件搭建完成后,需要进行软件编程。首先需要进行系统初始化,包括对 单片机进行初始化和对显示进行清屏处理。然后需要进行按键处理和时钟数据处 理,以实现用户输入和实时时间的读取。最后需要进行显示处理,将处理后的数 据显示到显示模块上。
电子万年历毕业设计(基于AT89C51单片机和DS1302时钟芯片)
鹤壁职业技术学院毕业设计论文论文题目:电子时钟学院:机电工程学院专业:电气自动化班级:2009级01班学生姓名:贾贯可学号:0902511005 指导教师:司新生2011年10月 18 日目录摘要 (3)绪论 (5)第1章设计要求与方案论证 (7)1.1 引言 (7)1.2 功能要求 (7)1.3方案论证 (7)第2章系统硬件电路设计 (11)2.1 电路设计 (11)2.2 系统硬件概述 (15)2.3主要单元电路的设计 (15)第3章系统的软件设计 (22)3.1程序设计 (22)3.2程序设计流程图 (22)第4章结束语 (24)附录一(电路原理图)…………………………………………..……………附录二(程序清单) (27)摘要随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子钟,不断研究、创新。
为了在观测时间,能够了解与人类密切相关的信息,比如星期、日期等,电子时钟诞生了,它集时间、日期、星期等功能于一身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
该电子时钟主要采用STC89C52RC单片机作为主控核心,由DS1302时钟芯片提供时钟、LED动态扫描显示屏显示。
STC89C52RC单片机是由Atmel公司推出的,功耗小,电压可选用4~6V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小;数字显示是采用的LED显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度等信息。
此外,该电子时钟还具有时间校准等功能。
关键词:时钟电路;时钟芯片DS1302;LED动态扫描;单片机STC89C52RC;绪论随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。
单片机课程设计论文---万年历
单片机课程设计论文设计题目:基于DS12CR887时钟芯片的电子万年历目录:前言---------------------------------------------------P3摘要---------------------------------------------------P4正文---------------------------------------------------P4-P9(1)设计方案的对比、选择及确定------------------------------P4-P5(2)设计思路------------------------------------------------P5-P6(3)单元电路设计--------------------------------------------P6-P7(4)程序设计流程--------------------------------------------P8-P9(5)课程设计心得--------------------------------------------P10-P13 参考文献-----------------------------------------------P14 附录---------------------------------------------------P15(1)附录一原器件清单----------------------------------------P15(2)附录二系统设计原理图------------------------------------P16(3)附录三系统实物图----------------------------------------P17(3)附录四源程序清单----------------------------------------P18-P31前言随着电子技术的不断发展,单片机技术在设计中所体现在出来的优势越来越明显,它不仅是电子信息类专业的一个重要部分,而且在其它类专业工程中也是不可缺少的。
基于51单片机的数码管万年历
宜宾学院物理与电子工程学院课题论文单片机(期末)课程设计题目:基于51单片机的数码管万年历院(系):物理与电子工程学院专业年级: 2012级硕勋励志班指导老师:****名:***学号: *********2014年6月目录摘要 (2)第一章绪论 (3)1、1 万年历的背景 (3)1、2 万年历的应用 (4)第二章设计原理 (5)第三章实现过程 (6)3、1 方案选择 (6)3、2 系统框图 (6)3、3 说明 (6)3、4 电路模块说明 (7)3、5 软件设计模块 (8)3、5、1 万年历的算法 (8)3、5、2 时间处理 (9)3、5、3 日期处理 (10)第四章最终结果 (11)第五章收获与体会 (13)5、1 设计过程中遇到的问题及解决方法 (13)5、2 收获与体会 (13)致谢 (14)参考文献 (15)摘要随着人们时间观念的增强,万年历被广泛应用于生活中的各种场合。
现在所使用的万年历,即:包括若干年或适用于若干年的历书。
万年只是一种象征,表示时间跨度大。
本次课程设计中制作的“基于51单片机的数字万年历”便是以电子产品为载体的基于AT89C51单片机在数码管上显示(公历)年月日、时分秒功能的简易万年历。
利用AT89C51单片机内部定时/计数器T0的模式2(8位自动重装初值)产生一个时间为250us的信号,再计数4000次产生1S的时间后发出中断,再由单片机进行数据处理后,送人数码管(共阴极数码管)显示(动态显示)。
关键字:51单片机、万年历、数码管、动态显示、定时/计数T0第一章绪论1、1 万年历的背景万年历是我国古代传说中最古老的一部太阳历。
为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。
相传,在很久以前,有个名叫万年的青年,看到当时节令很乱,想把节令定准。
一天,他上山砍柴,坐在树阴下休息,树影的移动启发了他,他设计了一个测日影计天时的晷仪。
可是,天阴雨雾,影响测量。
后来,山崖上的滴泉引起了他的兴趣,他又动手做了一个五层漏壶。
基于单片机的万年历设计
基于单片机的万年历设计随着现代科技的发展,电子设备已经成为人们生活中必不可少的一部分。
在这个信息爆炸的时代,人们对于时间的重视变得前所未有的强烈。
为了满足人们对时间的需求,开发出一款基于单片机的万年历是非常实用和有意义的。
本文将介绍基于单片机的万年历的设计原理、功能和优势。
一、设计原理基于单片机的万年历的设计原理是将传统的机械万年历通过电子元件嵌入到单片机中,通过编程控制显示当天的日期、星期、月份和年份,同时还能显示闰年、节假日等特殊信息。
这样一来,人们只需要通过触摸按钮,就可以轻松查看到当前日期的相关信息,而无需再翻看纸质万年历。
二、功能介绍基于单片机的万年历的功能非常强大,以下是其主要功能的介绍:1.日期显示:万年历能够以数字的形式直观地显示当天的日期,包括年、月、日。
2.星期显示:万年历可以精确地显示当天是星期几,帮助人们更好地安排日程。
3.月份显示:万年历还可以显示当月的名字,让人们轻松记忆每个月的名称和顺序。
4.年份显示:万年历还能够显示当前的年份,方便人们记录时间和纪念重要的年份。
5.闰年判断:万年历能够判断每个年份是否为闰年,避免人们在自己计算时出现错误。
6.节假日显示:万年历还能够预设节假日,并在节假日到来时进行提醒,帮助人们更好地安排休息和旅行计划。
除了以上功能之外,基于单片机的万年历还可以根据不同地区的需要进行个性化设置,比如显示不同的节日和纪念日,增强用户体验。
三、设计优势基于单片机的万年历相比传统的纸质万年历具有以下几个优势:1.便携性:基于单片机的万年历体积小巧,可以随身携带,随时查看日期。
而传统的纸质万年历往往比较笨重,不易携带。
2.准确性:基于单片机的万年历通过编程控制,可以实现日期的精确显示,避免了人为计算的误差。
而纸质万年历可能会受到印刷质量和人工记录错误的影响,准确性不如电子万年历。
3.交互性:基于单片机的万年历可以通过按钮进行交互,方便用户使用和操作。
用户可以自由切换显示模式,查询不同日期相关信息。
基于51单片机电子万年历设计
一、引言电子万年历是一种以数字形式实时显示日期、星期和时间等信息的电子设备。
在现代人日常生活中,万年历是一种常见的小型电子产品。
本文将基于51单片机设计一款简单实用的电子万年历。
二、设计原理1.时钟模块:采用DS1302实时时钟模块。
DS1302通过三线式串行接口与51单片机进行通信,可以实时获取日期、星期和时间等信息。
2.显示模块:使用数码管显示日期、星期和时间等信息。
共使用四块共阳数码管,采用数码管模块进行驱动,通过IO口进行数据传输。
3.按键模块:设计四个按键,分别为设置、上、下和确定。
通过按键来调整日期、星期和时间等信息。
4.闹钟功能:加入闹钟功能,可以设定闹钟时间,到达设定时间时,会有提示音。
5.温湿度传感器:加入温湿度传感器,可以实时监测环境温湿度,并在数码管上进行显示。
6.外部电源:由于51单片机工作电压较高,需要使用外部电源进行供电。
三、硬件设计1.电源电路:使用稳压电源芯片LM7805进行5V稳压,将稳压后的电压供给单片机和各个模块。
2.时钟模块:DS1302模块与单片机通过串行通信进行连接。
时钟模块上的时钟信号、数据信号和复位信号分别与单片机的IO口相连。
3.数码管显示模块:共有四块共阳数码管,通过595芯片进行驱动。
单片机的IO口与595芯片的串行、时钟和锁存引脚相连,595芯片的输出引脚与数码管的各段相连。
4.按键模块:通过电阻分压来实现按键功能,按下按键时,相应的IO口会被拉低。
5.闹钟功能:使用蜂鸣器来产生提示音,通过IO口与单片机相连。
6.温湿度传感器:使用DHT11温湿度传感器。
传感器的数据引脚通过IO口与单片机相连。
四、软件设计1.时钟显示:通过DS1302获取日期、星期和时间等信息,将其转化为数码管需要的编码格式,并通过595芯片进行显示。
2.按键操作:对按键进行扫描,根据按键的不同操作进行相应的处理。
例如按下设置键进行日期和时间的设置,按下上下键进行数值的变化,按下确定键进行数值的确认。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机技术课程设计说明书摘要本设计是基于51系列的单片机设计的电子万年历,可以显示年月日时分秒及星期等功能。
设计过程中不但对单片机的理论基础而且外围扩展知识都进行了比较全面的准备。
具备三个功能:(1)显示年月日时分秒及星期(2)具有可调整日期和时间功能(3)具有闹钟设置功能关键词单片机;AT89S52芯片;矩阵式键盘AbstractThe design is based on 51 series of microcontrollers designed electronic calendar, you can show date and time every second week, and other functions. The design process, not only the theoretical basis for microcontroller and peripheral expansion of knowledge and have conducted a more comprehensive preparation.Has three functions:(A) shows the date when the minutes and seconds, and weeks(2) The date and time functions with adjustable(3) has set the alarm clock functionKey words:SCM; AT89S52 chip; Matrix Keyboard目录1设计任务及方案 (1)1.1设计课题任务 (1)1.2 功能要求 (1)1.3设计课题总体方案介绍及工作原理说明 (1)1.3.1 总体方案介绍 (1)1.3.2 工作原理说明 (1)2万年历硬件系统的设计 (2)2.1 万年历硬件系统各模块功能简要介绍 (2)2.1.1 系统原理框图 (2)2.1.2 单片机最小系统 (2)2.1.3显示电路 (2)2.1.4行列式键盘 (3)2.2万年历电路原理图、P C B图、元器件布局图 (3)2.3 设计元器件清单 (3)3万年历软件系统的设计 (4)3.1万年历使用单片机资源的情况 (4)3.2万年历软件系统各模块功能简要介绍 (4)3.2.1显示模块 (4)3.3设计课题软件系统程序流程框图 (5)3.4万年历程序清单 (7)4仿真、万年历说明、误差分析及总结 (8)4.1 设计结论及万年历使用说明 (8)4.1.1时间设置 (8)4.2 PROTEUS软件仿真 (8)4.3误差分析及调整 (8)4.4设计体会 (8)4.5教学建议 (8)参考文献 (9)致谢 (10)附录 (11)1 设计任务及方案1.1 设计课题任务设计一个具有日期.时间.星期功能的电子钟,并可以调整时间和设置闹钟等功能。
1.2 功能要求正确显示时间和日期,具备准确的计时功能,并且有启动和暂停功能。
使用行列式键盘来控制它的启动、暂停和修改日期和时间,以达到准确无误地计时和显示日期和时间的目的。
用FYD128640402液晶模块的自带字库实现,显示方便,大小适宜,显示程序简单等特点。
1.3 设计课题总体方案介绍及工作原理说明1.3.1 总体方案介绍这次设计选用的是单片机(AT89S52)来实现电子万年历的功能。
共具备两个功能:(1)显示年月日及分秒信息(2)具有可调整日期和时间功能。
该电子万年历能够成功实现时钟运行,调整功能,且精确度经调试一天的误差在2S内。
1.3.2 工作原理说明将AT89S52芯片作为内核,运用单片机定时器功能,当所设定时间截止,执行中断程序,实现时钟的调整。
通过P0口输送数据到液晶显示模块使它同步显示时钟的变化。
判键执行子程序,通过矩阵式键盘调节时间和设置闹钟。
当闹钟设定时间等于同步时间,蜂鸣器持续响60秒。
通过反复测试有24小时的时间误差,每天12点自动调整误差,从而达到精准计时的目的。
2 万年历硬件系统的设计2.1 万年历硬件系统各模块功能简要介绍2.1.1 硬件系统原理框图如图2.1所示:图2.1系统原理框图2.1.2 单片机最小系统AT89S52 是标准的40引脚双列直插式集成电路芯片,有4个I/O口分别为P0,P1,P2,P3。
MCS-51单片机共有4个8位的I/O口分别为P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。
2.1.3 显示电路接口信号说明如表2所示:序号符号引脚说明型号符号引脚说明1 V SS 电源地DB512DataI/O2 V DD 电源正极DB613DataI/O3 V O 液晶显示偏压输入DB714DataI/O4 R S 数据/命令选择端CS115片选IC1信号5 R /W 读写控制信号CS216片选IC2信号6 E 使能端RST17复位端7 D B0 DataI/O VEE18负电源输出8 D DataI/O N1空脚2.1.4 行列式键盘在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在这次设计中一共采用16个按键,直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。
2.2 万年历原理图.PCB图.元器件布局图原理图、PCB图及元器件布局图见附录1,2,32.3 元器件清单元器件清单见附录43 万年历软件系统的设计3.1 万年历使用单片机资源的情况本设计将P1口作为行列式键盘与单片机之间的接口,用P0口作为液晶显示的数据传送口,用定时计数器1作为定时中断。
3.2 万年历软件系统各模块功能简要介绍3.2.1 显示模块基本显示模块设计的重点是由显示代码取得相应的段码、显示段码数据的串行发送。
FYD128640402显示模块的时序图(读操作时序和写操作时序)如图3.1,3.2所示:图3.1 显示模块读操作时序图图3.2 显示模块写操作时序图3.2.2 行列式键盘行列式键盘的按键识别方法称为行扫描法,行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法。
判断键盘中有无键按下,检查方法:将全部行线置低电平,然后检测列线的状态。
只要有一列的电平置为低,则表示键盘中有键按下,且闭合的键位于低电平与4根行线相交叉的4按键位置。
若所有列线均为高电平,则可证明无键按下。
判断闭合键所在的位置有无键按下,即可确定具体闭合键。
其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线均为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列显示为低电平,则该列线与置为低电平的行线交叉处的按键即为闭合的按键。
3.3 软件系统程序流程框图系统程序流程框图包括主程序流程框图,时间调整流程图和行列式键盘流程图,分别如图3.3,3.4,3.5所示:图3.3 主程序流程图图3.4 时间调整程序框图图3.5 行列式键盘程序流程框图3.4 程序清单见附录54 设计结论、仿真结果、误差分析、教学建议4.1 设计结论及使用说明本次设计万年历在经过反复测试后,功能基本完成。
4.1.1 时间设置开机按C键时钟开始计时,按D键停止;按年加一;按1则年份减一;按2月份数加一;按3则月份减一;按4天数加一;按5则天数减一;按6小时数加一;按7则小时数减一;按8分钟加一;按9分钟减一;按A星期加一;按B 星期减一。
按C则复位重新开始计时。
4.2 Proteus仿真结果对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,显示结果准确无误,仿真结果非常成功。
4.3 误差分析该电子万年历能够成功实现时钟运行,调整功能,且精确度经调试一天的误差在2S内。
4.4 设计体会通过这两周的课程设计,我学到了不少的知识。
加深了我对于单片机和数字电路的认识,相信在以后的学习和工作中碰到这些基础的元器件我会更加得心应手。
本课程设计的重要在于原理图的设计、PCB的生成和硬件的调试,和程序的编写。
设计过程中,我很认真地对待每一个细节,希望自己能做得更好。
希望今后还有这样的机会,能够让我学到更多的知识。
4.5 教学建议经过上学期的单片机课程学习,我学到了很多以前未接触过的新知识,根据个人学习情况,对单片机的教学提出两点建议:一、单片机课程的指令繁多,容易混淆,建议王老师在讲解指令系统时,指出这些指令的区别和注意事项,发一些资料给我们参考与学习,多举实例,进一步激发我们学习这门课程的兴趣。
二、上课时要多提问,给予每位同学同等的机会回答,学到更多的知识。
参考文献[1]李广弟,朱月秀,冷祖祁.单片机基础[M].北京:北京航空航天大学版社,2008.12 Li guangdi,Zhu yuexiu,Len zhuqi. Microcontroller based[M].Beijing: Beijing University of Aeronautics and Astronautics Press,2008.12(in Chinese)[2]马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学版社,2008.2 Ma zhongmei.SCM C-Language Application Programming[M].Beijing: Beijing University of Aeronautics and Astronautics Press,2008.2(in Chinese)[3]B2B99.矩阵式键盘的结构及工作原理[EB/OL]/hyzs/dz/10936.htm [4]曹巧媛,单片机原理及应用[M],北京:电子工业出版社,1997.7Cao qiaoyuan.SCM Principle and Application[M].Beijing: Electronic industry Press,1997.7(in Chinese)致谢大学三年已经进行过3次课程设计,经过老师的指导和自己的设计,对这次单片机课程设计万年历充满信心。
在本次设计过程中,虽然遇到一些问题,最终在全组人员的努力下成功解决。
在这里我衷心感谢我们的组长胡代军同学,在他的带领和引导之下,我们的设计才取得了圆满的成功。
他学习刻苦勤奋,助人为乐给我们的设计提供很大的帮助,此次设计顺利完成。
最后要感谢我们的课程设计指导老师王韧,由于他的认真负责,使得我们在整个设计过程中不敢有丝毫的怠慢和松懈,不仅在设计过程中学会了怎样将理论与实践相结合,而且懂得了做人要严谨,做事要认真。
#include<AT89X51.H>#define uint unsigned int#define uchar unsigned charsbit rs=P2^0;sbit rw=P2^1;sbit psb=P2^3;sbit ret=P2^5;sbit E=P2^2;void clear(void);void lcd_ini(void);void delay(uchar m);void display();void wrda(uchar da);void busy(void);void wrir(uchar com);void ini1(void);void display_y(void);void ini(void);void process(void);void change(void);void week1(void);void start(void); uchardisdata[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xc4,0xea,0xd4,0xc2,0xc8,0xd5,0x3a,}; // 0--9,年,月,日,: 的液晶代码uchar pp[]={0,0,0,0,10,11,0,0,12,13,0,0,14,15,0,0,16,0,0,16,0,0};// 年月日时分秒数组uchar a[]={0xd0,0xc7,0xc6,0xda,0,0}; // 星期数组uchar yf[]={32,29,32,31,32,31,32,32,31,32,31,32}; // 每月天数uint year=2009,p=0,k=0;ucharmonth=10,day=23,hour=08,minite=08,second=0,counter=0,c=0,week=1;void main(void){ lcd_ini();ini();clear();ini1();TR0=0;start();process();while(1){ display();}}void lcd_ini(void) //液晶复位{ ret=0;delay(10);ret=1;delay(2);psb=1;delay(10);}void ini(void) //液晶初始化{ wrir(0x34);wrir(0x30);wrir(0x01);wrir(0x06);wrir(0x0c);}void wrir(uchar com) //液晶写指令{ busy();rs=0;rw=0;P0=com;E=1;delay(50);E=0;}void busy(void) //液晶判忙{ rw=1;rs=0;P0=0xff;E=1;while(P0>>7);E=0;}void wrda(uchar da) //液晶写数据{ busy();rs=1;rw=0;P0=da;E=1;delay(30);E=0;}void clear(void) //清屏{ wrir(0x01);wrir(0x34);wrir(0x30);}void delay(uchar ms) //延时{ uchar i;while(--ms){ for(i=0;i<120;i++);}}void ini1(void) //定时器初始化{ TMOD=0x01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;ET0=1;EA=1;}void start(void){ wrir(0x83);wrda(0xcd); //万wrda(0xf2);wrda(0xc4); //年wrda(0xea);wrda(0xc0); //历wrda(0xfa);}void process(void) // 年月日处理{ if(year%4==0) //润年判断进行二月天数处理 yf[1]=30;else yf[1]=29;pp[0]=year/1000%10;pp[1]=year/100%10;pp[2]=year/10%10;pp[3]=year%10;pp[6]=month/10%10;pp[7]=month%10;pp[10]=day/10%10;pp[11]=day%10;pp[14]=hour/10%10;pp[15]=hour%10;pp[17]=minite/10%10;pp[18]=minite%10;pp[20]=second/10%10;pp[21]=second%10;week1();display_y();}void week1(void) //星期处理{ switch(week){ case 1: a[4]=0xd2;a[5]=0xbb;break; //星期一 case 2: a[4]=0xb6;a[5]=0xfe;break; //星期二case 3: a[4]=0xc8;a[5]=0xfd;break; //星期三case 4: a[4]=0xcb;a[5]=0xc4;break; //星期四case 5: a[4]=0xce;a[5]=0xe5;break; //星期五case 6: a[4]=0xc1;a[5]=0xf9;break; //星期六case 7: a[4]=0xc8;a[5]=0xd5;break; //星期日 }}void display_y(void) // 显示程序{ uchar j,h,q;wrir(0x91); // 显示年月日for(j=0;j<14;j++)wrda(disdata[pp[j]]);wrir(0x8a); //显示时分秒for(h=14;h<22;h++)wrda(disdata[pp[h]]);wrir(0x9b); //显示星期for(q=0;q<6;q++)wrda(a[q]);}uchar key(void) //判键{ uchar H,L;P1=0xf0;if((P1&0xf0)!=0xf0){ delay(30);if((P1&0xf0)!=0xf0){ H=0xfe;while((H&0x10)!=0){ P1=H;if((P1&0xf0)!=0xf0){ L=(P1&0xf0)|0x0f;return((~H)|(~L));}else H=(H<<1)|0x01;}}}return(0);}void display(void) //键值处理{ uchar x;x=key();switch(x){ case 0x11: year++; if(year==2100) year=2009; while(1){ process(); if(P1^0==1) break;};break; //年加一 case 0x21: year--; if(year==2000) year=2009; while(1){ process(); if(P1^0==1) break;};break; //年减一 case 0x41: month++; if(month==13) month=1; while(1){ process(); if(P1^0==1) break;};break; //月加一 case 0x81: month--; if(month==0) month=12; while(1){ process(); if(P1^0==1) break;};break; //月减一 case 0x12: day++; if(day==yf[month-1]) day=1; while(1){ process(); if(P1^0==1) break;};break; //日加一 case 0x22: day--; if(day==0) day=yf[month-1]-1;while(1){ process(); if(P1^0==1) break;};break; //日减一 case 0x42: hour++; if(hour==24) hour=0;while(1){ process(); if(P1^0==1) break;};break; //时加一 case 0x82: hour--; if(hour==0) hour=23;while(1){ process(); if(P1^0==1) break;};break; //时减一 case 0x14: minite++; if(minite==60) minite=0;while(1){ process(); if(P1^0==1) break;};break; //分加一 case 0x24: minite--; if(minite==0) year=59;while(1){ process(); if(P1^0==1) break;};break; //分减一 case 0x44: week++; if(week==8) week=1;while(1){ process(); if(P1^0==1) break;};break; //星期加一 case 0x84: week--; if(week==0) week=7;while(1){ process(); if(P1^0==1) break;};break; //星期减一case 0x18: TR0=1; while(1) {process();if(key()==0x28) break;}; TR0=0;;break; //C键开始计时;D键暂停调节时间}}void Timer_0(void)interrupt 1 using 2 //中断处理{ TH0=(65536-46080)/256;TL0=(65536-46080)%256;counter++;if(counter==20){ counter=0;second++;if(second==60){second=0;minite++;if(minite==60){minite=0;hour++;if(hour==24){ hour=0;day++;week++;if(week==8)week=1;if(day==yf[month-1]){ day=1;month++;if(month==13){ month=1;year++;if(year==2100){ year=2009;}}}}}}}}。