单片机电子万年历的设计

合集下载

基于单片机的万年历设计

基于单片机的万年历设计

基于单片机的万年历设计一、系统总体设计基于单片机的万年历系统主要由单片机控制模块、时钟模块、显示模块、按键模块和电源模块等组成。

单片机控制模块是整个系统的核心,负责处理和协调各个模块之间的数据传输和控制信号。

通常选用具有较高性能和稳定性的单片机,如 STC89C52 等。

时钟模块用于提供准确的时间信息,常见的有 DS1302 等芯片,能够实现年、月、日、时、分、秒的精确计时。

显示模块用于将时间等信息直观地展示给用户,可采用液晶显示屏(LCD)或数码管。

LCD 显示效果清晰、美观,但成本相对较高;数码管则价格低廉,显示简单明了。

按键模块用于用户对万年历进行设置和操作,如调整时间、设置闹钟等。

电源模块为整个系统提供稳定的电源供应,保证系统的正常运行。

二、硬件设计1、单片机最小系统单片机最小系统包括单片机芯片、晶振电路和复位电路。

晶振电路为单片机提供时钟信号,保证其正常工作;复位电路则用于在系统出现异常时将单片机恢复到初始状态。

2、时钟模块电路DS1302 时钟芯片通过串行方式与单片机进行通信,其引脚连接到单片机的相应 I/O 口。

通过对 DS1302 进行读写操作,可以获取和设置时间信息。

3、显示模块电路若采用 LCD1602 液晶显示屏,其数据线和控制线与单片机的 I/O 口相连。

通过编程控制单片机向 LCD 发送指令和数据,实现时间等信息的显示。

4、按键模块电路通常使用独立按键,将按键的一端接地,另一端连接到单片机的I/O 口,并通过上拉电阻保证在按键未按下时引脚处于高电平。

当按键按下时,引脚电平被拉低,单片机通过检测引脚电平的变化来判断按键的操作。

三、软件设计软件设计主要包括主程序、时钟模块驱动程序、显示模块驱动程序和按键处理程序等。

主程序负责初始化各个模块,并进行循环检测和处理。

在循环中,不断读取时钟模块的时间数据,然后通过显示模块进行显示,并检测按键是否有操作。

时钟模块驱动程序根据 DS1302 的通信协议,实现对时钟芯片的读写操作,从而获取和设置时间。

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

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

基于单片机的电子万年历设计一、概述随着科技的快速发展和人们对生活品质的追求,电子设备在日常生活中扮演着越来越重要的角色。

电子万年历作为一种集日期、时间显示于一体的实用电子产品,已经深入到人们的日常生活和工作中。

传统的机械式日历已经无法满足现代人对时间精确性和功能多样性的需求,基于单片机的电子万年历设计应运而生,成为了当前研究的热点之一。

基于单片机的电子万年历设计,旨在利用单片机(如STC89CAT89C51等)的强大计算和控制能力,结合液晶显示屏(LCD)、按键输入等外设,实现时间的准确显示、日期的自动更新、闹钟提醒、温度显示等多样化功能。

该设计不仅具有高度的集成性和可靠性,而且能够通过编程实现各种定制化的功能,满足不同用户的需求。

本文将对基于单片机的电子万年历设计进行详细的介绍和分析,包括设计思路、硬件组成、软件编程等方面。

通过本文的阅读,读者可以了解电子万年历的基本原理和设计方法,掌握单片机在电子万年历设计中的应用技巧,为实际的开发工作提供有益的参考和借鉴。

1.1 研究背景与意义随着科技的不断进步,人们日常生活和工作中对于时间的精度和便捷性的要求日益提高。

传统的机械式日历和简单的电子时钟已经无法满足现代生活的需求。

电子万年历作为一种集时间显示、日历查询、定时提醒等多功能于一体的电子装置,在日常生活、工作乃至科研领域都具有广泛的应用价值。

基于单片机的电子万年历设计,不仅可以提供准确的时间显示,还能实现复杂的日期计算、农历显示、节假日提示等功能,极大地提高了时间管理的效率和便捷性。

单片机作为一种集成度高、功耗低、价格适中的微型计算机,非常适合用于小型化、智能化的电子产品设计,如电子万年历。

本研究的意义在于,通过对基于单片机的电子万年历的设计研究,可以推动微型计算机技术和电子时钟技术的融合发展,提升电子产品的智能化水平,满足人们日益增长的生活和工作需求。

