基于单片机的自动售水机的设计与实现

基于单片机的自动售水机的设计与实现
17/100
保存草稿
发布文章
q_1039692211
未选择任何文件
new

摘 要
  自从饮水机问世以来,在中国迅速发展起来而且成为一种趋势。随着经济生活水平的提高,人们对售水机的需
求越来越大,对其功能的要求也越来越高。随之而来的是售水机的自动智能化程度问题,能否切实满足用户的使用
要求,做到智能化,人性化。本文研究的自动售水机系统是针对饮水机功能单一、能耗较大等缺点而设计的一款智
能控制系统,能够实时检测水温、自动对出水量计费以及实时显示用户信息。当用户用IC卡接触感应区,系统自动
读取用户信息,使能出水按钮,系统打开电磁水阀并开始计费,按下关水按钮则停止售水。
  本设计基于单片机自动售水机系统进行进一步分析和研讨。讨论了自动售水机系统的设计思路、工作原理、应
用程序,并且全面分析了以STC89C52单片机为主控硬件模块的功能。本设计利用IC卡模块读取用户信息并且接触感
应区后,将信息传送给中央处理单元,通过MOS驱动电路控制电磁水阀进行出停水,并且在显示屏处展示出水量、水
温、用水费用和用户余额,最终实现自动售水的目的。
  经过检测最终实现了智能控制自动出停水的效果,并且能够满足在OLED显示屏上展示用户各类信息以及当前水
温,对用户智能自动售水的需求有了一定实用性的帮助。
关键词:单片机,DS18B20,自动售水机,智能

第一章 引 言

1.1 研究背景
  自从自动售水机传入中国后,就掀起了一场浪潮,近几年来人们对售水机的需求越来越大,几乎没一个城市楼
层都会装备一台智能的自动售水机。自动售水机是一种从饮用水"终端"解决水质问题的设备[1],是一种更方便、更
科学、更健康、更新奇的购水系统,以较低价出售纯净的直饮水,并且还能够避免桶装纯净水在储藏和运送过程中
所造成的二次污染[2],具有高性价比的特点。目前,自动售水机采用RO膜反渗透技术[3]进行净化水质,能够满足
直饮水的饮用标准,不使用任何的人工以及店面,全自动智能化,而且占地面积较小,可以24小时制造新鲜纯净的
国际标准化的饮用水。
  当前市面上有多种类型的售水机,功能也不尽相同,大致可以分为投币式和IC卡感应式售水机以及时间计量式
和流量计量式售水机,IC卡能够实现便携式消费[4]。饮用水做为生活必需品[5]。随着生活水平的不断提高, 人们
对生活饮用水品质要求越来越高[6]。然而,目前市面上流行的桶装饮用水会因为换水周期、运输过程的污染等问题
而使水质会有所下降,针对传统饮水机的不足,笔者在传统饮水机的基础上进行改进[7],节能设计和人性化设计于
一体[8]。因此,本次设计研制基于STC89C52的单片机系统,利用单片机来控制自动制水及售水的电磁阀开关[9],
温度测控系统采用DS18B20传感器对单点进行测量[10],该系统能够实现自动售水、自动计费、温度检测等功能。
1.2 自动售水系统的现状与发展趋势
1.2.1 发展现状
  在中国21世纪朝阳产业中,制水售水产业排名第六,具有巨大的发展潜力。中国具有世界上最大的市场规模,
吸引了众多世界制水处理公司进军中国市场,进行较大数额的投资,例如法国的威利雅、美国的GE、日本的日立等
国际大公司。投币售水机早期在国外市场有着较多应用,因为是高质量高水准健康的饮用水,可以滤除净水中的细
菌、病毒等有害物质及其他可溶物[11],加上价格较优惠,同时具有高性价比、健康活净、方便、人性化等特点,
一经上市就吸引了一大批的消费者,而且逐步取代了传统的桶装饮用水,使其在市场份额占比逐渐降低,消费者更
加青睐于自动售水机,最终成为主流的售水方式[12]。之前在欧美还有一些东南亚国家使用率较高,随着信息数据
化的发展,全球各类应用产业之间的共享,中国市场原来传统的售水产业必然或多或少受到冲击并且朝着自动智能
化方向发展,从而满足大众的需求。
   从 市 场 调 研 情 况 来 看,售水机的出现和市场投入,在近几年会作为中国新的经济增长点存在。虽然自
动售水机在中国的发展时间并不长,但是随着国内技术的进步,售水机的功能已经算得上较人性化、智能化,能够
基本满足消费者的要求。
1.2.2 发展趋势
  随着饮水机行业的逐步发展,在市场上有了一定的地位,几乎每一个家庭以及单位等等都会装备一个或者等多的
饮水机,给我们的日常生活带来了极大的方便,[13]。但是,随着使用饮水机的时间越来越长后,人们的对产品的功
能要求较高,不只停留在表层(美观因素等等)。因此,智能饮水机—基于单片机的自动售水机已是饮水机发展的
必然趋势。
  经过多年的发展,自动售水机逐过度到正常的代理、直销模式。虽然随着自动售水机价格的不断降低,也逐步
在大中型城市普及。自动售水机以其低廉的价格和便捷的售卖形式正逐渐渗透到市民的日常饮水消费生活中[14]。
在一些省会级大城市一个小区3-5台机器已不足为奇,但是自动售水机市场还远未饱和。特别是一些二线城市,尤其
是广大农村市场还远未成熟。所以,自动售水机的市场还是很广阔的。
随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善[15]。这样一
来,基于单片机的自动售水机的科技性和功能性也会随着单片机性能的提升而变得更加人性化和实用化。
1.3 基于STC89C52单片机的自动售水机系统的特点概述
  该系统有着诸多优点,在实现自动出停水的前提下,能够实现实时显示当前用户信息:出水量、水温、用水费用
和用户余额,用户可以实时了解到自己的消费情况。并且通过按键自己控制出水,完全按照自己的意愿进行消费。
应用RFID和单片机技术[16]而且该主控模块单片机控制精确,使得系统智能化程度提升。
  基于上述这些功能,该系统能够达到较高智能化需求,弱化了人工投入的作用[17]。对于消费者而言,该系统
做到了高度智能化与人性化售水,满足了其基本的要求,解决了传统售水的突出问题。
本系统的特点,可以用下图1.1所示:在这里插入图片描述

图1.1 自动售水系统特点示意图
1.4 本论文的思路
依据所要求实现的功能,本系统可以大致分为以下几个模块:STC89C52单片机模块、电源模块、IC卡模块、出水控
制模块、OLED显示模块、温度检测模块等等。在本系统中,基于STC单片机的仿真编码程序[18],应用STC89C52单片
机作为主控核心来控制各个模块部分。
本论文也根据这几个模块,分成以下章节:
  第一章引言部分主要讲述了本设计的研究背景,通过该章节的介绍与研究,了解了基于单片机的自动售水机的
具体价值,并且粗略探讨了售水机的发展现状以及发展趋势。
  第二章硬件设计部分主要介绍了以STC89C52单片机为核心的下位机的功能以及一些模块电路原理[19],主要包
括STC89C52单片机模块、电源模块、IC卡模块、出水控制模块、OLED显示模块、温度检测模块等等原理。
  第三章软件设计部分主要通过展示系统逻辑流程图的方式来介绍了该系统的功能和作用,并且展示了相应的程
序代码原理。
  第四章为软硬件调试模块。在本模块中,将第三章所设计的程序,写录进单片机中,并对各个模块功能效果进
行展示和说明,以此验证本系统自动售水作用是有效的[20]。
第五章是对本文进行的总结和展望以及系统的不足之处。

第二章 系统硬件设计

本章基于该系统的下位机模块设计原理,分析各个主要电路模块,并给出主要的电路原理图设计。
2.1 整体电路框架
2.1.1 整体电路概述
本系统主要由三个部分构成,主要包括:中央控制系统、支部检测系统、支部出水系统。
整体电路系统示意图如下2.1所示:
在这里插入图片描述

图2.1 整体电路示意图
  其中,在中央主控系统中,主要包括OLED显示模块、接收模块、STC89C52单片机模块、按键控制模块、IC卡读
