基于FPGA的太阳能热水器智能控制器的设计.doc

上传人:laozhun 文档编号:4144718 上传时间:2023-04-07 格式:DOC 页数:27 大小:611KB
返回 下载 相关 举报
基于FPGA的太阳能热水器智能控制器的设计.doc_第1页
第1页 / 共27页
基于FPGA的太阳能热水器智能控制器的设计.doc_第2页
第2页 / 共27页
基于FPGA的太阳能热水器智能控制器的设计.doc_第3页
第3页 / 共27页
基于FPGA的太阳能热水器智能控制器的设计.doc_第4页
第4页 / 共27页
基于FPGA的太阳能热水器智能控制器的设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《基于FPGA的太阳能热水器智能控制器的设计.doc》由会员分享,可在线阅读,更多相关《基于FPGA的太阳能热水器智能控制器的设计.doc(27页珍藏版)》请在三一办公上搜索。

1、 河南科技学院 2013 届本科毕业论文(设计)题目: 基于FPGA的太阳能热水器智能控制器的设计 学生姓名: 所在学院: 所学专业: 导师姓名: 完成时间: 2013-05-15 基于FPGA的太阳能热水器智能控制器的设计摘要近些年人们的生活水平越来越好,因此人们也越来越注重生活质量,越来越注重环境保护,太阳能热水器成为了近些年来家庭中常见的家用产品。尤其在农村地区太阳能热水器的使用呈指数式增长,但是现在国内太阳能热水器的质量还有待提高,存在着很多设计上的问题。例如:有些功能过于单一,不能24小时随时提供热水,很容易受到外界的干扰,不能很好地满足人们心中对太阳能热水器功能的需求,有时还会出现

2、加热不足或者是过加热的情况,这样就存在很多大的安全隐患,所以本文设计了一款基于FPGA的太阳能热水器智能控制系统。该系统主要包括:显示模块、键盘模块、水位检测模块、温度模块、上水模块、模糊控制模块等。该太阳能热水器操作简单,功能齐全,抗干扰性能好,可以保证用户能够24小时都能随时用上热水,而且不会出现加热不足或者是加热时间过长的现象,让用户用着安心用着放心,这样才达到了本文设计这款太阳能热水器的目的。关键词:太阳能热水器,模块化设计,FPGA,模糊控制FPGA-based solar water heater intelligent controller designAbstractIn re

3、cent years , the level of peoples lives getting better and better , so people are increasingly focused on the quality of life . More and more attention to environmental protection , solar water heater has become common in recent years , the family home . Exponential growth of solar water heaters , e

4、specially in rural areas , but the quality of domestic solar water heater there is to be improved , there are many design problems . For example : Some features over a single , not for 24 hours to provide hot water at any time , are susceptible to outside interference , the hearts of the people can

5、not meet the demand of solar water heater function , and sometimes insufficient heating or over-heating , so there are many security risks , so we designed an FPGA-based solar water heater intelligent control system . The system includes : a display module , keyboard module , the water level detecti

6、on module , module temperature , water supply module , fuzzy control module . The solar heater operation is simple , functional , anti-jamming performance , can ensure that users can spend hot water at any time in 24 hours , and will not appear insufficient heating or heating time is too long phenom

7、enon , so that users with peace of mind with the rest assured , so as to achieve the purpose of the design off this solar water heater. Keywords:solar water heaters,modular design,FPGA,fuzzy control目 录1 绪论11.1我国太阳能热水器的发展现状11.2本文研究的目的与意义12 太阳能热水器的原理与结构22.1太阳能热水器的基本原理22.2太阳能热水器系统的结构22.3太阳能热水器的电气控制33 基

8、于FPGA智能化外部电路的设计43.1总体硬件电路的设计43.2硬件电路芯片的选型53.2.1 FPGA芯片的选用53.3 FPGA外部硬件电路的设计53.3.1温度传感器局部电路的设计53.3.2水位检测局部电路设计73.3.3 4*4矩阵控制键盘电路的设计73.3.4显示模块的设计83.3.5上水模块控制电路93.3.6加热模块控制电路93.3.7模糊控制模块的设计104 内部软件设计114.1软件流程设计114.2系统模块的软件设计124.2.1按键模块软件设计124.4.2显示模块的设计134.4.3温度检测模块134.4.4水位检测模块144.4.5上水模块设计154.4.6电加热模