同时,该研究还可以为相关领域的技术人员提供参考和借鉴,推动电子万年历产品的不断创新和优化。

单片机电子万年历设计

单片机电子万年历设计

单片机原理与应用综合实验报告电子万年历设计专业班级:电子09-1 姓名:学号:时间:指导教师:20 年月日电子万年历电子09-1 舒绪榕摘要:本设计是电子万年历。

具备三个功能:能显示:年、月、日、时、分、秒及星期信息,并具有可调整日期和时间功能。

我选用的是单片机AT89C52来实现电子万年历的功能。

该万年历可实现时钟显示、日期星期显示以及日期时间更改等功能。

该电子万年历使用12MHZ晶振与单片机AT89C52相连接,通过软件编程的方法实现了以24小时为一个周期,同时显示小时、分钟和秒的要求。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据。

同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

电子万年历设计与制作可采用数字电路实现,也可以采用单片机来完成。

若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。

若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,这样一来就降低了硬件电路的复杂性,从而使得其成本降低,更适合我们大学生自主研发。

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

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

因此,采用单片机AT89C52原理制作的电子万年历,不仅仅在原理上能够成功实现计时等功能,也更经济,更适用,更符合我们实际生活的需要,对我们大学生来说也更加有用。

关键词:电子万年历52系列单片机时钟芯片FLASH存储器液晶显示1引言在日新月异的21世纪里,家用电子产品得到了迅速发展。

许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。

单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。

基于51单片机的电子万年历的设计

