基于51单片机的电子日历+温度显示设计

合集下载

基于51单片机的液晶显示万年历设计

基于51单片机的液晶显示万年历设计

基于51单片机的液晶显示万年历设计摘要随着社会的进步和发展,电子万年历作为日常计时工具被广泛地应用。

此电子万年历在硬件方面主要采用STC89C51单片机作为主控核心,由DS1302时钟芯片提供时钟及1602LCD液晶显示屏显示。

STC89C51单片机是由宏晶公司公司生产的,功耗小,电压可选用3.4v~5.5v电压供电;DS1302时钟芯片是美国DALLAS公司推出的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,而且DS1302的使用寿命长,误差小;对于数字电子万年历采用直观的数字显示,数字显示是采用的1602LCD液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒、温度等信息。

此外,该电子万年历在软件方面主要包括日历程序、时间调整程序,显示程序等。

所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,烧写到单片机上进行测试。

本次课程设计主要由时钟芯片DS1302和温度传感器DS18B20采集数据到单片机进行处理再通过LCD1602显示出来,本设计主要研究了液晶显示器LCD及时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较。

关键词:单片机;DS1302;DS18B20;LCD1602ABSTRACTWith the social progress and development, Electronic calendar is widely used as a daily timing tool. The electronic calendar in hardware using STC89C51 microcontroller as the main control center, provided by the DS1302 clock chip and 1602LCD LCD display. STC89C51 microcontroller is produced by the macro crystal company, small power consumption, the voltage can be choosen among 3.4V ~ 5.5V for power supply; DS1302 clock chip is a low power real-time clock chip produced by DALLAS, it can be a time of years,months,days,weeks,hours,minutes,seconds, and DS1302 has a long service life. The error is small; for the digital electronic calendar using visual digital display, 1602LCD digital display is used to display LCD screen that can display years, months, days, weeks, hours, minutes and seconds, temperature and other information. In addition, the electronic calendar mainly includes calendar program,time to adjust procedures,display program etc in sofeware. After the completion of all the procedures, in the Keil software debugging, determine no problem after, and burning to the microcontroller test.The curriculum design mainly by the clock chip DS1302 and temperature sensor DS18B20 collecting data to the microcontroller for processing and then through the LCD1602 display, this design mainly studies the liquid crystal display LCD and the clock chip DS1302, the hardware connection and communication between the temperature sensor DS18B20 and the MCU, a number of hardware connection scheme for a detailed comparison.Key words:SCM,DS1302,DS18B20,LCD1602目录第一章绪论 ------------------------------------------------------------------------------------------------------------ - 1 -1.1 单片机的概述------------------------------------------------------------------------------------------------- - 1 -1.1.1 单片机的概念 --------------------------------------------------------------------------------------- - 1 -1.1.2 单片机的特点 --------------------------------------------------------------------------------------- - 1 -1.2 课题背景 ------------------------------------------------------------------------------------------------------- - 1 -1.3 课题内容 ------------------------------------------------------------------------------------------------------- - 2 - 第二章设计要求和方案 --------------------------------------------------------------------------------------------- - 3 -2.1 设计要求 ------------------------------------------------------------------------------------------------------- - 3 -2.2 设计方案 ------------------------------------------------------------------------------------------------------- - 3 -2.2.1 单片机芯片的选择--------------------------------------------------------------------------------- - 3 -2.2.2 各模块方案选择 ------------------------------------------------------------------------------------ - 3 -2.3 工作原理 ------------------------------------------------------------------------------------------------------- - 4 - 第三章系统的硬件设计及实现------------------------------------------------------------------------------------ - 7 -3.1 电路设计原理框图 ------------------------------------------------------------------------------------------ - 7 -3.2 STC89C51单片机的介绍 ----------------------------------------------------------------------------------- - 7 -3.2.1 主要功能及性能参数 ----------------------------------------------------------------------------- - 7 -3.2.2单片机的引脚功能说明 --------------------------------------------------------------------------- - 8 -3.3 各模块电路的设计及原理图 ----------------------------------------------------------------------------- - 9 -3.3.1 时钟电路模块的设计 ----------------------------------------------------------------------------- - 9 -3.3.2 温度采集模块的设计及原理图 --------------------------------------------------------------- - 11 -3.3.3 显示模块的设计及原理 ------------------------------------------------------------------------- - 11 - 第四章系统的软件设计 -------------------------------------------------------------------------------------------- - 13 -4.1 程序流程框图------------------------------------------------------------------------------------------------ - 13 -4.2 时间调整程序流程图 -------------------------------------------------------------------------------------- - 14 - 第五章系统测试 ------------------------------------------------------------------------------------------------------ - 15 -5.1 硬件测试 ------------------------------------------------------------------------------------------------------ - 15 -5.2 软件测试 ------------------------------------------------------------------------------------------------------ - 15 - 第六章总结与致谢 --------------------------------------------------------------------------------------------------- - 17 -6.1 总结------------------------------------------------------------------------------------------------------------- - 17 -6.2 致谢------------------------------------------------------------------------------------------------------------- - 18 - 参考文献 ------------------------------------------------------------------------------------------------------------------- - 19 - 附录 ------------------------------------------------------------------------------------------------------------------------ - 21 - 附录一:实物图 --------------------------------------------------------------------------------------------------- - 21 - 附录二:源程序 --------------------------------------------------------------------------------------------------- - 23 -第一章绪论1.1 单片机的概述1.1.1 单片机的概念单片机即单片微型计算机,是把中央处理器、存储器、定时/计数器、输入输出接口都集成在一块集成电路芯片上的微型计算机。