9、块设计16结论17参考文献18致 谢19附 录201 绪论1.1我国太阳能热水器的发展现状近十几年来,中国的经济发展迅速,人们越来越富裕。国家统计局发布的2012年国民经济运行情况显示,全年国内生产总值519322亿元,按可比价格计算,比上年增长7.8%,按照年末汇率计算,GDP约合8.26万亿美元,人均GDP6100美元。由于人民生活水平的提高,太阳能热水器已经成为了大多数家庭中必备的产品之一。太阳能热水器基本上不受年龄层次的影响,所以市场范围特别大。1.2本文研究的目的与意义随着人们生活水平的提高,人们越来越追求高质量高品质的生活。但同时人们也面临着环境问题和生活成本越来越高等问题。煤、石

10、油等化石燃料的价格一路飙升,给人们的生活成本带来了巨大的压力,迫使人们向清洁能源发展,随之而来的就是带来了太阳能热水器产业的迅速发展。但是我国市场上的太阳能热水器大部分都比较简单,有的还会有安全上的隐患,现在的消费者越来越追求安全舒适的人性化的产品,显然现有的太阳能热水器已经越来越不能够满足消费者对产品人性化设计要求了。所以本文要设计一款太阳能加热和电加热相结合的恒温控制系统,电加热和太阳能加热可以相互的自动切换,利用模糊控制的设计实现了热水器的恒温控制问题,保证用户24小时都能随时用上热水,而且不会出现过加热或者是加热不足的情况。2 太阳能热水器的原理与结构2.1太阳能热水器的基本原理太阳能

11、热水器就是利用太阳能,把太阳能转化成热能,然后把热能传递给水最终产生热水的的一种装置。它通过聚集热量,把热量传递给温度较低的冷水,当水被加热升温时,热水就会上浮冷水下沉,这样就把冷水和热水分开了,热水进入上水筒冷水被继续加热,一直持续下去就会有源源不断的热水了。2.2太阳能热水器系统的结构太阳能热水器有两大部分组成:热水器和控制器部分。热水器部分又分为蓄水箱、集热器、连接管道等其他设施。而控制器又有输入、显示、检测、控制等电路组成。具体结构示意图如图2-1所示:图2-1太阳能热水器系统结构图2.3太阳能热水器的电气控制(1)先将蓄水箱加满水,使集热器处于满水工作状态。(2)自动供应冷水和及时储

12、蓄热水。太阳能集热板和太阳能蓄热水箱内都安装有温度传感器,能够及时收集两个水箱内的水温信号。通过把温度信号转换为电压信号在控制电路中比较,若测得温度数据差值比预先所设定的数值大,控制器发出控制信号,开启循环水泵把热水送入太阳能蓄水箱内,同时把冷水送入太阳能集热板内。由于传感器是实时监控实时发送信号的,所以当传感器所测得的温度信号差值小于所设定的值时循环水泵就会立刻停止上水工作,然后太阳能集热器能的水开始加热。(3)蓄水箱中的电加热控制系统的工作。水温都是通过安装在水箱内的温度感应器来来实时监测的。通过转换把温度信号转换成电压信号后和预先设定的电压信号差值进行比较,如果如果所测得的差值比预先设定

13、的差值要大的话就说明水箱内的水温达到了所设定的温度值,这时就无需加热。如果如果所测得的差值比预先设定的差值要小的话就说明水箱内的水温没有达到所设定的温度值,这时就需要控制器发出信号,经过放大电路来驱动电加热器工作对集热器内的水进行加热。(4)太阳能热水器的智能电气保护系统。当阳光较强时蓄水箱内的温度已经达到了本文所设定的温度时,本文就不需要再用电加热对蓄水箱进行加热了。通过控制器关闭对水箱的电加热,这样既安全又节省了电量。相反,在太阳能不足时通过传感器测得的温度传输给控制器,控制器通过控制电加热系统对水箱内的水进行加热,从而保证了水箱内随时有热水,而且防止水管等其他装置在冬天寒冷的天气中被动坏

