单片机水位温度控制系统方案_第1页
单片机水位温度控制系统方案_第2页
单片机水位温度控制系统方案_第3页
单片机水位温度控制系统方案_第4页
单片机水位温度控制系统方案_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . 基于单片机的太阳能热水器水温水位监测系统摘要:该太阳能热水器水温水位控制主要由AT89S52单片机控制,DS18B20温度传感器,LCD1602液晶,时钟芯片1302和报警系统组成。该系统能够实时显示当前时间和日期,以与秒表功能,测量水箱实时温度,并以液晶显示屏的形式告知使用者。同时还能对水位进行实时监控,水位不足或者已满都可以让使用者得知,当水位已满时就会报警,提醒使用者与时关闭加水阀门。关键词:AT89S52单片机温度控制 水位控制The Control of Measurement System of Water Level andTemperature of Solar

2、 Energy HeatingAbstract: the solar energy water heater mainly by water level control AT89S52 SCM control, the temperature sensor DS18B20, LCD1602 LCD, clock and alarm system chip 1302. The system can real-time display the current date and time, and stopwatch function, measuring tank temperature, and

3、 real-time LCD inform the user. Also can real-time monitoring of water shortage, water or already full allow users, when the water is full already will alarm, remind users timely close water valve. Through the Protues software simulation above mentioned function normal realization.Keywords: AT89S52

4、SCM Temperature control Water level control目录1引言32方案比较42.1温度传感器的选择42.1.1方案一42.1.2方案二42.1.3 方案比较42.2 水位采集系统的选择52.2.1 方案一52.2.2 方案二52.2.3 方案比较73硬件设计73.1 温度传感器DS18B2073.1.1 DS18B20的主要特性:73.1.2 DS18B20的外形73.1.3 DS18B20主要的数据部件73.1.4 DS18B20电源供电方式电路图83.2 显示电路93.3 蜂鸣器电路93.4 单片机与其外围电路103.5 水位控制系统的设计123.5.1

5、CD4069芯片资料123.5.2 74LS244芯片资料123.6 整体电路图(如图14)134 软件设计15 4.1 温度显示部分. 164.2 关于DS18B20的编程.174.3 初始化结构.185 系统调试196 总结20致20参考文献21附录221引言单片机的应用技术是一项新型的工程技术,特别是随大规模集成电路的产生而飞速发展。目前,单片机以其体积小、重量轻、抗干扰能力强、对环境要求不高。可靠性高、性能价格比高、开发较为容易,在工业控制系统、数据采集系统、智能化仪器仪表、设备自动化等诸多领域极为广泛的应用,都可见到单片机的踪影。目前市场上太阳能热水器的控制系统大部分都存在着或多或少

6、的缺点:成本较高,操作复杂,控制不方便等。本设计中采用美国DALLAS半导体公司出产智能温度传感器DS18B20作为检测元件,测温围为-55125摄氏度,最大分辨率可达0.0625摄氏度,可以直接读出被测温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和好使用的特点。本设计的水位传感器电路,省去了传统的A/D转换器,操作简单,控制方便。我们在日常的太阳能热水器的使用中,很少能预测出当时水温的高低,还有在给太阳能热水器补给水源时,其水位具体什么时候能够加满也未能知晓,这就大大浪费了水资源,也给日程生活添加了不必要的开支,我在课程设计中基于单片机89S52能够准确的告知使用者热

7、水器的即时温度,还能通过报警的模式告知使用者热水器储蓄罐已满,从而达到了节约水源,方便大众的目的。同时,也能告知使用者当时的日期和时间。此次课程设计中设计了一个简易的测量太阳能热水器水温,水位的装置,并能通过报警的形式告知使用者水位已满请关闭,我相信经过进一步的加工,一定会很好的运用到我们日常的生活中。2方案比较2.1温度传感器的选择2.1.1方案一热敏电阻是温度传感器的一种,它由半导体瓷组成。热敏电阻(NTC)不同于普通的电阻,它具有负的电阻温度特性,即当温度升高时,其电阻值减小。热敏电阻的阻值温度特性曲线是一条指数曲线,非线性较大,因此在使用时要进行线性化处理。线性化处理虽然能够改善热敏电

