太阳能热水器控制器设计—毕业设计论文.doc

上传人:爱问知识人 文档编号:3925425 上传时间:2019-10-10 格式:DOC 页数:54 大小:427.52KB
返回 下载 相关 举报
太阳能热水器控制器设计—毕业设计论文.doc_第1页
第1页 / 共54页
太阳能热水器控制器设计—毕业设计论文.doc_第2页
第2页 / 共54页
太阳能热水器控制器设计—毕业设计论文.doc_第3页
第3页 / 共54页
太阳能热水器控制器设计—毕业设计论文.doc_第4页
第4页 / 共54页
太阳能热水器控制器设计—毕业设计论文.doc_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《太阳能热水器控制器设计—毕业设计论文.doc》由会员分享,可在线阅读,更多相关《太阳能热水器控制器设计—毕业设计论文.doc(54页珍藏版)》请在三一文库上搜索。

1、第 54 页 共 54页1 绪论11 本课题的研究背景 太阳能是地球上取之不尽、用之不竭的最宝贵能源。它在防止和改善大气污染方面,加强对太阳能的研究和利用, 特别是重点发展太阳能热水器有着重大的意义和广阔的前景。太阳能热水器是一种将太阳辐射能转变为热能, 把水逐渐加热的热交换装置, 它是太阳能热利用的基础元件。太阳能的开发利用, 已越来越引起世界人们的注意。由于石油和能源的紧缺, 促使太阳能热水器有很大的发展。日本、法国、澳大利亚等国, 大部分家用热水来自太阳能热水器1。目前市场上太阳能热水器的控制系统大部分都存在着或多或少的缺点:功能单一、操作复杂、控制不方便等。随着人们生活水平的提高和电子

2、技术的发展,这样的太阳能热水器控制系统越来越不适应人们的生活需求,开发一种控制方便,操作灵活的太阳能热水器的控制系统,已经成为当务之急2。 太阳能热水器单片机控制系统就是一种以单片机为控制系统核心的系统,不但其机器性能显著提高,还增加了难以实现的功能,同时也提高了控制的精确度,硬件与软件相互配合实现太阳能热水器工作的智能化和自动化3。 单片机具有集成度高、运算速度快、体积小、运行可靠、价格低廉等特点,因此在过程控制、数据采集、机电一体化、智能化仪表、家用设备以及网络技术等方面得到广泛应用4。现今太阳能热水器的控制系统大多都有着功能不全面、操作性复杂、控制不方便等问题,很多控制器只具有温度和水位

3、显示功能,不具有温度控制功能,即使热水器具有辅助加热功能,也可能由于加热时间不能控制而产生过烧,从而浪费电能。本课题设计的太阳能热水器控制系统以AT89S52单片机为检测控制中心单元,不仅实现了时间、温度和水位三种参数显示功能,而且具有时间设定、温度设定与控制功能。控制系统可以根据天气情况利用辅助加热装置使蓄水箱内的水温达到预先设定的温度,从而达到24小时供应热水的目的。该控制器和以往显示仪相比具有性价比高、温度控制与显示精度高、使用方便和性能稳定等优点,提高了我国太阳能应用领域控制水平,具有可观的经济效益和社会效益5。12 太阳能热水器的发展历史和现状1.2.1 太阳能热水器的发展历史 太阳

4、能热水器是利用太阳能集热器将太阳辐射能转变为热能,并用来提高水温的,是目前实际应用最多、技术最成熟的太阳能热利用的一种装置。它不仅可为家庭和机关、旅社、医院等提供洗澡、洗衣、炊事等所需热水(100以下),同时还可用于空调、干燥、农业种植、水产养殖、海水淡化等。太阳能热水器的使用已有近百年的历史,最早的太阳能热水器工业出现在18世纪的美国加州,最原始的太阳能热水器仅是一只漆黑的金属圆桶。随着科学技术的进步,太阳能热水器也随之不断改进,由集热和贮热合为一体逐步改进为集热和贮热部分分开,采用先进的太阳能集热器,先进的保温材料和冬季防冻技术及其他辅助装置等。现如今生产的先进的太阳能热水器已实现了全年运

