论文(设计)电子万历的设计.doc

上传人:文库蛋蛋多 文档编号:4150505 上传时间:2023-04-07 格式:DOC 页数:47 大小:740.50KB
返回 下载 相关 举报
论文(设计)电子万历的设计.doc_第1页
第1页 / 共47页
论文(设计)电子万历的设计.doc_第2页
第2页 / 共47页
论文(设计)电子万历的设计.doc_第3页
第3页 / 共47页
论文(设计)电子万历的设计.doc_第4页
第4页 / 共47页
论文(设计)电子万历的设计.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《论文(设计)电子万历的设计.doc》由会员分享,可在线阅读,更多相关《论文(设计)电子万历的设计.doc(47页珍藏版)》请在三一办公上搜索。

1、 电子万年历的设计 目录内容摘要1关键词1Abstract1Key words11引言22 设计要求与方案论证22.1 设计要求22.2系统基本方案选择和论证22.2.1单片机芯片的选择方案和论证22.2.2显示模块选择方案和论证32.2.3时钟芯片的选择方案和论证32.2.4温度传感器的选择方案与论证42.3电路设计最终方案决定43 系统的硬件设计与实现43.1电路设计框图43.2系统硬件概述53.3主要单元电路的设计53.3.1单片机主控制模块的设计53.3.2时钟电路模块的设计63.3.3温度采集模块设计73.3.4显示模块的设计83.3.5相关电路原理及说明84 系统的软件设计104.

2、1程序流程框图104.2阳历显示程序设计114.3时间调整程序设计114.4温度数据采集与显示程序设计134.4.1基本功能实现程序134.4.2读出温度子程序134.4.3温度转换命令子程序134.4.4温度计算子程序144.4.5显示数据刷新子程序145 系统仿真与调试15 5.1系统仿真15 5.2硬件制作与调试16 5.2.1硬件制作16 5.2.2硬件调试166 结束语17参考文献18致谢19附录1 系统电路图20附录2 系统程序清单21内容摘要:电子万年历是单片机系统的一个应用,由硬件和软件相配合使用。硬件由主控器、时钟电路、温度检测电路、显示电路、键盘接口5个模块组成。本设计的主

3、控模块使用AT89C52、时钟电路使用时钟芯片DS1302、显示模块使用液晶显示器LCD1602、温度检测使用DS18B20温度传感器、键盘接口电路使用普通按键接上拉电阻完成;软件利用C语言编程实现单片机程序控制。单片机通过时钟芯片DS1302获取时间数据,DS18B20采集温度信号送给单片机处理,单片机再把时间数据和温度数据送给液晶显示器LCD1602,从而显示阳历年、月、日、时、秒、闹钟、星期、温度。关键词:电子万年历;单片机;温度传感器;时钟;液晶显示器Abstract:Electronic perpetual calendar which is an application of th

4、e single-chip processor system, is utilized by combining hardware and software. And Hardware is composed of five modules: Main control unit, clock circuit, temperature test circuit, display circuit, keyboard interface. Main control board adopts AT89S52, clock circuit adopts the DS1302 clock chip, di

5、splay module adopts the liquid crystal display 1602, and temperature test adopts the DS18B20 temperature sensor, keyboard interface circuit is completed by connecting ordinary button with pull-up resistor. Software takes advantage of C to program, so as to realize the programmed control of single-ch

6、ip processor. Single-chip processor gets the time data through using the DS1302 clock chip. The DS18B20 gathers temperature signals and transmits them to single-chip processor. Then,the single-chip processor transmits the time data and the temperature data to the LCD1602. Lastly, the LCD displays th

7、e solar calendar year,with year, month, day, hour, minute, second, alarm clock, week and temperature.Key words:Electronic perpetual calendar; single-chip processor; temperature sensor; clock; liquid crystal display1 引言随着微电子技术和超大规模集成电路技术的不断发展,家用电子产品不但种类日益丰富,而且变得更加经济实用,单片微型计算机体积小、性价比高、功能强、可靠性高等独有的特点,在

8、各个领域得到了广泛的应用。电子万年历是一种应用非常广泛的日常计时工具,数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用。LCD液晶显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能,可以实现公历年月日、时分秒、星期、温度显示等功能。但通过我们对各种电子钟表、日历的不断观察和总结,发现目前市场的电子钟表、日历都存在一些不足之处,比如:时钟不精确、产品成本太高、无环境温度显示等,这都给人们的使用带来了某些不便。因此,研制一种结构简单、价格低廉、功能齐全的电子万年历是非常有必要的,它具有非常广阔的市场空间与发展前景,有着很大的现实意