14、了。(5)控制其中还有一些按键来控制热水器中的温度设定、水位设置、和上水时间的控制等。3 基于FPGA智能化外部电路的设计3.1总体硬件电路的设计硬件电路系统的设计包括控制电路、数模模数转换电路、传感器电路、键盘电路、水位水温检测电路等。在硬件电路设计时,考虑到后期扩展,应该留有一定数量的预留接口。外围电路一定不能出错,因为外围电路一旦成型在进行更改就会比较困难。整体硬件电路设计如图3-1所示:图3-1硬件系统电路图按键模块主要是用来设置上水时间、加热温度、水位设定等的控制;ADC0809模块主要是将模拟信号转变为数字信号,然后将数据传输到中心处理器;水位检测模块是通过传感器将水位数据转换成0

15、、1二进制数据,再通过中心处理器传输到数码管上用十进制数据显示出来。3.2硬件电路芯片的选型现有的市场上大多数的控制芯片都是由单片机控制系统、数字信号处理器、或者可编程逻辑器件即FPGA构成的。单片机和数字信号处理器都是采用的哈佛结构,而FPGA采用的是查列表。单片机在简单控制上有优势,数字信号在数据处理上占有优势,而FPGA在控制和新算法上比较占优势。3.3 FPGA外部硬件电路的设计 3.3.1温度传感器局部电路的设计温度传感器的种类有很多主要有热敏电阻、铂电阻、热电偶、数字温度传感器等类型。这几种温度传感器各有利弊,本文这里选用高可靠的NTC热敏电阻器作为该项目的温度传感器。本文选用热敏

16、电阻主要有以下几个方面:(1) 绝缘性好,可靠性高,反映速度快;(2) 具有良好的绝缘密封性和抗机械碰撞,抗折弯能力,可靠性高;(3) 能长时间稳定工作(年电阻值漂移率1);(4) 比较精密,能测定0.01的温度改变;(5) 测量温度范围比较广,可以测量-80l50。综合以上原因本文选用热敏电阻作为温度传感器。热敏电阻的阻值-温度特性曲线是一条指数曲线,在一定的范围内可以近似为线性函数,这样就方便温度测量与控制调试.热敏电阻的阻值-温度特征曲线如图3-2所示。图3-2 热敏电阻阻值-温度特征曲线为了测得水温,可以给热敏电阻一恒定电流,电阻随着温度的改变而改变,所以电压也会随着温度的改变而改变。

17、这样一来本文就可以用电压值的改变来表示水温的变化。本文可以用下面这个公式来表示温度的变化::表示被测的温度:表示热敏电阻温度特性相关的参数:表示热敏电阻相关系数:表示热敏电阻两端的电压根据这个公式,知道了热敏电阻温度特性相关的参数和热敏电阻的相关系数,再测得热敏电阻两端的电压就可以测到水箱内的温度。由上图可知,热敏电阻阻值-温度特征曲线从10到150都呈线性函数,适合本文的太阳能热水器系统。温度测量电路具体设计如图3-3所示:图3-3 温度测量电路 3.3.2水位检测局部电路设计水位检测电路采用简单易行、便宜可靠的电路设计,如果不考虑成本的情况下应该采用连续型水位检测比较好,但是本文考虑到成本

18、问题这里采用间断式的水位检测设计。大致简图如图3-4所示:ACDBE5V水箱电阻导线100%80%60%40%20%图3-4 水位检测电路简图这里可以把水箱分为A、B、C、D、E五部分,分别代表水箱水位的20%、40%、60%、80%、100%。这五部分都分为两个电平高电平和低电平,分别用1、0来表示。当水位达到20%时A端就为高电位如果水位低于20%时A端就为低电平,当水位达到40%时B端就达到高电平以此类推当水位达到100%时E段就为高电平。通过把A端到E端与FPGA芯片连接再通过模数转换就能把水位用两个数码管显示出来,这样就能及时掌握水位的具体情况并且可以通过控制系统来控制上水的时间、水