8、阻的特性曲线,但是比较复杂。为此,在要求不高的一般应用中,常做出在一定的温度围温度与阻值成线性关系的假定,从而简化计算。使用热敏电阻是为了感知温度,给热敏电阻通以恒定的电流,电阻两端就可测到一个电压,然后通过公式下面的公式可求得温度:T=T0-KVT。T为被测温度;T0为与热敏电阻特性有关的温度参数;K为与热敏电阻特性有关的系数;VT为热敏电阻两端的电压。根据这一公式,测得热敏电阻两端的电压,了解到参数T0和K,则可以计算出热敏电阻的环境温度,也就是被测的温度,这样就把电阻随温度的变化转化为电压随温度变化。这种设计还需要用到A/D转换电路,而且在测量的过程中,由于环境的影响会带来较大的误差。2

9、.1.2方案二采用温度传感器DS18B20,它是美国Dallas半导体公司生产的数字化温度传感器DS18B20,它与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。全部传感元件与转化电路集成在形如一只三极管的集成电路。我们可以采用DS18B20采集温度,然后在显示电路上显示。该设计外围电路简单,只需要通过DS18B20进行采集温度,一个液晶显示电路,软件设计部分只需要采集温度,对温度进行转化,再用显示电路将其显示出来。我们可以知道,环境对DS18B20影响不大,同时DS18B20的测量精度稳定并可用软件设置、接线简单,大大的节省了单片机的数据串口。2.1.3 方案比较本

10、设计主要是从温度传感器的选择考虑。传统的测温元件有热电偶和热电阻,而它们测出的一般都是电压,再转换成对应的温度,需要较多的外部硬件支持,电路与软件调试比较复杂,制作难度高,成本也相对较高。从以上两种方案中,可以看出采用方案二所设计的电路比较简单,采用温度传感器DS18B20作为检测元器件,测温围-55125,分辨率最大可达0.0625。DS18B20可以直接读出被测温度值。采用3线制与单片机相连,减少了外部硬件电路,具有低成本和易使用的特点。2.2 水位采集系统的选择2.2.1 方案一该水位采集系统是将采集的信号进过A/D转换器传送到单片机中如图1。I为恒流源,该电流流过一个电阻产生的压降为I

11、R。当K1,K2K8均打开时,V0=8IR,现取IR=1V,则V0=8V。当水位上升到Kn处时,浮子推动磁体M移动至干簧管Kn处,Kn接通。经过OP缓冲输出的电压V0=(n-1)V。输出端经ADC0809转换器后直接输入到单片机中。当水位到达最高位置时单片机将控制电磁阀停止向水箱加水,并在液晶上显示“水已满”字样。图12.2.2 方案二用5根不锈钢针分别置于水箱5种不同高度的位置,当某个钢针不接触水面时,其输出为高电平;当其与水面接触时则输出为低电平。它们输出的信号接六反向器CD4069,经过CD4069反向并经74LS244驱动后分别接入89C52单片机的P3.0-P3.4脚。单片机对这些引

12、脚进行判断之后,在液晶上显示对应的值。显示分为5档,每档为满水位的20%。(如图2)CD406974LS244+5V图22.2.3 方案比较方案2比方案1设计原理简单,硬件要求少,成本较低,方案2省去了方案1中A/D转换器,操作比较方便,方案1在软件设计中也比方案2来得更加简洁明了。因此水位采集系统选择采用方案2。3硬件设计3.1温度传感器DS18B203.1.1DS18B20的主要特性:(1)电压围较宽,电压围:3.05.5V。(2)单线接口方式,DS18B20在与单片机连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。(3)DS18B20支持多点组网功能,多个DS18B20可

13、以并联在唯一的三条线上,实现组网多点测温。(4)测温围55125,在-10+85时精度为±0.5,精度较高。(5)可编程的分辨率为912位,对应的可分辨的温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(6)在9位分辨率时最多能在93.75ms把温度转换为数字,12位分辨率时最多在750ms把温度值转换为数字,速度更快。(7)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。(8)负压特性:电源极性接反时,芯片不会烧毁,但不能正常工作。3.1.2DS18B20的外形DS18B20