5、行,大大提高了太阳能热水器的热效率和利用效率。目前,太阳能热水器是可再生能源技术领域商业化程度最高,推广应用最普遍的技术之一。以色列在政府的支持下,有85%的住宅都安装了太阳能热水器。美国有130多万个游泳池都装上了太阳能集热器,成为环保型的太阳能游泳池。近年来,太阳能热水器在我国迅猛发展,从20世纪70年代后期就开始了开发家用太阳能热水器。到20世纪90年代,随着科技进步,环境意识增强和人的生活水平的提高,使中国太阳能热水器的应用获得了巨大动力,以每年25%-30%的速度快速增长。到2000年,全国太阳能热水器总使用面积达2600万平方米。太阳能热水器市场的扩大,使热水器产业也得到迅速崛起和

6、发展,全国有近1000多家生产企业,年总销量达6000万平方米,产量已跃居世界首位,产值60多亿元6。1.2.2 太阳能热水器的发展现状目前国内的太阳能热水器主要是采用的紧凑式自然循环系统,这种系统的特点是制造简单、价格低廉。但如果从太阳能热水器使用的安全、质量、方便以及操作性等方面来看,分离式强制循环系统更能满足人们的要求。而采用分离式强制循环系统时一般都要采用承压储水箱,这样就对热水器的连接部位的强度以及密封性有了一定的要求。平板型集热器一般是金属制成的,集热器与储水箱之间的连接采用的是金属连接,因此可以承受较高的水压,密封性能也较好。而真空管热水器的集热管与储水箱之间的连接一般是用塑料或

7、橡胶来密封,因此在承压及密封方面效果差。另外,如果对太阳能热水器的水质要求较高,那么通常是采用双循环系统,即集热器加热的是导热工质,再通过导热工质把热量传递给水,避免了水在循环过程中被二次污染,保证了水质。在平板型太阳能集热器中,传热介质可以在集热器与贮水箱内的换热器之间无障碍地流动,通过换热器去加热贮水箱内的水,完成系统的双循环,这一点也是平板太阳能热水器明显的优势之处7。根据我国所处的地理环境,太阳能热水器平均每平方米每年可节约的能源折合100-150公斤标准煤。由此可见,在如今资源短缺,环境恶化的现实中,太阳能热水器的推广和应用,将在节约常规能源,减少环境污染和人类社会可持续发展方面起到

8、不可忽视的重要作用,具有极大的发展前途8。在全球能源形势紧张、气候变暖严重威胁经济发展,世界能源的日益紧缺、油价的不断攀升和居民生活水平的高和洗浴舒适度要求提高的今天,世界各国都在寻求新的能源替代战略,以求得可持续发展和在日后的发展中获取优势地位。太阳能以其清洁、源源不断、安全等显著优势,成为关注重点。在太阳能产业的发展中,太阳能热水器的热利用转换技术无疑是最为成熟的9。今后,太阳能热水器将会向更节能、更高效、更环保等方向发展。13 本课题的研究目的和意义当今计算机技术在飞速发展,微机应用日益普及深入,微机在通信自动化、工业自动控制、电子测量、信息管理和信息系统等方面得到广泛的应用。嵌入式计算

9、机系统是以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功效等严格要求的专业计算机系统。其最初应用是基于单片机的。单片机小巧灵活,成本低,易于产品化。它面向控制,能针对性的解决从简单到复杂的各种控制任务10。太阳能热水器使用方便,节能,无污染,普及推广迅速。它是人们日常生活中不可或缺的家用设备,提高居民的生活质量起了不可替代的作用。随着科学技术的发展,人们对太阳能热水器的控制功能的要求也越来越高。目前市场上太阳能热水器的控制系统大部分都存在着或多或少的缺点:功能单一、操作复杂、控制不方便等。随着人们生活水平的提高和电子技术的发展,这样的太阳能热水器控制

10、系统越来越不适应人们的生活需求,开发一种控制方便,操作灵活的太阳能热水器的控制系统,已经成为当务之急11。本文设计了一种以单片机AT89S52为核心的太阳能热水器控制器,本设计具有很强的实用性,用成本低廉的器件以单片机技术对太阳能热水器的温度、水位和时间的显示和控制,并且本设计电路简单、实用性强、性价比高、控制灵活、显示直观醒目,可广泛应用与家用太阳能热水器。2 总体方案21 设计要求本设计以AT89S52单片机为太阳能热水器控制系统的核心,分为单片机时钟电路、单片机复位电路、温度检测电路、水位检测电路、实时时钟电路、键盘电路、显示电路、报警电路等模块。本系统处于监控状态时,具有以下功能:1、