9、义。为此我设计了这种基于52单片机的电子万年历。2 设计要求与方案论证2.1 设计要求显示部分可采用数码管或液晶显示器,可显示当前时间,用阳历显示年、月、日,时间用24小时制显示。这里,可以将万年历的功能进行扩展,使其:1、具有显示年、月、日、星期、时、分、秒的功能;2、时间与日期能够自动关联;3、具有温度计功能;4、具有年、月、日、星期、时、分、秒的设置功能。2.2 系统基本方案选择与论证2.2.1 单片机芯片的选择方案和论证方案一:采用AT89C51作为主控制芯片AT89C51片内ROM采用Flash ROM,内部具有4KB ROM存储空间,能在3V的超低压下工作,而且与MCS-51系列单

10、片机完全兼容,但是在运用于电路设计时,由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误需要修改或对程序进行增加功能需要烧入程序时,对芯片的多次插拔会对芯片造成一定的损坏。方案二:采用AT89C52作为主控制芯片AT89C52片内ROM全部采用Flash ROM,能在3V的超低压下工作,同时也与MCS-51系列单片机完全兼容,该芯片内部存储器为8KB ROM存储空间,同样具有AT89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误需要修改或对程序进行增加功能需要烧入程序时,不需要对芯片多次插拔,所以不会对芯片造成损坏。综合考虑,选择采用AT89C52

11、芯片作为主控制芯片。2.2.2 显示模块选择方案和论证方案一:采用LED数码管动态扫描显示LED数码管价格适中,对于显示数字较合适,而且采用动态扫描法与单片机连接时,占用的单片机接口线少,但是数码管焊接太繁琐,附带的驱动元件太多,较易出错,所以不采用此方案。方案二:采用点阵式数码管显示点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较合适,使用来显示数字则显得太浪费,且价格相对较高,所以不采用此方案。方案三:采用LCD液晶显示器液晶显示器的显示功能强大,可显示大量文字、图形,显示多样、清晰可见,焊接也较方便,但是价格相对较贵,需要的接口线较多。总体可以考虑。综合考虑,选择采用LCD16

12、02液晶显示器作为显示模块。2.2.3 时钟芯片的选择方案和论证方案一:采用单片机定时计数器直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此方案虽然可以减少芯片的使用,节约成本,但是实现的时间误差较大,所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟DS1302芯片是一种高性能的时钟芯片,可自动对年、月、日、星期、时、分、秒以及闰年补偿的年进行计数,而且精度高,8位的RAM做为数据暂存区,工作电压在2.5V-5.5V范围内,耗电量小,2.5V时耗电小于300uA。综合考虑,选择采用DS1302作为时钟芯片来实现时钟。2.2.4 温度传感器的选择

13、方案和论证方案一:采用热敏电阻作为传感器用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二:采用数字式温度传感器DS18B20此类传感器为数字式传感器,而且仅需一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。综合考虑,选择采用DS18B20作为温度传感器。2.3 电路设计最终方案决定综合以上各方案所述,本设计

14、的总体方案选定为:采用AT89C52作为作为主控制芯片,LCD1602液晶显示器作为显示模块,DS1302作为时钟芯片来实现时钟,DS18B20作为温度传感器。3 系统的硬件设计与实现3.1 硬件电路设计框图AT89C52主控制模 块键盘控制模块LED数码管动态扫描显示模块DS1302时钟模块温度采集模块图1 硬件电路设计框图3.2 系统硬件概述本电路以AT89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V的超低压下工作;时钟电路由DS1302提供,它是一种高性能、高精度、低功耗、带RAM的实时时钟电路,可以对年、月、日、星期、时、分、秒进行计时,并具有闰年补偿功能,工作电压为2.

15、5V-5.5V,采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据,同时具有掉电自动保存功能;温度采集电路由DS18B20构成;显示部分由液晶显示器LCD1602构成。3.3 主要单元电路的设计3.3.1 单片机主控制模块的设计AT89C52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xC52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(

16、18脚)为振荡器输入输出端口,外接12MHz晶振;RST/VPD(9脚)为复位输入端口,外接电阻电容组成的复位电路;VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端;P0-P3为可编程通用I/O口,其功能用途由软件定义,在本设计中,P0端口(32-39脚)定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。图2 AT89C52主

17、控制系统AT89C52单片机为40引脚双列直插芯片,有四个8位I/O口P1、P2、P3和P4,每一条I/O线都能独立地作为输出或输入。单片机的最小系统如上图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关构成上电复位电路,20引脚为接地端,40引脚为电源端。3.3.2 时钟电路模块的设计 图3 DS1302引脚连线图图3表示出DS1302的引脚排列,其中VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持