基于51单片机的电子万年历的设计
3.3
1.液晶显示方式。液晶显示效果出众,可以运用菜单项来方便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕会有明显的闪烁。而且由于61板的存储空间有限,液晶显示就不能与语音播抱程序同时实现。这些大大影响了电子万年历的性能。
2.相比液晶显示,8段数码管虽然操作比液晶显示略显繁琐,但可视范围十分宽,而且经济实惠,也不需要复杂的驱动程序。所以最后选择LED数码管显示方案。
256字节内部RAM。
电源控制模式
——时钟可停止和恢复;
——空闲模式;
——掉电模式。
6个中断源。
4个中断优先级。
4个8位I/O口。
全双工增强型UART。
3个16位定时/计数器,T0、T1(标准80C51)和增加的T2(捕获和比较)。
全静态工作方式:0~24MHz。
4.2 时钟电路 DS1302
4.2.1. DS1302的性能特性
如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc大于等于2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的引脚及内部结构图如图4.1所示,表4.1为各引脚的功能。
DS1302的控制字如图4.2所示。控制字节的最高位(位7)必须是逻辑1;如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取RAM数据。位5~1(A4~A0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。
2 功能要求
1.万年历能用数码管显示阳历年、月、日、星期、[小]时、分、秒并设置指定时间的闹铃。
2.数字式温度计要求测温范围-50~100°C,LED数码管直读显示。

单片机课程设计报告电子万年历

单片机课程设计报告电子万年历

单片机课程设计报告电子万年历单片机课程设计报告:电子万年历一、设计简介在本次单片机课程设计中,我们选择了电子万年历作为设计主题。

电子万年历是一种结合了数字电路、单片机技术和实时时钟(RTC)技术的电子产品,它具有显示年份、月份、星期、日、时、分、秒的功能,还可以根据用户的需求进行定时、闹钟、报时等功能。

二、硬件设计我们采用了基于8051内核的单片机作为主控芯片。

该单片机具有丰富的I/O 端口,适于实现各种复杂的输入输出操作。

此外,它还内置了定时器和中断控制器,可以很方便地实现实时时钟功能。

1.显示模块:为了方便用户查看时间信息,我们选用了LCD显示屏作为显示设备。

LCD屏具有功耗低、体积小、显示内容丰富等优点。

2.实时时钟(RTC)模块:我们采用了常用的DS1302芯片作为实时时钟模块。

该芯片可以提供秒、分、时、日、星期、月、年的信息,而且还有可编程的报警功能。

3.按键模块:为了实现人机交互,我们设计了一组按键。

用户可以通过按键来调整时间、设置闹钟等。

4.电源模块:为了保证系统的稳定工作,我们采用了稳定的5V直流电源。

三、软件设计我们采用了C语言编写程序。

程序主要由以下几个部分组成:1.主程序:主程序主要负责读取RTC模块的时间信息,并控制LCD显示屏显示时间。

同时,主程序还要检测按键输入,根据用户的需求进行相应的操作。

2.RTC驱动程序:为了正确地读取和设置DS1302芯片的时间信息,我们编写了相应的驱动程序。

驱动程序包括初始化和读写寄存器两部分。

3.按键处理程序:按键处理程序用于检测按键输入,并根据按键值执行相应的操作。

比如,用户可以通过按键来增加或减少时间,设置闹钟等。

4.LCD显示程序:LCD显示程序用于控制LCD显示屏的显示内容。

在本设计中,我们使用了点阵字符库,将时间信息以字符的形式显示在LCD屏上。

四、测试与验证为了确保我们的电子万年历设计正确无误,我们进行了以下的测试和验证:1.硬件测试:首先,我们对硬件电路进行了测试,确保每个模块都能正常工作。

基于51单片机的万年历设计

基于51单片机的万年历设计

基于51单片机的万年历设计一、系统设计方案本万年历系统主要由 51 单片机、时钟芯片、液晶显示屏、按键等部分组成。

51 单片机作为核心控制器,负责整个系统的运行和数据处理。

时钟芯片用于提供精确的时间信息,液晶显示屏用于显示万年历的相关内容,按键则用于设置时间和功能切换。

二、硬件设计1、单片机选型选用常见的 51 单片机,如 STC89C52 单片机,它具有性能稳定、价格低廉、易于编程等优点。

2、时钟芯片选择 DS1302 时钟芯片,该芯片能够提供高精度的实时时钟,具有闰年补偿功能,并且可以通过串行接口与单片机进行通信。

3、液晶显示屏采用 1602 液晶显示屏,能够清晰地显示字符和数字,满足万年历的显示需求。

4、按键电路设计四个按键,分别用于时间设置、功能切换、加和减操作。

三、软件设计1、主程序流程系统上电后,首先进行初始化操作,包括单片机端口初始化、时钟芯片初始化、液晶显示屏初始化等。

然后读取时钟芯片中的时间数据,并在液晶显示屏上显示出来。

接着进入循环,不断检测按键状态,根据按键操作执行相应的功能,如时间设置、功能切换等。

2、时钟芯片驱动程序通过单片机的串行接口向 DS1302 发送命令和数据,实现对时钟芯片的读写操作,获取准确的时间信息。

3、液晶显示屏驱动程序编写相应的函数,实现对1602 液晶显示屏的字符和数字显示控制。

4、按键处理程序采用扫描方式检测按键状态,当检测到按键按下时,执行相应的按键处理函数,实现时间设置和功能切换等操作。

四、时间设置功能通过按键操作进入时间设置模式,可以分别设置年、月、日、时、分、秒等信息。

在设置过程中,液晶显示屏会显示当前设置的项目和数值,并通过加、减按键进行调整。

设置完成后,将新的时间数据保存到时钟芯片中。

五、显示功能万年历的显示内容包括年、月、日、星期、时、分、秒等信息。

通过合理的排版和显示控制,使这些信息在液晶显示屏上清晰、直观地呈现给用户。

六、系统调试在完成硬件和软件设计后,需要对系统进行调试。

单片机电子万年历课程设计

单片机电子万年历课程设计

单片机课程设计姓名:吕长明学号:04040804021专业班级:机电四班一、单片机原理及应用简介随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。

集成技术的最新发展之一是将CPU和外围芯片,如程序存储器、数据存储器、并行、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(Single-Chip Microcomputer)。

而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元等。

因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业控制系统、数据采集系统、自动测试系统、万年历电子表等。

二、系统硬件设计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号端子)。

P3.0~P3.7 P2口8位双向口线(在引脚的10~17号端子)。

8052芯片管脚说明:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

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

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

万年历是一种可以显示年、月、日、星期的电子设备,广泛应用于日常生活和办公场所。

本文将介绍一个基于STM32单片机的万年历的设计思路和实现过程。

首先,我们需要明确设计目标。

在这个项目中,我们的目标是使用STM32单片机开发一个功能齐全、易于操作的万年历。

具体地说,这个万年历应该能够显示当前的年、月、日和星期,并且能够进行日期的加减操作,同时应该具备一些辅助功能如闹钟设置、倒计时等。

接下来,我们需要进行硬件设计。

首先需要选择适当的显示屏,比如常见的LCD或OLED屏幕。

然后,我们需要选择合适的按键和外部触发器,用于用户的交互输入。

同时,还需要添加一些必要的接口,如USB接口用于数据传输和维护。

在软件设计方面,我们需要定义合适的数据结构来存储日期、时间、闹钟等信息。

