《基于单片机的水流量测试毕业设计论文(30页).doc》由会员分享,可在线阅读,更多相关《基于单片机的水流量测试毕业设计论文(30页).doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于单片机的水流量测试毕业设计论文-第 30 页湖 南 科 技 大 学毕 业 设 计( 论 文 )题目作者学院专业学号指导教师二 年 月 日湖 南 科 技 大 学毕业设计(论文)任务书 机电工程 学院 测控技术与仪器 系(教研室)系(教研室)主任: (签名) 年 月 日学生姓名: 卢 超 学号: 1103030106 专业: 测控技术与仪器 1 设计(论文)题目及专题: 基于单片机的水流量测试 2 学生设计(论文)时间:自 2015 年 3 月 9 日开始至 2015 年 5 月 2 日止3 设计(论文)所用资源和参考资料:1)相应电子元器件;2)使用工具:Proteus仿真;ProtelD
2、XP绘制原理图等软件3)参考资料:1 胡汉才.单片机原理及其接口技术M.北京清华大学出版社2003 2 邱关源.电路M.北京高等教育出版社(第四版),19994 设计(论文)应完成的主要内容:1)完成水流量测试仪总体设计;2)完成程序设计和仿真设计;3)设计原理图和完成实物图的焊接和功能调试;4)完成毕业设计说明书一份;5 提交设计(论文)形式(设计说明与图纸或论文等)及要求:1)基于单片机的水流量测设系统实物一件;2)基于单片机的水流量测设系统的电路图;3)完成设计说明书一份;6 发题时间: 2014 年 12 月 31 日指导教师: (签名) 学 生: (签名)湖 南 科 技 大 学毕业设
3、计(论文)指导人评语主要对学生毕业设计(论文)的工作态度,研究内容与方法,工作量,文献应用,创新性,实用性,科学性,文本(图纸)规范程度,存在的不足等进行综合评价指导人: (签名)年 月 日指导人评定成绩: 湖 南 科 技 大 学毕业设计(论文)评阅人评语主要对学生毕业设计(论文)的文本格式、图纸规范程度,工作量,研究内容与方法,实用性与科学性,结论和存在的不足等进行综合评价评阅人: (签名)年 月 日评阅人评定成绩: 湖 南 科 技 大 学毕业设计(论文)答辩记录日期: 学生: 学号: 班级: 题目: 提交毕业设计(论文)答辩委员会下列材料:1 设计(论文)说明书共页2 设计(论文)图 纸共
4、页3 指导人、评阅人评语共页毕业设计(论文)答辩委员会评语:主要对学生毕业设计(论文)的研究思路,设计(论文)质量,文本图纸规范程度和对设计(论文)的介绍,回答问题情况等进行综合评价答辩委员会主任: (签名)委员: (签名)(签名)(签名)(签名)答辩成绩: 总评成绩: 摘 要论文以智能家居系统中的水流量模块为课题,以水流量计传感器和数字温度传感器DS18B20实时采集水流量状态和水温的数据,并根据主控器STC89C52的程序指令处理后计算出水费价格,用液晶屏LCD1602分当前温度、水价和水流总量三种状态动态显示。另外,本课题设计了上下限报警,使查看更为直观,使用更加方便。关键词:单片机;D
5、S18B20温度传感器;水流量传感器目 录第一章 总体设计9第二章 系统硬件电路的设计102.1主芯片STC89C52102.2时钟电路122.3复位电路132.4液晶显示电路142.5 温度测量电路182.6 水流量测量电路222.6 水流量测量电路232.7 报警电路242.8 继电器控制电路252.9 小结26第三章 软件系统的设计273.1 软件设计总流程273.2 温度程序模块283.3 水流量程序模块313.4 显示程序333.5 小结34第四章 系统的仿真与调试354.1 keil uvision4软件354.2 Protel DXP软件364.2 proteus电路仿真37第五
6、章 实物展示40第六章 总结41参 考 文 献42致 谢43附录1:总程序44第一章 总体设计当打开水龙头时,根据单片机STC89C52的指令、水流量计传感器采集水流量状态。当单片机STC89C52扫描到水流量计传感器的脉冲数,经过单片机STC89C52处理,计算出所采集的水流量后,通过液晶屏LCD1602能动态显示当前水流量。根据设计过程,可以将的本课题划分为8 个电路模块如图1 所所示:LCD 1602显示电路按键电路STC89C52水流量测量电路时钟电路温度测量电路复位电路继电器控制电路报警电路图1-1 电路总框图第二章 系统硬件电路的设计2.1主芯片STC89C522.1.1主要性能1
7、)与MCS-52单片机产品兼容 、8K字节在系统可编程Flash存储器2)1000次擦写周期3)全静态操作:0Hz33Hz 4)三级加密程序存储器 5)32个可编程I/O口线6)三个16位定时器/计数器八个中断源7)全双工UART串行通道8)低功耗空闲和掉电模式 9)掉电后中断可唤醒 10)看门狗定时器11)双数据指针12)掉电标识符 2.1.2芯片功能特性简述:STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编
8、程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或
9、硬件复位为止。8 位微控制器 8K字节在系统可编程 Flash。 图2-1 STC89C522.1.3引脚功能表2-1 STC89C52引脚介绍说明引脚功能介绍VSS电路接地端P0.0P0.78位漏极开路的双向I/O通道P2.0P2.78位拟双向I/O通道P3.0RXD,串行输入口P3.1TXD,串行输出口P3.2INT0,外部中断输入口P3.3INT1,外部中断输入口P3.4定时器/计数器外部事件脉冲输入端P3.5定时器/计数器外部事件脉冲输入端P3.6外部数据存贮器写脉冲P3.7外部数据存贮器读脉冲RST/VpD复位输入信号ALE/PROG地址锁存有效信号PSEN程序选通有效信号EA/VP
10、P当保持TTL高电平,执行内部EPROM的指令,当使TTL为低电平, 从外部程序存贮器取出所有指令,在内的EPROM编程时,此端为21编程电源输入端XTAL1内部振荡器外接晶振的一个输入端XTAL2内部振荡器外接晶振的一个输入端2.2时钟电路单片机的最小系统有三部分组成,即电源,时钟电路和复位电路。其中单片机的电源引脚与5V电源连通即可,而时钟电路和复位电路还需接口扩展,这也是单片机的基本电路操作。时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系。单片机本身就如同一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
11、在STC89C52单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器。在STC89C52芯片内部有一个高增益反相放大器,而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容。在单片机的XTAL1脚和XTAL2脚之间并接一个晶体振荡器就构成了内部振荡方式。STC89C52单片机内部有一个高增益的反相放大器,XTAL1为内部反相放大器的输入端,XTAL2为内部反相放大器的输出端,在其两端接上晶振后,就构成了自激振荡电路,并产生振荡脉冲,振荡电路输出的脉冲信号的频率就是晶振的固有频率。在实际应用中通
12、常还需要在晶振的两端和地之间各并上一个小电容。图2-2 时钟电路用晶振和电容构成谐振电路。电容大小与晶振频率和工作电压有关。但电容的大小影响振荡器的稳定性和起振的快速性,为了提高精度,本实验板采用20pF的电容作为微调电容。在设计电路板时,晶振、电容等均应尽可能靠近芯片,减小分布电容,以保证振荡器振荡的稳定性。2.3复位电路复位是单片机的初始化操作,其目的是使CPU和系统中各部分处于一个确定的状态,并从这一状态开始工作。系统上电路或死机后都要进行复位操作。单片机的RST引脚为复位引脚,振荡电路正常工作后,RST端加上持续两个机器周期的高电平后,单片机就被复位。复位电路有3种基本方式:上电复位,
13、开关复位和看门狗复位。图2-3 复位电路本课题采用按键开关复位是指通过接通按钮开关,使单片机进入复位状态。开关复位电路一般不单独使用。在应用系统设计中,若需使用开关复位电路,一般的做法是将开关复位与上电复位组合在一起形成组合复位电路,上电复位电路完成上电复位功能,开关复位电路完成人工复位。图2-3中C7与R1构成了上电复位电路。上电复位后,电源经R1对C7充满电源,C7等效于开路,RST端为低电平;单片机正常工作。按开关K1后,C7两端电荷经R1迅速放电,K1断开后,由C7、R1及电源完成对单片机的复位操作。在上述电路中C7、R1按上电复位电路的设计而取值。 复位电路的作用非常重要,能否成功复
14、位关系但单片机系统能否正常运行的问题。如果振荡电路正常而单片机系统不能正常运行,其主要原因是单片机没有完成正常复位,程序计数器的值没有回0,特殊功能寄存器没有回到初始状态。这时可以适当地调整上电复位电路的阻容值,增加其充电时间常数来解决问题。2.4液晶显示电路 在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作
15、介绍,本章重点介绍字符型液晶显示器的应用2.4.1液晶显示简介液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。图2-4 1602字符型液晶显示器实物图2.4.2 显示特性 只需5V 电源电压,低功耗、长寿命、高可靠性 内置 192 种字符(160个 57 点阵字符和 32 个510 点阵字符) 具有 64 个字节的自定义字符 RAM 显示方式:STN、半透、正显 驱动方式:1/16DUTY,
16、1/5BIAS 视角方向:6点 背光方式:底部 LED 通讯方式:4位或 8 位并口可选 标准的接口特性:适配 MC51 和M6800 系列 MPU的操作时序。2.4.3引脚说明表2-2 液晶1602引脚说明管脚号 符号功 能1Vss电源地(GND)2Vdd电源电压(+5V)3V0LCD驱动电压(可调) 寄存器选择输入端,输入MPU 选择模块内部寄存器类型信号:RS=0,当MPU 进行写模块操作,指向指令寄存器;4RS当MPU 进行读模块操作,指向地址计数器;RS=1,无论MPU 读操作还是写操作,均指向数据寄存器5R/WR/W=0 读操作;R/W=1 写操作6E使能信号输入端,输入MPU 读
17、/写模块操作使能信号:4位方式通讯时,不使用DB0-DB37DB0数据输入/输出口,MPU 与模块之间的数据传送通道8DB1数据输入/输出口,MPU 与模块之间的数据传送通道9DB2数据输入/输出口,MPU 与模块之间的数据传送通道10DB3数据输入/输出口,MPU 与模块之间的数据传送通道11DB4数据输入/输出口,MPU 与模块之间的数据传送通道12DB5数据输入/输出口,MPU 与模块之间的数据传送通道13DB6数据输入/输出口,MPU 与模块之间的数据传送通道14DB7数据输入/输出口,MPU 与模块之间的数据传送通道15A背光的正端+5V16K 背光的负端0V16K 背光的负端0V2
18、.4.4 1602LCD的指令说明1602液晶模块内部的控制器共有11条控制指令,如表2-3所示:表2-3 控制命令表序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容 16
19、02液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置。 指令2:光标复位,光标返回到地址00H。 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时
20、移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据。 指令11:读数据。2.4.5 1602LCD的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数
21、据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置图2-5 液晶显示电路2.5 温度测量电路 课题任务中需要测量水温,故先用温度传感器DS18B02的数据采集,再通过单片机数据处理,最后在液晶屏显示出来。2.5.1 DS18B20简介 DS18B20是DALLAS半导体公司推出的第一片支持“一线总线”接口的温度传感器,他它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度转化成串行数字信号供处理器处理。DS18B20具有以下优点: 适应电压范围宽,电压范围在3.0V5.
22、5V,在寄生电源方式下可由数据线供电。独特的单线接口方式,与微处理器连接时只需要一条口线即可实现微处理器与DS18B20的双向通信。同时DS18B20还具备以下特性: 独特的单线接口仅需一个端口引脚进行通讯 简单的多点分布应用 无需外部器件 可通过数据线供电 零待机功耗 测温范围-55+125,以0.5递增。华氏器件-67+2570F,以0.90F 递增 温度以9 位数字量读出 温度数字量转换时间200ms(典型值) 用户可定义的非易失性温度报警设置2.5.2 DS18B20结构及其工作原理64位ROM和单线接口存储器和控制器温度灵敏元件高速缓存存储器配置寄存器高温触发器TH低温触发器TL8位
23、CRC生成器电源控制图2-6 DS18B20内部结构DS1820 依靠一个单线端口通讯。在单线端口条件下,必须先建立ROM 操作协议,才能进行存储器和控制操作。因此,控制器必须首先提供下面5 个ROM 操作命令之一:1)读ROM,2)匹配ROM,3)搜索ROM,4)跳过ROM,5)报警搜索。这些命令对每个器件的激光ROM 部分进行操作,在单线总线上挂有多个器件时,可以区分出单个器件,同时可以向总线控制器指明有多少器件或是什么型号的器件。成功执行完一条ROM 操作序列后,即可进行存储器和控制操作,控制器可以提供6 条存储器和控制操作指令中的任一条。一条控制操作命令指示 DS1820 完成一次温度
24、测量。测量结果放在DS1820 的暂存器里,用一条读暂存器内容的存储器操作命令可以把暂存器中数据读出。温度报警触发器TH 和TL 各由一个EEPROM 字节构成。如果没有对DS1820 使用报警搜索命令,这些寄存器可以做为一般用途的用户存储器使用。可以用一条存储器操作命令对TH 和TL 进行写入,对这些寄存器的读出需要通过暂存器。所有数据都是以最低有效位在前的方式进行读写。DS1820 通过一种片上温度测量技术来测量温度。图2-7 示出了温度测量电路的方框图。预置低温度系数振荡器计数器比较斜坡累加器预置=0=0计数器高温度系数振荡器 LSB 置 位 清 0温度寄存器 增加 停止图2-7 温度测
25、量电路的方框图温度/数据关系如表2-4所示:表2-4 温度/数据关系温度数据输出(二进制)数据输出(十六进制)+12500000000 1111101000FA+2500000000 001100100032+1/200000000 000000010001000000000 000000000000-1/211111111 11111111FFFF-2511111111 11001110FFCE-5511111111 10010010FF92 DS1820 是这样测温的:用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器
26、被预置到对应于-55的一个值。如果计数器在门周期结束前到达0,则温度寄存器(同样被预置到-55)的值增加,表明所测温度大于-55。 同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。 斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器的值和每一度的计数值。DS1820 内部对此计算的结果可提供0.5的分辨力。温度以16bit 带符号位扩展的
27、二进制补码形式读出,表1 给出了温度值和输出数据的关系。数据通过单线接口以串行方式传输。DS1820 测温范围-55+125,以0.5递增。如用于华氏温度,必须要用一个转换因子查找表。2.5.3 温度测量电路接口展示图2-8 温度测量电路2.6 水流量测量电路2.6.1 水流量传感器原理水流量传感器主要由铜阀体、水流转子组件、稳流组件和霍尔元件组成。它装在热水器的进水端用于测量进水流量。当水流过转子组件时,磁性转子转动,并且转速随着流量成线性变化。霍尔元件输出相应的脉冲信号反馈给控制器,由控制器判断水流量的大小,调节控制比例阀的电流,从而通过比例阀控制燃气气量,避免燃气热水器在使用过程中出现夏
28、暖冬凉的现象。水流量传感器从根本上解决了压差式水气联动阀启动水压高以及翻板式水阀易误动作出现干烧等缺点。它具有反映灵敏、寿命长、动作迅速、安全可靠、连接方便利启动流量超低(15L/min)等优点,深受广大用户喜爱。 水流转子组件主要由涡轮开关壳、磁性转子、制动环组成。使用水流开关方式时,其性能优于机械式压差盘结构,且尺寸明显缩校当水流通过涡轮开关壳,推动磁性转子旋转,不同磁极靠近霍尔元件时霍尔元件导通,离开时霍尔元件断开。由此,可测量出转子转速。根据实测的水流量、转子转速和输出信号(电压)的曲线,便可确定出热水器的启动水压,以及启动水压相对应的启动水流量与转子的启动转速。由控制电路,便可实现当
29、转子转速大于启动转速时热水器启动工作;在转速小于启动转速时,热水器停止工作。这样热水器启动水压一般设定在001MPa,启动水流量为35L/min(需满足热水器标准对最高温升的限制)。另外,由于水在永磁材料磁场切割下,变成磁化水,水中的含氧量增加,使人洗浴后感觉清爽。制动环的作用是停水时,制止高速旋转的磁性转子转动,终止脉冲信号输出。控制器接收不到脉冲信号,立即控制燃气比例阀关阀,切断气源,防止干烧。 水流量传感器是利用霍尔元件的霍尔效应来测量磁性物理量。在霍尔元件的正极串入负载电阻,同时通上5V的直流电压并使电流方向与磁场方向正交。当水通过涡轮开关壳推动磁性转子转动时,产生不同磁极的旋转磁场,
30、切割磁感应线,产生高低脉冲电平。由于霍尔元件的输出脉冲信号频率与磁性转子的转速成正比,转子的转速又与水流量成正比,根据水流量的大小启动燃气热水器。2.6.1 水流量传感器参数 环境温度:-1055 流量计算在流量为:0.20.4L/Min时,1L=2100次;0.50.8L/Min时,1L=2281L=22800次;0.91.2L/Min时,1L=2350次;1.22.5L/Min时,1L=2460次;(脉冲次数 在流量变化时有一定程度的变动) 接线方法白线:信号输出;黑线:电源负(也可按客户要求定做)测量精度:5%(在流量稳定的系统,精度可达2%)工作电压:DC024V 工作压力:100PS
31、I(7kg/cm) 耐湿性能:在环境湿度为90%以下时性能保持稳定 寿命测试:本产品用进口干簧管作感应元件,在负荷小于24V1mA前提下,开关寿命大于3亿次。图2-9 水流量测量电路2.6 水流量测量电路课题设计之初,要求实现设定水流量上限,以及调节水流量上限,所以除了复位按键又设置了三个控制键。三个按键的功能分别是sw2、sw3、sw4,功能分别是sw2设定水流量上限,sw3增加上限值,sw4减少上限值。图2-10 按键电路2.7 报警电路 由于设定了水流量上限值,因此需要设计报警电路,超过设定值时进行报警。,电路主要由一个电阻,一个NPN三极管,一个蜂鸣器组成,接在89C51的P21口上。
32、工作原理:NPN三极管的基极由IO口控制,P21高电平时三极管导通,蜂鸣器与电源的通路接通,蜂鸣器报警,P21低电平时三极管截止,蜂鸣器的通路断开不报警。图2-11 报警电路2.8 继电器控制电路单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低。驱动电流在mA级以下。而要把它用于一些大功率场合,比如控制电动机,显然是不行的。所以,就要有一个环节来衔接,这个环节就是所谓的功率驱动。继电器驱动就是一个典型的、简单的功率驱动环节。在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱动中间继电器,可
33、以直接驱动接触器,所以,继电器驱动就是单片机与其他大功率负载接口。基本功能:通断水阀。当单片机的这个引脚输出低电平的时候,就像继电器电路的输出引脚在打开三极管三极管,水就从上往下流,继电器继电器就开始转起来了.反之,如果是输出高电平,继电器电路的输出引脚就开始关三极管,继电器因为因为没有水流下来,就会停止。图2-12 继电器控制电路2.9 小结电路的设计,首先是把预定功能设定好,再看运行这些需要什么样的硬件,然后实施硬件的操作。各个模块都要有合理的设计。仔细认真是设计硬件电路的基本,一步走错,整个设计就毁于一旦。在设计本课题时,电路设计规则一定要注意,还有多多借鉴网络上的众多设计者分享的经验,
34、益于自己的设计,总之一切为课题的成功做准备。第三章 软件系统的设计3.1 软件设计总流程 程序要求液晶显示有水温和当前水流量,同时具备设置水流量上限的功能。由于LCD1602的显示屏幕有限,所以第一页显示水温和水流量,第二页显示水流量上限。整个程序中结构较为简单,但其中也有几个重要而且比较费脑筋的子程序,包括水测量程序、水流量上线的设定与调整、温度数据转换程序。界面1程序通断水阀程序界面2程序界面开关流量测量程序温度测量程序水流量控制开关程序系统初始化 在程序中可以分为3个主要模块:水流量模块,温度模块,显示模块。图3-1 总流程图3.2 温度程序模块3.2.1温度数据转换程序由温度传感器DS
35、18B20采集的温度数据读取后温度的低位和高位分别存在主芯片SCT89C52存储器中。其中依定传感器的设计,读出的数据最高位为0时温度为正,温度为1时,温度是负数。是以对温度数据处理,将温度数据高位和低位整合在一起,在判断温度的正负即可。如图3-2所示:温度标志位为0返回数据取反加一温度标志位为1温度数据低八位和高八位合并读取温度跳过读序列号跳过读序列号 等待调用DS18B20复位跳过读序列号DS18B20复位启动温度转换温度为负 NOYES图3-2 温度测量流程图3.2.2温度数据显示前处理程序将已处理好的温度数据的首先判断它的正负,然后再去运行其他的代码。在这里,程序还设定了温度报警。温度
36、报警本来可以在DS18B20中对芯片进行设置,但考虑到对芯片的熟悉度不够,容易出错,而在程序中设定比较容易理解,写起来也不会太难。还有实际水的温度不可能超过100度,所以测得100度以上的温度值就会显得多余,在程序中只要设定最高99.9度即可。再就是美观上的设定,测得的温度在为个位时,十位为0就会看起来不太美观,只要把十位设定看不见即可。温度各位分配资源十位不显示十位为0温度标志为1返回温度置为99.9百位为0红灯亮温度40摄氏度显示“-”号红灯亮等待调用 NO YES NO YES YESNO YES图3-3 数字不显示流程图3.2.2温度程序部分温度程序如下:ds1820 复位子程序/*d
37、s1820 复位子程序*/void ds1820rst()unsigned char x=0;DQ = 1; /DQ 复位delay_18B20(4); /延时DQ = 0; /DQ 拉低delay_18B20(100); /精确延时大于 480usDQ = 1; /拉高delay_18B20(40); /延时ds1820 读数据子程序/*ds1820 读数据子程序*/uchar ds1820rd() /读数据unsigned char i=0;unsigned char dat=0;for (i=8;i0;i-) /读温度 2 进制 8 次DQ = 0; /给脉冲信号dat=1; /将温度数
38、据转移到 datDQ = 1; /给脉冲信号if(DQ) /数据转换dat|=0x80;delay_18B20(10);return(dat);ds1820 写数据子程序/*ds1820 写数据子程序*/void ds1820wr(uchar wdata)unsigned char i=0;for (i=8; i0; i-) /写数据 2 进制 8 次DQ = 0; /给脉冲信号DQ = wdata&0x01; /数据传送delay_18B20(10); /延时DQ = 1; /给脉冲信号wdata=1; /数据移位3.3 水流量程序模块水流量的测量主要依靠对得到的频率处理,由流量计在一段时间
39、下产生高电平的个数决定,即Q(流量)=F(频率)/R(商家设定值)所以只要在单片机中设定一定的时间,并在该时间之下计算出得到的高电平即可。在本程序中STC89C52的两个定时器T0为计数状态,T1为计时状态,这样方可测量流量。3.3.1水流量的读取程序 中断程序运行的时间到,就可以读取计数器中的数值,将下数值读出后把计数器赋值为0,等待下一次的取出,然后进入对读出数据的处理程序。 如图3-4所示:等待调用中断时间到 NO YES读取频率定时器赋值置时间标志位水流量计算程序和转换程序返回图3-4 水流量测量流程图3.3.2水流量数据的处理程序 在预定时间到,即已经取出了定时器的数值。我们计算的水流量最大是以每吨来计算并显示的,故一个整形或长整型的数不够,故先把它放在了一个int变量的存储空间内,做水流量的前三位,在定义一个长整型的数,把它作为水流量的后六位,这样计算起来也比较容易,数据也不会起冲突,也是为将要计算水价做准备。设定该水流量的最大计数为250吨,超过了定值,则会从0开始。如图3-5所示:等待调用各个位置分配存储空间流量计算清零流量后六位=25万流量后六位加1流量前三位=1000计算流量前三位