14、的外形与管脚排列图如下图2所示。 图3DS18B20外形与引脚排列图1GND 地信号2DQ 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。3.1.3 DS18B20主要的数据部件DS18B20有2个主要的数据部件: (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的

15、作用是使每一个DS18B20都各不一样,这样就可以实现一根总线上挂接多个DS18B20的目的。(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。DS18B20部结构主要由四部分组成:64位光刻ROM,温度传感器,温度报警触发器TH和TL,配置寄存器。3.1.4DS18B20电源供电方式电路图(1)DS18B20寄生电源供电方式电路DS18B20寄生电源供电电路,如图5所示,要想让DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温

16、度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,靠上拉电阻是无法提供足够的能量,会造成无法转换温度或温度误差极大。因此,图6电路只适用于单一温度传感器测温,也不宜采用电池供电,并且电源电压必须是稳压5V。当电源电压下降时,会使测量的误差变大。图5 DS18B20寄生电源供电电路图6 DS18B20外部供电单点测温电路(2)DS18B20的外部电源供电方式DS18B20外部供电单点测温电路,如图7所示,DS18B20外部供电多点测温电路如图6所示。此时I/O线不需要强上拉电压,同时在总线上可以挂接多个DS18B20传感器,组成多点测温系统。但要注意在外部供电的方

17、式下,DS18B20的GND引脚不能悬空,否则读取的温度总是85。图6 DS18B20外部供电多点测温电路比较上述两种供电方式后认为外部电源供电方式对电源要求比电源供电方式优越些且稳定性好,故在此设计中采用如图6的外部电源供电方式供电电路。3.2 显示电路由DS1602液晶显示屏组成,其特点是比较直观便于观察(如图7)。图73.3 蜂鸣器电路蜂鸣器俗称喇叭(如图8),是广泛应用于各种电子产品的一种元器件,它用于提示、报警、音乐等许多应用场合。蜂鸣器通常工作电流比较大,电路上的TTL电平基本上驱动不了蜂鸣器,需要增加一个电流放大的电路才可以。蜂鸣器由振荡器、磁铁、振动膜片以与外壳等组成,接通电源

18、后,振荡器产生音频信号,电流通过电磁线圈使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。当P3.7端输出高电平时,三极管截止,没有电流流过线圈,蜂鸣器不发声,当P3.7端为低电平时,三极管导通,这样蜂鸣器中就有电流流过,就会发出声音因此,可通过程序来控制蜂鸣器的声音大小。图8 蜂鸣器电路图3.4 单片机与其外围电路此次课程设计采用STC公司的单片机STC89S52作为系统的控制器。主要从以下特点考虑:1.STC89S52是一种低功耗,高性能CMOS工艺的8位单片机,片含有8K的系统可编程Flash存储器。使用STC公司高密度非易失性存储器技术制造,与工业80C51产

19、品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统提供高灵活,是一个很有效的解决方案。 2.STC89S52具有的标准功能:8k Bytes Flash片程序存储器,256 bytes的随机存取数据存储器(RAM),全双工串行口,片晶振与时钟电路。另外,STC89S52可降至0KHZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机停止工作,直到一个中断或硬件复位为止。3.STC89S52有40个引脚,3

20、2个外部双向输入/输出(I/O)口,同时含8个中断口,5个中断优先级,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口。AT89S52可以按照常规方法进行编程,也可以在线编程。其通用的微处理器和Flash存储器结合在一起,可反复擦写的Flash存储器可有效地降低开发成本。在本设计中,XTAL1和XTAL2端外接石英晶体作为定时元件,部反向放大器自激振荡,产生时钟。所用石英晶体的振荡频率为12MHZ,电容C1,C2常为20pF40pF,从而形成了单片机的最小系统。如图9所示。图9 晶振电路设计中用的是上电复位,单片机上电过后,便自动的进入复位状态。图10是上电复位电路。当采用的晶体频

21、率为12MHZ时,可采取C=22 uf,R=1K。图10 上电复位电路3.5 水位控制系统的设计用5根不锈钢针分别置于水箱5种不同高度的位置,当某个钢针不接触水面时,其输出为高电平;当其与水面接触时则输出为低电平。它们输出的信号接六反向器CD4069,经过CD4069反向并经74LS244驱动后分别接入89C52单片机的P3.0-P3.5脚。单片机对这些引脚进行判断之后,在液晶上显示对应的值。显示分为5档,每档为满水位的20%。(如图11)CD406974LS244+5V图113.5.1 CD4069芯片资料 CD4069是由六个COS/MOS反相器电路组成,该器件通常用在不需要中功率TTL驱

22、动和逻辑电平转换的电路中。(如图12)图123.5.2 74LS244芯片资料74LS244是三态八缓冲器。(如下页图13)引出端符号:1A11A4,2A12A4输入端/1G, /2G三态允许端(低电平有效)1Y11Y4,2Y12Y4输出端图133.6 整体电路图(如图14)图144 软件设计本设计的基本运行步骤是:接通电源温度传感器开始工作,LCD1602显示出温度与当前的时间日期,当向水箱中倒入水后,到达第一个钢针时此时液晶屏上显示01(5cm),到达第二个钢针时液晶屏上显示02(10cm),直至到达水箱的顶部,液晶屏幕上显示“FULL”,并且蜂鸣器报警,提醒用户水已满,关闭水阀,从而完成

23、了对水位的控制。根据运行步骤和电路的功能设计出水温水位程序流程图如图15所示。图15P3.0表示第一层水位监测口P3.1表示第二层水位监测口P3.2表示第三层水位监测口P3.3表示第四层水位监测口P3.4表示第五层水位监测口P2.4表示响铃警报端口通过判断是否导电,来检测水位所在,满水后达到报警目的,并断开注水连接,使蜂鸣器报警。初始化DS18B20温度传感器4.1温度显示部分:发送读取温度指令,并分别从DS18B20中读取高8位和低8位的温度数值将读取来的温度数值转化为实际温度数值将实际温度值送至1602液晶显示图 16 在初始化之后,通过指令从系统中调取数据,从DS18B20中的高8位和低

24、8位温度数值反馈到转化模块,转换成可显示的十进制数,送给1602液晶显示器,分别在1602指定位置显示 实际温度值的10位、个位和小数位反应实时温度。4.2 关于DS18B20的编程在对DS18B20进行读写程序时,必须严格保证读写时序,否则将无法读取测得的温度结果。根据DS18B20的通信协议,主机控制DS18B20完成温度转换必须经过3个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。再才能读取温度。指令约定代码功能温度转换44H将DS18B20进行温度转换启动,12位转换时最长为750ms,把结果

25、存入部9字节RAM中读暂存器0BEH读部RAM中9个字节的容写暂存器4EH发出向部RAM的3、4字节写上、下限温度数据指令,紧跟该指令之后是传送两字节的数据复制暂存器48H将RAM中第3、4字节的容复制给PRAM重调PRAM0B8H将PRAM中容恢复到RAM中的第3、4字节读供电方式0B4H读DS18B20的供电方式。寄生供电时DS18B20发送0,外接电源供电DS18B20发送1表1 RAMR指令表指令约定代码功能读ROM33H读取DS18B20温度传感器ROM中的编码程序符合ROM55H发出命令之后,然后发出64位ROM编码,访问单总线上与该编码对应的DS18B20,使之作出响应,为下一步

26、对该DS18B20读写作准备搜索ROM0F0H用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备跳过ROM0CCR跳过ROM工作表2 ROM指令表系统对DS18B20的各种操作按协议进行。操作协议为:初始化DS18B20>发ROM功能命令>发存储器操作命令>处理数据。DS18B20的初始化序列图,如图18所示。4.3 初始化结构图17 DS18B20的初始化序列图5 系统调试本设计采用KeilC51编译器进行源程序编译与仿真调试,同时用Protel进行硬件电路板的设计制作。硬件电路制作完毕,用万用表检测有无短路开路等现象,确定硬件电路没有

27、错误时,用proteus进行仿真,运行程序进行调试。在焊接过程中,发现DS1302芯片发热严重,但扔能正常显示日期等,断开开关,通过万用表测量,发现一脚和八脚短路,但是断开3.6V电源后,扔持续发热,通过测试,发现是芯片损坏,重新更换芯片后得到解决。由于初次使用DS18B20器件,在程序设计过程中遇到很大难题,通过询问老师和查阅网络,得到相关信息,在同学的共同学习下,更深的了解了该元件的使用方法和相关编程方式,并成功的运用到电路中。在实现功能之后,又加入了部分小功能,如:秒表,定时等,充分利用液晶屏和各芯片功能,使整个作品变得更加丰富,以满足不同使用者的不同需求,使用起来方便耐用,操作简单,易

28、于上手。6 总结经过这么长时间来不懈的努力与奋斗,我终于在老师的指导下完成了我的设计,本设计除了具有测量太阳能热水器水温水位的功能,还具有显示日期,时间,星期等的附加功能。虽然它还有很多需要完善的地方,在这次作品设计的过程中学到了很多东西,使我明白了很多书本上的东西不通过具体的实践是不能够领会其中的精髓的,我们必须通过自己的亲手实践,去经历失败了才能对所学知识达到真正的掌握。理论必须联系实际,而实践是检验真理的唯一标准,我真正的懂得了这句话的真谛。在我以后的工作和生活中,我从此可以汲取很多经验,凡事都要自己去动手,去实践一下,遇到困难,永远不要丧失一颗胜利的心,有耐心,有信心,有细心,有恒心,

29、有虚心,只有这样,我才会在逆境中不断前进,不断充实自己!致 在本次课程设计的过程中,特别感我的指导老师对我的作品设计的帮助,不管是在选题阶段,设计阶段,还是制作阶段,老师都对我进行了指导,从而使得本次课程设计能够顺利完成。最后我要感我的同学们,他们在我进行电路图的设计和焊接过程中给了我很多帮助,在制作的过程中,我感受到了同学们的建议都是一种宝贵的财产。参考文献1文博,文涛.单片机语言C51程序设计M:人民邮电2006.2胡乾斌.单片微型计算机原理与应用M(第二版).:华中科技大学.2005.3Microchip Inc.PIC16/17 Microcontrollers Data Book.1

30、995/1996.4马琨.几种实用变压器和稳压电源的制作。电气时代.1999(1).5何立民.单片机应用系统抗干扰技术M.:航空航天大学,2001.6家胜.太阳能热水器辅助电加热控制器的研制.电子技术,2000,27(10):31-36.附录#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit lcd_rs=P26; /液晶脚定义sbit lcd_re=P25;sbit dq = P10;sbit s1 =P23; /总控制端sbit s2

31、 =P22;/加一sbit s3 =P21; /减一sbit s4 =P20; /秒表控制sbit beep=P24;/闹钟控制sbit one=P34; /水位定义sbit two=P33;sbit three=P32;sbit four=P31;sbit five=P30 ;sbit s=P27; /水位测试切换开关void lcd_writedata(uchar date);void lcd_writecom(uchar );void change(uchar add,uchar date,uchar row);void change1(uchar add,uchar date,ucha

32、r row);void delay_ds1820(int num);uchar readonechar(); /读一个字节void writeonechar(uchar dat); /写一个字节uchar code wendu="0123456789"uint readtemp() ; /读温度void displayw() ; /显示温度void key();void guding();void ds1302_inputbyte(uchar d); uchar ds1302_outputbyte();uchar read1302(uchar add);void write

33、1302(uchar add,uchar date);void get_1302(uchar realtime);void xianshi();void miaobiao_init();void keys();void set_alarm();void read_alarm();void alarm();void alarm_sound();void sheng_set();void read_sheng();void sheng();sbit ds1302_rst=P13; /ds1302脚定义sbit ds1302_clk=P11;sbit ds1302_io=P12;sbit acc0

34、= ACC0;sbit acc7 = ACC7;uchar num,s1num,s4num,flag,flag1,flag2,flag3,flag4; /定义变量uchar shi,fen,miao,weimiao,t;char time7,time17;uchar ashi,afen,amiao,anian,ayue,ari;uchar code table=" StopWatch "uchar code table1=" 00:00:00:00 "uchar code table2=" HAPPY BIRTHDAY "uchar

35、code table3=" 1986-02-20 "uchar code table43="Mon","Tue","Wed","Thu","Fri","Sat","Sun"void write_xingqi(char xingqi);/延时一毫秒void delay(uint z) uint x,y;for(x=z;x>0;x-) for(y=110;y>0;y-); void lcd_init()/液晶初始化和命令数据操作

36、lcd_writecom(0x38);lcd_writecom(0x0c);lcd_writecom(0x06);lcd_writecom(0x01);lcd_writecom(0x80); void lcd_writecom(uchar )lcd_rs=0;lcd_re=0;P0=;lcd_re=1;delay(1);lcd_re=0;void lcd_writedata(uchar date)lcd_rs=1;lcd_re=0;P0=date;lcd_re=1;delay(1);lcd_re=0;void change1(uchar add,uchar date,uchar row) /写

37、函数一 uchar shi,ge; shi=date/10; ge=date%10;if(row=0) lcd_writecom(0x80+add); lcd_writedata(0x30+shi); lcd_writedata(0x30+ge);if(row=1) lcd_writecom(0x80+0x40+add); lcd_writedata(0x30+shi); lcd_writedata(0x30+ge);void change(uchar add,uchar date,uchar row)/写函数二 防止冲突。 uchar shi,ge; shi=date/10; ge=date

38、%10;if(row=0) lcd_writecom(0x80+add); lcd_writedata(0x30+shi); lcd_writedata(0x30+ge);if(row=1) lcd_writecom(0x80+0x40+add); lcd_writedata(0x30+shi); lcd_writedata(0x30+ge);void key() if(flag3=1) if(s1=0)delay(5);if(s1=0)while(!s1);flag3=0;lcd_init();guding();if(s2=0) delay(5);if(s2=0)while(!s2);fla

39、g3=0;lcd_init(); guding(); if(s3=0) delay(5);if(s2=3)while(!s3);flag3=0;lcd_init(); guding(); if(s4=0) delay(5);if(s4=0)while(!s4);flag3=0;lcd_init(); guding(); if(s4=0)delay(5);if(s4=0) flag1=1;while(!s4);s4num+;if(s4num=1) lcd_init(); miaobiao_init(); lcd_writecom(0x80+0x40+4); lcd_writedata('

40、:'); lcd_writecom(0x80+0x40+7); lcd_writedata(':'); lcd_writecom(0x80+0x40+10); lcd_writedata(':'); lcd_writecom(0x80+2); for(num=0;num<14;num+) lcd_writedata(tablenum); delay(6); TR0=1; if(s4num=2)TR0=0;if(s4num=3) lcd_init(); guding();s4num=0;weimiao=0;miao=0;fen=0;shi=0;fla

41、g1=0; if(s1=0)delay(5);if(s1=0) flag=1; s1num+;while(!s1);switch(s1num) case 1:lcd_writecom(0x80+0x40+7); lcd_writecom(0x0f); break; case 2:lcd_writecom(0x80+0x40+4); lcd_writecom(0x0f); break; case 3:lcd_writecom(0x80+0x40+1); lcd_writecom(0x0f); break; case 4:lcd_writecom(0x80+3); lcd_writecom(0x0

42、f); break; case 5:lcd_writecom(0x80+6); lcd_writecom(0x0f); break; case 6:lcd_writecom(0x80+9); lcd_writecom(0x0f); break; case 7:lcd_writecom(0x80+12); lcd_writecom(0x0f); break; case 8: s1num=0; lcd_writecom(0x0c); write1302(0x8e,0x00); /控制写入 write1302(0x8c, time16/10*16+time16%10); /年 write1302(0

43、x88, time14/10*16+time14%10); /月 write1302(0x86, time13/10*16+time13%10); /日 write1302(0x8a, time15/10*16+time15%10); /星期 write1302(0x84, time12/10*16+time12%10); /时 write1302(0x82, time11/10*16+time11%10); /分 write1302(0x80, time10/10*16+time10%10); /秒 write1302(0x8e,0x80); /禁止写入 flag=0; break; if(

44、s1num!=0)if(s2=0)delay(5);if(s2=0)while(!s2);switch(s1num)case 1:time10+; if(time10=60) /秒 time10=0; change(6,time10,1); lcd_writecom(0x80+0x40+6); break;case 2:time11+; if(time11=60) time11=0; /分 change(3,time11,1); lcd_writecom(0x80+0x40+3); break;case 3:time12+; if(time12=24) time12=0; /时 change(

45、0,time12,1); lcd_writecom(0x80+0x40+0); break;case 4:time16+; if(time16=100) time16=0; /年 change(2,time16,0); lcd_writecom(0x80+2); break; case 5:time14+; if(time14=13) time14=1; /月 change(5,time14,0); lcd_writecom(0x80+5); break;case 6:time13+; if(time13=32) time13=1; /日 change(8,time13,0); lcd_wri

46、tecom(0x80+8); break;case 7:time15+; if(time15=7) time15=0; /星期 write_xingqi(time15); lcd_writecom(0x80+12); break;if(s3=0) delay(5);if(s3=0)while(!s3);switch(s1num) case 1:time10-; if(time10=-1) /秒 time10=59; change(6,time10,1); lcd_writecom(0x80+0x40+6); break;case 2:time11-; if(time11=-1) time11=

47、59; /分 change(3,time11,1); lcd_writecom(0x80+0x40+3); break;case 3:time12-; if(time12=-1) time12=23; /时 change(0,time12,1); lcd_writecom(0x80+0x40+0); break;case 4:time16-; if(time16=-1) time16=99; /年 change(2,time16,0); lcd_writecom(0x80+2); break; case 5:time14-; if(time14=0) time14=12; /月 change(5,time14,0); lcd_writecom(0x80+5); break; case 6:time13-; if(time13=0) time13=31; /日 change(8

温馨提示

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

评论

0/150

提交评论