11、利用数码管显示温度和时间;2、利用发光二极管显示水位;3、当水位较低时自动上水,水满时自动停止;4、当温度低于下限温度时自动加热,温度达到上限温度时自动停止加热;5、通过按键实现手动加热、手动加水、时间显示以及设置时间、上限温度和下限温度;6、清晨自动上水。22 总体设计本设计控制系统中水温利用温度传感器DS18B20读入温度数据,在数码管上显示两位数据。水位采用三个电极,一个是电源负极,当电极接触到水后,由于水的导电性,使得两外两根导线也是低电平,从而使三极管导通,P3.6和P3.7是低电平,当两根导线不接触水的时候,输出是高电平。通过P3.6 和P3.7引脚电平高低情况来控制发光二极管点亮

12、的数目,从而来指示当前的水位。当水位比较低的时候,红灯亮,水位在中间的时候,红灯和黄灯亮,当水位高的时候三个灯都亮。时间通过时钟芯片DS1302读取时钟数据,然后在四位数码管上显示时分。控制加热装置和加水装置分别由两个继电器控制,继电器采用三极管驱动。 本系统采用8个独立式按键,按下S1键单片机复位;按下S5键可实现手动上水功能,水满自动停止;按下S6键可实现手动加热功能,温度达到上限温度值自动停止加热;S2为温度调整键,按一次可调整报警上限温度值,按两次可调整报警下限温度值,按三次数码管恢复到正常温度显示;S8为时间调整键,按一次调整分,按两次调整时,按三次确定和保存时间;S3、S4是温度时

13、间加一和减一操作键;按下S7键切换温度和时间显示。系统组成框图如图1所示。温度显示 A T 8 9 S 5 2报警电路水位显示键盘电路加热器继电器温度传感器水位检测电路加水电磁阀继电器水箱时钟芯片 图1 系统组成框图3 软件设计系统软件的设计采用模块化的结构。太阳能热水器控制系统程序主要由主程序、延时子程序、温度读取子程序、温度显示子程序、时间读取和显示子程序、扫描键盘子程序、报警子程序构成。31 主程序设计本控制系统的主程序是本设计的总控制程序,以AT89S52单片机为核心实现对太阳能热水器水位和水温的检测与显示。主程序首先完成系统初始化设置,然后根据存储的键盘状态和检测的水温、水位等状态信

14、号进行相应的处理。系统正常运行时,首先读取水温和水位,然后显示温度和水位,系统会根据显示的水温值和水位值判断是否要进行自动加热和自动上水操作。当检测到的实际水温小于设置的下限温度时,加热指示灯亮,继电器工作进行加热,水温到达上限温度时停止加热;当检测到水位较低时,加水指示灯亮,继电器工作进行加水,水位达到最高时停止加水;通过扫描按键来进行相对应的按键操作。主程序流程图如图2所示。NYYN自动加水YN水位低?Y自动加热显示温度、水位温度下限?读取温度、水位、时间N系统初始化扫描按键开始水位最高?温度=上限?图2 主程序流程图32 延时子程序设计 延时子程序是用来实现数码管显示和扫描按键的延时,n

15、um值不同,延时的时间也不同,具体程序如下:void Delay(uint num)while( -num );33 温度读取子程序设计读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。当DS18B20接收到温度转换命令后,开始启动转换,转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 /LSB形式表示。当符号位S=0时,表示测得的温度值为正值,直接将二进制位转换为十进制;当S=1时,表示测得的温度值为负值,先将补码

16、变换为原码,再计算十进制值。DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625LSB形式表示。DS18B20的操作协议是:初始化发ROM功能指令发存储操作指令处理数据。YY发18B20复位命令发跳过ROM命令发读取温度命令读取操作CRC校验9字节完?CRC校验对?移入温度暂存器结束NN图3 读温度流程图34 温度显示子程序设计7段LED数码管是利用7个LED(发光二极管)外加一个小数点的LED组合而成的显示设备,可以显示09等10个数字和小数点,这类数码管可以分为公阴极与共阳极两种,共阳极就是把所有LED的阳极连接到共同的结点,而每

17、个 LED的阴极分别为a,b,c,d,e,f,g及dp(小数点);共阴极就是把所有LED的阳极连接到共同的结点,而每个 LED的阳极分别为a,b,c,d,e,f,g及dp(小数点)。根据数码管的驱动方式的不同,可以分为静态式和动态式两类。 静态显示驱动:每个数码管的每个段都由一个单片机的I/O端口进行驱动,或者使用如BCD码的二十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多。动态显示驱动:动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp”的同名端连在一起,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的