取模块、电源供电模块等。
中央主控系统的结构示意图如下2.2所示:在这里插入图片描述

图2.2 中央主控系统结构示意图
  在支部检测模块中,所实现的基本功能是通过DS18B20温度传感器,实时监测当前的水温;通过IC卡感应读取用
户信息并且由发送模块传输到中央单片机主控模块,在OLED显示屏上实时显示出水量、水温、用水费用和用户余
额。
在支部出水模块中,系统通过接受主控单片机的高低电平信号来控制电磁水阀控制电路的开闭,进而实现出停水功
能。支部出水模块的系统组成示意图如下图2.4所示:
在这里插入图片描述

图2.4 支部出水模块组成示意图
  中央主控系统和支部检测、出水系统共同控制下实现相关的功能,分工明确,联系紧密,使得系统的之间的数
据交互更加稳定。系统硬件整体设计示意图如下2.5所示:
图2.5 系统硬件整体设计示意图
  总的来说,该系统通过STC89C52主控单片机系统进行控制自动售水,在用户使用IC卡接触感应区后,IC卡模块
电路接通并传递电信号于单片机系统,与之进行数据交互。随后用户按下相应的功能按键,连通按键电路,控制相
应的出停水功能。温度传感器电路实时接通,将相应的水温数据传输到主控单片机系统,单片机又连接OLED显示电
路,在OLED显示屏上实时显示出水量、水温、用水费用和用户余额。整体电路可以基本实现系统的要求。
2.2 单片机部分设计
2.2.1 单片机的选型
方案一
AT89S52是一款具有8 K位内存、128位RAM、4个8位并口、1个全双工串行口、2个16位计时/计数器、64 K寻址范围。
并可在线上重复编程,快速擦除,快速写入程序,可重复擦写1000次,数据存储10年。
方案二:
  采用STC89C52单片机,具备8 K字节 Flash、512字节 RAM、32位 I/O端口、看门狗定时器、4 KB EEPROM、
MAX810复位、16位定时/计数、4个外部中断、7向量4级中断、全双工串行接口。此外,STC89C52还能降低到0 Hz的
静态逻辑运行,并支持两种可选的节能方式,最高工作频率又35 MHz,6 T/12 T可供选择。
综上所述,在本系统中,考虑自己对单片机型号与单片机的功能合适程度,选择STC89C52单片机作为本设计的主控
微控制器。
2.2.2 单片机概述
  STC89C52的最小系统由电源电路、时钟源电路、BOOT启动电路、调试接口电路以及复位电路五大部分构成。他
们各自相互协作才能实现才能实现相应的功能。STC89C52单片机所使用的电源电压一般为3.3V,并且在1.8-3.6V该
电压范围内也可以进行正常的工作。
系统产生复位的方式由以下几种:

  1. NRST 引脚低电平(外部复位)
  2. 窗口看门狗计数结束(WWDG 复位)
  3. 独立看门狗计数结束(IWDG 复位)
  4. 软件复位(SW 复位)
  5. 低功耗管理复位
    2.2.3 单片机系统电路图
    本课题中采用的单片机最小系统,以及本设计的电路原理图均采用AD软件进行绘制。其最小系统的电路图如下图2.6
    所示:在这里插入图片描述

图2.6 STC89C52单片机系统原理图
  每一个单片机电路都存在一个晶振,它在单片机中的作用很大,能够产生单片机的时钟信号,能够结合单片机
内部的电路进而生成单片机所必须的时钟频率,时钟频率越高可以使单片机处理能力加强以及加快处理速度,实现
单片机正确快速处理各项指令的目的。
  STC89C52单片机系统中,晶振电路由两个相同取值的负载电容以及石英晶体构成,内部通过反向放大电路进行
相应的自激振荡。本设计使用XTAL1和XTAL2外接一个振荡频率为11.0592MHz的石英晶体形成一个定时系统,并连接
两个取值全部是22pf的负载电容组成一个完整的单片机晶振电路。
本设计的单片机存在一个复位电路,采用的是按键复位方式,当按下复位按键后,单片机进行初始化,恢复系统原
来的状态。
利用AD软件绘制的电路原理图是一种方便快捷的方式,例如GND接地元件,鼠标双击该引脚,就能够更改该元件的属
性。如下图2.9所示:在这里插入图片描述

图2.9 元器件属性改变操作示意图
2.3 IC卡读取模块
2.3.1 电路概述
  该系统采用了RC522-RFID射频模块作为IC读卡模块,该模块通过SPI协议与单片机进行通信,该模块的RST、
MISO、MOSI、SCL、SDA引脚分别与单片机的P2.7、P2.6、P2.5、P2.4、P2.3相连。当IC卡接近感应区时,该模块读
取IC卡内的相关数据,有用户名和当前卡内余额。
2.3.2 电路展示
IC卡读取模块的电路示意图如下图2.10所示:
在这里插入图片描述

图2.10 IC卡读取模块电路示意图
2.4 电磁水阀控制电路模块
2.4.1 电路概述
  该出水控制系统使用一个电磁水阀,该电磁水阀是DC5v微型电磁阀,该水阀可以由usb供电、太阳能板供电以及
5v电源供电,通电打开,断电关闭,使用方便并且价格实惠。通过控制单片机给出高低电平信号进而对电磁水阀的开
闭进行相应的控制。
DC5v微型电磁阀产品参数:
【额定电压】DC 5v
【空载电流】0.23A
【重量】15克
2.4.2 电路展示
  该系统通过控制单片机P2.2口电平以实现控制电磁水阀的目的。单片机P2.2引脚经限流电阻与N型MOS管的G极连
接,当该引脚输出高电平时,N型MOS管的D极与S极导通,进而电磁水阀与VCC、GND相连实现导通。反之亦然,当P2.
2引脚输出低电平时,电磁水阀关闭。
2.5 温度传感器检测模块
2.5.1 温度传感器模块的选型
方案一:
  采用DS18B20温度传感器。DS18B20是目前应用最广泛的一种数字式温度传感器,它可以输出数字信号,具有较
小的体积、较低的硬件开销、较好的抗干扰性和较高的精度。DS18B20温度传感器,易于连接,经封装后可广泛使
用。
  它的外观主要取决于使用情况。DS18B20封装后,可广泛应用于电缆沟、高炉水循环、锅炉、机房、农场、洁净
室、弹药库等各种非极限温度场合。具有抗磨损、小巧、易操作、多种封装方式,适合于各类小型空间设备的数字
测量与控制。
方案二:
  采用PT100型温度传感器器,它能把温度变数转化成可传输的规格化输出讯号。该产品主要应用于工业生产工艺
中的温度参数检测与控制。一般情况下,传感器变送器包括两个部件:传感器和信号转换器。传感器以热电偶或电
阻为主;信号转换器由测量、信号处理、变换单位等部分构成。
综合比较后,由于PT100需要AD转换较为复杂且成本较高,加上自己对DS18B20较为熟悉,所以选项方案一。
2.5.2 电路概述
  该系统的温度传感器采用DS18B20,其通过单总线协议与单片机通信,DS18B20的数据DQ引脚与单片机P1.0口连
接。
2.6 加热继电器模块
2.6.1 电路概述
  该模块电路是在一定条件下才能够进行工作,具体是当温度传感器模块检测到水温未达到最低水温95℃时(低
于95℃的水不能够进行售卖),向单片机输入信息数据后,单片机I/O口低电平触发加热系统,打开继电器进行加热
至95℃及以上开启售卖。
2.6.2 电路展示
该模块只是模拟加热过程,继电器模块的电路原理图较为简单,如上图2.13所示:
2.6 OLED显示模块
2.6.1 显示模块的选型
方案一:
  选择了0.96寸的 OLED显示屏,这是一款具有性价比高、功能强、性能好、反应速度快、重量轻等优点的显示
屏,为实际工作提供了极大的便利,而且生产工艺简单、发光效率高、功耗低、驱动电压低,使OLED成为平面显示
器应用中的佼佼者。
方案二:
  选用功能强大、可以显示中文文字的HS-12864液晶显示屏,它的价格不实惠,控制比OLED要复杂,但是使用方