19、位的高低。 3.3.3 4*4矩阵控制键盘电路的设计本文中需要0到9是个数字键,还需要温度设置键、水位设置键、上水时间控制键、确认键和后退键。加起来一共15个按键,所以需要设计一个4*4键盘才够用。矩阵键盘又叫做行列式键盘,4*4矩阵键盘需要4个IO口来作为行输入,还需要4个IO口来作为列输入。每个行和每个列的交叉点就是一个按键,这样有4*4共16个按键足够本设计的的要求和使用,而且还节省了很多IO口。4*4键盘简单框图如图3-5所示:图3-5 4*4键盘简单框图4*4矩阵键盘具体工作原理:首先进入键盘扫描状态,看是否有按键按下。先从端口1到端口4输入低电平,端口5到端口8输入高电平,然后从端

20、口5到端口8读取键盘状态。再从端口1到端口4输入高电平,端口5到端口8输入低电平,然后从端口1到端口4读取键盘状态。通过两次对键盘阵列的扫描就能判断出来那个按键被按下然后通过芯片来进行控制操作。例如按键2被按下了,从端口1到端口4输入低电平,端口5到端口8输入高电平,可得端口5到端口8的状态为“0111”,即为“70H”。再从端口5到端口8输入低电平,端口1到端口4输入高电平,可得端口1到端口8的状态为“1101”,即为“0DH”。将两次状态值进行或运算就可以得到其按键的特征编码为“7DH”。根据这种方法可以随时测得哪个按键被按下,进而可以根据用户的需要实时精准的控制系统的整体。 3.3.4显

21、示模块的设计显示模块本文采用4个共阴极数码管组成,数码管分为共阴极数码管和共阳极数码管。数码管显示分为静态显示和动态显示,本文采用动态显示,一方面动态显示用的管脚比较少,连接比较简单;另一方面采用数码管作为显示模块最大的优点就是成本低,设计简单,经久耐用。共阴极数码管字形与代码对应关系如表3-1所示:表3-1 数码管共阴极显示字形与代码之间的对应关系字形0 1234567共阴极代码3FH06H5BH4FH66H6DH7DH07H字形89ABCDDEF共阴极代码7FH6FH77H7CH39H5EH79H71H3.3.5上水模块控制电路上水控制模块的电路设计如图3-6所示,从中心处理器的M16引脚

22、输出高电平接一个74LS06,高电平变为低电平,这样就使光电耦合TIL117里面的发光二极管导通,然后光敏三极管也随之导通,最后驱动MC1416工作,使其控制继电器和电磁阀工作。图3-6 上水模块控制电路3.3.6加热模块控制电路因为中心处理器的工作电压为1.15V到1.25V,所以不可能直接通过中央芯片来进行加热。这里通过连接功率放大器来控制220V的高电压来完成对水的加热。利用控制其导通的大功率二极管4N40门极上加载的小电流来完成对阴极阳极导通的控制。电加热模块控制电路如图3-7所示:图3-7 加热模块控制电路3.3.7模糊控制模块的设计本文中模糊控制模块就是一个用硬件语言来实现从外设,

23、模糊控制模块主要有模糊控制器和查找列表电路等部分组成。采用模糊控制模块有以下好处:他是直接采用硬件语言来直接控制的,这样就不用在设计中建立控制模型了,使得控制设计变得简单、更容易接受便于操作控制。模糊控制模块程序见附录1,硬件语言生成的模糊控制器原理图如图3-8所示,缓存查找电路如图3-9所示,模糊控制模块整体电路设计如图3-10所示:图3-6 模糊控制器原理图图3-9 缓存查找电路图3-10 模糊控制模块整体电路设计4 内部软件设计4.1软件流程设计软件流程的设计本文使用模块化的设计,模块化的设计给本文带来了巨大的方便,使后期的工作量大大减少。采用模块化的设计让这个复杂的工程简单化,把一个大

24、的整体分为一个一个的小模块,这样即使哪里出错了也能够很快的精准的确定问题的所在,快速的解决问题。模块化的设计还对以后系统的升级改造带来很大的方便,那个模块需要升级只需修改那个模块就行了,需要添加新的功能只需再添加新的模块就行了,这样使本文的工作量就减少了好多,效率也提高了不少。软件设计流程图如图4-1所示:图4-1软件流程设计图4.2系统模块的软件设计 4.2.1按键模块软件设计 本文用到了15个按键,所以本文设计了一个4*4矩阵键盘共16个按键,第0-9位为数字按键,用来输入设定的温度值、水位值和定时电加热的时间;第10位为上水时间的设定键,按下后在再输入用户想要设定的时间最后按确定键就可以