18、字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形12。本设计采用共阳型数码管,灯的负极依次接到数码管的a-f段,采用动态扫描电路,数码管编码说明,如1表所示。温度显示流程图如图4所示。表1 控制命令表P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0eddpcgbfa00010100028H111101011EBH20011001032H310100010A2H411100001E1H510100100A4H60010010024H711101010EAH80010000020H910100000A0

19、HH0110000161HL001100013DH-11110111F7HC001111003CHDS18B20读取数值显示个位结束数码管位选、段选显示十位图4 显示子程序流程图35 时间读取和显示子程序设计DS1302内部主要包括实时时钟、输入移位寄存器、31字节静态RAM、电源控制部分、命令控制逻辑、振荡器和分频器等部分。DS1302控制字:控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4A0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行

20、读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。 DS1302时序:CE输入驱动高时启动所有的数据传输。CE输入有两个功能。首先,CE打开控制逻辑,允许访问的移位寄存器的地址/命令序列。其次,CE提供了一个终止单字节或多字节数据传输方法。一个时钟周期是由一个下降沿之后的上升沿序列。对于数据传输而言,数据必须在有效的时钟的上升沿输入,在时钟的下降沿输出。如果CE为低,所有的I/O引脚变为高阻

21、抗状态,数据传输终止。对于数据输入:开始的8个SCLK周期,输入写命令字节,数据字节在后8个SCLK周期的上升沿输入。数据输入位0开始。对于数据输出:开始的8个SCLK周期,输入一个读命令字节,数据字节在后8个SCLK周期的下降沿输出。通过DS1302读取时间值,然后在四位数码管上依次显示时的十位、个位,分的十位、个位。时间的读取和显示流程图如图5和图6所示。开始初始化使DS1302没写保护复位产生一个高电平写1302地址延时向该地址写数据数据写完?地址增加YN复位产生一个高电平写1302地址延时向该地址写数据数据写完?地址增加YN显示数据图5 DS1302读取时间流程图开始初始化读取DS13

22、02显示分显示时结束图6 LED显示时间流程图36 扫描键盘子程序设计按键是用来向系统提供操作人员命令的接口,所以准确无误地辨认每个键的动作以及其所处的状态,是系统能否正常工作的关键。多数按键多采用机械弹性开关,一次高低电平的变化就是一次命令。但是按键的抖动是难以避免的,为了稳定操作,我们要防止抖动的发生,就要消除抖动的影响,可以从硬件和软件两方面解决。1、硬件消除抖动。一般采用双稳态消抖电路。2、软件消除按键抖动。如果按键较多硬件电路将无法胜任,因此常采用软件的方法进行消抖。在第一次检测到有键按下时,执行一段延时子程序后再按确认该键电平是否仍保持闭合状态,如果保持闭合状态电平则确认为真正有键

23、按下,从而消除了抖动的影响13。 键盘一般有独立式和矩阵式两种,因为键盘较少所以用简单的独立式键盘,它的优点是编程简单,缺点是占用I/O口多,适用于键盘较少的电路。本设计中将键盘程序作为主程序的一部份,采用扫描方式读取键盘动作,根据读取的值,键盘处理程序进行相应操作。键盘扫描子程序流程图如图7所示。提取键值开始扫描键值有键按下?有键按下?延时去抖动NYNY调用键盘处理程序结束图7 键盘扫描子程序流程图37 报警子程序设计 系统正常运行时,当检测到温度低于下限温度或水位较低时,报警电路工作,蜂鸣器响起,直到温度高于下限温度或水位不低时,蜂鸣器停止工作。当系统处于出错状态时,蜂鸣器也会报警。报警工

24、作流程图如图8所示。开始温度水位检测NYY水位低?TT下限?蜂鸣器响N图8 报警子程序流程图4 仿真调试41 仿真软件介绍本次设计是利用Proteus软件来仿真的。Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件14。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。Proteus软件是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型

25、仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件具有其它EDA工具软件的功能。这些功能是:1、原理布图 2、PCB自动或人工布线 3、SPICE电路仿真革命性的特点:1、互动的电路仿真。2、仿真处理器及外围电路。Proteus提供了丰富的资源:1、可提供仿真元器件资源,仿真数字和模拟、交流和直流等数千种元器件,有30多个元器件。2、可提供仿真仪表资源。3、除了现实存在的仪器