便。在控制使用上,需要8根数据线和3根控制线,不足之处为器件较复杂,体积较大。
  综合以上论述,并且考虑到自己对两种液晶显示屏的熟练了解程度,以及该显示屏与控制系统所实现的功能匹
配程度,综合选择0.96寸的OLED液晶显示屏。
2.6.2 电路概述
该系统所使用的OLED液晶显示器通过相对简单的电路连接与单片机进行信息的交互。
该显示屏通过IIC协议与单片机进行通信,显示屏的数据口SDA和时钟口SCL分别与单片机的P2.1和P2.0口连接。
  此屏幕采用的是SSD1306,它有一个内部增压的功能;因此在设计时无需专门设计升压电路;当然,此屏幕也可
以选择外部增压,详细情况请参阅资料说明书。SSD1306的每个页面都有128个字节,总共8个页面,所以它的尺寸正
好是128*64。这和1.3寸的 OLED驱动 IC SSD1106略有区别,SSD1106的页面为132个字节,同样为8个页面。因此,
在将1.3 OLED应用于0.96寸OLED时,必须将0.96英寸的显示地址移至2,使其显示正常。
OLED液晶显示器的引脚定义如下表2.1所示:
表2.1 显示器引脚定义说明
  
引脚序号 引脚名称 引脚作用
1 VCC 外接3.3V-5V电压
2 GND 接地
3 SCL 串行时钟
4 SDA 串行数据
OLED液晶显示器实物示意图如下图2.14所示:在这里插入图片描述

图2.14 OLED液晶显示屏实物示意图
2.6.3 电路展示
2.7 串口及程序下载模块
2.7.1 电路概述
  通过串行接口与单片机进行串行通信,是采用串行通信方式的扩展接口,将相关程序通过串行程序数据接口写
入主控单片机,进而对整个售水系统进行操控。
2.7.2 电路展示
  依据相关知识以及文献,理解了程序下载口各个引脚的功能作用,通过AD软件画出的串口及程序下载模块电路
2.8功能按键模块
2.8.1 按键模块的选型
方案一:
  独立按键,是一种实现功能独立的按键,各按键之间不会相互影响,特点是在于每个按键分别单独占用一根I
/ O线,适用于八个按键以下的情况下下去使用。独立式按键编程简单,使用起来也比较的方便。对于本系统来说,
对按键的要求程度不高,能够实现简单的出停水功能即可。
方案二:
  矩阵按键,列线的每一个交叉点上设置一个按键,这样键盘按键就有4*4个,这种行列式键盘结构能够有效的提
高单片机系统的I/O口利用率。但是矩阵按键实现较复杂且性价比不高。
对比得出结论,使用独立控制的按键模块更加适合本系统较为简单的功能实现。
2.8.2 电路概述
  按键模块设计采用两个功能按键,一个为出水按键,另一个为停水按键,即为功能按键1和按键2,对应PCB板上
的K2和K3,分别与单片机的P1.1和P1.2口连接,按键1实现出水功能,按键2实现关水功能。
  用户刷卡后,若当按键1被按下,单片机P1.1脚检测到低电平,触发电磁水阀驱动电路打开水阀。按键2的原理
与按键1相同,单片机P1.2脚检测到低电平,触发电磁水阀驱动电路关闭水阀,用户退出消费。
2.8.3 电路展示
该功能按键模块还是比较简单的,设计了两个功能按键,所以只需使用简单的独立按键方式。
根据所实现的出停水功能,设计出的功能按键模块示意图如下图2.17所示:在这里插入图片描述

图2.17 功能按键模块
2.9 电源供电模块
2.9.1 电路概述
  该系统的电源供电模块也是较为简单明了,通过DC插座于数据线相连接,然后设计一个电源开关键,按下按键
则电路连接电源,并且安装一个电源提示灯,当电源处于工作状态时,提示灯常亮。
2.9.2 电路展示
 整个硬件电路的原理及其原理示意图已经介绍分析完毕,更有利于通过原理图去分析设计思路,系统主要I/O口
分配表2.2所示:
表2.2 接口说明示意图
  
I/O口 功能说明 I/O口 功能说明
P2.3~P2.7 读取IC卡信息 P2.0~P2.1 显示器时钟口和数据口
P1.0~P1.2 按键输入 P2.2 高低电平控制水阀
P1.0 DS18B20温度采集 P3.7 I/O低电平触发加热
2.10 本章小结
  本章对各个模块电路及其原理进行了分块分析以及展示,各个电路的功能、模块元器件端口信息功能做出了较
为详细的介绍。主要介绍了的模块电路部分包括一下几个:单片机相关电路、温度检测模块、继电器加热模块、
OLED显示模块、电磁水阀控制模块等等。并使用Altium Designer软件进行电路原理图的绘制,这样一来更能方便展
示电路原理。

第三章 下位机程序设计

3.1 整体程序功能
该系统的程序设计是基于Keil uVision5编程软件进行的,作为其开发工具,功能强大,有着较为紧凑简洁的程序代
码,用户使用率高,应用反馈良好,是目前兼容51单片机最广泛的开发工具。
  在设计微机控制系统时,在设计软件时,要考虑到各个产品的具体需求,不仅要考虑到系统的硬件设计,还要
考虑到各个产品的实际需求。所以,在微机控制系统的设计中,软件的设计是非常关键的。在这个系统中,软件的
作用更加突出。
  在单片机控制系统中,可以分为两种基本的控制方式:数据处理和过程控制。数据的处理主要有:数据采集、
标度变换等。过程控制程序的主要功能是通过对微处理器进行运算,然后输出来实现对其工作的控制。
  在进行软件开发的时候,一般会将整个流程划分为若干部分,每个部分被称为一个模块。“模块”其实就是一
个相对独立的、具有特定功能的程序部分,这个编程方式叫做模块化编程。
  基于所要求实现的各项功能指标编写了系统的下位机程序,并将设计完成的程序下载到单片机系统。基于单片
机系统向各个支部功能模块进行相应的控制,每一个支部模块所得到的数据信息都需要通过程序传输到单片机控制
模块,这样才能够完成其功能要求。
  本系统通过数据信息通信传输进行控制,主要由主控单片机系统和支部检测、支部出水系统构成。主控单片机
能够结束由支部系统传输来的数据信息,进而做出相应的动作来实现自动售水、自动计费、实时检测水温以及更新
用户相关信息。
其主控单元相关控制的逻辑流程图如下3.1所示:在这里插入图片描述

图3.1主控系统逻辑流程图
该主控控制系统的逻辑流程图还是较为简单的,一目了然。
  支部检测系统部分则包括了温度检测、使能出水、继电器加热等等模块,支部检测系统的主要的作用是实时检
测当前水温,并通过水温情况进行判断是否允许使能出水,各自相互合作交互,共同完成一系列的功能。
  支部检测后的数据信息将会传输到主控单片机模块中,然后单片机系统通过接受到的各项数据信息指标做出相
应的动作。

支部检测模块的主要功能用温度传感器检测当前的水温,运用程序进行判断,然后与标准95℃温度进行对比,
只有达到标准95℃的水才能够被系统允许售卖,而没达到标准时,则驱动继电器模块进行加热。在这里插入图片描述

图3.1和图3.2仅仅显示了系统的总体工作业务流程和判断逻辑。在接下里的章节中,将对上述的判定逻辑以及其他
一些功能模块进行详细的拆解和分析。
3.2 温度传感器模块程序
3.2.1 功能概述
  温度传感器DS18B20芯片通过读写字节测量读出当前水温,并将数据信息传输到单片机系统,再由单片机输出给
显示模块将水温展示出来。
温度传感器模块的工作逻辑流程示意图如下3.3所示在这里插入图片描述

图3.3 温度传感器工作逻辑流程图
  该模块的程序流程示意图是较为复杂的,该系统的主要模块之一就是温度传感器模块。当子程序加入后,单片
机控制单元会执行一系列的指令命令,完成温度的转换以及执行或者数据的读写。
温度传感器模块的程序流程示意图如下3.4所示:
在这里插入图片描述