25、修改上水时间,按取消键就可以取消设定;第11位和第12位分别为温度设定键和水位设定键,操作步骤方法和上水时间控制键是一样的,第13位和第14位分别为确定键和取消键。按键模块程序见附录程序2,按键模块的电路流程图如图4-2所示,按键模块Pio各位的意义如表4-1所示:图4-2 按键模块程序流图表4-1 按键模块Pio各位的意义Pio的位位定义第0-9位数字键,代表数字0-9第10位命令键,进行自动上水时间设定第11位命令键,进行温度设定第12位命令键,进行水位设定第13位命令键,进行数据有效确定第14位命令键,进行数据无效确定 4.4.2显示模块的设计本文中的显示模块是用四个数码管来进行显示的,

26、主要用来显示温度和水位的,因为FPGA芯片里面的数据都是以十六进制的形式出现的,所以需要将十六进制的数据转换为数码管能够识别的十六进制字段码才能够显示出来。由于是用寄存器来控制对温度和水位的显示的,所以需要对寄存器各位进行定义。显示模块的程序见附录程序3,显示模块寄存器各位的定义见表4-2:表4-2显示模块Pio各位的定义Pio各位各位定义第0位第4个数码管的位控位第1位第4个数码管的位控位第2位第4个数码管的位控位第3位第4个数码管的位控位第4-7位转换后要显示的数据D0-D7位第8位脉冲产生源 4.4.3温度检测模块温度检测模块就是用来检测水箱内的实时温度,为用户提供准确的数据,使用户能够

27、随时调整合适的水温。由于温度检测模块也是用寄存器来控制的,所以也需要对寄存器的各位进行定义。温度检测模块程序见附录程序4,温度检测程序的流程图见4-3图,各位定义见表4-3:表4-3 温度检测模块Pio各位的定义Pin的位各位定义第0位通道地址选择位0第1位通道地址选择位1第2位地址锁存位控制位第3位启动转换位第4位输出数据有效控制位第5-12位D0-D7数据位第13位转换完成标志位图4-3 温度检测程序的流程图 4.4.4水位检测模块水位检测模块对水位实时进行检测,这样既保证水箱内有充足的水,又能保证水箱内的水不至于过少或者过多。由于水位检测也需要寄存器,所以这里还需要对寄存器各位进行定义。

28、水位检测模块程序的流程见图4-4,水位检测程序见附录程序5,各位定义见表4-3:表4-4 水位监测模块Pio各位的意义Pio的位各位定义第1位水位已达到20%第2位水位已达到40%第3位水位已达到60%第4位水位已达到80%第5位水位已达到100%水位检测模块程序的流程:图4-4 水位检测模块程序的流程4.4.5上水模块设计上水模块模块的功能是控制什么时候上水、上多少水的问题。首先系统要检测水箱内还有多少水,然后与用户所设定的值进行比较,如果低于用户所设定过的值,那么上水模块就开始工作,当上水达到用户所设定的最高值时就停止上水。上水模块流程如图4-5所示,上水模块程序见附录程序6:图4-5 上

29、水流程设计图 4.4.6电加热模块设计电加热模块是在太阳能不足时对水提供辅助加热,由于太阳能热水器受天气影响比较大,一般早上和晚上阳光比较弱,太阳能供能不足,这时就需要电加热来弥补太阳能的不足。还有就是在阴雨天和冬天太阳能也会供能不足,这时就要用上电加热辅助系统。当水温在用户设定值以下时就要开启电加热系统,当水温达到用户设定的值时电加热就停止工作。电加热模块流程如图4-6所示,电加热模块程序见附录程序7:图4-6 电加热模块流程图结论通过这段时间的学习查阅各种资料,学到了很多知识,对FPGA、模糊控制、软件硬件设计等有了深入的了解和认识。本课题的难点和重点在太阳能热水器的测量控制系统上,本文设

