已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
路灯控制器设计任务书一、任务设计并制作一套模拟路灯控制系统。控制系统结构如图1所示,路灯布置如图2所示。图1 路灯控制系统示意图图2 路灯布置示意图(单位:cm)二、要求1基本要求(1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯。(2)支路控制器应能根据环境明暗变化,自动开灯和关灯。(3)支路控制器应能根据交通情况自动调节亮灯状态:当可移动物体M(在物体前端标出定位点,由定位点确定物体位置)由左至右到达S点时(见图2),灯1亮;当物体M到达B点时,灯1灭,灯2亮;若物体M由右至左移动时,则亮灯次序与上相反。(4)支路控制器能分别独立控制每只路灯的开灯和关灯时间。(5)当路灯出现故障时(灯不亮),支路控制器应发出声光报警信号,并显示有故障路灯的地址编号。2发挥部分(1)自制单元控制器中的LED灯恒流驱动电源。(2)单元控制器具有调光功能,路灯驱动电源输出功率能在规定时间按设定要求自动减小,该功率应能在20%100%范围内设定并调节,调节误差2%。(3)其它(性价比等)。三、说明1光源采用1 W的LED灯,LED的类型不作限定。2自制的LED驱动电源不得使用产品模块。3自制的LED驱动电源输出端需留有电流、电压测量点。4系统中不得采用接触式传感器。5基本要求(3)需测定可移动物体M上定位点与过“亮灯状态变换点”(S、B、S等点)垂线间的距离,要求该距离2cm。摘 要:本设计是基于STC单片机的智能路灯控制系统,由电源电路、单片机控制模块、光控电路、红外遥控与检测、液晶显示六个模块组成。单片机通过光控电路来检测环境亮度控制总的路灯开关,在设定灯开的时间段内,如果没有人或车通过时,电路的分开关元件处于断开状态,路灯不亮;当通过红外检测系统检测到有人或车通过时,电路的分开关元件闭合,路灯形成通路,路灯亮。同时通过A/D转换芯片把灯的亮度的模拟信号转变成数字信号传送给单片机,单片机输出控制信号又通过D/A转换芯片来调节路灯的明暗。光敏电阻监控路灯的好坏,当路灯坏了光敏电阻就会返回一个信号给单片机,让单片机驱动蜂鸣器报警,并由显示屏显示哪个灯坏了。整个设计应用单片机和硬件组合来对系统进行控制,设计简单,成本低,稳定性好。一、方案设计与论证路灯是城市照明工程的主要组成部分,在夜晚,路灯的照明起到非常重要的作用。但是路灯在起着重要作用的同时,也在消耗着大量的能源。为了节约能源,路灯控制系统需要采取一定的节能措施,比如说在没有人和车经过时自动关闭路灯,就可以收到明显的节能效果。因而,方便和节能就是本设计的要点。方案一:采用简单逻辑电路组合成控制系统。可以就系统的各个部分在系统工作时的状态画出时序图,转化为真值表进行逻辑运算,设计出逻辑电路来控制系统的运行。此方案由纯硬件实现,设计复杂,系统庞大,多级门电路的串联造成的时延对系统的稳定产生不利的影响,而且难以对数据进行复杂的处理。方案二:以单片机控制系统为主,辅以少量的必要的逻辑电路。可以利用有限的控制线和数据/地址总线,简化系统的硬件设计,并充分发挥数量不多的数字逻辑器件的作用,实现了整个题目的基本要求部分。同时可以用软件实现系统的功能和对数据进行各种后期处理,改善人机界面。综合考虑,本设计采用方案二,采用STC89C52单片机控制系统的运行。二、系统设计根据题目的要求,结合考虑过的各种方案,充分利用模拟和数字系统的各自优点,发挥其优势,采用方案二大大提高了系统的精度和可靠性。1、总体框图路灯控制器电路的总体框图由单片机控制模块、电源电路、光控电路、红外遥控与检测、液晶显示模块组成。单片机支路控制能设定时间,并可以用LCD显示当地时间,并控制整条支路按时开灯和关灯。光控电路支路控制,能根据环境明暗变化,自动开关路灯总电源。当在设定的时间段内整个系统由红外检测控制电路控制路灯的开关。而电路的电源由电源经过桥式整流以后,再经过三端稳压电路稳压以后来提供,总体框图如下所示,工作流程如箭头所示:时钟电路基于STC51的智能控制器红外检测蜂鸣器光控电路稳压电路显示模块红外检测电路A/D模块电源电路整流电路路灯电路2、硬件设计路灯控制系统的硬件部分主要由智能控制器红外检测传感器、光学传感器、微处理器、A/D和D/A转换器、LCD显示器等组成。硬件系统的工作原理为:光信号通过光电传感器转变成模拟信号,经变送器输入至A/D转换器,实现系统的开启和关闭。红外信号通过红外检测传感器转变成电信号,实现路灯的开断。其系统框图如下图所示。A/D、D/A电路红外信号受控路灯 硬件结构图电信号开关电路STC51单片机处理器光信号光学传感器三、单元电路设计1、直流稳压电源1.1电路电源本电源采用变压器、桥式全波整流、大电容滤波、三端稳压器件稳压的方法,产生12V直流电压,我们采用的是7812可变输出的稳压芯片,典型电路如下(1)变压是利用电源变压器将电网220V的交流电压U1变换成整流滤波电路所需要的交流电压U2。(2)整流电路是将工频交流电转为具有直流电成分的脉动直流电。本实验中用到桥式整流电路,其输出电压波形与全波整流的输出电压波形是相同的。每个二极管承受的最高反向电压是输入电压最大值的倍。桥式整流电路的原理图及波形图如下图所示。桥式整流电路的原理图及波形图 (3)滤波电路是将脉动直流中的交流成分滤除,减少交流成分,增加直流成分。本实验中用到的是C滤波电路,其优点是电路简单,负载直流电压较高,纹波也较小,适用于小电流。电路图如下图所示(4)稳压电路的作用是提高输出直流电压Uo的带负载能力和稳定性。本实验采用三端固定输出集成稳压器,78LS12输出+12V,79LS12输出12V。管脚及功能如表(1):78LS1279LS12管脚及功能(1)输入 (1)地(2)输出(2)输入(3)地(3)输出输出电压+12V12V输出最大电流1.51.5表(1)管脚及功能1.2单片机供电电源2、单片机控制模块单片机是整个设计的核心部分,它对系统主要完成以下功能:通过光控电路来检测环境亮度控制总的路灯开关;通过红外检测系统检测是否有人通过来控制支路电路的开关;通过A/D和D/A转换芯片来调节路灯的明暗;结合光敏电阻和蜂鸣器电路实现路灯坏了就报警的功能,并且能随时通过红外遥控对电路参数进行设置并让LCD显示。因此单片机控制模块主要分为以下几个模块。2.1单片机模块模块功能:此模块就是让单片机工作的最小系统,旁边的LED是单片机通电的监控显示;电路采用12M晶振提供时钟信号,用排阻作为上拉电阻减少电路板的工作量。电气原理图设计如下:2.2液晶显示模块模块功能:此模块就是一个1602LCD液晶显示,它受单片机控制显示对应的参数和数据。数据/命令选择端接P2.0端口,读/写选择端接P2.1端口,使能信号接P2.2端口。8位数据端口分别接P0口的8位串口。电气原理图设计如下:2.3蜂鸣器模块三级管的基极接单片机的串口,当单片机一端电压拉高时,三极管导通,对应的蜂鸣器中就有电流流过,蜂鸣器就导通发出报警信号,所以只要检测到路灯坏了就传送一个信号给单片机,单片机处理之后就从P3.4输出控制信号驱动蜂鸣器响应。电气原理图设计如下:2.4串口和红外模块模块功能:当红外硬件检测电路发生变化有信号产生时,对应的就会产生一个低电平给P3.3,单片机通过读取P3.3的电平高低来控制电路的红外反应。51单片机解码红外遥控器原理: 系统判断是哪一只键按下以及处于机芯的哪种状态以后,程序就严格按照相应的遥控编码方式来进行遥控码的发射,也就是说将一定时段、一定数值的电平脉冲调制在38KHz载波上,逐一发射出去。不同公司的遥控芯片,采用的遥控码格式也不一样。较普遍的有两种,一种是NEC标准,一种是PHILIPS 标准。NEC标准:遥控载波的频率为38KHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。 一个完整的全码=引导码+用户码+用户码+数据码+数据反码。 其中,引导码高电平4.5ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前 16 位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后 16 位为 8 位的操作码和 8位的操作反码,用于核对数据是否接收准确。收端根据数据码做出应该执行什么动作的判断。连发代码是在持续按键时发送的码。它告知接收端,某键是在被连续地按着。NEC标准下的发射码表示发射数据时0用“0.56ms高电平0.565ms低电平=1.125ms”表示,数据1用“高电平0.56ms低电平1.69ms=2.25ms”表示即发射码“0”表示发射38khz的红外线0.56ms,停止发射0.565ms,发射码“1”表示发射38khz的红外线0.56ms,停止发射1.69ms需要注意的是:当一体化接收头收到38kHz 红外信号时,输出端输出低电平,否则为高电平。所以一体化接收头输了的波形是与发射波形是反向的,如图 PHILIPS标准:载波频率为38KHz;没有简码,点按键时,控制码在1和0之间切换,若持续按键,则控制码不变。一个全码起始码11控制码用户码+用户码,如图所示。数据0用“低电平1.778ms高电平1.778ms”表示;数据用“高电平1.778ms低电平1.778ms”表示。 连续码重复延时114ms。电气原理图设计如下:2.5 EEPROM模块单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,为了使数据在掉电后不丢失,就需要使用EEPROM 或FLASHROM 等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC 或SPI 等接口来进行数据通信。这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在STC 单片机中内置了EEPROM(采用IAP 技术读写内部FLASH 来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。上面提到了IAP,它的意思是“在应用编程”,即在程序运行时程序存储器可由程序自身进行擦写。正是是因为有了IAP,从而可以使单片机可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,掉电不丢失。当然写入数据的区域与程序存储区要分开来,以使程序不会遭到破坏。电气原理图设计如下:2.6三路A/D(获取光照强度)和两路D/A(控制路灯亮度)模块模块功能:第一个PCF8591芯片通过把外部输入的三路模拟信号转变成对应的数字信号传送给单片机,让单片机读取到路灯光照的强度,然后通过内部处理把控制两路路灯的明暗亮度的数字信号传送给下一个PCF8591芯片转变成对应的两个模拟信号实现对路灯的明暗亮度的调节。电气原理图设计如下:2.7实时时钟模块功能:1、 时间显示与调整功能:能自动计时,并能显示时、分、秒;具备校准功能,可直接设置当前时间和定时时间;一天时差应不超过1s。2、有发送控制信号功能:在每天早晚7点能发出控制信号控制路灯。 本设计通过STC89C51单片机和DS1302实时时钟芯片加红外遥控(附键盘)和LCD显示的数字时钟电路来实现上述功能。具体地,就是不但要实现时间显示与调整功能,而且还要配备LCD显示器来显示时间和红外遥控键盘来调整控制。另外,要具备定点发出控制信号的功能,我们是通过对单片机进行软件编程并配合与其相连的编码电路来实现的。DS1302芯片:DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V。时钟可工作在24小时格式或12小时(AM/PM)格式。 DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。DS1302的引脚功能见表3-2,DS1302内部结构图及引脚图见图3-83-2 DS1302的引脚功能引脚号引脚名称功能1VCC2主电源2、3X1、X2振荡源,外接32768Hz晶振4GND地线5RST复位/片选线6I/O串行数据输入/输出端(双向)7SCLK串行时钟输入端8VCC1后备电源图3-8 DS1302内部结构图及引脚图电气原理图设计如下:2、 红外收发对管电路红外测量结构如图所示。其中,外部红外发送信号传播到红外传感接收端,并通过三极管将输入的微弱红外线信号转换为一信号电平(电压信号),此电压信号则由A/D转换器转换成数字信号发送至单片机,单片机根据输入的数字信号进行处理,并做出相应的动作来决定是否让路灯开启。STC51单片机三极管放大红外线传感器A/D转换器红外信号开关电路图3-6红外检测结构框图电气原理图设计如下: 电路说明:此电路是其中一个支路路灯的红外收发对管控制电路,其中D7是红外发射管,D4是红外接收管,当公路上没有人通过时红外发送接收管都能正常接收,三极管导通,P1.0输出低电平;当有人通过时,红外接收管不能接收到红外信号,三极管不导通,P1.0输出高电平;这样的一个过程单片机就能很容易判别是否有人通过。另外的一个支路路灯红外收发对管控制电路原理一样,只是输出端接的单片机的P1.1口。3、 三组光敏电阻3.1光学信号的采集与检测设计光源检测原理:光源检测其实就是利用了一个光电式传感器。所谓光电式传感器是能将光能转换为电能的一种器件,简称光电器件。光电传感器一般由光源、光学通路和光电元件3部分组成。其基本原理是以光电效应为基础,把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号.光电效应是指用光照射某一物体,可以看作是一连串带有一定能量为的光子轰击在这个物体上,此时光子能量就传递给电子,并且是一个光子的全部能量一次性地被一个电子所吸收,电子得到光子传递的能量后其状态就会发生变化,从而使受光界射的物体产生相应的电效应。通常把光电效应分为3类:(1) 在光线作用下能使电子逸出物体表面的现象称为外光电效应,如光电管、光电倍增管等;(2) 在光线作用下能使物体的电阻率改变的现象称为内光电效应,如光敏电阻、光敏晶体管等;(3) 在光线作用下,物体产生一定方向电动势的现象称为光生伏特效应,如光电池等。3.2检测装置所需器件及选型在本系统的设计过程中,光源检测用于整套系统的开启和关闭,因此只需要有内光电效应的光敏器件即可。光敏器件包括光敏电阻、光敏二极管及光敏三极管等。光敏电阻的工作原理是用光电导体制成的光电器件又称光导管,它是基于半导体光电效应工作的。光敏电阻没有极性,纯粹是一个电阻器件,使用时可加直流偏压,也可以加交流电压。当无光时,光敏电阻值(暗电阻)很大,电路中电流很小。当光敏电阻受到一定波长范围的光照时,它的阻值(亮阻值)急剧减少,因此电路中电流迅速增加.光敏二极管的外型与一般二极管一样,只是它的管壳上开有一个嵌着玻璃的窗口,以便于光线射入,其符号如下图所示,为增加受光面积,PN 结的面积做得较大,光敏二极管工作在反向偏置的工作状态下,并与负载电阻相串联,当无光照时,它与普通二极管一样,反向电流很小,称为光敏二极管的暗电流;当有光照时,载流子被激发,产生电子空穴,称为光电载流子。在外电场的作用下,光电载流子参于导电,形成比暗电流大得多的反向电流,该电流称为光电流。光电流的大小与光照强度成正比,于是在负载电阻上就能得到随光照强度变化而变化的电信号。 光敏二极管光敏三极管除了具有光敏二极管能将光信号转换成电信号的功能外,还有对电信号放大的功能,其符号如图3-4所示。光敏三极管的外型与一般三极管相差不大,一般光敏三极管只引出两个极 发射极和集电极,基极不引出,管壳同样开窗口,以便光线射入。为增大光照,基区面积做得很大,发射区较小,入射光卞要被基区吸收。工作时集电结反偏,发射结正偏。比一般三极管的穿透电流还小:当有光照时,激发大量的电子空穴对,使得基极产生的电流Ib增大,此刻流过管子的电流称为光电流,可见光电三极管要比光电二极管具有更高的灵敏度。图3-4 光敏三极管由于本系统涉及的光源采集为系统启停提供控制信息,所以采用光敏电阻即可满足系统需求。光敏电阻和其它半导体光电器件相比有以下特点:(1) 光谱响应范围相当宽.根据光电导材料的不同,光谱响应可从紫外光、可见光、近红外扩展到远红外,尤其对红光和红外辐射有较高的响应度.(2) 工作电流大,可达数毫安。(3) 所测光强范围宽。既可测强光也可测弱光。(4) 灵敏度高。下面的三组光敏电阻分别是两个路灯下面的两个路灯好坏检测模块和一个环境亮度检测模块,电路简单易懂,三个光敏电阻对应的三个输出信号分别输送到前面所讲的A/D转换芯片进行A/D处理,通过A/D处理让单片机来判断两个路灯的好坏。4、路灯开关电路4.1总开关模块功能:当单片机控制端P1.3输出低电平时,光耦电阻中的二极管导通,上面的三极管导通,对应的T5,T3也导通,T3导通也就是LM2596的接地端接地,芯片开始工作,电路路灯控制的总电源开关也就对应的打开。4.2一路路灯开关模块功能:与总开关电源一样的原理,这个电路能分别控制各个路灯的巧妙之处就是通过单片机控制端的输入口不一样,这样就能方便的单独控制每个路灯电源的开关。4.3二路路灯开关三、系统软件设计1、系统总程序框图开始读取现在时间读取红外码红外码处理显示当前要显示的项目否路灯控制检测路灯是否损坏结束2、程序清单(见附录)四、电路调试1、调试方法和过程本系统采用先分别调试各单元模块,调通后再进行整机调试的方法,以提高调试效率。各单元调试模块如下:(1)电源电路在变阻器一端输入220V电压,测量经过三端稳压电路后的电压,使输出电压为12V,再经过LM2596电路,调节滑动电阻器R29使输出电压为5V,给单片机供电和整个电路供电。(2)单片机控制模块在供电正常情况下给单片机供电,通过串口向单片机下载测试程序看单片机的几个模块是否工作正常。(3)光控电路人为的对路灯进行假设控制,看电路的反应是否是达到系统所要求的功能。(4)红外对管与检测借助之前做的一个单片机开发板用按键来对电路进行控制,看是否能达到预期的效果进行测试,然后再把电路加入系统整体。2、测试仪器数字万用表DT9021、稳压电源、PC机3、数据记录与误差分析路灯电压2.83.5V五、总结本系统设计的元件都是比较常见的,在成本较低的情况下能一一达到题目的要求,如果系统要求硬件更强的话,本设计还需要特殊的改进。附录:头文件ir_receive.h#ifndef _ircontrol_h_#define _ircontrol_h_#include#define uchar unsigned char #define uint unsigned intsbit hwx=P33; /定义红外接收脚 uchar ir_recive();#endifDs1302.h#ifndef _h_ds1302_#define _h_ds1302_#include#define ucharunsigned char #define uintunsigned int /*sbit SCL2=P13; sbit SDA2=P14;sbit RST = P15; */sbit SCL2=P35; sbit SDA2=P36;sbit RST = P37; void Write_Ds1302_Byte(unsigned char temp) ;/*/void Write_Ds1302( unsigned char address,unsigned char dat ) ;/*/unsigned char Read_Ds1302 ( unsigned char address ); void Set_Ds1302_RTC(uchar );void Read_Ds1302_RTC( uchar l_tmpdate);#endifLcd_1602.h#ifndef h_lcd1602_#define h_lcd1602_#include /52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义#define uchar unsigned char #define uint unsigned int#define dates P0sbit lcdrs=P20; /数据命令选择控制sbit lcdrw=P21; /读/写选择控制sbit lcden=P22; /使能信号sbit lcdrs=P10; /数据命令选择控制sbit lcdrw=P11; /读/写选择控制sbit lcden=P12;*/ /使能信号 void lcd1602_delay50us(uchar );void lcd1602_init();void lcd1602_write_com(uchar com);void lcd1602_write_date(uchar date); void lcd1602_display(uchar row, uchar list,uchar *dates ,uchar num);#endifiic.h#ifndef _iic_h_#define _iic_h_ #include #define uchar unsigned charsbit iic_sda=P25; /定义总线连接端口sbit iic_scl=P26;void iic_delay(); void iic_start();void iic_stop();void iic_no_respons();void iic_respons();void iic_write_byte(uchar date);uchar iic_read_byte();void iic_init();#endif源文件Main.c#includeds1302.h#includelcd_1602.h#includeir_recive.h#include iic.hsbit in_one_pin=P10;/红外检测 1sbit in_two_pin=P11; / 红外检测 2sbit in_thr_pin=P12; /红外检测 3sbit out_one_pin=P14;/ 路灯1点亮控制口sbit out_two_pin=P15; /路灯2点亮控制口sbit alarm =P34;/蜂鸣器,p34位低电平时叫uchar one_bright=40, /第一路灯的亮度,(可动态调整)two_bright=40,/第二路灯的亮度,(可动态调整)envir_date=100; / 环境亮度最大值(可调)uchar if_light_flag; /是否有物体经过路灯sbit output=P13; /总开关uchar idata set_rtclk_dates7;/保存ds1302读出的bcd码;struct s_timeuchar start_hour,start_min,start_sec,end_hour,end_min,end_sec;/结构体,保存开关时间(可调) uchar idata displaytime16; struct s_time set_major_time;/=19,7,10,19,7,28;保存主开关的开断时间struct s_time spur_one_time;/=19,7,13,19,7,15; 支路1开关时间struct s_time spur_two_time;/=19,7,13,19,7,18; 支路2开关时间void conver_now_time(); / 转换现在时间为1602能显示的字符型void conver_switch_time();/ 转换主开关时间为1602能显示的字符型void conver_spur_one(); / 转换路灯1开关时间为1602能显示的字符型void conver_spur_two(); / 转换路灯2开关时间为1602能显示的字符型void set_switch_time(uchar redt);/设置主开关时间void set_spur_one_time(uchar redt);/ 设置路灯1开关时间void set_spur_two_time(uchar redt) ; / 设置路灯2开关时间void adjust_now_time(uchar redt);/ 设置现在时间void control_light(uchar output_one,uchar output_two) ;/路灯亮灭管理 void iic_da(uchar one_date,uchar two_date);/改变路灯亮度void conserve_one_parameter(uchar address,uchar date );/保存一个设置参数当前值uchar read_one_parameter(uchar address );/ 读取所保存的一个设置参数void conserve_parameters(); / 保存所有设置的参数void read_parameters(); /开机读取所保存的所有参数uchar read_light(uchar channel);/ 读取 光敏电阻电路的采样电压值uchar lamp_broken(); / 检测路灯是否损坏uchar envir(uchar envir_date);/检测环境亮度是否大于设定亮度void conver_environ(uchar date); / 转换环境亮度为1602能显示的字符型,并显示void conver_light(uchar date,uchar which);/转换路灯亮度为1602能显示的字符型,并显示/void control_light(uchar output_one,uchar output_two) static uchar two_sign=1 ;if( in_one_pin=1) if(out_one_pin=1)out_one_pin=0|output_one;elseout_one_pin=1; while(in_one_pin); if( in_two_pin=1)if(two_sign=1)two_sign=0;out_two_pin=0|output_two;out_one_pin=1; elseout_two_pin=1;two_sign=1;out_one_pin=0|output_one;while(in_two_pin);if( in_thr_pin=1) if(two_sign=1)out_two_pin=0|output_two;two_sign=0;elseout_two_pin=1;two_sign=1;while(in_thr_pin); if(out_one_pin=0&out_two_pin=0)out_one_pin=1;out_two_pin=1; /void conver_now_time() displaytime0= set_rtclk_dates2/16+0x30;/ds1302所保存的时间位bcd码displaytime1= set_rtclk_dates2%16+0x30 ;displaytime2=-;displaytime3= set_rtclk_dates1/16+0x30 ;displaytime4= set_rtclk_dates1%16+0x30 ;displaytime5=-;displaytime6= set_rtclk_dates0/16+0x30 ;displaytime7= set_rtclk_dates0%16 +0x30;displaytime8= set_rtclk_dates6/16+0x30;displaytime9= set_rtclk_dates6%16+0x30 ;displaytime10=-;displaytime11= set_rtclk_dates4/16+0x30 ;displaytime12= set_rtclk_dates4%16+0x30 ;displaytime13=-;displaytime14= set_rtclk_dates3/16+0x30 ;displaytime15= set_rtclk_dates3%16+0x30 ; /void conver_switch_time() displaytime0=set_major_time.start_hour/10+0x30;displaytime1=set_major_time.start_hour%10+0x30 ;displaytime2=-;displaytime3=set_major_time.start_min/10+0x30 ;displaytime4=set_major_time.start_min%10+0x30 ;displaytime5=-;displaytime6=set_major_time.start_sec/10+0x30 ;displaytime7=set_major_time.start_sec%10 +0x30;displaytime8=set_major_time.end_hour/10+0x30;displaytime9=set_major_time.end_hour%10+0x30 ;displaytime10=-;displaytime11=set_major_time.end_min/10+0x30 ;displaytime12=set_major_time.end_min%10+0x30 ;displaytime13=-;displaytime14=set_major_time.end_sec/10+0x30 ;displaytime15=set_major_time.end_sec%10+0x30 ;/void conver_spur_one() displaytime0= spur_one_time.start_hour/10+0x30;displaytime1= spur_one_time.start_hour%10+0x30 ;displaytime2=-;displaytime3= spur_one_time.start_min/10+0x30 ;displaytime4= spur_one_time.start_min%10+0x30 ;displaytime5=-;displaytime6= spur_one_time.start_sec/10+0x30 ;displaytime7= spur_one_time.start_sec%10 +0x30;displaytime8= spur_one_time.end_hour/10+0x30;displaytime9= spur_one_time.end_hour%10+0x30 ;displaytime10=-;displaytime11= spur_one_time.end_min/10+0x30 ;displaytime12= spur_one_time.end_min%10+0x30 ;displaytime13=-;displaytime14= spur_one_time.end_sec/10+0x30 ;displaytime15= spur_one_time.end_sec%10+0x30 ;/void conver_spur_two() displaytime0= spur_two_time.start_hour/10+0x30;displaytime1= spur_two_time.start_hour%10+0x30 ;displaytime2=-;displaytime3= spur_two_time.start_min/10+0x30 ;displaytime4= spur_two_time.start_min%10+0x30 ;displaytime5=-;displaytime6= spur_two_time.start_sec/10+0x30 ;displaytime7= spur_two_time.start_sec%10 +0x30;displaytime8= spur_two_time.end_hour/10+0x30;displaytime9= spur_two_time.end_hour%10+0x30 ;displaytime10=-;displaytime11= spur_two_time.end_min/10+0x30 ;displaytime12= spur_two_time.end_min%10+0x30 ;displaytime13=-;displaytime14= spur_two_time.end_sec/10+0x30 ;displaytime15= spur_two_time.end_sec%10+0x30 ;/void set_switch_time(uchar redt) if(0xf8=redt)set_major_time.start_hour=(set_major_time.start_hour+1)%24;/主开关小时位自加if(0xf7=redt)set_major_time.start_min=(set_major_time.start_min+1)%60; if(0xf6=redt)set_major_time.start_sec=(set_major_time.start_sec+1)%60; if(0xf5=redt)set_major_time.end_hour=(set_major_time.end_hour+1)%24; if(0xe4=redt)set_major_time.end_min=(set_major_time.end_min+1)%60; if(0xe0=redt)set_major_time.end_sec=(set_major_time.end_sec+1)%60; conver_switch_time(); lcd1602_display(1,0,set_star,8);/1602液晶显示lcd1602_display(1,8, displaytime,8);lcd1602_display(2,0,set_end ,8);lcd1602_display(2,8, displaytime+8,8);/void set_spur_one_time(uchar redt) if(0xf8=redt)spur_one_time.start_hour=(spur_one_time.start_hour+1)%24;/路灯1开关小时为自加if(0xf7=redt)spur_one_time.start_min=(spur_one_time.start_min+1)%60;if(0xf6=redt)spur_one_time.start_sec=(spur_one_time.start_sec+1)%60;if(0xf5=redt)spur_one_time.end_hour=(spur_one_time.end_hour+1)%24;if(0xe4=redt)spur_one_time.end_min=(spur_one_time.end_min+1)%60;if(0xe0=redt)spur_one_time.end_sec=(spur_one_time.end_sec+1)%60;conver_spur_one();lcd1602_display(1,0,set_sone,8);lcd1602_display(1,8,displaytim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安徽黄梅戏艺术职业学院单招职业适应性考试题库带答案解析
- 2026年厦门安防科技职业学院单招职业倾向性测试必刷测试卷及答案解析(夺冠系列)
- 2026年扬州工业职业技术学院单招职业适应性测试必刷测试卷及答案解析(名师系列)
- 2026年四川电子机械职业技术学院单招职业适应性测试必刷测试卷及答案解析(夺冠系列)
- 2026年唐山科技职业技术学院单招职业适应性测试必刷测试卷及答案解析(名师系列)
- 2026年承德应用技术职业学院单招职业适应性考试必刷测试卷及答案解析(名师系列)
- 2026年山东艺术设计职业学院单招职业适应性测试必刷测试卷带答案解析
- 2026年天津商务职业学院单招职业倾向性测试必刷测试卷及答案解析(名师系列)
- 2020-2025年证券从业之证券市场基本法律法规能力检测试卷B卷附答案
- 《建筑节能保温材料在建筑围护结构中的应用研究》教学研究课题报告
- 江苏省盐城市龙冈共同体市级名校2026届中考冲刺卷物理试题含解析
- 2025年总助面试题目及答案
- 电力调度考试题库及答案
- 佳明心率运动腕表225中文说明书
- 渝20Q01 建设工程施工现场围挡及大门标准图集(2020版)DJBT50-133
- 超声科医务人员手卫生规范与实践
- 2025年山东省夏季普通高中学业水平合格考试物理试题(原卷版)
- 旋挖钻机地基承载力验算2017.7
- 阿里源代码管理制度
- 欠款合同协议书
- 赡养合同协议书
评论
0/150
提交评论