18、时钟的连续运行。DS1302由VCC1和VCC2两者中的较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电;当VCC2小于VCC1时,DS1302由VCC1供电。X1和X2为振荡源,外接32.768KHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,

19、在VCC大于等于2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终为输入端。3.3.3 温度采集模块的设计图4 DS18B20温度采集引脚连线图如图4所示,采用数字式温度传感器DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单等特点。此类传感器仅需要一条数据线进行数据传输,使用P0.7与DS18B20的I/O口连接,加上一个上拉电阻,VCC接电源,GND接地。3.3.4 显示模块的设计如下图5所示,使用液晶显示器LCD1602作为显示模块,VDD接+5V电源驱动,VSS接地,D0-D7分别接10K的

20、上拉电阻,并与单片机接口中的P0口对应连接。RS、RW、E分别与单片机接口中的P2.5、P2.6、P2.7连接。此外,VEE接一个10K的滑动变阻器,这样就可以对液晶显示器的亮度进行调节。图5 LCD1602显示电路连接图3.3.5 相关电路原理及说明(1)时钟芯片DS1302的工作原理DS1302在每次进行读、写程序前都必须初始化先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲。读、写时序如下图6所示。表1为DS1302的控制字。表2为DS1302的日历、时间寄存器内容。(2)DS1302的控制字节DS1302的控制字如表1所示。此控制字的位7必须置“1”,若为“0”,

21、则不能对DS1302进行读写数据。对于位6,若对程序进行读、写时,RAM=1;对时间进行读、写时,CK=0。位1至位5指操作单元的地址。位0是读、写操作位,进行读操作时,该位为“1”;进行写操作时,该位为“0”。控制字节总是从最低位开始输入/输出的。 RAM RD1 A4 A3 A2 A1 A0 /CK /WR表1 DS1302的控制字格式(3)数据输入与输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同时,在紧跟8位的控制指令字节后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图6所示。

22、图6 DS1302读/写时序图(4)DS1302的寄存器DS1302有12个寄存器,其中7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及控制字见下表2。其中“CH”是时钟暂停标志位,当该位为“1”时,时钟振荡器停止,DS1302处于低功耗状态;当该位为“0”时,时钟开始运行。WP是写保护位,在任何对时钟和RAM的写操作之前,WP必须为“0”。当WP为“1”时,写保护位防止对任一寄存器的写操作。表2 DS1302的日历、时间寄存器此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器

23、之外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为COH-FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。4 系统的软件设计 软件设计是本设计的关键,软件程序编写的好坏直接影响着系统运行情况的良好。因本程序涉及的模块较多,所以程序编写也采用模块化设计,C语言具有编写灵活、移植方便、便于模块化设计的特点,所以本系统的软件采用C51编写。4.1 主程序流程框图图7 主程序流程图4.2 阳历显示程序设

24、计因为使用了时钟芯片DS1302,阳历程序只需从DS1302各寄存器中读出年、月、日、星期、时、分、秒等数据,再处理即可。在首次对DS1302进行操作之前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理,送给显示缓冲单元。阳历显示流程图如下图8所示。图8 阳历显示流程图4.3 时间调整程序设计调整时间使用4个调整按钮,1个作为进入设置、移位、控制使用,2个作为加、减使用,还有1个作为退出设置使用,分别定义为控制按钮、加按钮、减按钮、退出按纽。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一

25、定时间熄灭一次,比如说50ms。利用定时器计时,当达到50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序流程图如下图9所示。图9 时间调整程序流程图4.4 温度数据采集与显示程序设计 此程序主要包括基本功能实现程序、读出温度子程序、温度转换命令子程序、温度计算子程序、显示数据刷新子程序。 4.4.1 基本功能实现程序 此段程序的主要功能是实现温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次。程序流程图如下图10所示。 图10 基本功能实现流程图 图11 读出温

26、度子程序流程图4.4.2 读出温度子程序 此段程序的主要功能读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。程序流程图如上图11所示。4.4.3 温度转换命令子程序此段程序主要功能是发出温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中采用1s显示程序延时法等待转换的完成。程序流程图如下图12所示。 图12 温度转换命令子程序流程图 图13 温度计算子程序流程图 4.4.4 温度计算子程序 此段程序主要功能是将RAM中的读取值进行BCD码的转换运算,并进行温度值正负的判定。程序流程图如上图13所示。 4.4.5 显示数据刷新子程序 此