30、计了一个基于FPAG位核心的温度检测,水位检测,温度控制,水位控制等多个模块的太阳能热水器系统。本文运用了模糊控制算法,采用查表的方法对系统实现智能控制。太阳能热水器每天利用太阳能的时间是有限的,每天也就七八个小时,所以本文采用了太阳能加热和电加热相结合的方法,保证了用户24小时有热水。太阳能热水器在今后有很大的发展空间,必将成为人们生活中重要的一部分,太阳能热水器的智能化发展也是以后发展的大趋势大方向。本文设计还比较粗糙,有很多漏洞之处需要以后继续修改。随着科技的发展越来越智能化的太阳能热水器将会出现在人们的生活中。参考文献1 陆维德.太阳集热器与太阳热水器系统J.太阳能学报.1999.2

31、殷志强.全玻璃真空太阳能集热器M.北京:北京科学出版社.2004.3 李维华.智能型太阳能控制器的研制J.新能源.2000.4 刘兴.优化太阳能和水蓄热技术的控制实现D.浙江:浙江大学硕士论文.2005.5 田清华,陈家斌,张建平.太阳能热水器自动控制系统的设计J.计算机测量与控制.2002.6 黄永伟,黄奎林.副水箱式自动上水太阳能热水器J.农业工程学 报.2006.(S1)7 赵负图.传感器集成电路手册M.北京:化学工业出版社.2002.8 陈立刚.基于自寻优的模糊恒温控制器仿真设计研究D.黑龙江:八一农垦大学硕士论文.2007.9 刘宏伟.基于单片机的模糊控制方法及应用研究D.武汉:武汉

32、理工大学硕 士论文.2007.10 余永权.模糊控制技术与模糊家用电器M.北京:北京航空航天出版 社.2000 11 阎石.数字电子技术基础(第四版) M.北京:高等教育出版社.1997:202265.12 周景润.基于Quartus 的FPGA数字系统设计M. 北京:电子工业出版.2007:212306.13 阎石.数字电子技术基础M.北京: 高等教育出版社.2010.14 邱关源,罗先觉.电路M.北京:高等教育出版社.2010.15 童诗白,华成英.模拟电子技术基础M.北京:高等教育出版社.2010.致 谢在此论文完成之际,向我的母校(河南科技学院)、指导老师XXX和信息工程学院的师生兄弟

33、们表示感谢。如果没有他们的帮助和照顾,我是不可能完成这篇论文的。这里特别的在这段时间里对我关心照顾过的所有人,特别感谢这段时间刘老师对我的关心和照顾。刘老师一丝不苟的教学作风、对学问严谨求实的认真态度都深深地影响着我,对我这次做论文有着很大的帮助。平时的学习生活中,刘老师对本文认真耐心的辅导,给本文营造了一个浓厚的学习氛围。多亏了刘老师的帮助,我才能够顺利的完成了这篇论文。从论文的开题报告到论文的结束,刘老师对我认真耐心的一次又一次的指导,给我提出修改意见,让我从中学到很多东西、受益匪浅。在这里,对刘老师表示深深的感谢。在做论文期间,还得到了很多同学们的帮助,特别是感谢我的室友们,他们给予了我

34、莫大的帮助。感谢他们在这四年来对我的包容和帮助,在生活中学习中他们给了我各种帮助,让我这四年来学到了好多东西。最后还要感谢我的父母和我的家人,这么多年来他们给予了我物质和精神上的双重帮助,时刻鼓励着我向前迈进,让我的人生道路上充满了关怀,有了他们我才能够安安心心、无忧无虑的在这里学习,对于家人和亲人们的感激之情让我无法用语言表达。附 录程序1:模糊控制器的硬件语言module mohukongzhi(clock,read,read_data,write_data,address,add0);input clock,read,write;input 7:0 write_data,read_dat

