[信息与通信]智能路灯的设计论文.doc_第1页
[信息与通信]智能路灯的设计论文.doc_第2页
[信息与通信]智能路灯的设计论文.doc_第3页
[信息与通信]智能路灯的设计论文.doc_第4页
[信息与通信]智能路灯的设计论文.doc_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

韶 关 学 院课 程 设 计课程设计题目:微机原理与单片机技术实践课程设计基于AT89S52的智能路灯的设计学生姓名:刘建亮学 号:08101101036院 系:物理机电工程学院机电自动化系专业班级:自动化2008级指导教师姓名及职称:彭昕昀 陈锦儒起止时间: 2011年 2月 21日2011年 5月 31日课程设计评分:基于AT89S52的智能路灯的设计摘 要:智能路灯系统以STC89C52单片机为控制核心,系统采用线路简单、体积小的专用时钟芯片DS1302,DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW。使用DS1302不但使电路功耗降低,而且节省IO口资源。采用光敏电阻检测环境的明暗变化,具有自动感光模式和定时模式两种。配有键盘输入方式,使用液晶LCD1602显示。单片机路灯定时控制器是一种新型智能控制仪表,它可以根据季节改变一起天亮天黑时间的变化,由人们通过根据不同的需要通过按键进行路灯点亮和熄灭时间的条件。系统智能度高,可靠性高,系统工作稳定,且综合性价比较高,具有较大的市场应用前景。关键词: AT89S52 DS1302 LCD1602 光敏 路灯Abstract: Smart street system for the control of microcontroller core STC89C52, the system uses simple circuit, small dedicated clock chip DS1302, DS1302 work, low power consumption, keep the data and clock information power is less than 1mW. The circuit using the DS1302 not only reduce power consumption, and save the IO port resources. Photosensitive resistance testing environment with brightness changes, with automatic light-sensitive mode and timer mode two. With keyboard input, the LCD LCD1602 display. SCM street smart timing controller is a new control instruments, which can change depending on the season with the dark dawn of time changes, depending on the needs of people through the street light through the button and off time conditions. System, high intelligence, high reliability, the system is stable, and comprehensive cost-effective high, with large market applications. Key words: AT89S52 DS1302 LCD1602 photosensitive lights 朗读显示对应的拉丁字符的拼音目 录1系统设计总述 (1)1.1设计任务及要求 (1)1.2方案比较与确定 (2)2智能控制原理 (2)2.1内部工作原理 (2)2.2系统的主要结构 (2)3系统的硬件设计 (6)3.1 AT89c52的功能特性描述 (9)3.2 AT89c52电路图 (11)3.3 单片机系统及显示电路 (12)3.4时钟芯片电路 (15)3.5光敏电路 (15)3.6 LM324的引脚注释 (16)4系统的软件设计 (16)4.1智能路灯系统的算法设计 (17)4.2主程序设计(17)5硬件调试及性能 (18)5.1调试(18)5.2 性能指标(18)致谢 (18)参考文献 (19)附录1:电路原理图 (20)附录2:设计的PCB图 (20)附录3:程序清单 (21)韶关学院课程设计任务书学生姓名刘建亮专业班级08自动化本科学号36指导教师姓名及职称彭昕昀、陈锦儒设计地点信息楼412室设计题目基于AT89S52的智能路灯的设计该课题的任务有:定时开关。光暗变化。液晶显示时间日期该课程设计的要求是:1. 设计电路图;2. 设计系统仿真文件;3.制作单片机电路板; 4.编制单片机程序;5.撰写课程设计报告;6.提交设计作品的照片文档。进度安排 第1周:设计PCB图 第2周:制作电路板 第3周:焊接元器件 第4周:调试下载程序 第5周:电路板软硬件验收主要参考文献1 靳 达. 单片机应用系统开发实例导航. 北京:人民邮电出版社,20032 楼然苗,李光飞.51系列单片机设计实例.北京:北京航空航天大学出版社,20033 余永权.89系列FLASH单片机原理及应用.北京:电子工业出版社,20004 李东生.PROTEL 99SE电路设计技术入门与应用.北京:电子工业出版社,2002院系(或教研室)审核意见:审核人签名及系公章: 年 月 日任务下达人(签字)彭昕昀 2011年 3月 10日任务接受人(签字)年 月 日 基于AT89S52的智能路灯的设计姓名:刘建亮 学号:08101101036指导老师:陈锦儒 彭昕昀 1、 系统设计总述城市路灯管理工作是城市市政工程管理的重要任务之一,飞速发展的现代化城市需要具有自动化程度高,运行可靠,使用维护方便的照明控制系统。特别是在能源急剧消耗的今天,节能已经成为不可逃避的问题。利用89系列单片机,设计比较方便,计算处理也较简单,并且在时间精度方面也能达到日常使用的要求。路灯控制系统分为两大类:一类是用使用光敏电阻的感光性产生电信号控制,一类是使用DS1302时钟芯片控制。设计特点各不相同,因而用途也不同。我们通过简单的合成可以使路灯系统同时具有以上两种特性,在51系列单片机的逻辑控制下完成对路灯开关的任务。通过I/O口的按键可以调整实时时间,点亮路灯时间,熄灭路灯时间。本设计硬件电路简单成本低,性能可靠,操作简单,实现了51单片机在在智能控制当中的应用。1.1 设计任务及要求:具体要求:(1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯。(2)支路控制器应能根据环境明暗变化,自动开灯和关灯。(3)支路控制器能分别独立控制每只路灯的开灯和关灯时间。按照系统要求,可以将整个系统分为三个模块来设计:模块(1)单片机最小系统(2)液晶键盘路灯集成模块(3)时钟光敏电阻集成,三个功能模块都由一块主控单片机(AT89S52)来完成。1.2方案分析【方案一】: 采用数字电路实现。数字电路结构简单,响应速度快。但处理能力有限,题目要求支路控制器需实现的功能很多,数字电路不易实现。【方案二】:采用STC89C52作为主控制单片机。该芯片功能强大,具有足够快的速度;有各种同步串行接口、足够的内部ROM和RAM,以减小控制系统的物理尺寸,具有看门狗功能和稳定的电源,本系统图形显示程序要求较高,因此我们采用了52系列的STC89C52它的程序存储器达到32KB),可以很方便的实现我们所需功能,利用其强大的功能不仅可以简化硬件电路而且还可以大幅度提高系统运行速度,最终通过液晶来显示结果。【方案三】:应用ARM,ARM是一种功耗很低的高性能处理器,技术具有性能高、成本低和能耗省的特点。方便、安全、高效。但ARM编程较复杂,我们本科学生很难掌握,且开发板价格较高。综合题目要求和性价比我们选择方案二为本系统的最终方案,我们用STC89C52自己动手制作的最小系统板,结构紧凑,工作稳定,性价比很高。根据设计要求并综合各方面因素,决定采用AT89S52单片机作为主控制器,用动态扫描法实现 LED数字显示,使用DS1302时钟芯片完成定时计算,智能路灯系统设计框架如图:STC8052键盘时钟路灯控制显示2、 智能控制原理 本设计的主控制器是选用的STC单片机89C52,主要是对检测到信息进行必要的处理,然后控制路灯的亮灭以及控制显示器的显示和路灯的亮灭。利用51单片机本身的三个外部中断来设置调节路灯的点亮时间和熄间,通过外部按键进入中断子程序,利用P2口的3个按键来改变路灯点亮与熄灭时间的时,分,秒。用一个P35口的一个按键来出中断(时间设置完毕)。用P4口得光敏传感器来中断。利用P0口带上拉1K的电阻向液晶显示器输入段数据,利用P1的前面六个I/O口向液晶显示器输入位数据。51单片机的P0口当程序给其赋1的时候,I/O口显示的是高阻态而不是高电平。另外单片机I/O口所能提供的电流只有几个毫安,不足以点亮液晶。所以利用P0口的高阻态和上拉电阻,在端口赋1的时候,电流从单片机外部输入,通过单片机位选端口流出,直接点亮液晶。 利用P23,P24,P25的按键分别改变时间 的秒,分, 时。利用51单片机本身的定时计数器来计数当前时间。51单片机本身有定时计数器功能,本系统利用它本身的定时计数器0来控制当前时间。2.1、内部工作原理 单片机最小系统采用了STC89C52单片机。该单片机和8051单片机兼容,使用方便,具有较强的抗干扰特性。其外部扩展部分电路,满足该系统的需求。由于DS1302工作在多字节传送模式8个时钟/日历寄存器从寄存器0地址开始连续读写从0位开始的数据当命令字节为FE 或FF 时,DS1302工作在多字节RAM传送模式31 RAM寄存器从0地址开始连续读写从0位开始的数据。光敏电阻在黑暗环境里,它的电阻值很高,当受到光照时,只要光子能量大于半导体材料的禁带宽度,则价带中的电子吸收一个光子的能量后可跃迁到导带,并在价带中产生一个带正电荷的空穴,这种由光照产生的电子空穴对增加了半导体材料中载流子的数目,使其电阻率变小,从而造成光敏电阻阻值下降。光照愈强,阻值愈低。入射光消失后,由光子激发产生的电子空穴对将逐渐复合,光敏电阻的阻值也就逐渐恢复原值。2.2系统的主要结构1、主控制器电路:本设计的主控制器是选用的STC单片机89C52,主要是对检测到信息进行必要的处理,然后控制路灯的亮灭以及控制显示器的显示。2、 时钟电路本系统的时钟电路是由时钟芯片DS1302来实现的,电路图如图所示。DS1302是美国DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI 三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。正是因为DS1302的这些种种优点,所以选用了它为本系统提供时钟功能,而且还用它做了定时的功能,为系统提供了一种定时开关路灯的功能。3、 按键和液晶显示电路本系统提供了键盘输入的功能,为用户的输入提供了方便。键盘是用的6个的按键组成的,提供了修改、增加、减小的时钟设置按键。显示模块则是用的lcd1602液晶显示器,价格低廉,显示分辨率高。是一块低功耗的CMOS LCD 控制驱动器。只须很少外部元件且功耗小。与微控制器的接口使用串行总线。4、光敏控制电路光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达110M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.40.76)m的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。3、系统的硬件设计1、AT89c52的功能特性描述AT89C52为8 位通用微处理器,采用工业标 准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。主要功能特性1、兼容MCS51指令系统 2、8k可反复擦写(大于1000次)Flash ROM; 3、32个双向I/O口; 4、256x8bit内部RAM; 5、3个16位可编程定时/计数器中断; 6、时钟频率0-24MHz; 7、2个串行中断,可编程UART串行通道; 8、2个外部中断源,共8个中断源; 9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能; 11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。 3. 2 、 AT89S52电路图如图图3、AT89S52的电路设计智能路灯采用AT89S52单片机,晶振:12M,单片机用P0.0-P0.7口输实现lcd液晶显示器输出,P1.0-P1.3实现时钟芯片ds1302的通讯,P2.0-P2.3实现按键的数据交换,P3.0实现光敏电路的输入。33、单片机系统及显示电路单片机采用AT89S52。采用12MHz高精度的晶振,以获得较稳定的时钟频率,减小测量误差。采用字符式LCD显示。完成参数与状态显示要求有较大的显示容量。单片机系统及显示电路如下图所示.3、4时钟芯片DS1302是美国DALLAS 公司推出的一种高性能、低功耗的实时 时钟芯片,附加31字节静态RAM,采用SPI 三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。正是因为DS1302的这些种种优点,所以选用了它为本系统提供时钟功能,而且还用它做了定时的功能,为系统提供了一种定时开关路灯的功能。3.5光敏电路通常,光敏电阻器都制成薄片结构,以便吸收更多的光能。当它受到光的照射时,半导体片(光敏层)内就激发出电子空穴对,参与导电,使电路中电流增强。为了获得高的灵敏度,光敏电阻的电极常采用梳状图案,它是在一定的掩膜下向光电导薄膜上蒸镀金或铟等金属形成的。通过一个光敏电阻与一个LM324运放芯片来控制输出管脚是否导通。当有光时,光敏电阻R的阻值很小,变阻器分到一部分电压。当无光时,光敏电阻的阻值变的很大,比变阻器的阻值大很多倍,变阻器上分到的几乎可以忽略。此时运放检测点电压为高电平。变阻器调节阻值的大小从而可以调节感光的灵敏度。3.6 LM324的引脚注释 LM324引脚图LM324系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC1741的静态电流的五分之一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。每一组运算放大器可用图1所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。LM324的引脚排列见图。4、系统软件的设计 智能路灯系统的软件设计主要由主程序、时钟子程序、时钟调节按键程序及显示子程序组成。我们知道C语言有得于实现较复杂的算法,汇编语言程序则具有较高的效率并且容易精确计算程序运行时间,而智能路灯系统的程序无较复杂的计算,所以控制程序可采用C语言编程。下面对智能路灯系统的算法、主程序、时钟子程序和调节断程序逐一介绍。时钟系统有闹钟的作用这是众所周知的事,我们利用时钟系统的闹钟作用,在指定的时间一到给系统发出一个脉冲,触发系统进行路灯的智能控制开关,由于考虑到四季变化时,日照时间的长短改变,加装一个光敏电阻,优先于时钟控制,在天黑下来的时间保证能开灯照明,在天光的时候保证关灯,节约能源。更由于人手要能够实现一键开关,保证人手操作第一位,遇特发事件可以控制。所以程序做一下设计。时钟控制光敏控制人手控制42、主程序设计 主程序首先是对系统环境初始化,设置定时器T0工作模式为16位定时计数器模式,置位总中断允许位EA并给显示端口P0和P2清0。然后调用时钟子程序、液晶显示子程序、按键子程序、光敏子程序。由于采用的是12MHz的晶振,计数器每计一个数就是1us,当主程序检测到接收成功的标志位后,开始进行时间的计算。结果将以十进制BCD码方式送往LED显示约0.5s。为了有得于程序结构化和容易计算出距离,主程序采用C语言编写。图6.1为主程序流程图。控制时间以外光照弱时光照强时运放比较器信号NY开始是否有人手控制时间显示坏境是否黑暗Y是否我开灯时间NYN开所有灯YN开灯关灯是否我第二次关灯时间关一半灯结束5、硬件调试及性能 5.1、调试智能路灯的制作和调试,其中时钟芯片的晶振频率为32.768 kHz,安装液晶显示的卡槽要注意液晶装上后会不会导致影响一些器件的安装。其余元件无特殊要求。若果能将时钟芯片模块与最小系统一起不单独分开模块会减低时钟芯片的影响。液晶显示的变阻器最好选择较小的幅度变阻器,容易调节。5.2、性能指标硬件电路制作完成并调试好后,便可将程序编译好下载到单片机试运行。根据实际情况可以看到路灯智能系统的完美运行,定时开关,根据环境的光暗程度进行开关,可以人为的控制路灯开关。系统调试完后应对结果和光暗一致性进行多次实验分析,不断优化系统使其达到实际使用的要求。后续工作需实验后才能验证 ,根据参考电路和集成的电路器件进行改进,使精确度更高。致谢 大学所学的知识在这次的课程设计里得到了充分体现,在完成这个课程设计的过程中,也遇到了不少的问题,但在老师和同学的帮助下,问题很快就得到了解决。在此过程中,我也学到了不少的新的知识,自己的动手能力得到了大大的提高,分析问题和总结问题也积累了不少的经验,在此我衷心地感谢我的指导老师陈锦儒、彭昕昀老师。感谢他对我完成这个课题的支持与帮助,在设计过程中给了我宝贵的建仪和意见,同时也感谢我周边的同学,他们为我提供了很多的资料和帮助。在此也感谢其他同学对我学业的支持与关心。参考文献1 靳 达. 单片机应用系统开发实例导航. 北京:人民邮电出版社,20032 楼然苗,李光飞.51系列单片机设计实例.北京:北京航空航天大学出版社,20033 余永权.89系列FLASH单片机原理及应用.北京:电子工业出版社,20004 李东生.PROTEL 99SE电路设计技术入门与应用.北京:电子工业出版社,20025 诸昌钤.LED显示屏系统原理及工程技术.成都:电子科技大学出版社,20006 余永权,汪明慧等. 单片机在控制系统中的应用. 北京:电子工业出版社,20047 李群芳,黄建.单片微型计算机与接口技术.北京:电子工业出版社,20018 鸣谢的资料搜索。9 谭浩强,C程序设计(第三版)北京:清华大学出版社,2005附录1:电路原理图单片机最小系统按键模块路灯模块液晶模块光敏模块附录2:设计的PCB图 (路灯模块) (最小系统) (光敏模块)附录3:程序清单#include #include /#include LCD1602.h/#include DS1302.h#define uint unsigned int#define uchar unsigned charsbit DS1302_CLK = P17; /实时时钟时钟线引脚 sbit DS1302_IO = P16; /实时时钟数据线引脚 sbit DS1302_RST = P15; /实时时钟复位线引脚sbit wireless_1 = P30;sbit wireless_2 = P31;sbit wireless_3 = P32;sbit wireless_4 = P33;sbit 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; /温度传送数据IO口char done,count,temp,flag,up_flag,down_flag;uchar temp_value; /温度值uchar TempBuffer5,week_value2;void show_time(); /液晶显示程序/*1602液晶显示部分子程序*/Port Definitions*sbit LcdRs= P25;sbit LcdRw= P26;sbit LcdEn = 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;return 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();/设置显示模式*#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 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|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(*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 /时钟芯片的寄存器位置,存放时间#define DS1302_MINUTE0x82#define DS1302_HOUR0x84 #define DS1302_WEEK0x8A#define DS1302_DAY0x86#define DS1302_MONTH0x88#define DS1302_YEAR0x8C void DS1302InputByte(unsigned char d) /实时时钟写入一字节(内部函数) unsigned char i; ACC = d; for(i=8; i0; i-) DS1302_IO = ACC0; /相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; unsigned char DS1302OutputByte(void) /实时时钟读取一字节(内部函数) unsigned char i; for(i=8; i0; i-) ACC = ACC 1; /相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr: DS1302地址, ucData: 要写的数据 DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; unsigned char Read1302(unsigned char ucAddr)/读取DS1302某地址的数据 unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); / 地址,命令 ucData = DS1302OutputByte(); / 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; return(ucData);void DS1302_GetTime(SYSTEMTIME *Time) /获取时钟芯片的时钟数据到自定义的结构型数组unsigned char ReadValue;ReadValue = Read1302(DS1302_SECOND);Time-Second = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MINUTE);Time-Minute = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_HOUR);Time-Hour = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_DAY);Time-Day = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_WEEK);Time-Week = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_MONTH);Time-Month = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);ReadValue = Read1302(DS1302_YEAR);Time-Year = (ReadValue&0x70)4)*10 + (ReadValue&0x0F);void DateToStr(SYSTEMTIME *Time) /将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DateString if(hide_year2) /这里的if,else语句都是判断位闪烁,2就不显示,输出字符串为 2007/07/22 Time-DateString0 = 2; Time-DateString1 = 0; Time-DateString2 = Time-Year/10 + 0; Time-DateString3 = Time-Year%10 + 0; else Time-DateString0 = ; Time-DateString1 = ; Time-DateString2 = ; Time-DateString3 = ;Time-DateString4 = /;if(hide_monthDateString5 = Time-Month/10 + 0; Time-DateString6 = Time-Month%10 + 0; else Time-DateString5 = ; Time-DateString6 = ; Time-DateString7 = /;if(hide_dayDateString8 = Time-Day/10 + 0; Time-DateString9 = Time-Day%10 + 0; else Time-DateString8 = ; Time-DateString9 = ; if(hide_weekWeek%10 + 0; /星期的数据另外放到 week_value数组里,跟年,月,日的分开存放,因为等一下要在最后显示 else week_value0 = ; week_value1 = 0;Time-DateString10 = 0; /字符串末尾加 0 ,判断结束字符void TimeToStr(SYSTEMTIME *Time) /将时,分,秒数据转换成液晶显示字符放到数组 TimeString; if(hide_hourTimeString0 = Time-Hour/10 + 0; Time-TimeString1 = Time-Hour%10 + 0; else Time-TimeString0 = ; Time-TimeString1 = ;Time-TimeString2 = :; if(hide_minTimeString3 = Time-Minute/10 + 0; Time-TimeString4 = Time-Minute%10 + 0; else Time-TimeString3 = ; Time-TimeString4 = ; Time-TimeString5 = :; if(hide_secTimeString6 = Time-Second/10 + 0; Time-TimeString7 = Time-Second%10 +

温馨提示

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

评论

0/150

提交评论