图3.4 温度传感器程序流程图
3.2.2 程序解读
(1)if(tempture>=95)
card_able=1;//允许刷卡
hot_relay=1;//关闭加热继电器
else//正在加热
card_able=0;//禁止刷卡
hot_relay=0;//打开加热继电器
3.3 IC卡读取模块
3.3.1 功能概述
  IC卡读取模块通过使用一种特殊的IC卡,在程序中写入未激活卡的账号(一串十六进制数),单片机就能够识
别,未写入程序的IC卡则不能被识别。在进行售水时,只有刷卡之后系统才能被允许使能按键而打开电磁水阀进行
出水。

3.3.2 程序解读
(1)IC卡的识别
  if( (UID[0]==UI1[0])&&(UID[1]UI1[1])&&(UID[2]UI1[2])&&(UID[3]UI1[3]) )
//检测卡1,其他卡无效
UartSendByte(UID[0]);//读取卡序列号前四位
UartSendByte(UID[1]);
UartSendByte(UID[2]);
UartSendByte(UID[3]);
//函数名:UartSendBytes; 函数功能:通过串口往外发送数据
3.4 功能按键模块
3.4.1 功能概述
  该系统的功能按键模块只有两个按键(出停水按键),只需按下相应的按键即可实现相应的功能,因而电路及
