已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机技术课程设计说明书 万 年 历 学 院: 电气与信息工程学院 学生姓名: 指导教师: 王诚梅 职称 工程师 专 业: 自动化 班 级: 自动化 4班 学 号: 完成时间: 湖南工学院单片机技术课程设计课题任务书学院:电气与信息工程学院 专业:自动化指导教师王诚梅学生姓名周婷课题名称万年历内容及任务一、设计任务设计一个具有特定功能的万年历。二、设计内容1、万年历的硬件系统(1)、单片机最小系统模块(2)、供电模块(3)、显示模块(4)、键盘模块2、万年历的软件系统(1)、系统监控程序模块(2)、显示程序模块(3)、键盘程序模块(4)、阴历、阳历算法产生程序模块(5)、闰年、非闰年算法产生程序模块三、设计要求该万年历上电或按键复位后能自动显示欢迎界面,进入准备工作状态。该万年历可以通过键盘选择年、月、日、星期、时、分、秒、阴历、阳历切换、调整时间以及调整日期和星期。主要参考资料1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社,2003.6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12.3马忠梅.单片机的C语言应用程序设计M.第4版.北京:北京航空航天大学出版社,2003.6. 4李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社,2003.01.5李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.9.教研室意见 教研室主任:(签字)年 月 日摘 要在现代人们生活和工作中,时间已经成为生活中不可缺少的一部分。而随着科学技术的发展,人们获知时间的方式也逐渐变得多种多样,例如通过手表,手机,电子时钟等;而随着生活和工作的繁忙,人们在获知时间的同时,对于与人们生活和工作息息相关的信息也不可缺少,比如:温度,日期等;万年历的诞生,很好解决了这一问题,它在显示时间的同时,又显示了温度、日期、时间等诸多功能于一身。 设计的万年历采用的是AT89S52单片机作为控制核心,内部带有8KB的ROM,能够存储大量的程序,而且兼容性也很好;通过DS1302作为时钟芯片,它能够够实时提供年、月、日、时分、秒信息;由LCD12864作为屏幕显示,LCD12864功耗低,携带方便,功能强大;温度检测采用DALLAS公司的数字化温度传感器(DS18B20),另外设计还增加了闹钟功能和温度显示功能,大大地提高了万年历的功能。关键词:万年历、AT89S52、DS1302 、DS18B20目 录1 设计课题任务、要求及总体方案介绍11.1 设计课题任务11.2 功能、性能要求说明11.3 总体方案介绍及工作原理说明1 1.3.1 总体方案介绍1 1.3.2 工作原理说明22 万年历硬件系统的设计32.1 万年历硬件系统各模块的功能介绍3 2.1.1 AT89S52单片机简介3 2.1.2 晶振电路4 2.1.3 电源电路4 2.1.4 复位电路5 2.1.5 下载电路5 2.1.6 独立按键电路6 2.1.7 时钟电路7 2.1.8 液晶显示电路7 2.1.9 温度采集模块电路8 2.1.10 闹钟电路92.2 电路原理图92.3 实物图92.4 元器件清单93 万年历软件系统的设计103.1 使用单片机资源的情况103.2 软件系统各模块功能介绍10 3.2.1 监控程序10 3.2.2 时钟程序10 3.2.3 界面切换模块10 3.2.4 闹钟模块10 3.2.5 键盘模块10 3.2.6 显示模块10 3.2.7 农历算法模块11 3.2.8 闰年闰月算法模块11 3.2.9 温度采集模块113.3 软件系统程序流程框图11 3.3.1 主程序11 3.3.2 时钟程序12 3.3.3 键盘程序12 3.3.4 液晶显示程序13 3.3.5 温度程序14 3.3.6 农历转换程序15 3.3.7 闹钟程序163.4 系统程序清单164 万年历设计结果分析及结论164.1 操作使用说明164.2 万年历实物调试结果164.3 误差分析204.4 设计结论及体会20 4.4.1 设计结论20 4.4.2 设计体会21结束语22参考文献23致谢24附录25附录A 电路原理图25附录B 实物图26附录C 元件清单28附录D 程序清单291 设计课题任务、要求及总体方案介绍1.1 设计课题任务设计一个具有特定功能的万年历。1.2 功能、性能要求说明万年历上电或按键复位后能自动显示欢迎界面,进入准备工作状态。能实现 :(1)可以进入显示年、月、日、星期、时、分、秒、阴历界面;(2) 可以通过键盘选择年、月、日、星期、时、分、秒、阴历、阳历切换;(3) 可以通过键盘调整时间以及调整日期和星期;(4) 可以设置一个闹钟以及通过按键调整闹钟时间;(5) 可以显示周围环境温度;(6)其它功能。1.3 总体方案介绍及工作原理说明1.3.1 总体方案介绍 万年历的设计的主要有三大主功能,分别为时间日期的显示,温度的显示、闹钟,他们之间的转换主要是通过独立按键完成的。通过上述论述,此设计可以分模块,分别是:时间计算模块、环境温度采集模块、时间设置模块、闹钟设置模块、显示模块。硬件设计框图如图1所示。 图1 硬件电路系统框图1.3.2 工作原理说明 万年历采用AT89S52单片机作为控制中心,DS1302将获取的实时时间传输给单片机,通过单片机将数据经过运算从LCD12864液晶显示出来。通过DS18B20获取实时环境温度,将测得的数据传输给单片机,在通过相应按键,将数据在LCD12864上显示出来;另外相应的按键可以调整LCD12864上显示的相应的值。单片机检测按键数据并做出相应反应:显示农历、设置闹钟、调整时间、连加、连减等功能。2 万年历硬件系统的设计2.1 万年历硬件系统各模块的功能介绍2.1.1 AT89S52单片机简介 AT89S52单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。采用40Pin封装的双列直接DIP结构,图2是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。图2 AT89S52引脚图现在对各引脚功能说明如下:(1)主电源引脚 Vcc:接5V电源正端。 Vss:接5V电源地端。(2)输入输出引脚P.0P0.7:P0口的8个引脚。在不接片外存储器与不扩展IO接口时,可作为准双向输入输出接口。在接有片外存储器或扩展IO接口时,P0口分时复用为低8位地址总线和双向数据总线。P1.0P1.7:P1口的8个引脚。可作为准双向IO接口使用。对于52子系列,P1.0与P1.1还有第二种功能:P1.0可用作定时器计数器2的计数脉冲输入端T2。P1.1可用作定时器计数器2的外部控制端T2EX。P2.0P2.7:P2口的8个引脚。可作为准双向IO接口;有接有片外存储器或扩展IO接口且寻址范围超过256个字节时,P2口用作高8位地址总线。P3.0P3.7:P3口的8个引脚。除作为准双向IO接口使用外,还具有第二种功能,详见表1。 表1 P3口第二功能表2.1.2 晶振电路XI1:片内反相放大器输入端。X12:片内反相放大器输出端。外接晶体时,XI1和XI2各接晶体的一端,借外接晶体与片内反相放大器构成振荡器。采用了11.0592MHZ的晶振。这样有利于得到没有误差的波特率。特别是用于串口通信时,选用这种晶振比较好。其作用是产生单片机所须的时钟频率。电路原理图如图3所示。图3 晶振电路2.1.3 电源电路万年历采用+5V供电,电源电路将220V的交流电转化为+5V的直流电,给万年历供电。电源电路图如图3所示。电路组成由一个输入为220V输出为12V变压器、整流桥、7805稳压芯片、发光二极管、电阻、电容、开关组成。其中根据经验值可取C1=2200F,C3=470F,C2=C4=0.1F,R1=1K,其中电容起有滤波作用,发光二极管作为电源指示灯,电阻起限流作用。电源电路的工作原理:通过变压器将220V的交流电降为12V的交流电,然后通过整流桥输出,最后经过7805稳压芯片得到+5V的直流电。图4 电源电路图2.1.4 复位电路 万年历电路设计采用可靠的手动复位方式, 复位电路由一个的电容、一个1K电阻、一个200电阻组成,其作用是使CPU和系统其他部件处于一个确定的初始状态。单片机复位电路如图所示。图5 复位电路2.1.5 下载电路下载电路使用USB ISP进行程序下载,电路图如图6所示。通过下载口实现计算机与单片机的通信,进行程序烧写。 图6 下载电路2.1.6 独立键盘电路独立按键电路由八个按键组成,电路图如图7所示。它是由按键开关一端接I/O口,一端接地构建而成的。每一个I/O口只能设置一个按键。独立键盘电路用来向单片机传送外部信息。独立键盘的结构使按键之间相互不影响,同时可以更好的使一个按键具有短按和长按两种功能。其作用是提供输入设备使人机交互。图7 独立键盘电路2.1.7 时钟电路采用DS1302时钟芯片实现时钟,DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768kHz晶振。同时该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能。图8 时钟电路2.1.8 液晶显示电路由于12864液晶具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势和可视面积大,画面效果好,分辨率高,抗干扰能力强等特点,并且能够方便的显示文字和数字。所以我们显示电路采用LCD12864液晶屏。LCD12864液晶显示器,通信模式有两种,分别是并行通信方式和串行通信方式。方式的选择由PSB引脚控制,当PSB为高电平时,液晶为并行通信;当PSB为低电平时,液晶为串行通信;万年历设计采用并行通信模式。LCD12864液晶显示器显示亮度可通过VOUT脚的电压调整,我们设计了清晰度显示可调电路,采用50K的可调电阻器,接到液晶的18引脚,通过对滑动变阻器的调节可对其显示清晰度进行控制。LCD12864与P0口连接,电路原理图如图9所示。图9 液晶显示电路2.1.9 温度采集模块电路采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P3.3与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0V至5.5V无需备用电源测量温度范围为-55度至+125度。-1 0度至+85度范围内精度为0.5度,温度传感器可编程的分辨率为912位。电路原理图如图10所示。图10 温度采集模块电路2.1.10 闹钟模块电路 采用的是有源蜂鸣器,由于单片机的输出电流较小,所以采用PNP管的三极管作为驱动电路,来驱动蜂鸣器发声,当单片机给低电平时蜂鸣器响,电路原理图如图所示。图11 闹钟电路2.2 电路原理图电路原理图见附录A2.3 实物图实物图见附录B2.4 元器件清单 元器件清单见附录C3 万年历软件系统的设计 万年历软件设计应用C语言编程实现,其程序主要由监控程序、时钟程序、按键控制程序、液晶显示程序、农历程序、延时程序、闰年闰月程序等组成.。3.1 使用单片机资源的情况存储使用情况:(1)RAM:共256Byte,已使用61.5Byte,剩余194.5Byte。(2)ROM:共8192Byte,已使用7553Byte,剩余639Byte。IO口使用情况:(1)独立按键键盘:使用P1口。(2)LCD液晶:使用P0口及P3.5、P3.6、P3.7。(3)DS1302时钟:使用P2.7、P2.6、P2.5。 注:以上全部IO均可修改程序定义后修改为其他管脚。3.2 软件系统各模块功能介绍3.2.1 监控程序用于设置初始化界面,调用各个功能模块,使整个万年历协调工作。实时监控键盘的动作,并根据键值执行对应的功能。3.2.2 时钟程序用于设置初始化时间,读取DS1302里面的时间,为整个万年历系统提供实时的时钟显示。3.2.3 界面切换模块用于切换功能界面。通过选择不同显示界面,确认进入相应的功能界面。3.2.4 闹钟模块给闹钟设定一个初始值,当DS1302里的时间值和设定的闹钟值相同时,蜂鸣器鸣叫。3.2.5 键盘模块键盘模块,通过键扫读取对应的键值,将键值送往单片机处理,执行不同的指令或输入数据。3.2.6 显示模块显示模块主要是针对带有字库的LCD12864液晶编写的通用显示函数,显示函数的功能是将我们需要显示的信息直接显示到液晶屏上。3.2.7 农历算法模块农历算法模块主要就是通过公历时间计算得到农历的时间的算法,并将产生的时间通过显示模块显示到液晶屏上。3.2.8 闰年闰月算法模块闰年闰月算法模块主要是进行相应的功能运算,得到闰年闰月的日期并对小程序运行进行时间准确验证。3.2.9 温度采集模块用于显示周围环境的温度,从DS18B20中读取温度的数值,再通过液晶显示出来。3.3 软件系统程序流程框图3.3.1 主程序主程序的流程图如图12所示。主程序开始初始化,按键键入主界面,然后进行键盘扫描监控,如果有按键按下,判断键值,是否为功能键键值,如果是则执行对应键的功能程序,如果没有键按下,主程序就一直监视键盘的状态。图12 主程序流程框图3.3.2 时钟程序DS1302芯片的读写操作流程开始的时候是读写寄存器的初始化,它的7个寄存器地址都是有规律变化的,它的写寄存器地址都是偶数,读寄存器地址是奇数,存放的数据是BCD码形式,定义的第一个寄存器是秒寄存器,它的读写地址是(80H、81H),当复位端(RST)产生一个高电平时,写入DS1302的地址,延时一段时间,向该地址写入数据,地址增加,再来判断数据是否写完,没写完返回继续写,写完后,RST复位端再次产生一个高电平,写入读寄存器的地址,延时一段时间,将该地址数据读出,地址增加,判断数据是否读完,若是没有则继续读数据,读好之后需要显示的时间就可以显示出来了。流程图如图13所示。图13 时钟程序流程框图3.3.3 键盘模块按键电路设计的作用是设置调整时间,按下相应的按键,会实现相应的功能。调用按键程序判断按键是否按下,按下按键获取其键值,则再调用12864液晶函数,就会实现按键按下后相应的功能。程序流程图如图14所示。 (1) (2)图14 键盘程序流程图3.3.4 液晶显示模块 液晶显示是通过主程序中调用相关的液晶功能程序来执行相应功能,经过液晶接在单片机上的P0管脚处,通过液晶功能调用函数来对液晶进行操作,将各类指令写入液晶模块,将显示的数据以形参送至12864模块中,然后就可以将年份、月份、日期、小时、分钟、秒钟、闹钟、农历及生肖等内容给显示出来。其程序流程图,如图15所示.图15 液晶显示程序流程图3.3.5 温度模块数字是温度传感器模块程序位于DS18B20.c中,主要功能是读取传感器内部获取的时间,然后在进行相应的转化。(1) uchar DS18B20Init() ;功能:DS18B20初始化函数(2) int GetTemp();/DS18B20;功能:读温度函数其程序流程框图如图16所示。 图16 温度转换程序流程图3.3.6 农历转换模块 先计算出公历日离当年元旦的天数,然后查表取得当年的春节日期 ,计算出春节离元旦的天数,二者相减即可算出公历日离春节的天数,以后只要根据大小月和闰月信息,减一月天数,调整一月农历月份,即可推算出公历日所对应的农历日期,如公历日不到春节日期,农历年要比公历年小一年,农历大小月取前一年的信息,农历月从12月向前推算。流程图如图17所示。图17 温度转换程序流程图3.3.7 闹钟模块 使用单片机通过程序产生一个低电平信号,让蜂鸣器发出声音。通过设置的闹钟时间与万年历运行的时间时候相等,从而由单片机判断是否让蜂鸣器工作,同时还可以修改闹钟时间,在蜂鸣器工作时按下任意按键,则闹钟时间自动延时5分钟。程序流程框图如图18所示。图18 温度转换程序流程图3.4 系统程序清单软件系统程序清单见附录D4 万年历设计结果分析及结论4.1 操作使用说明基于AT89S52单片机的万年历的使用规则如下:(1) 上电后,LCD液晶屏进入欢迎界面,同时会显示每个按键的功能,根据自己的需要来选择按哪个按键。(2) 独立按键共有4个键,其中S1键为开关键,其功能是控制万年历的运行;S2为功能键,其作用是当要修改时间时,选择修改的变量;S3键为农历显示键和时间调整加键,短按加一,长按连加。S4键为功能键,其作用是设定闹钟的时间和时间调整件键,短按减一,长按连减。(3) 节日提醒,当万年历时间运行到设定好的时间的时候会在LCD12864屏幕上显示节日信息,同时显示当前生肖年。(4) 温度提醒,读取DS18B20中的数值,在液晶第一行显示。(5) 闹钟显示,当时间为闹钟设定时间时,蜂鸣器工作。4.2 万年历实物调试结果 (1)给万年历系统上电后,按下复位键,液晶显示器上显示等待界面的信息等字符,显示等待界面如图19所示。图19 显示欢迎界面图(2)进入初始界面后5秒钟,则自动进入到下一个界面,显示界面如图20所示。图20 显示信息界面图(3)长按按键S2进入调时界面,调节时间界面如图21所示。 (a) (b) (c)(d) (e)(f) (g)图21 调时界面图(5)通过按键对万年历进行年、月、日、星期、时、分、秒做具体的设置,设置时间为此设计完成的时间2016年12月25日星期六00时7分08秒。设置结果如图22所示。图22 时间设置结果图(6)设置完成后,按S1键退出调时进入运行万年历就能显示所有的信息。短按S3键查看农历信息,农历界面如图23所示。图23 农历界面显示图(7)设置完成后,按S1键退出调时进入运行万年历就能显示所有的信息。短按S4键设置闹钟时间设置,农历界面如图24所示。 图24 闹钟界面显示图4.3 误差分析对万年历功能进行了仔细的分析,并通过多方面资料验证。 分析可能造成的误差原因如下:(1)芯片本身所存在的误差,比如说DS18B20芯片对温度的采集和DS1302芯片时间的运行。(2)DS1302时钟芯片的晶振频率不稳定会对芯片的计时产生很大的影响。(3)电源电压不稳定导致获取的温度值不准确。(4)单片机运行时农历和闰年闰月算法不是很优化,没有对时间做出限制,使得时间不准确。(5)硬件设计电路不够完善,比如按键不够灵敏。(6)在切换到备用电源瞬间可能造成时间短暂停止。4.4 设计结论及体会4.4.1 设计结论 通过keil软件把程序下载到硬件电路中,设计的硬件电路单片机最小系统电路、液晶显示电路和独立键盘电路均工作正常,设计成功。软件部分由以上测试结果可见,万年历实现了上电或按键复位后能自动显示欢迎界面,进入准备工作状态。万年历可以通过键盘选择年、月、日、星期、时、分、秒、阴历、阳历切换、调整时间以及调整日期和星期,设置闹钟,以及温度的现实,设计成功。4.4.2 设计体会在完成软件系统时,刚开始是用的是12M的晶振,所有器件正常,后来换了11.0592M的晶振,结果温度就不正常了,经过认真排查才发现是由于DS18B20在数据读取时,对时间要求很精确,由于晶振的不同造成了读数据的错误,经过这次调试,更清晰的认识到了时序对元器件的重要性。在设计中,因为考虑到闹钟定时功能,设置的闹钟时刻不会因为系统的掉电而丢失,考虑到DS1302是有3.6V的纽扣电池作为辅助电源,不会因为主系统掉电丢失内部数据,所以将闹钟的定时时刻放到了DS1302内的空余寄存器里面,像这些灵活的技巧就需要认真的阅读元件的数据手册,从中索取有用的信息。经过万年历的设计,学到了很多,同时也认识到了学习基础知识的重要性,当设计完整的系统时,要考虑到硬件和软件两者的结合,有时硬件的不足,可以用软件程序来弥补,从而节约硬件成本,在设计软件程序时要模块化,可以提高程序的可读性。结束语通过万年历的课程设计中主要通过对设计进行了研究背景及意义的分析,了解了研究的主要工作,论证了系统的基本方案并进行了方案选择,还给出了硬软件各模块的设计方案,得出了总体设计方案。在研究的过程中通过对硬件设计仿真,模块调试,最终设计出了系统硬件实物。对各模块编写了相应的程序软件并对其进行调试,分别得出各模块结果。把各模块软件组合成了万年历系统软件,下载到实物中,得出了最终结果。系统能显示基本时间信息,并能较准确的对时间进行调整,基本满足了设计要求。同时掌握了一些基础的软件编程和硬件电路设计的一些基本方法;调查研究和设计计算确定电路方案;选择元件、安装电路、编写程序、调试改进;分析实验结果、写出设计总结报告。其次培养了一定的自学能力独立分析问题的能力和解决问题的能力,学会了如何分析解决问题的方法;对设计中遇到的问题,能通过思考、交流、查询工具书和参考文献来寻找解决方案,掌握程序调试的一般规律等;而且掌握普通电子电路的生产流程及安装、布线等等。参考文献1 李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社,20032 李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,20123 马忠梅.单片机的C语言应用程序设计M.第4版.北京:北京航空航天大学出版社,20034 曹巧媛.单片机原理及应用M.北京:电子工业出版社,19975 张洪润,兰清华.单片机应用技术教程M.北京:清华大学出版社,19976 徐家喜.单片机原理与应用实验指导M.南京:南京大学出版社,20137 宋雪松.手把手教你学51单片机M.北京:清华大学出版社,20148 郑毛祥.单片机原理及应用单片机基础M.武汉:华中科技大学社,2015致 谢 在这次的课程设计过程中,遇到过很多的困难,但是在老师,同学的帮助下顺利的完成了此次课程设计。 在这里,要特别感谢我的指导老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。她渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。同时,在此次课程设计过程中我也学到了许多了关于单片机技术方面的知识,有了很大的提高。附 录附录A 电路原理图附录B 实物图 万年历实物图 直流稳压电源实物图 附录C 元器件清单元件名称元件参数数量时钟电源3.6V1电解电容2200F1电解电容220F1瓷片电容30pF4瓷片电容0.1F3LED5mm1ISP下载口Version 2.01排阻10K8晶振12M1晶振32.678K1开关六角自锁1开关波动1按键6*6*69单片机AT89S521液晶LCD128641时钟芯片DS13021温度传感器DS18B201电阻4702电位器10K1变压器12V17805稳压芯片+5V1整流桥40V 2A1蜂鸣器无源1排针2.54mm若干71附录D 程序清单/*程 序 名:万年历编 写 者:周婷 指导老师:王诚梅时 间 :2016.12.10班 级:自本1404班功 能 :万年历综合程序,可以显示日历,节日,温度,闹钟等功能 使用说明: 将单片机的P1口用杜邦线线连于独立键盘的接口(P10-S1.P17-S8),将单片机的P0口用杜邦线线连于液晶的数据总线(P0.0-D0.P0.7-D7),点阵E连至P3.5,点阵RW连至P3.6,点阵RS连至P3.7。DS1302的SCLK连至P2.5,I/O连至P2.6,CE连至P2.7。*/#include #include #include delay.h#include LCD12864.h#include DS1302.h#include key.h#include key_scan.h#include nongli.h#include DS18B20.h#define uchar unsigned char#define uint unsigned int/*万年历显示*/void InitWNL();/万年历显示初始化void InitWNL1();void Year_display();/年份显示void Week_display();/星期调节显示void Week_display1();/星期运行显示void Month_display();/月份显示void Day_display();/日期显示void Hour_display();/时钟显示void Hour_display1();/时钟显示void Minute_display();/分钟显示void Minute_display1();void Second_display();/秒钟显示void Read_RTC(void);/read RTC void Set_RTC(void); /set RTCvoid Dis_Holiday(void);/节假日显示/*/*按键设置*/void KEYMode();/按键void Set_Begin_Stop();/开始/停止设置void Set_Select();/参数调教选择设置void Set_Nongli();/农历调用函数void Set_Year();/年份设置void Set_Month();/月份设置void Set_Day();/日期设置void Big_Small_Month();/大小月判断void Two_Month();/闰年/非闰年二月判断void Set_Hour();/时钟设置void Set_Hour1();void Set_Minute1();void Set_Minute();/分钟设置void Set_Second();/秒钟设置void Set_Week();/星期设置void Set_alarm();/闹钟设置void Set_Select1();/闹钟参数设置void set_panduan();void set_buzzer();/*/sbit buzzer=P31;int flage=1;uchar LunarMonth,LunarDay,LunarYear,year,month,day,cen;uchar shi,fen,shi1,fen1;bit c_moon;bit cenbit;void InitTIMER0(void);/初始化定时器0uchar k0=1,k1=1,k2=1,k3=1,k4=1,k5=1,k6=1;/uchar year,week,month,day,hour,minute,second;uchar initdate7;/=1,59,23,13,9,2,16;/秒分时日月周年16-05-07-06 17:37:00code uchar write_rtc_address7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c; /秒分时日月周年 最低位读写位code uchar read_rtc_address7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d; /最低位:读为1,写为0bit ReadRTC_Flag;/万年历运行标志位uchar flag1=0,mark=0,sign=0;uchar v;/* *万年历显示*/*万年历显示*/void LCD_DISPLAY() InitWNL(); Year_display(); Week_display(); Month_display(); Day_display(); Hour_display(); Minute_display(); Second_display(); void LCD_DISPLAY1() InitWNL1(); Hour_display1(); Minute_display1(); /*万年历界面初始化*/void InitWNL(void)LCD12864_display(2,1,20);LCD12864_display(2,3,年);LCD12864_display(2,5,月);LCD12864_display(2,7,日);LCD12864_display(4,1,星期);LCD12864_display(3,2,时);LCD12864_display(3,4,分);LCD12864_display(3,6,秒 );void InitWNL1(void)LCD12864_display(3,2,时);LCD12864_display(3,4,分);/*DS1302初始化*/void InitDS1302()/ Write_Ds1302(0x8e,0x00); /关闭写保护/ delay(5);/ Write_Ds1302(0x8c,0x16);/写入年份16 年/ delay(5);/ Write_Ds1302(0x8a,0x06); /写入星期6/ delay(5);/ Write_Ds1302(0x88,0x11);/定入月分11 月/ delay(5);/ Write_Ds1302(0x86,0x26);/写入日期26 日/ delay(5);/ Write_Ds1302(0x84,0x00);/写入小时0 点/ delay(5);/ Write_Ds1302(0x82,0x00);/写入分钟0 点/ delay(5);/ Write_Ds1302(0x80,0x00);/写入秒00 秒/ delay(5);/ Write_Ds1302(0x8e,0x80); /打开写保护/*年份显示*/void Year_display() LCD12864_write_command(0x91); /第二行第二个LCD12864_write_data(initdate6/10)+0x30);/年送显示LCD12864_write_data(initdate6%10)+0x30);/*星期显示*/void Week_display() initdate5=Read_Ds1302(0x8b);LCD12864_write_command(0x98);if(initdate5=7)LCD12864_display(4,3,日);if(initdate5=6)LCD12864_display(4,3,六);if(initdate5=5)LCD12864_display(4,3,五);if(initdate5=4)LCD12864_display(4,3,四);if(initdate5=3)LCD12864_display(4,3,三xFD);if(initdate5=2)LCD12864_display(4,3,二);if(initdate5=1)LCD12864_display(4,3,一); void Week_display1() initdate5=k6;/LCD12864_write_command(0x98);if(initdate5=7)LCD12864_display(4,3,日);if(initdate5=6)LCD12864_display(4,3,六);if(initdate5=5)LCD12864_display(4,3,五);if(initdate5=4)LCD12864_display(4,3,四);if(initdate5=3)LCD12864_display(4,3,三xFD);if(initdate5=2)LCD12864_display(4,3,二);if(initdate5=1)LCD12864_display(4,3,一); /*月份显示*/void Month_display() LCD12864_write_command(0x93); /第二行第五个 LCD12864_write_data(initdate4/10)+0x30);/月送显示LCD12864_write_data(initdate4%10)+0x30);/*日期显示*/void Day_display() LCD12864_write_command(0x95); /第二行第七个 LCD12864_write_data(initdate3/10)+0x30);/日送显示LCD12864_write_data(initdate3%10)+0x30);/*小时显示*/void Hour_display() LCD12864_write_command(0x88); /第三行第二个 LCD12864_write_data(initdate2/10)+0x30);/时送显示LCD12864_write_data(initdate2%10)+0x30); void Hour_display1() LCD12864_write_command(0x88); /第三行第二个 LCD12864_write
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年广东省茂名市高州市十三校联考八年级(上)10月月考历史试卷(含答案)
- 2020-2021九年级化学-化学推断题的专项-培优练习题及详细答案
- 部编七年级下册古诗文名句默写专题练习(二)(答案)
- 建筑基建业务合同
- 医院信息科员工合同
- 人教版二年级数学下册除法的意义(平均分)巩固
- 苏教版小学语文三年级上册期末模拟考试卷(三)
- 浙江省下学期小学四年级数学素养导向测试试卷
- 2025年湖北省鄂州市华容区保安员招聘考试题库附答案解析
- 小区充电桩定制合同
- 寺庙修缮工程协议书
- YY/T 1994-2025采用机器人技术的血管介入手术控制系统
- 5.2 少年当自强 教案 2024-2025学年统编版道德与法治九年级下册
- 2025年第十一届《中金所杯全国大学生金融知识大赛》复赛题库附答案
- 酿造酒工艺与品鉴培训
- 2025年及未来5年中国卫生杀虫剂行业市场供需格局及行业前景展望报告
- 2025江西宜春市丰城高级技工学校招聘30人考试笔试备考试题及答案解析
- 2026-2031年中国山慈菇行业市场发展现状及投资前景预测报告
- 2025年国学经典知识竞赛题库及答案
- 原发性肝癌的课件
- 培训机构合作方案
评论
0/150
提交评论