27、段程序主要功能是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为“0”时,将符号显示位移入下一位。程序流程图如下图14所示。图14 显示数据刷新子程序流程图5 系统仿真与调试 5.1 系统仿真本设计使用的仿真软件为PROTEUS软件和Keil C51软件。PROTUES软件是由英国LabCenter Electronics 公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,通过PROTEUS ISIS软件的VSM(虚拟仿真技术),用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真;AR

28、ES是一款高级的布线编辑软件,它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。Keil C51软件是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。首先,按设计方案在ISIS软件中连接好电路,如下图15所示。图15 系统总体电路然后,使用Keil C51软件对系统程序进行编译和查错。系统程序见附录2。经检查无误之后,对程序进行编译、连接、运行,生成.hex文

29、件。最后,在ISIS软件中将.hex文件加载进单片机中,对系统总体电路进行仿真调试,检查各按键是否有效、查看显示结果是否与实际相符。如有不相符的结果,则再返回Keil C51软件中对程序进行改进,直到显示结果正确无误。5.2 硬件制作与调试 5.2.1 硬件制作(1)整理元器件,重点辩别认清电阻器阻值及相应代号,对电阻、电容等要用万用表一一检测。(2)按照系统仿真电路图对硬件电路进行安装焊接时,电阻器采用卧式插装,并近贴电路板;瓷介电容器、电解电容器等采用立式插装,也要近贴电路板。其余元件必须按正确的极性插装,否则电路不会正常工作。 (3)焊完元器件后,在覆铜面剪掉多余元器件的引线,工具最好用

30、斜口钳,可防止因剪线而使覆铜皮损坏。 (4)焊接完后,再认真对照电路原理图、安装图检查电路板上有无漏焊、错焊、短路、断路等错误现象,确认无误后才能通电。 5.2.2 硬件调试硬件电路检查无误后,使用单片机开发板将系统程序下载到单片机中。然后通电,观察硬件运行情况。在硬件调试运行过程中,发现以下问题并解决:(1) 烧入程序后,液晶显示器显示不稳定,亮度不够解决办法:首先,对调用的延时子程序进行修改,可以解决显示闪动问题。其次,由于本设计用动态扫描方式显示数字,动态扫描很快,人的肉眼是无法看出,但是调用显示程序时,如果不在返回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示程序的后面加了屏蔽指令

31、,最后解决了显示不稳定问题。亮度不够问题可以通过调节滑动变阻器来解决。(2)修改时间、日期时没有自动对应。 解决办法:把不相关的程序暂时屏蔽,将设置时间子程序进行独立调试,发现在调用设置时间自动更新时,对数据处理不好,所以会造成错乱。最后把相应的处理程序进行修改,使得可以自动对应时间、日期,从而解决了此问题。至此,整个系统软件、硬件的编写、制作与调试结束,各项指标和目的全部实现,本设计任务基本完成。6 结束语 电子万年历是一种应用非常广泛的日常计时工具,而且将越来越流行和实用。本设计是基于51系列的单片机进行的电子万年历设计,可以显示年、月、日、时、分、秒及星期信息,还具有温度显示和时间校准等

32、多种功能。本电路采用AT89C52单片机作为核心,功耗小,能在3V的低压工作,可选用3-5V电压供电。时钟芯片DS1302的使用寿命长,误差小。LCD1602液晶显示器效果清晰,而且亮度可调。温度传感器DS18B20精度较高,电路连接简单。按键电路只包含4个按键,操作简单实用。 此电子万年历的设计具有结构简单、使用便捷、显示精确、功能齐全等优点,对于改善目前市场上电子钟表、日历等存在的一些不足之处,比如:时钟不精确、产品成本太高、无环境温度显示等,具有很重要的意义。因此,此种电子万年历的生产和发展是非常有必要的,它具有非常广阔的市场空间与发展前景,有着很大的现实意义。参考文献1童诗白,华成英主

33、编.模拟电子技术基础(第四版)M.北京:高等教育出版社.2009-72阎石.数字电路技术基础(第五版)M.北京:高等教育出版社.2009-73林立等编著.单片机原理及应用:基于Proteus和Keil CM.北京:电子工业出版社.2009-74王化祥,张淑英编著.传感器原理及应用(第三版)M.天津:天津大学出版社.2010-75王港元.电工电子实践指导M.南昌:江西科学技术出版社.2006-76张斌武.单片机系统Proteus设计与仿真M.北京:电子工业出版社.20057谢自美.电子线路设计实验测试M.武汉:华中科技大学出版社.20068彭伟.单片机C语言程序设计实训100例M.北京:电子工业