基于stc51单片机的LCD1602显示时间的电子万年历(显示

基于stc51单片机的LCD1602显示时间的电子万年历(显示

1 课设所需软件简介1.1 Keil uVision4的简要介绍2009年2月发布Keil μVision4,Keil μVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。

新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。

新版本支持更多最新的ARM芯片,还添加了一些其他新功能。

2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。

Keil C51开发系统基本知识Keil C51开发系统基本知识1. 系统概述Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

下面详细介绍Keil C51开发系统各部分功能和使用。

2. Keil C51单片机软件开发系统的整体结构C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos 的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及C51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

使用独立的Keil仿真器时,注意事项:* 仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。

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

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

单片机课程设计报告万年历的设计基于51单片机的万年历摘要:电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、周日、时、分、秒进行计时,使用寿命长,误差小。

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

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

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

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

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

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

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

显示器使用了1602液晶显示,并且使用蜂鸣器实现了整点报警的功能,温度测试的功能实现使用了DS18B20,并实现了温度过高或过低时的温度报警。

软件方面主要包括日历程序、时间调整程序,显示程序等。

程序采用C语言编写。

所有程序编写完成后,在KeilC51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真,并最终实现基本要求。

综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。

一、设计要求基本要求:1,8 个数码管上显示,显示时间的格式为(假如当前时间是19:32:20)“19-32-20”;2,具有日历功能;③时间可以通过按键调整。

发挥部分:④具有闹钟功能(可以设定多个)。

二:总体设计电路设计框图系统硬件概述本电路是由AT89S52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由单片机定时功能提供;温度的采集由DS18B20构成,它具有独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,使用时不需要额外的外围电路。

单片机实训报告 - 基于51单片机的数字万年历设计

单片机实训报告 - 基于51单片机的数字万年历设计

《单片机应用实训》课程设计报告姓名:班级:指导老师:实习时间:基于51单片机的数字万年历设计摘要:利用单片机、DS1302芯片、DS18B20芯片搭建一个数字万年历模块,编写程序,实现了年、月、日、时、分、秒计数,温度测量、时钟报警等功能。

关键词: STC89C51 数字时钟一、 实训目的电子时间显示器现在在任何地方都有涉及到,例如电子表和商场的时间显示等等,所以它是一种既方便又实用的技术,而我们所做的万年历则是在它的基础上做出来的,通过万年历的制作,我们可以进一步了解计数器的使用,了解各个进制之间的转换,以及其他的任意进制计数器的构成方法等,并且进一步了解DS1302芯片、DS18B20芯片的使用等。

二、总体设计方案根据项目任务,该系统采用STC89C51为控制核心,以电子大赛开发板为实验平台,利用各种芯片实现相应功能,三、硬件设计1、单片机最小系统STC89C52为40引脚双列直插芯片,有四个I/O 口P0,P1,P2,P3,每一条I/O 线都能独立地作输出或输入。

单片机的最小系统如下图所示,18引脚和19引脚接晶振电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。

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

时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个22pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处 使单片机工作于内部振荡模式。

此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。

时钟振荡电路如下图所示。

复位电路由电阻和极性电容组成,如下图所示,通过高电平使单片机复位,在时钟电路开始工作后,当高电平的时间超过大约2us时,即可实现复位。

基于单片机带温度显示的液晶万年历

基于单片机带温度显示的液晶万年历

摘要在寒假期间我用一周时间完成了这个液晶万年历,它可以显示年月日、时分秒、以及温度(可上下限报警),可以对时间进行加一或减一调整,并加入了闰、平年时间调整,方便可行,已经调试成功。

考虑到成本和方便,本作品采用了STC89c52和DS18B20,计时用的是51单片机自带的十六位定时器/计数器T0,尽管对时间进行了误差调整但是还是有一定的误差,考虑到学校后改用DS1302时钟芯片,进一步减小误差。

温度显示精度达到0.1摄氏度。

关键词:单片机 DS18B20 万年历温度1.硬件工作介绍(1)上电自动复位及手动复位电路STC89c52单片机的RST端外部复位有两种操作方式:上电自动复位和按键手动复位。

本设计用上电自动复位以及手动复位下结合的方式外接电路(见附图)。

(2)时钟振荡电路作品中采用12M晶振,其连接方法如图所示,其中电容的值都为22pF。

(3)1602液晶显示接口1602采用标准的16脚接口(见附图),其中:第1脚:GND为地电源第2脚:VCC接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

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

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

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

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

第15脚:VCC第16:GND(4)键盘键盘是通过S3(P3.2),S4(p3.3),S5(p3.4)对时钟进行调整,其S3选择要调整的对象如时,分,日,月等等,并在液晶屏上显示所选的对象。

S4对所选中的对象进行加一调整,而S5对所选对象进行减一调整。

基于51单片机的电子日历+温度显示设计

基于51单片机的电子日历+温度显示设计

2 电子日历设计与实现2.1 任务分析一、功能本设计要求具有显示生肖、年、月、日、星期、时、分、秒等功能;阳历与阴历能够自动关联;具有温度计功能;具备年、月、日、星期、时、分、秒校准功能;设计最终达到效果如图2-1。

图2-1 设计效果图二、系统原理按照系统设计功能的要求,系统由单片机、时钟模块DS1302、显示模块12864、键盘以及温度采集模块DS18B20共5部分电路组成,电路构成框图如图2-2所示。

图2-2 系统设计原理框图三、系统硬件要求本设计电路采用AT89S51单片机为控制核心,AT89S51具有在线编程功能,低功耗,能在3V超低压工作。

时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

DS1302内部有一个用于临时性存放数据的31*8RAM寄存器。

器件在加电情况下,可自动生成年、月、日、周、时、分、秒时间数据,该器件具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能。

温度的采集采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。

另外,温度传感器DS18B20还具有测量精度高、测量范围广等优点。

显示部分用12864LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样,清晰可见,能够达到较好的显示效果。

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

单片机的最小系统如图3-1所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。

基于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数码管直读显示。

基于51单片机的万年历

基于51单片机的万年历

基于51单片机的万年历摘要本篇论文主要介绍了运用单片机实现电子万年历的设计,其中51单片机作为对系统的主要控制器,由DS1302完成对时钟电路的显示和DS18B20对温度的检测。

设计主要由时钟电路模块、稳压电路模块、液晶显示模块、温度测试模块组成。

实现了年、月、日、星期、温度显示,及闹钟报警的功能。

这个设计具有体积小,简单方便,功能齐全,精度高等特点。

关键词51单片机;时钟芯片;温度显示;闹钟设置AbstractThis paper mainly introduces the realization of electronic calendar application of the design of SCM,51 MCU as the main controller of the system,DS1302 completed by the clock circuit display and temperature test DS18B20。

Designed for use mainly by the clock circuit module, voltage regulator circuit module, liquid crystal display module, temperature measurement modules。

Achieved a year, month, day, week, temperature display, and alarm clock function。

This design is small, simple and convenient, complete functions and high accuracy。

Key words51 MCU;Clock chip;Temperature display;Alarm clock settings目录1. 引言................................................ 错误!未定义书签。

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

2 电子日历设计与实现2.1 任务分析一、功能本设计要求具有显示生肖、年、月、日、星期、时、分、秒等功能;阳历与阴历能够自动关联;具有温度计功能;具备年、月、日、星期、时、分、秒校准功能;设计最终达到效果如图2-1。

图2-1 设计效果图二、系统原理按照系统设计功能的要求,系统由单片机、时钟模块DS1302、显示模块12864、键盘以及温度采集模块DS18B20共5部分电路组成,电路构成框图如图2-2所示。

图2-2 系统设计原理框图三、系统硬件要求本设计电路采用AT89S51单片机为控制核心,AT89S51具有在线编程功能,低功耗,能在3V超低压工作。

时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。

DS1302内部有一个用于临时性存放数据的31*8RAM寄存器。

器件在加电情况下,可自动生成年、月、日、周、时、分、秒时间数据,该器件具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能。

温度的采集采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。

另外,温度传感器DS18B20还具有测量精度高、测量范围广等优点。

显示部分用12864LED液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字、图形,显示多样,清晰可见,能够达到较好的显示效果。

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

单片机的最小系统如图3-1所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。

第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端,单片机电路如图2-3 所示。

图2-3 单片机电路二、时钟电路模块的设计DSl302数据操作原理: DSl302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。

无论是读周期还是写周期,开始8位指定40个寄存器中哪个将被访问到。

在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。

DS1302的引脚连接如图2-4所示。

其中VCC1为后备电源,VCC2为主电源。

在主电源关闭的情况下,也能保持时钟的连续运行。

DS1302由VCC1或VCC2两者中的较大者供电。

当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。

当VCC2小于VCC1时,DS1302由VCC1供电。

X1和X2是振荡源,外接32.768kHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送,与AT89C51的P3.0相连。

RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。

当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。

如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。

上电运行时,在VCC≥2.5V之前,RST 必须保持低电平。

只有在SCLK为低电平时,才能将RST置为高电平。

I/O为串行数据输入输出端(双向),与AT89C51的P3.1相连。

SCLK始终是输入端。

图2-4 DS1302的引脚连接图如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O 引脚变为高阻态。

上电运行时,在Vcc≥2.5 V之前,RST脚必须保持低电平。

只有在SCLK为低电平时,才能将RCT置为高电平。

三、温度采集模块设计如图2-5所示。

采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。

+CC图2-5 DS18B20温度采集四、显示模块的设计液晶显示模块12864是一种图形点阵液晶显示器,它主要是由128×64个液晶显示点组成的一个128列×64行的阵列,可以显示8×4个(16×16点阵)汉字。

每个显示点对应一位二进制数,1表示亮,0表示灭。

存储这些点阵信息的RA M称为显示数据存储器。

要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。

图形或汉字的点阵信息当然由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。

LCD128 64的主要技术参数和性能见表2.1。

表2.1 12864主要技术参数和性能参数性能电源电源功耗电流显示内容接口总线工作温度储存温度VDD:+5V;模块内自带-10V负压,用于LCD的驱动电压电源功耗电流(Idd)≤2.8mA128(列)×64(行)点与CPU接口采用8位数据总线并行输入输出和8条控制线;-20℃~+60℃-30℃~+70℃,当温度低于–15℃时,不能做动画显示。

液晶显示模块12864的DB0-DB7是用来传输数据的,与AT89S51的P0.0-P0.7相连。

片选线2cs和1cs与AT89C51的P1.1、P1.0相连。

GND是接地线,VCC 与AT89C51的电源连接起来。

由于设计结果仿真实现,因此12864 的对比度调节控制和背光照明电源等引脚为系统默认,在设计中可以不予处理。

12864的电路连接方式见图2-6所示。

图2-6LCD12864连接图2.3系统的软件设计一、软件设计平台与设计过程目前单片机程序的设计大多采用Keil设计平台,图2-7是该软件的操作界面,本设计程序采用Keilc51v802版本,利用C语言编写,由于电子日历的数据处理和函数较多,因此程序模块设计。

在设计过程中,首先编写主程序以外的子程序模块,如12864显示器驱动、DS1302驱动等,然后编写主函数。

为了程序结构简单化,各个子程序都经过条件编译形成头文件被主程序包含。

被主程序包含的文件含有汉字与字符库、线条图形库等。

图2-7 Keil软件的使用界面二、程序流程框图在编程部分,首先要初始化DS1302模块,即从DS1302中读出日期和时间,还要从温度传感器DS18B20中读取温度。

分离日期、时间、温度后送到显示模块。

最后由农历更新子程序来实现与阳历自动关联。

程序流程框图见图2-7。

图2-7 主程序流程图主程序包含主函数和12864.h、model.h、ds1302.h、one-wire.h、lunar.h、inp ut_080627.h头文件,并且含有系统的硬件的预处理指令。

主函数的作用是获取时间数据、显示温度、显示时间信息、对时间调整函数调整等,主函数的部分程序如下:#include <reg52.h>#include "12864.h"#include "model.h"#include "ds1302.h"#include "one-wire.h"#include "lunar.h"#include "input_080627.h"#define uchar unsigned char#define uint unsigned int#define NoUpLine 1#define UpLine 0#define NoUnderLine 1#define UnderLine 0#define FALSE 0#define TRUE 1void main(void){SFR_Init();CAL_Init();GUI_Init();TR0 = 1;TR1 = 1;while(1){GetTime(&sys); //获得时间LCD_ShowTemp(); //显示温度LCD_ShowWNL(); //显示万年历Time_Set(); //时间设置}}三、阳历程序的设计时钟芯片DSl302本身能够产生时间信息,阳历程序只需从DSl302各寄存器中读出年、月、日、星期、小时、分、秒等数据,然后再处理即可。

在首次对DSl302进行操作之前,必须对它进行初始化,图2-8 阳历程序流程图然后从DSl302中读出数据,再经过处理后,送给显示缓冲单元。

图2-8所示为阳历程序流程图,程序如下:#include <reg52.h>//#include "ds1302.h"#define uchar unsigned char#define uint unsigned int#define SECOND 0x80 //秒#define MINUTE 0x82 //分鍾#define HOUR 0x84 //小時#define DAY 0x86 //天#define MONTH 0x88 //月#define WEEK 0x8a //星期#define YEAR 0x8c //年sbit DS1302_RST=P3^0;sbit DS1302_SCLK=P3^1;sbit DS1302_IO=P3^2;typedef struct systime{uchar cYear;uchar cMon;uchar cDay;uchar cHour;uchar cMin;uchar cSec;uchar cWeek;}SYSTIME;void DS1302_Write(uchar D){uchar i;for(i=0;i<8;i++){DS1302_IO=D&0x01;DS1302_SCLK=1;DS1302_SCLK=0;D=D>>1;}}uchar DS1302_Read(){uchar TempDat=0,i;for(i=0;i<8;i++){TempDat>>=1;if(DS1302_IO) TempDat=TempDat|0x80;DS1302_SCLK=1;DS1302_SCLK=0;}return TempDat;}void WDS1302(uchar ucAddr, uchar ucDat){DS1302_RST = 0;DS1302_SCLK = 0;DS1302_RST = 1;DS1302_Write(ucAddr); // 地址,命令DS1302_Write(ucDat); // 写1Byte数据DS1302_SCLK = 1;DS1302_RST = 0;}uchar RDS1302(uchar ucAddr){uchar ucDat;DS1302_RST = 0;DS1302_SCLK = 0;DS1302_RST = 1;DS1302_Write(ucAddr); // 地址,命令ucDat=DS1302_Read();DS1302_SCLK = 1;DS1302_RST = 0;return ucDat;}void SetTime(SYSTIME sys){WDS1302(YEAR,sys.cYear);WDS1302(MONTH,sys.cMon&0x1f);WDS1302(DAY,sys.cDay&0x3f);WDS1302(HOUR,sys.cHour&0xbf);WDS1302(MINUTE,sys.cMin&0x7f);WDS1302(SECOND,sys.cSec&0x7f);WDS1302(WEEK,sys.cWeek&0x07);}void GetTime(SYSTIME *sys){uchar uiTempDat;uiTempDat=RDS1302(YEAR|0x01);(*sys).cYear=(uiTempDat>>4)*10+(uiTempDat&0x0f);// uiTempDat=RDS1302(0x88|0x01);// (*sys).cMon=((uiTempDat&0x1f)>>4)*10+(uiTempDat&0x0f);uiTempDat=RDS1302(0x88|0x01);(*sys).cMon=((uiTempDat&0x1f)>>4)*10+(uiTempDat&0x0f);uiTempDat=RDS1302(DAY|0x01);(*sys).cDay=((uiTempDat&0x3f)>>4)*10+(uiTempDat&0x0f);uiTempDat=RDS1302(HOUR|0x01);(*sys).cHour=((uiTempDat&0x3f)>>4)*10+(uiTempDat&0x0f);uiTempDat=RDS1302(MINUTE|0x01);sys->cMin=((uiTempDat&0x7f)>>4)*10+(uiTempDat&0x0f);uiTempDat=RDS1302(SECOND|0x01);sys->cSec=((uiTempDat&0x7f)>>4)*10+(uiTempDat&0x0f);uiTempDat=RDS1302(MONTH|0x01);(*sys).cMon=uiTempDat&0x17;uiTempDat=RDS1302(WEEK|0x01);sys->cWeek=uiTempDat&0x07;}四、阴历程序设计由于DS1302没有阳历计时功能,因此阴历的计时与实现是要通过阳历日期来推导。

相关文档
最新文档