26、外,它还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似15。42 系统仿真结果在Proteus绘制好原理图后,调入已经编译好的目标代码文件:*.HEX,可以在Proteus的原理图中看到模拟的实物运行状态和过程。打开Proteus软件,在元器件库中选择AT89S52单片机,DS18B20,DS1302等元器件,连线结束后,点击单片机下载程序。点击开始按钮,系统上电进入初始化状态,进入工作状态,太阳能热水器控制器在2位LED数码管上显示当前的水温值,通过发光二极管点亮的数目来表示当前的水位值,利用按键来执行加水、加热、显示时间、调整温度、调整时间等

27、相关操作。仿真图如图9所示:图9 仿真图结 论本次毕业设计,我做的课题是“太阳能热水器控制器软件设计”。本设计利用AT89S52单片机作为系统核心实现了温度、水位和时间三种参数的实时显示,加水加热自动和手动控制,温度预置等功能。采用C语言编写程序,软件部分由主程序、延时子程序、温度读取子程序、温度显示子程序、时间读取和显示子程序、扫描键盘子程序、报警子程序构成。本设计软件设计是用C语言来编写的,与其他语言比起来,有优势也弊端,结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用

28、户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。在软件编写好后,发现始终不能通过编译,经过老师的帮助,发现了诸多的问题,最后将错误改正后,通过编译,并实现仿真。本设计已基本实现了任务书所要求的的功能,但鉴于自身水平有限等原因,设计中可能会不足和有待改进之处,望各位专家老师批评指正。致 谢弹指一挥间,大学四年已经接近了尾声。当自己怀着忐忑不安的

29、心情完成毕业设计的时候,意味着大学生活即将结束,自己也从当年一个懵懂的孩子变成了一个成熟的青年。本次设计是我大学生涯上的最后一次答卷,在完成毕业设计的整个过程中,我得到了许多同学和老师的帮助,尤其是我的指导老师纪剑祥,他在我毕业设计完成的过程中给予了很多的教诲、帮助和鼓励。首先,我要感谢我的导师纪剑祥,从选题到开题报告,到外文翻译,到中期检查表,再到毕业论文初稿和终稿,一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱。其次,我还要感谢同组的蔡江同学和给予我帮助的同学,没有他们的帮助和提供资料,没有他们的鼓励与支持,我是不可能顺利地完成本次设计的。最后,我要感谢培养我长大含辛茹苦的父母,谢谢

30、您们!最后,能够成功地完成本次设计,我非常地开心!借此机会,再次向在本次毕业设计中给予我关心和帮助的老师和同学表达我诚挚的谢意。参 考 文 献 1 杨宜德,刘茂州.太阳能热水器发展的前景广阔J.河南科技,1989.10 2 刘福才,刘丰,刘立伟.AVR单片机在太阳能热水器智能控制中的应用J.中国仪器仪表,2000.6 3 孔星朗.单片机原理及其在家用电器中的应用.海洋出版社 4 李军.检测技术及仪表.北京:中国轻工业出版社,2002.4 5 张景文,王震宏,高为浪,李桂花.基于单片机的太阳能热水器智能控制系统J.西华大学学报(自然科学版),2008.5 6 赵大伟.太阳能热水器J.新农业,20

31、02.7 7 别玉,胡明辅,王艳青.平板型太阳热水器的现状及发展趋势C.化学与化工技术,科技学术论文集.北京:原子能出版社,2005 8 胡润青.蓬勃发展的太阳能热水器产业.可再生能源 9 张忠.太阳能热水器的类型J.农村新技术,2008.2 10 王幸之,钟爱琴,王雷,王闪.AT89S系列单片机原理与接口技术M.北京:航空航天大学出版社,2004.511 袁小平,陈跃.一种智能型太阳能热水器控制器的研制.江苏煤炭12 范延滨,王正彦.太阳能热水器控制器中测量模型.电子测量技术,2004.313 唐德礼,鲍连升.太阳能热水器水温水位控制器.十堰职业技术学院学报,2002.15(4) 14 宋光

32、汉,方之棋.电气实验技术与测量.北京:中国计量出版社15 施文康.检测技术.北京:机械工业出版社,2002.1(189-207)附录A:系统原理图附录B:程序清单#include #include DS18B20.h #define uint unsigned int#define uchar unsigned char /宏定义#define SET P1_0 /定义温度调整键#define DEC P1_1 /定义减少键#define ADD P1_2 /定义增加键#define JIAS P1_6 /定义加水键#define JIAR P1_7 /定义加热键#define BEEP P3