同时,需要编写相应的程序来实现日期的显示和更新、日期的加减、闹钟的设置等功能。

在实现倒计时功能时,我们可以使用定时器中断来实现精确的计时。

此外,为了提高用户体验,我们可以添加一些额外的功能。

比如,我们可以为万年历设计一个简洁美观的用户界面,考虑使用图形库绘制用户界面元素。

同时,可以添加一些实用的功能如温湿度监测、天气预报等。

最后,在整个开发流程结束后,我们需要进行集成测试和调试,确保万年历的各项功能正常运行。

并且,我们还可以考虑为万年历添加一些优化和改进措施,如增加存储容量、优化节能技术等。

综上所述,基于STM32单片机的万年历设计主要涉及硬件设计和软件设计两个方面。

通过精心的设计和合理的实现,我们可以开发出一款功能丰富、易于使用的万年历产品,满足用户的各种需求。

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

课外开放课题万年历XX:孙广宇班级:电子S12-2学号:27指导教师:徐书雨设计题目:电子万年历设计任务与要求:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能4、增加了显示温度的模块设计方案:系统分为主控模块、时钟电路模块、温度检测模块,按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。

主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作,温度模块使用18B20实现度温度的操作。

限于开发板设计好的电路和芯片。

1.显示模块:“LCD1602液晶显示屏”LED数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少;LCD1602液晶显示屏,显示功能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说要昂贵些,但是基于本设计显示的东西较多,若采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块.2.时钟电路模块:DS1302是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压X围宽和低功耗等优点,得到广泛的应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整,并具有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。

单片机有定时器的功能,但时间误差较大,且需要编写时钟程序.3.温度模块:直接采用常用的18B20.系统框图:单元电路设计:单片机中央处理系统的方案设计,选用AT89C52单片机作为中央处理器,如图所示。

该单片机除了拥有MCS-51系列单片机的所有优点外,内部还具有8K的在系统可编程FLASH存储器,低功耗的空闲和掉电模式,极大的降低了电路的功耗,还包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。

整个系统结构紧凑,抗干扰能力强,性价比高。

2、时钟振荡电路用主振11.0592 MHZ的晶振,使用内部晶振接法并上俩个30PF的电容,如图所示.3、复位电路复位电路由电阻和极性电容组成,通过高电平使单片机复位,在时钟电路开始工作后,当高电平的时间超过大约2us时,即可实现复位。

此复位电路为上电复位,较为简单。

若改进可以添加手动复位的功能,上电复位发生在开机加电时,由系统自动完成,手动复位通过一个按键来实现,在程序运行时,若遇到死机,死循环等情况,通过手动复位就可以实现重新启动的操作。

手动按钮复位需要人为在复位输入端RST上加入高电平。

一般采用的办法是在RST端和正电源Vcc之间接一个按钮和一个电阻。

4、DS1302时钟电路时钟电路主要由时钟芯片DS1302、备用电池、晶振等几部分组成,如图(6)所示。

DS1302采用3线串行接口,占用引脚少,内部集成了可编程日历时钟,用户可以根据需要通过单片机的控制来自行设置,支持双电源供电,可以使用外部主电源和备用电源,备份电源能够使时钟芯片继续工作。

DS1302管脚图DS1302时钟电路DS1302各引脚的功能为:8: Vcc1:备用电池端;1: Vcc2:5V电源。

当Vcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2< Vcc1时,由Vcc1向DS1302供电;7: SCLK:串行时钟,输入;6: I/O:数据输入输出口;5: CE/RST:复位脚;2、3: X1、X2 是外接晶振脚(32.768KHZ的晶振);4: 地(GND)。

DS1302有关日历、时间的寄存器:DS1302有关日历、时间的寄存器1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。

当初始上电时该位置为1,时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄器的该位置改写为0时,时钟才能开始运行。

2、小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。

当为高时,选择12小时模式。

在12小时模式时,位5是,当为1时,表示PM。

在24小时模式时,位5是第二个10小时位3、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。

在对任何的时钟和RAM的写操作之前,WP位必须为0。

当WP位为1时,写保护位防止对任一寄存器的写操作。

也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。

DS1302读写时序DS1302是SPI总线驱动方式。

它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。

DS1302的控制字如下图:DS1302的控制字图控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。

位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4~A0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。

读数据:读数据时在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据是从最低位到最高位。

写数据:控制字总是从最低位开始输出。

在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入也是从最低位(0位)开始。