其程序都比较简单,所以程序工作逻辑流程比较单一简洁。相关程序只需判断哪个按键使能即可做出出停水动作。
3.4.2 程序解读
(1)if( (Key1
0)&&(Key1_able
1) )//出水按键
{
Delay_1ms(2);
if(Key1
0)
{
19
OLED_Clear();
Relay=1;//打开电磁水阀
Key1_able=0;
TR0 = 1;//定时器开始计时、计费
3.5 OLED液晶显示模块
3.5.1 功能概述
  在OLED液晶显示模块中,不需要很复杂的判断逻辑,只用正确显示上机位程序所判断出的结果即可,根据单片
机传输的数据实时更新用户数据信息。
其流程示意图如下3.6所示:在这里插入图片描述

图3.6 OLED液晶显示模块逻辑示意图
3.6 本章小结
  本章节以流程图的形式对各个模块程序逻辑进行相应的展示分析,使得模块功能的逻辑判断更加清晰,更能加
深各个模块之间的逻辑关系的理解,并且通过给出的关键程序展示分析达到展示本设计整体设计思路的目的。

第四章 软硬件调试

4.1 软硬件结合调试
  在此项目中,我们使用了 AltiumDesigner软件进行了硬件部分的设计,并以此为基础进行了实际的硬件开发。
本文以 Keil软件为程序基础,完成了整个系统的软件设计。
  接下来,我们会用流程图来说明,在这一次的设计中,是如何将软硬件部分相结合,使其达到系统功能实现的
目标。
其系统验证流程图如下4.1所示:
20

图4.1 系统验证流程示意图
  (1)首先,在系统接通电源之后,在此情况下各个模块进行初始化,然后分别用两张IC卡去接触感应区,观察两
张卡(白卡序列号已经写入程序读取,蓝卡未写入程序)的单片机系统读取情况。
  (2)在感应IC卡之后,此时显示屏幕上显示用户信息,并通过温度传感器检测水温,若水温未达标则观察是否打
开加热继电器模块进行加热。
  (3)若此时水温已经达标(大于等于95℃)则可以进行售水,此时需要验证是否打开电磁水阀模拟售水机出
水。
  (4)最后,当系统已经处于售水状态时则观察OLED显示屏是否能够正确进行水费的计算,实现自动计费功能。
4.2 系统效果展示
4.2.1 系统识别IC卡信息效果展示
  按照上述的测试的步骤,本小节验证的是本售水系统识别IC卡信息效果展示。需要在系统初始化的时候,分别
用区别是是否将序列号写入程序的两张IC卡靠近感应区,观察系统能否正确读取信息。调试过程如下图所示:
在这里插入图片描述

图4.1 系统识别IC卡信息效果示意图(1) 图4.2 系统识别IC卡信息效果示意图(2)
  通过上图4.1可以清晰地看出,当售水系统处于能够售水状态时,用蓝卡(未被激活)接触触感应区时,单片机
并不能识别,无法进行刷卡售水。如图4.2所示用白卡(已被激活)接受感应区时,单片机能够识别信息,显示屏上
显示了当前刷卡的用户名以及余额信息,并且能够使能按键进行售水,达到了智能识别IC卡的目的。
4.2.2 系统温度检测效果展示
  当温度传感器检测到不同的水温情况时,所需观察的是系统能否在水温低于95℃打开继电器加热以及大于等于
95℃时能够使能按键打开电磁水阀进行出水售水。
其效果示意图如下4.3和4.4所示:
22

图4.3 温度检测效果示意图(1) 图4.3 温度检测效果示意图(2)
  通过以上两张图所示的结果可知,当温度传感器检测到水温低于95℃时,加热继电器的工作绿灯常亮,加热继
电器工作,液晶显示器上显示“正在加热”,此时刷IC卡系统也是无法识别的,无法进行售水。当检测到水温为
95℃及以上时,加热继电器的工作灯熄灭,停止加热,这时液晶显示屏上则从“正在加热”跳转为“刷卡使用”,
也就是说该系统允许售水,可以通过使能出水按键进行售水。
综上所述,该系统的温度检测模块在经过验证后是能够实现其应有的功能的,在不同的温度下进行相应的动作。
4.2.3 系统出停水以及计费的效果展示
  在系统使能出水按键后,需要验证是否打开电磁水阀继电器进行出水,液晶显示屏上的计费情况以及使能关水
按键后,是否关闭电磁水阀继电器停止出水。
其验证结果示意图如下图4.5和4.6所示:
23

图4.5 系统出停水以及计费效果示意图(1) 图4.6 系统出停水以及计费效果示意图(1)
  通过以上两张图所示的结果可知,当系统使能出水按键后,电磁水阀继电器被打开进行售水,液晶显示器上展
示正在计费,金额随着时间而逐渐变大。若此时按下停水按键后,电磁水阀继电器被关闭,,停止出水,同时停止
计费,显示器显示剩余水费余额。这样便完成了整个售水过程。
4.3本章小结
  综上所示,本系统实现了IC卡信息读取、实时检测水温、电磁水阀控制和OLED实时显示系统信息,进而完成了
自动售水、自动扣费任务,对用户的信息进行准确更新与反馈。也就是说,根据本章的全部内容可以验证本系统完
成了设计指标。

第五章 总结与展望

5.1 总结
  本毕设的目的是设计出一款基于单片机的自动售水机,本设计以STC89C52RC为主控芯片开发了一种自动售水机
系统,主要由OLED显示屏、温度传感器、功能按键、IC卡读取模块和电磁水阀模块组成。本系统实现了IC卡信息读
取、实时检测水温、电磁水阀控制和OLED实时显示系统信息,进而完成了自动售水、自动扣费任务。回顾了本设计
的开发的过程,现在做出总结:
  本设计是使用Keil5进行相关程序的编辑,通过使用串口助手将所能实现设计功能的程序下载至单片机板内。另
外,为了弄清楚单片机实物的各个引脚作用,本设计还使用了Altium Designer软件,绘制出电路原理图。
  本系统的主要分为主控和支部测温控制这两个部分。支部测温能够实时检测水温,将信息发送至主控端,当水
温未达到95℃则打开继电器进行加热,水温至95℃时则可以进行刷卡售水。
主控端实时更新液晶显示器上的相关信息并展示,进而实现自动售水、自动计费、实时检测水温的设计要求。
5.2 展望
  虽然本设计的基本功能已经大致实现,但是由于设计准备时间不够充足,硬件设备条件要求不够完善以及自己
方案的细节不够到位,程序的编写未做到最简化等等众多原因,本设计还有许多需要进一步改进和拓展的地方。在
之后的学习中,我一定会借助一切帮助的力量,慢慢去完善本设计,朝着更加智能化方向发展。

摘 要
  自从饮水机问世以来,在中国迅速发展起来而且成为一种趋势。随着经济生活水平的提高,人们对售水机的需
求越来越大,对其功能的要求也越来越高。随之而来的是售水机的自动智能化程度问题,能否切实满足用户的使用
要求,做到智能化,人性化。本文研究的自动售水机系统是针对饮水机功能单一、能耗较大等缺点而设计的一款智
能控制系统,能够实时检测水温、自动对出水量计费以及实时显示用户信息。当用户用IC卡接触感应区,系统自动
读取用户信息,使能出水按钮,系统打开电磁水阀并开始计费,按下关水按钮则停止售水。
  本设计基于单片机自动售水机系统进行进一步分析和研讨。讨论了自动售水机系统的设计思路、工作原理、应
用程序,并且全面分析了以STC89C52单片机为主控硬件模块的功能。本设计利用IC卡模块读取用户信息并且接触感
应区后,将信息传送给中央处理单元,通过MOS驱动电路控制电磁水阀进行出停水,并且在显示屏处展示出水量、水
温、用水费用和用户余额,最终实现自动售水的目的。
  经过检测最终实现了智能控制自动出停水的效果,并且能够满足在OLED显示屏上展示用户各类信息以及当前水
温,对用户智能自动售水的需求有了一定实用性的帮助。
关键词:单片机,DS18B20,自动售水机,智能

第一章 引 言
1.1 研究背景
  自从自动售水机传入中国后,就掀起了一场浪潮,近几年来人们对售水机的需求越来越大,几乎没一个城市楼
层都会装备一台智能的自动售水机。自动售水机是一种从饮用水"终端"解决水质问题的设备[1],是一种更方便、更
科学、更健康、更新奇的购水系统,以较低价出售纯净的直饮水,并且还能够避免桶装纯净水在储藏和运送过程中
所造成的二次污染[2],具有高性价比的特点。目前,自动售水机采用RO膜反渗透技术[3]进行净化水质,能够满足
直饮水的饮用标准,不使用任何的人工以及店面,全自动智能化,而且占地面积较小,可以24小时制造新鲜纯净的
国际标准化的饮用水。
  当前市面上有多种类型的售水机,功能也不尽相同,大致可以分为投币式和IC卡感应式售水机以及时间计量式
和流量计量式售水机,IC卡能够实现便携式消费[4]。饮用水做为生活必需品[5]。随着生活水平的不断提高, 人们
对生活饮用水品质要求越来越高[6]。然而,目前市面上流行的桶装饮用水会因为换水周期、运输过程的污染等问题
而使水质会有所下降,针对传统饮水机的不足,笔者在传统饮水机的基础上进行改进[7],节能设计和人性化设计于
一体[8]。因此,本次设计研制基于STC89C52的单片机系统,利用单片机来控制自动制水及售水的电磁阀开关[9],
温度测控系统采用DS18B20传感器对单点进行测量[10],该系统能够实现自动售水、自动计费、温度检测等功能。
1.2 自动售水系统的现状与发展趋势
1.2.1 发展现状
  在中国21世纪朝阳产业中,制水售水产业排名第六,具有巨大的发展潜力。中国具有世界上最大的市场规模,
吸引了众多世界制水处理公司进军中国市场,进行较大数额的投资,例如法国的威利雅、美国的GE、日本的日立等
国际大公司。投币售水机早期在国外市场有着较多应用,因为是高质量高水准健康的饮用水,可以滤除净水中的细
菌、病毒等有害物质及其他可溶物[11],加上价格较优惠,同时具有高性价比、健康活净、方便、人性化等特点,
一经上市就吸引了一大批的消费者,而且逐步取代了传统的桶装饮用水,使其在市场份额占比逐渐降低,消费者更
加青睐于自动售水机,最终成为主流的售水方式[12]。之前在欧美还有一些东南亚国家使用率较高,随着信息数据
化的发展,全球各类应用产业之间的共享,中国市场原来传统的售水产业必然或多或少受到冲击并且朝着自动智能
化方向发展,从而满足大众的需求。
   从 市 场 调 研 情 况 来 看,售水机的出现和市场投入,在近几年会作为中国新的经济增长点存在。虽然自
动售水机在中国的发展时间并不长,但是随着国内技术的进步,售水机的功能已经算得上较人性化、智能化,能够
基本满足消费者的要求。
1.2.2 发展趋势
  随着饮水机行业的逐步发展,在市场上有了一定的地位,几乎每一个家庭以及单位等等都会装备一个或者等多的
饮水机,给我们的日常生活带来了极大的方便,[13]。但是,随着使用饮水机的时间越来越长后,人们的对产品的功
能要求较高,不只停留在表层(美观因素等等)。因此,智能饮水机—基于单片机的自动售水机已是饮水机发展的
必然趋势。
  经过多年的发展,自动售水机逐过度到正常的代理、直销模式。虽然随着自动售水机价格的不断降低,也逐步
在大中型城市普及。自动售水机以其低廉的价格和便捷的售卖形式正逐渐渗透到市民的日常饮水消费生活中[14]。
在一些省会级大城市一个小区3-5台机器已不足为奇,但是自动售水机市场还远未饱和。特别是一些二线城市,尤其
是广大农村市场还远未成熟。所以,自动售水机的市场还是很广阔的。
随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善[15]。这样一
来,基于单片机的自动售水机的科技性和功能性也会随着单片机性能的提升而变得更加人性化和实用化。
1.3 基于STC89C52单片机的自动售水机系统的特点概述
  该系统有着诸多优点,在实现自动出停水的前提下,能够实现实时显示当前用户信息:出水量、水温、用水费用
和用户余额,用户可以实时了解到自己的消费情况。并且通过按键自己控制出水,完全按照自己的意愿进行消费。
应用RFID和单片机技术[16]而且该主控模块单片机控制精确,使得系统智能化程度提升。
  基于上述这些功能,该系统能够达到较高智能化需求,弱化了人工投入的作用[17]。对于消费者而言,该系统
做到了高度智能化与人性化售水,满足了其基本的要求,解决了传统售水的突出问题。
本系统的特点,可以用下图1.1所示:在这里插入图片描述

图1.1 自动售水系统特点示意图
1.4 本论文的思路
依据所要求实现的功能,本系统可以大致分为以下几个模块:STC89C52单片机模块、电源模块、IC卡模块、出水控
制模块、OLED显示模块、温度检测模块等等。在本系统中,基于STC单片机的仿真编码程序[18],应用STC89C52单片
机作为主控核心来控制各个模块部分。
本论文也根据这几个模块,分成以下章节:
  第一章引言部分主要讲述了本设计的研究背景,通过该章节的介绍与研究,了解了基于单片机的自动售水机的
具体价值,并且粗略探讨了售水机的发展现状以及发展趋势。
  第二章硬件设计部分主要介绍了以STC89C52单片机为核心的下位机的功能以及一些模块电路原理[19],主要包
括STC89C52单片机模块、电源模块、IC卡模块、出水控制模块、OLED显示模块、温度检测模块等等原理。
  第三章软件设计部分主要通过展示系统逻辑流程图的方式来介绍了该系统的功能和作用,并且展示了相应的程
序代码原理。
  第四章为软硬件调试模块。在本模块中,将第三章所设计的程序,写录进单片机中,并对各个模块功能效果进
行展示和说明,以此验证本系统自动售水作用是有效的[20]。
第五章是对本文进行的总结和展望以及系统的不足之处。

第二章 系统硬件设计
本章基于该系统的下位机模块设计原理,分析各个主要电路模块,并给出主要的电路原理图设计。
2.1 整体电路框架
2.1.1 整体电路概述
本系统主要由三个部分构成,主要包括:中央控制系统、支部检测系统、支部出水系统。
整体电路系统示意图如下2.1所示:
在这里插入图片描述

图2.1 整体电路示意图
  其中,在中央主控系统中,主要包括OLED显示模块、接收模块、STC89C52单片机模块、按键控制模块、IC卡读
取模块、电源供电模块等。
中央主控系统的结构示意图如下2.2所示:在这里插入图片描述

图2.2 中央主控系统结构示意图
  在支部检测模块中,所实现的基本功能是通过DS18B20温度传感器,实时监测当前的水温;通过IC卡感应读取用
户信息并且由发送模块传输到中央单片机主控模块,在OLED显示屏上实时显示出水量、水温、用水费用和用户余
额。
在支部出水模块中,系统通过接受主控单片机的高低电平信号来控制电磁水阀控制电路的开闭,进而实现出停水功
能。支部出水模块的系统组成示意图如下图2.4所示:
在这里插入图片描述

图2.4 支部出水模块组成示意图
  中央主控系统和支部检测、出水系统共同控制下实现相关的功能,分工明确,联系紧密,使得系统的之间的数
据交互更加稳定。系统硬件整体设计示意图如下2.5所示:
图2.5 系统硬件整体设计示意图
  总的来说,该系统通过STC89C52主控单片机系统进行控制自动售水,在用户使用IC卡接触感应区后,IC卡模块
电路接通并传递电信号于单片机系统,与之进行数据交互。随后用户按下相应的功能按键,连通按键电路,控制相
应的出停水功能。温度传感器电路实时接通,将相应的水温数据传输到主控单片机系统,单片机又连接OLED显示电
路,在OLED显示屏上实时显示出水量、水温、用水费用和用户余额。整体电路可以基本实现系统的要求。
2.2 单片机部分设计
2.2.1 单片机的选型
方案一
AT89S52是一款具有8 K位内存、128位RAM、4个8位并口、1个全双工串行口、2个16位计时/计数器、64 K寻址范围。
并可在线上重复编程,快速擦除,快速写入程序,可重复擦写1000次,数据存储10年。
方案二:
  采用STC89C52单片机,具备8 K字节 Flash、512字节 RAM、32位 I/O端口、看门狗定时器、4 KB EEPROM、
MAX810复位、16位定时/计数、4个外部中断、7向量4级中断、全双工串行接口。此外,STC89C52还能降低到0 Hz的
静态逻辑运行,并支持两种可选的节能方式,最高工作频率又35 MHz,6 T/12 T可供选择。
综上所述,在本系统中,考虑自己对单片机型号与单片机的功能合适程度,选择STC89C52单片机作为本设计的主控
微控制器。
2.2.2 单片机概述
  STC89C52的最小系统由电源电路、时钟源电路、BOOT启动电路、调试接口电路以及复位电路五大部分构成。他
们各自相互协作才能实现才能实现相应的功能。STC89C52单片机所使用的电源电压一般为3.3V,并且在1.8-3.6V该
电压范围内也可以进行正常的工作。
系统产生复位的方式由以下几种:

NRST 引脚低电平(外部复位)
窗口看门狗计数结束(WWDG 复位)
独立看门狗计数结束(IWDG 复位)
软件复位(SW 复位)
低功耗管理复位
2.2.3 单片机系统电路图
本课题中采用的单片机最小系统,以及本设计的电路原理图均采用AD软件进行绘制。其最小系统的电路图如下图2.6
所示:在这里插入图片描述
图2.6 STC89C52单片机系统原理图
  每一个单片机电路都存在一个晶振,它在单片机中的作用很大,能够产生单片机的时钟信号,能够结合单片机
内部的电路进而生成单片机所必须的时钟频率,时钟频率越高可以使单片机处理能力加强以及加快处理速度,实现
单片机正确快速处理各项指令的目的。
  STC89C52单片机系统中,晶振电路由两个相同取值的负载电容以及石英晶体构成,内部通过反向放大电路进行
相应的自激振荡。本设计使用XTAL1和XTAL2外接一个振荡频率为11.0592MHz的石英晶体形成一个定时系统,并连接
两个取值全部是22pf的负载电容组成一个完整的单片机晶振电路。
本设计的单片机存在一个复位电路,采用的是按键复位方式,当按下复位按键后,单片机进行初始化,恢复系统原
来的状态。
利用AD软件绘制的电路原理图是一种方便快捷的方式,例如GND接地元件,鼠标双击该引脚,就能够更改该元件的属
性。如下图2.9所示:在这里插入图片描述

图2.9 元器件属性改变操作示意图
2.3 IC卡读取模块
2.3.1 电路概述
  该系统采用了RC522-RFID射频模块作为IC读卡模块,该模块通过SPI协议与单片机进行通信,该模块的RST、
MISO、MOSI、SCL、SDA引脚分别与单片机的P2.7、P2.6、P2.5、P2.4、P2.3相连。当IC卡接近感应区时,该模块读
取IC卡内的相关数据,有用户名和当前卡内余额。
2.3.2 电路展示
IC卡读取模块的电路示意图如下图2.10所示:
在这里插入图片描述

图2.10 IC卡读取模块电路示意图
2.4 电磁水阀控制电路模块
2.4.1 电路概述
  该出水控制系统使用一个电磁水阀,该电磁水阀是DC5v微型电磁阀,该水阀可以由usb供电、太阳能板供电以及
5v电源供电,通电打开,断电关闭,使用方便并且价格实惠。通过控制单片机给出高低电平信号进而对电磁水阀的开
闭进行相应的控制。
DC5v微型电磁阀产品参数:
【额定电压】DC 5v
【空载电流】0.23A
【重量】15克
2.4.2 电路展示
  该系统通过控制单片机P2.2口电平以实现控制电磁水阀的目的。单片机P2.2引脚经限流电阻与N型MOS管的G极连
接,当该引脚输出高电平时,N型MOS管的D极与S极导通,进而电磁水阀与VCC、GND相连实现导通。反之亦然,当P2.
2引脚输出低电平时,电磁水阀关闭。
2.5 温度传感器检测模块
2.5.1 温度传感器模块的选型
方案一:
  采用DS18B20温度传感器。DS18B20是目前应用最广泛的一种数字式温度传感器,它可以输出数字信号,具有较
小的体积、较低的硬件开销、较好的抗干扰性和较高的精度。DS18B20温度传感器,易于连接,经封装后可广泛使
用。
  它的外观主要取决于使用情况。DS18B20封装后,可广泛应用于电缆沟、高炉水循环、锅炉、机房、农场、洁净
室、弹药库等各种非极限温度场合。具有抗磨损、小巧、易操作、多种封装方式,适合于各类小型空间设备的数字
测量与控制。
方案二:
  采用PT100型温度传感器器,它能把温度变数转化成可传输的规格化输出讯号。该产品主要应用于工业生产工艺
中的温度参数检测与控制。一般情况下,传感器变送器包括两个部件:传感器和信号转换器。传感器以热电偶或电
阻为主;信号转换器由测量、信号处理、变换单位等部分构成。
综合比较后,由于PT100需要AD转换较为复杂且成本较高,加上自己对DS18B20较为熟悉,所以选项方案一。
2.5.2 电路概述
  该系统的温度传感器采用DS18B20,其通过单总线协议与单片机通信,DS18B20的数据DQ引脚与单片机P1.0口连
接。
2.6 加热继电器模块
2.6.1 电路概述
  该模块电路是在一定条件下才能够进行工作,具体是当温度传感器模块检测到水温未达到最低水温95℃时(低
于95℃的水不能够进行售卖),向单片机输入信息数据后,单片机I/O口低电平触发加热系统,打开继电器进行加热
至95℃及以上开启售卖。
2.6.2 电路展示
该模块只是模拟加热过程,继电器模块的电路原理图较为简单,如上图2.13所示:
2.6 OLED显示模块
2.6.1 显示模块的选型
方案一:
  选择了0.96寸的 OLED显示屏,这是一款具有性价比高、功能强、性能好、反应速度快、重量轻等优点的显示
屏,为实际工作提供了极大的便利,而且生产工艺简单、发光效率高、功耗低、驱动电压低,使OLED成为平面显示
器应用中的佼佼者。
方案二:
  选用功能强大、可以显示中文文字的HS-12864液晶显示屏,它的价格不实惠,控制比OLED要复杂,但是使用方
便。在控制使用上,需要8根数据线和3根控制线,不足之处为器件较复杂,体积较大。
  综合以上论述,并且考虑到自己对两种液晶显示屏的熟练了解程度,以及该显示屏与控制系统所实现的功能匹
配程度,综合选择0.96寸的OLED液晶显示屏。
2.6.2 电路概述
该系统所使用的OLED液晶显示器通过相对简单的电路连接与单片机进行信息的交互。
该显示屏通过IIC协议与单片机进行通信,显示屏的数据口SDA和时钟口SCL分别与单片机的P2.1和P2.0口连接。
  此屏幕采用的是SSD1306,它有一个内部增压的功能;因此在设计时无需专门设计升压电路;当然,此屏幕也可
以选择外部增压,详细情况请参阅资料说明书。SSD1306的每个页面都有128个字节,总共8个页面,所以它的尺寸正
好是128*64。这和1.3寸的 OLED驱动 IC SSD1106略有区别,SSD1106的页面为132个字节,同样为8个页面。因此,
在将1.3 OLED应用于0.96寸OLED时,必须将0.96英寸的显示地址移至2,使其显示正常。
OLED液晶显示器的引脚定义如下表2.1所示:
表2.1 显示器引脚定义说明
  
引脚序号 引脚名称 引脚作用
1 VCC 外接3.3V-5V电压
2 GND 接地
3 SCL 串行时钟
4 SDA 串行数据
OLED液晶显示器实物示意图如下图2.14所示:在这里插入图片描述

图2.14 OLED液晶显示屏实物示意图
2.6.3 电路展示
2.7 串口及程序下载模块
2.7.1 电路概述
  通过串行接口与单片机进行串行通信,是采用串行通信方式的扩展接口,将相关程序通过串行程序数据接口写
入主控单片机,进而对整个售水系统进行操控。
2.7.2 电路展示
  依据相关知识以及文献,理解了程序下载口各个引脚的功能作用,通过AD软件画出的串口及程序下载模块电路
2.8功能按键模块
2.8.1 按键模块的选型
方案一:
  独立按键,是一种实现功能独立的按键,各按键之间不会相互影响,特点是在于每个按键分别单独占用一根I
/ O线,适用于八个按键以下的情况下下去使用。独立式按键编程简单,使用起来也比较的方便。对于本系统来说,
对按键的要求程度不高,能够实现简单的出停水功能即可。
方案二:
  矩阵按键,列线的每一个交叉点上设置一个按键,这样键盘按键就有4*4个,这种行列式键盘结构能够有效的提
高单片机系统的I/O口利用率。但是矩阵按键实现较复杂且性价比不高。
对比得出结论,使用独立控制的按键模块更加适合本系统较为简单的功能实现。
2.8.2 电路概述
  按键模块设计采用两个功能按键,一个为出水按键,另一个为停水按键,即为功能按键1和按键2,对应PCB板上
的K2和K3,分别与单片机的P1.1和P1.2口连接,按键1实现出水功能,按键2实现关水功能。
  用户刷卡后,若当按键1被按下,单片机P1.1脚检测到低电平,触发电磁水阀驱动电路打开水阀。按键2的原理
与按键1相同,单片机P1.2脚检测到低电平,触发电磁水阀驱动电路关闭水阀,用户退出消费。
2.8.3 电路展示
该功能按键模块还是比较简单的,设计了两个功能按键,所以只需使用简单的独立按键方式。
根据所实现的出停水功能,设计出的功能按键模块示意图如下图2.17所示:在这里插入图片描述

图2.17 功能按键模块
2.9 电源供电模块
2.9.1 电路概述
  该系统的电源供电模块也是较为简单明了,通过DC插座于数据线相连接,然后设计一个电源开关键,按下按键
则电路连接电源,并且安装一个电源提示灯,当电源处于工作状态时,提示灯常亮。
2.9.2 电路展示
 整个硬件电路的原理及其原理示意图已经介绍分析完毕,更有利于通过原理图去分析设计思路,系统主要I/O口
分配表2.2所示:
表2.2 接口说明示意图
  
I/O口 功能说明 I/O口 功能说明
P2.3~P2.7 读取IC卡信息 P2.0~P2.1 显示器时钟口和数据口
P1.0~P1.2 按键输入 P2.2 高低电平控制水阀
P1.0 DS18B20温度采集 P3.7 I/O低电平触发加热
2.10 本章小结
  本章对各个模块电路及其原理进行了分块分析以及展示,各个电路的功能、模块元器件端口信息功能做出了较
为详细的介绍。主要介绍了的模块电路部分包括一下几个:单片机相关电路、温度检测模块、继电器加热模块、
OLED显示模块、电磁水阀控制模块等等。并使用Altium Designer软件进行电路原理图的绘制,这样一来更能方便展
示电路原理。

第三章 下位机程序设计
3.1 整体程序功能
该系统的程序设计是基于Keil uVision5编程软件进行的,作为其开发工具,功能强大,有着较为紧凑简洁的程序代
码,用户使用率高,应用反馈良好,是目前兼容51单片机最广泛的开发工具。
  在设计微机控制系统时,在设计软件时,要考虑到各个产品的具体需求,不仅要考虑到系统的硬件设计,还要
考虑到各个产品的实际需求。所以,在微机控制系统的设计中,软件的设计是非常关键的。在这个系统中,软件的
作用更加突出。
  在单片机控制系统中,可以分为两种基本的控制方式:数据处理和过程控制。数据的处理主要有:数据采集、
标度变换等。过程控制程序的主要功能是通过对微处理器进行运算,然后输出来实现对其工作的控制。
  在进行软件开发的时候,一般会将整个流程划分为若干部分,每个部分被称为一个模块。“模块”其实就是一
个相对独立的、具有特定功能的程序部分,这个编程方式叫做模块化编程。
  基于所要求实现的各项功能指标编写了系统的下位机程序,并将设计完成的程序下载到单片机系统。基于单片
机系统向各个支部功能模块进行相应的控制,每一个支部模块所得到的数据信息都需要通过程序传输到单片机控制
模块,这样才能够完成其功能要求。
  本系统通过数据信息通信传输进行控制,主要由主控单片机系统和支部检测、支部出水系统构成。主控单片机
能够结束由支部系统传输来的数据信息,进而做出相应的动作来实现自动售水、自动计费、实时检测水温以及更新
用户相关信息。
其主控单元相关控制的逻辑流程图如下3.1所示:在这里插入图片描述

图3.1主控系统逻辑流程图
该主控控制系统的逻辑流程图还是较为简单的,一目了然。
  支部检测系统部分则包括了温度检测、使能出水、继电器加热等等模块,支部检测系统的主要的作用是实时检
测当前水温,并通过水温情况进行判断是否允许使能出水,各自相互合作交互,共同完成一系列的功能。
  支部检测后的数据信息将会传输到主控单片机模块中,然后单片机系统通过接受到的各项数据信息指标做出相
应的动作。

支部检测模块的主要功能用温度传感器检测当前的水温,运用程序进行判断,然后与标准95℃温度进行对比,
只有达到标准95℃的水才能够被系统允许售卖,而没达到标准时,则驱动继电器模块进行加热。在这里插入图片描述

图3.1和图3.2仅仅显示了系统的总体工作业务流程和判断逻辑。在接下里的章节中,将对上述的判定逻辑以及其他
一些功能模块进行详细的拆解和分析。
3.2 温度传感器模块程序
3.2.1 功能概述
  温度传感器DS18B20芯片通过读写字节测量读出当前水温,并将数据信息传输到单片机系统,再由单片机输出给
显示模块将水温展示出来。
温度传感器模块的工作逻辑流程示意图如下3.3所示在这里插入图片描述

图3.3 温度传感器工作逻辑流程图
  该模块的程序流程示意图是较为复杂的,该系统的主要模块之一就是温度传感器模块。当子程序加入后,单片
机控制单元会执行一系列的指令命令,完成温度的转换以及执行或者数据的读写。
温度传感器模块的程序流程示意图如下3.4所示:
在这里插入图片描述

图3.4 温度传感器程序流程图
3.2.2 程序解读
(1)if(tempture>=95)
card_able=1;//允许刷卡
hot_relay=1;//关闭加热继电器
else//正在加热
card_able=0;//禁止刷卡
hot_relay=0;//打开加热继电器
3.3 IC卡读取模块
3.3.1 功能概述
  IC卡读取模块通过使用一种特殊的IC卡,在程序中写入未激活卡的账号(一串十六进制数),单片机就能够识
别,未写入程序的IC卡则不能被识别。在进行售水时,只有刷卡之后系统才能被允许使能按键而打开电磁水阀进行
出水。

3.3.2 程序解读
(1)IC卡的识别
  if( (UID[0]==UI1[0])&&(UID[1]UI1[1])&&(UID[2]UI1[2])&&(UID[3]UI1[3]) )
//检测卡1,其他卡无效
UartSendByte(UID[0]);//读取卡序列号前四位
UartSendByte(UID[1]);
UartSendByte(UID[2]);
UartSendByte(UID[3]);
//函数名:UartSendBytes; 函数功能:通过串口往外发送数据
3.4 功能按键模块
3.4.1 功能概述
  该系统的功能按键模块只有两个按键(出停水按键),只需按下相应的按键即可实现相应的功能,因而电路及
其程序都比较简单,所以程序工作逻辑流程比较单一简洁。相关程序只需判断哪个按键使能即可做出出停水动作。
3.4.2 程序解读
(1)if( (Key10)&&(Key1_able1) )//出水按键
{
Delay_1ms(2);
if(Key10)
{
19
OLED_Clear();
Relay=1;//打开电磁水阀
Key1_able=0;
TR0 = 1;//定时器开始计时、计费
3.5 OLED液晶显示模块
3.5.1 功能概述
  在OLED液晶显示模块中,不需要很复杂的判断逻辑,只用正确显示上机位程序所判断出的结果即可,根据单片
机传输的数据实时更新用户数据信息。
其流程示意图如下3.6所示:在这里插入图片描述

图3.6 OLED液晶显示模块逻辑示意图
3.6 本章小结
  本章节以流程图的形式对各个模块程序逻辑进行相应的展示分析,使得模块功能的逻辑判断更加清晰,更能加
深各个模块之间的逻辑关系的理解,并且通过给出的关键程序展示分析达到展示本设计整体设计思路的目的。

第四章 软硬件调试
4.1 软硬件结合调试
  在此项目中,我们使用了 AltiumDesigner软件进行了硬件部分的设计,并以此为基础进行了实际的硬件开发。
本文以 Keil软件为程序基础,完成了整个系统的软件设计。
  接下来,我们会用流程图来说明,在这一次的设计中,是如何将软硬件部分相结合,使其达到系统功能实现的
目标。
其系统验证流程图如下4.1所示:
20

图4.1 系统验证流程示意图
  (1)首先,在系统接通电源之后,在此情况下各个模块进行初始化,然后分别用两张IC卡去接触感应区,观察两
张卡(白卡序列号已经写入程序读取,蓝卡未写入程序)的单片机系统读取情况。
  (2)在感应IC卡之后,此时显示屏幕上显示用户信息,并通过温度传感器检测水温,若水温未达标则观察是否打
开加热继电器模块进行加热。
  (3)若此时水温已经达标(大于等于95℃)则可以进行售水,此时需要验证是否打开电磁水阀模拟售水机出
水。
  (4)最后,当系统已经处于售水状态时则观察OLED显示屏是否能够正确进行水费的计算,实现自动计费功能。
4.2 系统效果展示
4.2.1 系统识别IC卡信息效果展示
  按照上述的测试的步骤,本小节验证的是本售水系统识别IC卡信息效果展示。需要在系统初始化的时候,分别
用区别是是否将序列号写入程序的两张IC卡靠近感应区,观察系统能否正确读取信息。调试过程如下图所示:
在这里插入图片描述

图4.1 系统识别IC卡信息效果示意图(1) 图4.2 系统识别IC卡信息效果示意图(2)
  通过上图4.1可以清晰地看出,当售水系统处于能够售水状态时,用蓝卡(未被激活)接触触感应区时,单片机
并不能识别,无法进行刷卡售水。如图4.2所示用白卡(已被激活)接受感应区时,单片机能够识别信息,显示屏上
显示了当前刷卡的用户名以及余额信息,并且能够使能按键进行售水,达到了智能识别IC卡的目的。
4.2.2 系统温度检测效果展示
  当温度传感器检测到不同的水温情况时,所需观察的是系统能否在水温低于95℃打开继电器加热以及大于等于
95℃时能够使能按键打开电磁水阀进行出水售水。
其效果示意图如下4.3和4.4所示:
22

图4.3 温度检测效果示意图(1) 图4.3 温度检测效果示意图(2)
  通过以上两张图所示的结果可知,当温度传感器检测到水温低于95℃时,加热继电器的工作绿灯常亮,加热继
电器工作,液晶显示器上显示“正在加热”,此时刷IC卡系统也是无法识别的,无法进行售水。当检测到水温为
95℃及以上时,加热继电器的工作灯熄灭,停止加热,这时液晶显示屏上则从“正在加热”跳转为“刷卡使用”,
也就是说该系统允许售水,可以通过使能出水按键进行售水。
综上所述,该系统的温度检测模块在经过验证后是能够实现其应有的功能的,在不同的温度下进行相应的动作。
4.2.3 系统出停水以及计费的效果展示
  在系统使能出水按键后,需要验证是否打开电磁水阀继电器进行出水,液晶显示屏上的计费情况以及使能关水
按键后,是否关闭电磁水阀继电器停止出水。
其验证结果示意图如下图4.5和4.6所示:
23

图4.5 系统出停水以及计费效果示意图(1) 图4.6 系统出停水以及计费效果示意图(1)
  通过以上两张图所示的结果可知,当系统使能出水按键后,电磁水阀继电器被打开进行售水,液晶显示器上展
示正在计费,金额随着时间而逐渐变大。若此时按下停水按键后,电磁水阀继电器被关闭,,停止出水,同时停止
计费,显示器显示剩余水费余额。这样便完成了整个售水过程。
4.3本章小结
  综上所示,本系统实现了IC卡信息读取、实时检测水温、电磁水阀控制和OLED实时显示系统信息,进而完成了
自动售水、自动扣费任务,对用户的信息进行准确更新与反馈。也就是说,根据本章的全部内容可以验证本系统完
成了设计指标。

第五章 总结与展望
5.1 总结
  本毕设的目的是设计出一款基于单片机的自动售水机,本设计以STC89C52RC为主控芯片开发了一种自动售水机
系统,主要由OLED显示屏、温度传感器、功能按键、IC卡读取模块和电磁水阀模块组成。本系统实现了IC卡信息读
取、实时检测水温、电磁水阀控制和OLED实时显示系统信息,进而完成了自动售水、自动扣费任务。回顾了本设计
的开发的过程,现在做出总结:
  本设计是使用Keil5进行相关程序的编辑,通过使用串口助手将所能实现设计功能的程序下载至单片机板内。另
外,为了弄清楚单片机实物的各个引脚作用,本设计还使用了Altium Designer软件,绘制出电路原理图。
  本系统的主要分为主控和支部测温控制这两个部分。支部测温能够实时检测水温,将信息发送至主控端,当水
温未达到95℃则打开继电器进行加热,水温至95℃时则可以进行刷卡售水。
主控端实时更新液晶显示器上的相关信息并展示,进而实现自动售水、自动计费、实时检测水温的设计要求。
5.2 展望
  虽然本设计的基本功能已经大致实现,但是由于设计准备时间不够充足,硬件设备条件要求不够完善以及自己
方案的细节不够到位,程序的编写未做到最简化等等众多原因,本设计还有许多需要进一步改进和拓展的地方。在
之后的学习中,我一定会借助一切帮助的力量,慢慢去完善本设计,朝着更加智能化方向发展。

语法说明
标题文本样式列表图片链接目录代码片表格注脚注释自定义列表LaTeX 数学公式插入甘特图插入UML图插入Mermaid流程图插入Flowchart流程图插入类图快捷键
标题复制

一级标题

二级标题

三级标题

四级标题
五级标题
六级标题

Markdown 13542 字数 439 行数 当前行 1, 当前列 0 文章已保存09:38:46HTML 12037 字数 392 段落
发布博文获得大额流量券

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值