35、a;output 7:0 write_data,read_data;reg 7:0 adata,ddata,address;always (negedge clock)beginif (addo=0&write)adata=write_data;address=adata;if (add0&read)ddata=read_data;endendmodule程序2:键盘模块子程序button key( )int a,b,c2,d,e,m;for(;) /等待功能键按下a=IORD(button_pio,0)&OXE00;if(a!=0) break;if(command_return_butto

36、n(a) /判断功能键返回for(i=0;i2;i+) /判断 09 数据b=IORD(button_pio,0)&OX1FF;for(;) /等待数字键功能键按下if(b!=0) break;switch(b) /判断数字键 0 返回case 1: ci=0; if(data_return_button(1) break;case 2: ci=1; if(data_return_button(2)break;case 4: ci=2; if(data_return_button(4) break;case 8: ci=3; if(data_return_button(8) break; ca

37、se 16: ci=4; if(data_return_button(16) break;case 32: ci=5; if(data_return_button(32)break;case 64: ci=6; if(data_return_button(64)break;case 128: ci=7; if(data_return_button(128)break;case 256: ci=8; if(data_return_button(256)break;case 512: ci=9; if(data_return_button(512)break;default: printf(“er

38、ror”); d=IORD(button_pio,0)&OX1000;e=IORD(button_pio,0)&OX2000;if(e=8192) / 取消输入命令及数据a=0;if(a=512&d=4096) /将设定的自动上水时间保存set_water_time=c0*10+c1;if(a=1024&d=4096) /将设定的温度数据保存set_temp=c0*10+c1;if(a=2048&d=4096) /将设定的水位数据保存set_water=c0*10+c1;功能键返回(子程序):command_return_button(i) /判断功能键返回 int a;for(;) a=IO

39、RD(button_pio,0)&OXE00;if(i!=a) break;return(1);数字键返回(子程序):data_return_button(i) /判断数字键返回int a;for(;)a=IORD(button_pio,0)&OX1FF;if(i!=a)break;return(1);程序3:显示模块的程序display_temp_water() /显示温度,水量函数int i,a,b, a0,b0;int word=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00;/ 字段码a=tem/10; / 显示温度的十,个

40、位b=tem%10;a0=water/10; / 显示水量的十,个位b0=water%10;for(i=0;i+)IOWR(DISPLAY_PIO_BASE,0,16*worda+8); / 显示温度的十位IOWR(DISPLAY_PIO_BASE,0,16*wordb+4); / 显示温度的个位IOWR(DISPLAY_PIO_BASE,0,16*worda0+2); / 显示水量的十位IOWR(DISPLAY_PIO_BASE,0,16*wordb0+1); / 显示水量的个位程序4:温度检测模块(子程序)temp_adc_pio()int i,j,k,m,temp2;IOWR(ADC_P

41、IO,1,OX1F); / 定义 pio 方向寄存器的低 5 位为输出,高 9 位为输入,采集的通道为 INT0IOWR(ADC_PIO,0,12); /启动温度采集转换for(i=0;i2;i+)m=IORD(ADC_PIO,0); /读 pio 数据寄存器的值if(m&OX2000!=1) /判断 EOC 位是否为 1,为 1 时,表示转换结束for(k=0;k2;k+) /转换未结束,等待m=IORD(ADC_PIO,0);if(m&OX2000!=1)k=k-1;else k=2; /跳出循环elseIOWR(ADC_PIO,0,16); /使 AD0809 的 OE 位为 1;tem

42、pi=IORD(ADC_PIO,0)&OX1FE0 ; /读取温度数据for(j=0;j30;j+) /实现 30 秒定时usleep(1000000); temp0=temp0;temp1=temp1;程序5:水位检测模块(子程序):water_adc_pio()int m,water;usleep(500); /延时 500 微秒m=IORD(water_pio,0)&0X3F; /读水位的数据switch(m) /判定水位的值,将二进制转化为十进制。case 63: water=90; break; case 31: water=80; break; case 15: water=60;

43、 break; case 7: water=40; break; case 3: water=20; break; case 1: water=10; break; default:break;程序6:上水模块(子程序):add_water() int a,b,current_time;a=IORD(TIME_1_BASE,4); /读定时器 1 的低 16 位b=IORD(TIME_1_BASE,5); /读定时器 1 的高 16 位current_time=b*0XFFFFH+a; /保存实时时间if(waterset_water)printf(“water full”); /输出水满else if(current_timeset_temp) /进行上水降温add_water();if(add_hot=set_temp) /不进行电加热IOWR(add_tele_pio,0,0);else if(0add_hot-2) /小功率电加热IOWR(add_tele_pio,0,1);else if(-2add_hotset_temp-4) /中功率电加热IOWR(add_tele_pio,0,2);else if(set_temp-4add_hotset_temp-6) /大功率电加热IOWR(add_tele_pio

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号