多功能数字万年历的设计(设计成果+说明书+任务书+开通报告)_第1页
多功能数字万年历的设计(设计成果+说明书+任务书+开通报告)_第2页
多功能数字万年历的设计(设计成果+说明书+任务书+开通报告)_第3页
多功能数字万年历的设计(设计成果+说明书+任务书+开通报告)_第4页
多功能数字万年历的设计(设计成果+说明书+任务书+开通报告)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1绪论1.1设计的意义万年历在古代被称为实用的书或历书,并按照一个特定的日历年计算规则,安排日、月。万年历不仅在人类生产、生活中必不可少,而且其内容与形式也越来越丰富了。现如今,由于时代发展的脚步不断前进,人类对高科技的向往使得传统的只用于计时的万年历已经不能满足现代人的需求,在此背景下,具有多种功能的数字万年历应运而生。数字万年历不再只局限于对日期、时间的计时,它还能智能化的判断当前年份是否是闰年,同时它还能够显示农历日期,这样更方便了人们对节气的把握。并且它还能够准确的测量当前的温度与湿度并在LCD数字显示屏上显示出来2。它还具备整点提示、时间校准、节日提示等许多人性化的设置于功能。与传统万年历相比,多功能数字万年历不但计时精准,同时携带方便,功能多样。多功能数字万年历的使用成为了一种主流。1.2设计的思路多功能数字万年历具有准确显示时间日期、设置闹钟以及实时显示环境温度、湿度的功能。设计结构模块化管理,包含了主控制系统模块、时钟模块、键盘模块、传感器模块和显示模块4。设计系统采用C语言,它具备了汇编语言的功能,尤其它作为一种非常方便的编程被广泛使用,现如今国内最通用编译型程序设计语言的是KeilC51。此计算机具有很强的可移植性,易于扩展,每个硬件模块成本低廉,可被广泛用于。1.3设计的目标本设计的目的在于设计一个结构简单,功耗小,实用性强的多功能数字万年历。该万年历不仅结构简单,功耗小,同时它具有实时计时、整点闹铃、闰年与非闰年判断的功能。其特色是能显示阴历日期,并对中国传统的几大节日进行设置提醒,同时它采用24h格式进行计时;它还能够实时的记录下当前天气的温度和湿度数值,这些数据都会在LCD显示屏上面显示出来10;它还具有记忆功能,即使在突发情况下,例如突然断电,系统不能正常运作时也可以计时,这样就避免了由于突发事件而产生的时间不准确的情况。考虑到我所学的专业和多功能数字万年历的越来越受欢迎的市场前景,我打算设计一个基于单片机的多功能万年历作为我的毕业设计。这样既能巩固我在大学所学的知识,设计出来的作品又能为大众所用,一举两得。1.4设计的主要使用说明本次设计采用洞洞板手工焊接,结构简单,但是功能强大。本设计采用4节6V的干电池进行供电。同时还配备一个锂电池,以便在突然断电的情况下继续对DS1302芯片进行供电。这样就避免了每次断电后时间不准。四个按键的作用分别是,第一个按键用作结束时间调整,回到正常走时的显示界面,第二个按键用于时间的调整,每按一下分别切换到当前时间的年、月、日、星期、时、分钟所在的地址,以便对选中的参数进行调整。第三和第四个按键分别对选中的时间参数进行加一和减一的操作,以实现时间校准的功能。2系统的总体设计由于通过单片机实现数字万年历的方法有很多种,同时单片机的类型同样具有很多选择,所以在做此设计之前需要明确选择的方案。选择了正确的方案不仅可以节约成本,同时还可以使我们的设计结果更加准确,操作更加方便。减少了开发的难度,也缩短了开发的时间。2.1系统基本方案选择和论证2.1.1单片机芯片的方案选择和论证方案一:选用AT89C51单片机芯片,AT89C51是Atmel旗下生产的一款单片机芯片,它是8位单片机中一个最基本的、最典型的芯片信号,它自带4K只读存储器,并且它还具有低电压,性能好的特点。它又被简称为单片机。它能够与MCS-51兼容。但是其存储空间较小,所以不采用此芯片。方案二:选用AT89S52芯片,AT89S52也是由美国的Atmel公司生产的,自带8K字节的Flash存储器,具有功耗低、性能好的特点。AT89S52拥有诸如支持ISP下载、使用方便,可靠性好、在线编程可擦除等优点。在本次设计中由于需要我们编写的程序代码多,为防止4K字节的存储器的存储空间不够,所以我们选择具有自带8K字节只读存储器的AT89S52单片机芯片。同时在线编程可擦除的优点也方便我们对编写的代码随时进行修改。通过上述论证我采用AT89S52芯片作为我需要的单片机芯片。2.1.2时钟芯片的方案选择和论证方案一:选用DS12C887时钟芯片,采用直插方式的DS12C887时钟芯片自带一个可用来对自身供电的锂电池,同时还自带了一个大小为32.768k频率的晶振,使用很方便。但是它的体积相对较大,同时它的引脚相较于DS1302也较多,所以不采用它。方案二:直接利用软件编程控制定时器来实现计时功能,虽然通过其定时功能能够实现对时间、日期的计时和计数,但是用到的晶振不同等因素会使其产生很大的误差,所以不采用此方案。方案三:采用DSLLAS公司生产的DS1302时钟芯片,DS1302时钟芯片是一种体积非常小的表贴式元件,它具有计时精准、高性能、引脚少、操作简单等优点。经过论证我选择DS1302时钟芯片。2.1.3显示模块的方案选择和论证方案一:采用LCD1602液晶显示器,LCD1602液晶显示器采用并行操作方式居多,每行能够显示16个字符,一共可以显示两行,只能显示ASCII码字符,如数字,字母,符号,但其不足之处就是不能显示汉字,并且显示的字符较少,不能完全满足设计的要求,所以不要选择LCD1602液晶显示。方案二:采用另一种液晶显示器LCD12232,它的工作电压为5v,由122列和32行组成,不仅可以显示ASCII码字符,还可以显示图形和汉字。但是它的不足之处在于,它只能显示7.5*2个汉字,而我在本次设计中需要很多的汉字显示,所以它也不能完全满足设计的要求,所以本次设计的显示模块我不打算采用液晶显示器LCD12232液晶显示器。方案三:采用LCD12864液晶显示器,LCD12864液晶显示器可以显示大量的字符,显示多样,可以调节清晰度,能够满足本次设计中要求,经过论证我选择本次设计的显示模块为LCD12864。2.1.4温湿度传感器的选择与论证方案一:采用用来对实时温度进行测量的DS18B20,它的特点包括体积较小,成本低,并且还具有很强的抗干扰能力,测量精度高等,但是在本次设计中,我需要对温湿度进行测量,而不单单只对温度进行测量,所以DS18B20温度传感器不满足本次设计的要求,所以不采用。方案二:选用可以同时对实时温湿度进行测量的DHT11,它是一款复合传感器,它具有良好可靠性和卓越的长期稳定性。优点包括产品的质量好、响应速度快速、能很好的降低外界对其的干扰、产品价格低廉,具有很高的性价比等,经过论证,我选择DHT11传感器作为测量温湿度模块。2.2电路设计最终方案经过论证方案所得,最终选用的方案为:采用AT89S52作为主控制系统,时钟系统采用的是DS302,温湿度的测量则通过DHT11传感器来完成。最后通过LCD12864液晶显示器来将数据实时显示出来。3系统的硬件设计3.1系统硬件的整体设计在进行本次设计之前,我们需要先画出系统的结构框图,这样不仅让我们对设计成果有个大概的印象,同时也方便了我们的设计,为我们的设计提供参考,系统的结构框图如图1:键盘电路单片机时钟电路温度传感器湿度传感器复位电路LCD显示语音系统图1系统结构框图3.2系统硬件介绍3.2.1AT89S52单片机介绍本次设计选用的单片机芯片为AT89S52,它的具体含义分别是AT表示Atmel公司生产的,8代表该芯片为8051内核芯片,9代表内部是Flash存储器的,S表示可下载的Flash,即支持ISP下载的Flash,52表示其型号。可能AT89S52后面会加24PC后缀,即AT89S5224PC,24表示最快的晶振频率,P表示其封装形式,C表示商用。(1)AT89S52单片机的引脚和其功能AT89S52单片机的引脚说明如图2所示:P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXD/P3.010TXD/P3.111INT0/P3.212INT1/P3.313T0/P3.414T1/P3.515WR/P3.616RD/P3.717XTAL218XTAL119GND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/Vpp31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40图2AT89S52引脚图按照引脚的功能,可以将其分为四类。电源引脚。如Vcc、GND。Vcc(40脚)、GND(20脚)是单片机的电源引脚,用来接电源的正负极,Vcc接电源正极,GND则接地。时钟引脚。如XTAL1、XTAL2。XTAL1(19脚)、XTAL2(18脚)是外接时钟引脚。它需要外接一个晶振,通常晶振的频率有11.039kHZ,12kHZ和24kHZ。编程控制引脚。如RST、PSEN、ALE/PROG,EA/Vpp输入/输出引脚。如P0、P1、P2、P3,四组8位I/O端口P0口(32脚-39脚)是双向8位三态I/O口,每个口可独立控制。P0口内部结构中不含上拉电阻,因此P0口不能直接输入高/低电平。因此若想使用P0口,首先必须加上一个上拉电阻以防止输入电压过高而损坏单片机。P1口(1脚-8脚)并不是双向8位三态的输入输出口,每个输入/输出口都可独立控制,与P0口不同,P1口内部自带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,所以不是真正的双向I/O口而是准双向的I/O口。相较于51单片机,52单片机比51单片机多了一个T2定时器/计数器,因此52单片机P1.0引脚具有了第二功能,它的第二功能就是作为T2定时器/计数器的外部输入。P2口(21脚28脚)也是准双向8位I/O口,每个输入/输出口也可独立控制,内部自带上拉电阻,与P1口相似。P3口(10脚17脚)同P1,P2口相似,它也是准双向8位I/O口,每个口可被独立控制,内带上拉电阻,作为第一功能使用时就当做普通I/O口,与P1口相似。作为第二功能使用时,如下表所示:表1P3口各引脚的第二功能定义标号引脚第二功能说明P3.010RXD串行输入口P3.111TXD串行输出口P3.212INT0外部中断0P3.313INT1外部中断1P3.414T0定时器/计数器0外部输入端P3.515T1定时器/计数器1外部输入端P3.616WR外部数据存储器写脉冲P3.717RD外部数据存储器读脉冲(2)AT89S52单片机最小系统单片机的最小系统应包含:电源电路:向单片机供电,工作电压范围为4.0V-5.5V。时钟电路:单片机工作的时间基准,时钟电路决定了单片机的工作速度。时钟电路又叫振荡电路。复位电路:确定单片机的工作的开始状态,重新启动单片机。AT89S52单片机的最小系统如图3所示:P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD9RXD/P3.010TXD/P3.111INT0/P3.212INT1/P3.313T0/P3.414T1/P3.515WR/P3.616RD/P3.717XTAL218XTAL119GND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/Vpp31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40AT89S52U1Y212MHzC122uFC222uFR910KRST20uFC35VK1K2K3K4P2_0P2_1P2_2P2_3P2_4P2_5P2_6P2_7P1_0P1_1P1_2P1_3P1_4P1_5P1_6P1_75V图3单片机最小系统3.2.2DS1302时钟芯片介绍DS1302时钟芯片是由美国DALLAS公司生产的,采用涓细电流充电、功率消耗低。还能够对时间精准计时等其他多种功能。采用双电源供电(主电源和备用电源),即在突然断电情况下,由备用电源供电,提供断电保护。同时使用寿命很长,计时误差小的优点使得DS1302时钟芯片的使用相当广泛和普遍。(1)时钟芯片的引脚及其功能DS1302时钟芯片的引脚如图4所示:VCC11X12X23GND4RST5I/O6SCLK7VCC28图4DS1302引脚图DS1302时钟芯片引脚的功能。VCC1(引脚1)为主电源,对时钟芯片进行供电。Vcc2(引脚8)是接备用电源,能够在突然断电向DS1302时钟芯片进行供电。SCLK(引脚7)是串行时钟输入,用于对数据的输入与输出控制。X1,X2(引脚2-引脚3)是外接32.768KHZ晶振的时钟引脚。3.2.3DHT11温湿度传感器介绍DTH11数字温湿度传感器是用来实时测量温湿度的复合传感器,可是同时对温湿度进行测量。采用先进的数字模块采集技术,使得产品具有很强的可靠性和稳定性。内部的电阻式感湿原件和NTC感温元件分别用来测量温湿度。(1)DHT11传感器引脚及其功能DHT11传感器的引脚功能,如下表所示:表2DHT11传感器引脚功能Pin名称注解1VDD供电2DATA串行数据,单总线3NC空脚,悬空4GND接地,电源负极3.2.4LCD12864液晶显示器介绍LCD12864液晶显示器带有中文字库,它是一种具有4位/8位并行、由128列和64行组成内部含有大量简体中文字库的点阵图形液晶显示模块。它通过5V电压驱动,带背光,能够显示数字、大小、字母、图形和中文。它的特点是工作电压低、功耗小。但是它有一个很明显的不足就是它受温度的影响很大,它的工作温度在0到55摄氏度之间。(1)LCD12864液晶显示器引脚机器功能LCD12864引脚如图5所示:图5LCD12864引脚图LCD12864各引脚的功能。Vss(编号1):电源地,接地。Vdd(编号2):电源正极,提供电源。VO(编号3):液晶显示对比度调节端,调节液晶显示的清晰度。RS(编号4):数据/命令选择端,作为数据选择时将电平置高,用作命令选择时将电平置低。R/W(编号5):读/写选择端,作为读选择时电平置高,写选择端时将电平置低。E(编号6):使能信号,当E为高电平时使能。D0-D7(编号7-14):数据口。PSB(编号15):并/串选择,高电平时采用并行方式,输入低电平LCD12864采用串行方式。NC(编号16、18):空脚,什么都不接。RST(编号17):复位,低电平有效。BLA(编号19):背光电源正极。BLK(编号20):背光电源负极。3.2.5键盘模块介绍键盘可分为编码键盘和非编码键盘两种,键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的成为编码键盘,而靠软件编程来识别的键盘称为非编码键盘,本设计采用的是弹性小键盘,它是非编码键盘下的独立键盘的一种。按键输入部分的作用是用来对时间进行调整和闹钟进行设置。最终确定由四个按键来实现上叙功能,四个键的功能包括闹钟时间设定、时间数值的增加、时间数值的减小和取消设置。3.2.6闹铃模块介绍闹铃模式可以有很多种,比如通过外接一个小喇叭,当闹铃时间到的时候进行语音闹铃。同时也可以采用简单的蜂鸣器来实现闹铃功能。本设计采用的闹铃方式就是通过蜂鸣器来实现。蜂鸣器是一种一体化结构的电子讯响器,供电方式为直流电压供电,用作发声器件。蜂鸣器在电路中用字母H或HA表示。本次设计采用的是电磁式蜂鸣器,它的组成方式是振荡器、电磁线圈、磁铁、震动膜片及外壳等。3.2.7电源模块介绍本设计用到的电源模块是通过4节1.5v的干电池进行供电,通过杜邦线将电池正负极与洞洞板上排针的正负极对应,实现电源供电功能。3.3系统硬件介绍小结本章主要介绍了本次设计需要的系统硬件,介绍了AT89S52单片机,DS1302时钟芯片,DHT11温湿度传感器,LCD12864液晶显示器,并且也介绍了按键模块和闹铃模块。通过本章的介绍,可以对本次设计所需的硬件有了大体的认识。4系统的软件设计多功能数字万年历的完成,不仅需要硬件设备,软件编程同样必不可少,本次设计的许多功能的实现需要软件程序来控制。为了方便编写和增加可读性,本设计的软件部分采用C语言进行编写。软件设计方法与硬件设计相对应,将每个功能分解成不同的程序模块,分别进行设计和编程,最后通过主程序将各程序模块连接起来。这有利于修改程序,提高了程序的可移植性。4.1系统流程图在编写软件代码之前,需要先列出整体的流程图,这样既让我们有了初步的概念,同时在编程的时候也有了一个清晰的思路。系统的流程图如图所示:4.2公历计算显示程序设计本次设计采用DS1302芯片对时间进行实时获取,并把获取数值通过软件编程在液晶显示器上进行显示,通过时钟芯片我们可以准确的读取当前时间。4.2.1公历时间获取流程图4.2.2DS1302时钟芯片内部寄存器获取DS1302时钟芯片的时间值时需要对其内部的寄存器进行操作,了解DS1302时钟芯片的内部寄存器有助于我们对程序软件部分的设计。DS1302时钟芯片内部包括12个寄存器,其中有7个与日历、时钟有关,存放的数据位为BCD码形式。下面我们将对这7个寄存器进行介绍。秒寄存器,秒寄存器在读操作时它的命令字为81H,而对其进行写操作时它的命令字为80H,它的取值范围为0到59s。分钟寄存器,分钟寄存器在读操作时它的命令字为83H,而对其进行写操作时它的命令字为82H,它的取值范围为00到59min。小时寄存器,小时寄存器在读操作时它的命令字为85H,而对其进行写操作时它的命令字为84H,它的取值范围有两种,一种是01到12h,此时她需要用AM和PM来表示当前时间是上午还是下午。另一种为00到23h。本次设计采用的是24h格式进行计时。日期寄存器,日期寄存器在读操作时它的命令字为87H,而对其进行写操作时它的命令字为86H,它的取值范围为01到28、29、30和31这四种。当前月份为小月时最大值为30,当前月份为大月时最大值为31,若是平年的二月它的最大值为28,闰年的二月,它的取值为01到29。月份寄存器,月份寄存器在读操作时它的命令字为89H,而对其进行写操作时它的命令字为88H,它的取值范围为01到12。周日寄存器,周日寄存器在读操作时它的命令字为8BH,而对其进行写操作时它的命令字为8AH,秒计时时它的取值范围为1到7。年寄存器,年寄存器在读操作时它的命令字为8DH,而对其进行写操作时它的命令字为8CH,它的取值范围为00到99。4.2.3DS102读写时序说明DS1302采用SPI总线驱动,不仅需要从内部读取需要的日期、时间等数据,同时也需要向内部写入控制字。想要和DS1302实现通信,需要先了解它的控制字。DS1302的控制字如表所示:表4.2.3DS1302控制字765432101RAMCKA4A3A2A1A0RDWR最高位即第7位输入高电平1时将数据写入到DS1302中,如果它为低电平0,则不能把数据写入到DS1302中。第6位:如果输入低电平表示存取日历时钟数据,输入高电平则表示存取RAM数据。第5位至第1位(A4A0):指示操作单元的地址。第0位(最低有效位):输入低电平表示写操作,输入高电平表示进行读操作。4.2.4公历时间读取程序设计1首先我们先定义DS1302使用到的I/O口,即sbitDS1302_CLK=P11,定义实时时钟时钟线引脚,sbitDS1302_IO=P12,定义实时时钟数据线引脚,sbitDS1302_RST=P13,定义实时时钟复位线引脚。根据需要,可分为对DS1302进行初始化,读取数据等操作。4.3公历转农历程序设计市面上的许多普通万年历没有对农历日期进行显示,所以在做本次设计时,我打算完善本次万年历的设计,在现实公历时间的基础上,对中国传统的农历日期也进行显示。4.3.1公历转农历算法研究农历又称作阴历或夏历,以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日)。每月只有29天或者30天,小月为29天,大月为30天,大小月在不同的年份中也不是固定的,所以使得有的年份的大年三十并不是30日,而是29日。经过计算这样每年只有354天,比正常的365(366)天少11(12)天,为避免误差,每隔两三年就要增加一个月,俗称闰月,大约十七年内有九年是有闰月的。4.3.2公历转农历程序设计我们知道,暂时还没有公式类型的算法来将公历转化为农历,所以用单片机来直接计算农历这是不太可能。本次设计采用的是查表法来计算农历日期,先把公历年有无闰月、在此公历年中每月在农历里是大月还是小月,该公历的春节日期是几月几号用3个十六进制数表示出来。例如2014年,我们可以用0x95,0x5A,0xBf这三个十六进制数表示,0x95表示成二进制为10010101,其中高四位即1001表示闰月月份,通过转化成十进制数可知为9,所以2014年有闰月且农历九月为闰月。如果高四位为0表示该年没有闰月。它的低四位0101表示2014年,农历的1-4月是大月还是小月,0代表小月,1代表大月。0x5A表示成二进制位01011010,表示5-12月是大月还是小月。0xBF用二进制表示为10111111,其中最高位表示该年的闰月是大月还是小月,1代表大月,0代表小月。2014年有闰月,所以它的闰月是大月即有30天。它的第5和第6位组成的是该年春节的公历月份,低5位代表该年春节时的公历日期,通过计算可知2014年的春节为1月31日。4.4温湿度采集程序设计本次设计采用DHT11温湿度传感器进行实时的温湿度测量,并将获取数值通过程序代码在LCD12864液晶显示器上进行显示,通过DHT11传感器我们可以准确的读取当前温湿度值。4.4.1温湿度数值采集流程图4.4.2DHT11串行通信说明DHT11采用简化的单总线通信,一次传送40位数据,高位先出。一般的数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据和8bit的校验位组成。校验位是为了校验传送的数据是否正确,如果高32位之和等于校验位的值,则说明接收的数据是正确的,否则接收的数据不正确,放弃,重新接收数据。4.4.2DHT11传感器温湿度值读取程序设计根据DHT11的I/O口和单片机引脚连接来进行位定义,由于本次设计的DHT11传感器的I/O口与单片机的P10引脚相连,所以定义sbitdht11=P10。其中要进行判断检测计数器是否超过了设定的范围。4.5LCD2864液晶显示程序设计本次设计采用LCD12864液晶显示器进行数据显示,通过LCD12864我们可以清晰的获取相应的数值。4.5.1LCD12864液晶显示屏初始化在通过LCD12864液晶显示屏进行数据显示之前,需要对LCD12864进行初始化操作,首先要进行串口、并口方式的判断。其次要在写命令里进行一些指令操作。4.5.2LCD12864液晶显示器部分指令说明对LCD12864进行指令的操作,主要是对DB0-DB7数据口的操作。下面将进行详细的说明。(1)清除显示DB7DB6DB5DB4DB3DB2DB1DB0LLLLLLLH作用:显示屏幕的清除,把DDRAM位地址计数器归0。(2)位址归位DB7DB6DB5DB4DB3DB2DB1DB0LLLLLLHX作用:把DDRAM位址计数器调整为00H,游标位置回到原点,该功能不会对DDRAM的显示产生影响。(3)进入点设定DB7DB6DB5DB4DB3DB2DB1DB0LLLLLHS作用:把DDRAM位址计数器调整归零,游标移回到原点,该功能不会对DDRAM的显示功能产生影响。执行该命令后,所设置的行将显示在屏幕的第一行。显示最开始行是由Z地址计数器控制的,该命令自动将AA5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。Z地址计数器具有循环计数功能,用于显示扫描同步,当扫描完一行后自动加一。(4)显示状态开/关DB7DB6DB5DB4DB3DB2DB1DB0LLLLHDCB作用:D=1,整体显示开,D=0则整体显示关闭;C=1时,打开游标,C=0时则关闭游标;B=1,游标位置打开,、否则关闭游标位置。(5)游标或显示移位控制DB7DB6DB5DB4DB3DB2DB1DB0LLLHS/CR/LXX作用:设定游标的移动与显示的移位控制位,该指令并不改变DDRAM的内容。(6)功能设定DB7DB6DB5DB4DB3DB2DB1DB0LLHDLX0REXX作用:DL=1(必须设为1)且RE=1,表示扩充指令集动作;若RE=0则代表基本指令集动作。(7)设定CGRAM位址DB7DB6DB5DB4DB3DB2DB1DB0LHAC5AC4AC3AC2AC1AC0作用:设定CGRAM位址计数器(AC)。(8)设定DDRAMDB7DB6DB5DB4DB3DB2DB1DB0HAC6AC5AC4AC3AC2AC1AC0作用:设定DDRAM位址到位址计数器(AC)。4.5.3LCD12864程序设计对于LCD12864液晶显示器的程序设计,主要包括两个方面,一个是写命令,另一个是写数据。(1)LCD12864写命令程序设计在写命令时我们要将LCD12864的RS接口置为低电平,读写选择端RW也置为低电平,使能信号E应先置低再置高以获得高脉冲。命令写完再将使能信号E置低。(2)LCD1264写数据程序设计在写数据时我们要将LCD12864的RS接口置为高电平,读写选择端RW置为低电平,使能信号E应先置低再置高以获得高脉冲。数据写完再将使能信号E置低。4.6闹铃程序设计本次设计的闹铃程序设计很简单,通过蜂鸣器来实现,先对蜂鸣器进行位定义,即sbitbeep=P37,将beep置低实现蜂鸣器响。4.7延时函数的程序设计延时函数在对单片机进行控制时,运用的相当频繁,我一般喜欢将延时函数写成如下的方式:voiddelayms(uintz)uinti,j;for(i=0;iz;i+)for(j=0;j110;j+);通过计算可知,通过上述的延时函数的好处就是,我们输入Z是多少,就会产生Zms的延时,这样方便我们对延时的控制。4.8系统软件设计小结在本次设计中,除了注意硬件电路的正确设计外,还要考虑系统软件的设计。本章主要根据系统功能,介绍了本设计的软件流程图的设计,确定系统的总体结构和操作控制过程,然后介绍了公历计算显示的程序设计、公历转农历的程序设计、温湿度采集的程序设计、LCD12864液晶显示的程序设计、闹铃的程序设计和延时函数的程序设计。结论本设计从理论到设计应用,用AT89S52单片机与DS1302时钟芯片、DHT11温湿度传感、LCD12864液晶显示器等一些电路的组合,成功地设计出了一个集聚多种功能的数字万年历。在软件设计的过程中,利用keil软件在程序录入与调试中的优越性,可以很方便的发现软件编写的错误。通过keil软件中C51单片机程序软件仿真、单步、全速、断点设置、变量查看等功能的运用,可以对我们的编程带来很大的的帮助。本次设计的数字万年历最终实现了实时显示当前的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论