33、_4 /定义蜂鸣器#define S1 P3_7 /定义低水位#define S2 P3_6 /定义高水位#define LED1 P1_3 /定义绿灯#define LED2 P1_4 /定义黄灯#define LED3 P1_5 /定义红灯#define JDQ1 P3_0 /定义加水继电器#define JDQ2 P3_1 /定义加热继电器bit shanshuo_st; /闪烁间隔标志bit beep_st; /蜂鸣器间隔标志char flag=0;sbit D1=P06; /位选sbit D2=P04;sbit D3=P02;sbit D4=P00;sbit IO=P03; /数据口

34、sbit CLK=P01; /控制数据时钟sbit RST=P05; /使能端、复位端sbit s1=P07; /定义温度时间切换键sbit s2=P35; /定义时间调整键char knum=0,snum,fnum;/*写时分秒地址*/#define write_shi 0x84#define write_fen 0x82#define write_miao 0x80/*读时分秒地址*/#define read_shi 0x85#define read_fen 0x83#define read_miao 0x81char shi,fen,miao; /读出数据存储变量uchar d=0x28

35、,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0;/不带小数点uchar dd=0x38,0xfb,0x42,0xb2,0xf1,0xb4,0x34,0xfa,0x30,0xb0;/带小数点uchar x=0; /计数器signed char m; /温度值全局变量uchar n; /温度值全局变量uchar set_st=0; /状态标志signed char shangxian=38; /上限报警温度,默认值为38signed char xiaxian=5; /下限报警温度,默认值为05Uchar code LEDData=0x28,0xeb,0x

36、32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0;/*延时子程序*/void Delay(uint num) while( -num );/*初始化定时器0*/void InitTimer(void) TMOD=0x1;TH0=0x4c;TL0=0x00; /50ms(晶振11.0592M)EA=1; /全局中断开关TR0=1;ET0=1; /开启定时器0/*读取温度*/void check_wendu(void)uint a,b,c;c=ReadTemperature()-5; /获取温度值并减去DS18B20的温漂误差a=c/100; /计算得到十位数字b=c/1

37、0-a*10; /计算得到个位数字m=c/10; /计算得到整数位 if(m99)m=99;n=9; /设置温度显示上限 /*显示开机初始化等待画面*/Disp_init() P2 = 0xf7; /显示-D1 = 0;Delay(200);D2=0;Delay(200); D3=0;Delay(200);D4=0;Delay(200);D1=1; /关闭显示D2=1;D3=1;D4=1;/*显示温度子程序*/Disp_Temperature() /显示温度P2 =LEDDatam%10; /显示个位 D1 = 1;D2 = 1;D3 = 0;D4 = 1;Delay(300);P2 =LED

38、Datam/10; /显示十位D1 = 1;D2 = 1;D3 = 1;D4 = 0;Delay(300);D1= 1; /关闭显示D2= 1;D3= 1;D4= 1;/*显示报警温度子程序*/Disp_alarm(uchar baojing)P2 =0x3c; /显示CD1 = 0;D2 = 1;D3 = 1;D4 = 1;Delay(200);P2 =LEDDatabaojing%10; /显示个位D1 = 1;D2 = 0;D3 = 1;D4 = 1;Delay(200);P2 =LEDDatabaojing/10; /显示十位D1 = 1;D2 = 1;D3 = 0;D4 = 1;De

39、lay(200);if(set_st=1)P2 =0x61;else if(set_st=2)P2 =0x3d; /上限H、下限L标示D1 = 1;D2 = 1;D3 = 1;D4 = 0;Delay(200);D1 = 1; /关闭显示D2 = 1;D3 = 1;D4 = 1;/*报警子程序*/void Alarm() if(x=10)beep_st=beep_st;x=0;if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1)|(flag=1&beep_st=1)BEEP=1;else BEEP=0;if(flag=2)if(beep_st=1)BEE

40、P=1;LED1=0;LED2=0;LED3=0;else BEEP=0;LED1=1;LED2=1;LED3=1;if(m=shangxian) JDQ2=1;/*DS1302读数据*/uchar read_1302(uchar add)/读函数uchar i,date;RST=0; /禁止读写数据for(i=0;i=1;CLK=1;for(i=0;i=1;CLK=0;RST=0;date=date/16*10+date%16; /进制转换 16转10进制IO=0; /数据读完后,IO口必须为0,不然小时一直显示return date; /*DS1302写数据*/void write_1302(uchar add,uchar dat) /写函数 uchar i;RST=0; /禁止读写数据CLK=0; for(i=0;i8;i+) /写地址

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1