5:温度传感器18B20通过18B20进行读数据,将读出来的数据进行进制转换,转换后送到下面来看看它的优点看看它的靓照。

外形和我们常用的三极管没有什么两样哦。

DS18B20的内部存储器分为以下几部分ROM:存放该器件的编码。

前8位为单线系列的编码(DS18B20的编码是19H)后面48位为芯片的唯一序列号。

在出场的时候就已经设置好,用户无法更改。

最后8位是以上56位的CRC码。

DS18B20的温度存放如上图所示。

其中S位符号位。

当温度值为负值时,S = 1 ,反之则S = 0 。

我们把得到的温度数据乘上对应的分辨率即可以得到转换后的温度值。

DS18B20的通讯协议:在对DS18B20进行读写编程时,必须严格保证读写的时序。

否则将无法读取测温结果。

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过3个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM 指令,最后发送RAM指令。

这样才能对DS18B20进行预定的操作。

复位要求主机将数据线下拉500us,然后释放,DS18B20收到信号后等待16~160us 然后发出60~240us的存在低脉冲,主机收到此信号表示复位成功。

6.按键电路按键电路由四个轻触开关组成。

按键用来调整时间,其一端直接接到单片机的端口,另一端接地,当按下按键时,相应的端口变为低电平,通过一个与门只要这四个按键有一个按下就会在P3.2检测到一低电平就触发外部中断0进入按键调节程序中,通过与个各键相连的端口P3.4_P3.7可以判断是哪个键按下,从而作相应的操作。

用软件设计扫描程序。

7.实现功能:K1按键进入设定状态按K2,依次进入闹钟功能是否启用,闹钟时,分秒,年,月,日及时间时,分,秒的设置,直到退出设置状态按K3,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字LCD第二排中间显示小喇叭,表示启用闹钟功能,无则禁止闹钟功能(可在调整状态进行设置)正常状态,LCD上排最前面显示自定义字符,LCD下排最前面闪动"RICHMCU"设置状态,LCD上排最前面显示"P",下排最前面在设置闹钟时间时显示"alarm:",其它状态显示"time"8.程序流程图:1主程序:首先初始化定时器、LCD1602及DS1302,然后就开始查询按键,有键按下则开始调整时间和日期,若没有按下,则执行下面的时间、日期的显示,最后依次循环这些相同的操作:18b20子程序:Ds1302子程序:2、软件设计软件总设计:主程序首先对系统环境初始化,设置定时器T0工作模式为16位定时/计数器模式,置位总中断允许位EA,并对键盘端口置位,再对LCD1602初始化,DS1302初始化。

接着扫描键盘,在键盘程序里面是对时间、日期,闹钟的调整,温度的选择,最下面是时间的显示。

例如:闰年的计算bit leap_year(){bit leap;if((year%4==0&&year%100!=0)||year%400==0)//闰年的条件leap=1;elseleap=0;return leap;}实验程序:#include <AT89X52.H>//万年历#define uint unsigned int#define uchar unsigned charuchar code duantable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};uchar code weitable[]={0xFE,0xFD,0xFB,0xF7};uchar xianshi[8]={0 ,0 ,0 ,0 };uint year=2013;uchar tt=0,month=9,day=24;hour=10,minute=2,second=0,i;void delay(uint z);main(){TMOD|=0X10;TMOD&=0X1F;TH1=(65536-50000)/256;TL1=(65536-50000)%256;IE|= 0X88;TR1=1;while(1){if(tt==20){tt=0;if (second==59){second=0;if (minute==59){minute=0;if (hour==23){ hour=0;if(day==30){day=1;if(month==12){month=1;year+=1;}elsemonth+=1;}elseday+=1;}elsehour+=1;}elseminute+=1;}elsesecond+=1;}xianshi[0]=minute%10;//second%10;xianshi[1]=minute/10;//second/10;xianshi[2]=hour%10;//minute%10;xianshi[3]=hour/10;//minute/10;xianshi[4]=hour%10;xianshi[5]=hour/10;xianshi[6]=day%10;xianshi[7]=day/10;for(i=0;i<4;i++) //送显示{ P2=weitable[i];P0=duantable[xianshi[i]];delay(10);}}}void timer1() interrupt 3{TH1=(65536-50000)/256;TL1=(65536-50000)%256;tt++;}void delay(uint z){uint x;uchar y;for(x=z;x>0;x--){for(y=122;y>0;y--) ;}}心得:经过这次设计,对单片机编程控制有了进一步的了解。

相关文档
最新文档