34、出版社.20099杨子文.单片机原理及应用M.西安:西安电子科技大学出版社.200610苏平.单片机的原理与接口技术M.北京:电子工业出版社.2006致谢经过了几个月的设计制作与调试,终于顺利完成毕业设计的所有要求,将电子万年历制作出来。在这段时间里,我学到了很多的专业知识也充分感受到了指导老师和同学们的关心与帮助,正是因为有他们的关心和帮助,本次设计才能顺利的完成。由于之前对其接触较少,对它的性能要求了解不多,还有对它的相关技术要求也不是很清楚。正是如此,我开始查看相关的资料和书籍,让自己头脑中模糊的概念逐渐清晰;独立地设计与制作作品,认真地对各部分硬件模块进行调试,使自己的作品一步步完善起

35、来,每一次改进都是我学习的收获。这次毕业论文能够得以顺利完成,并非我一人之功劳,是所有指导过我的老师和帮助过我的同学对我的教诲、帮助和鼓励的结果,我要在这里对他们表示深深的谢意。在此我要特别感谢我的指导老师:杨汉祥老师。作为一个本科生的毕业设计,从论文选题、实验研究到最后的成稿,由于经验的匮乏,难免有许多考虑不周全的地方,他都耐心地对我进行悉心指导,凝聚了恩师许多心血,没有他的悉心指导就没有这篇论文的顺利完成。另外,对百忙之中评阅本论文的答辩委员会的各位老师致以最诚挚的谢意。最后,再次对关心、帮助我的老师和同学表示衷心地感谢。附录1 系统电路图附录2 系统程序清单#include #inclu

36、de /#include LCD1602.h/#include DS1302.h#define uint unsigned int#define uchar unsigned charsbit DS1302_CLK = P17;/P36; /实时时钟时钟线引脚 sbit DS1302_IO = P16;/P34; /实时时钟数据线引脚 sbit DS1302_RST = P15;/P35; /实时时钟复位线引脚sbit wireless_1 = P30;sbit wireless_2 = P31;sbit wireless_3 = P32;sbit wireless_4 = P33;sbit

37、ACC0 = ACC0;sbit ACC7 = ACC7;char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /秒,分,时到日,月,年位闪的计数sbit Set = P20; /模式切换键sbit Up = P21; /加法按钮sbit Down = P22; /减法按钮sbit out = P23; /立刻跳出调整模式按钮sbit DQ =P10; /P37; /温度传送数据IO口char done,count,temp,flag,up_flag,down_flag;uchar temp_valu

38、e; /温度值uchar TempBuffer5,week_value2;void show_time(); /液晶显示程序/*1602液晶显示部分子程序*/Port Definitions*sbit LcdRs=P25; /P26;sbit LcdRw=P26; /P25;sbit LcdEn =P27;/P27;sfr DBPort = 0x80; /P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口/内部等待函数*unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;r

39、eturn DBPort;/向LCD写入命令或数据*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 / 清屏#define LCD_HOMING 0x02 / 光标返回原点void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();/注意顺序LcdEn=1;_nop_();/注意顺序LcdEn=0;_nop_();LCD_Wait()

40、;/设置显示模式*#define LCD_SHOW0x04 /显示开#define LCD_HIDE0x00 /显示关 #define LCD_CURSOR0x02 /显示光标#define LCD_NO_CURSOR0x00 /无光标 #define LCD_FLASH0x01 /光标闪动#define LCD_NO_FLASH0x00 /光标不闪动void LCD_SetDisplay(unsigned char DisplayMode)LCD_Write(LCD_COMMAND, 0x08|DisplayMode);/设置输入模式*#define LCD_AC_UP0x02#define

41、 LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 / 画面可平移#define LCD_NO_MOVE0x00 /defaultvoid LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0x04|InputMode);/初始化LCD*void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|

42、LCD_NO_CURSOR); /开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动/液晶字符输入的位置*void GotoXY(unsigned char x, unsigned char y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);/将字符输出到液晶显示void Print(unsigned char *str)while

43、(*str!=0)LCD_Write(LCD_DATA,*str);str+;/*DS1302时钟部分子程序*/typedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;unsigned char Week;unsigned char Day;unsigned char Month;unsigned char Year;unsigned char DateString11;unsigned char TimeString9;SYSTEMTIME;/定义的时间类型SYSTEMTIME CurrentTime;#define AM(X)X#define PM(X)(X+12) / 转成24小时制#define DS1302_SECOND0x80 /时钟芯片的寄存器位置,存放

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号