基于单片机的锅炉温度控制系统的设计

更新时间:2024-02-02 06:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

辽宁科技大学本科生毕业设计 第I页

基于单片机的锅炉温度控制系统的设计

摘 要

在对当前采暖需求情况广泛调查的基础上,结合工程实际需要,针对小型家用燃气锅炉的特点,研制开发了基于MCS-51单片机的小型家用燃气锅炉温度控制系统,旨在使用燃煤锅炉集中采暖时所遇到的锅炉温度不易控制,改进家庭采暖的控制方式,提高采暖的经济性。利用 Protel99se电路设计软件,对智能控制器的电源电路、复位电路、时钟电路、报警电路、LCD液晶显示电路以及控制器的核心—温度采集电路进行了设计。电源采用三端集成稳压器W7800 (W7900)系列元件7805,交流220 v电压转换为单片机所需要的5V电压;利用AT89S51作为控制器的核心器件;利用集成电路温度传感器DS18B20测量锅炉水温;将测量的水温与设定值比较,单片机另外使用LCD液晶显示器显示水位的上下限值、当前水位、预先设定的温度报警值和当前采集的温度值。当温度超过设定的报警温度值,系统会发出报警声音,同时关闭锅炉燃烧器。等待温度降到下限值,这时就可以重新锅炉燃烧器通电,继续加温,如此反复监控温度。这样就可以节约能源,提高能源的使用率。针对系统的要求和特点,在上述硬件电路及实现方法的基础上,利用汇编语言,设计了基于单片机的锅炉温度控制系统。控制软件主要包括温度和温度采集子程序、水位控制程序、键盘扫描子程序和LCD液晶显示子程序等。通过对温度和水位的测试,可以发现所设计的控制系统能够满足设计要求,达到了预期的效果。

关键词:单片机;LCD;燃气锅炉;温度控制;DS18B20

辽宁科技大学本科生毕业设计 第II页

Microcontroller-based design of the boiler

temperature control system

ABSTRACT

According to the market demand and the characteristics of domestic heating, this paper develops MCU intelligence controller for the minor gas-fired boiler which is domestic heating equipment on the basis of investigation of heating demand widely. The research purpose is to change the inconvenience of temperature control bring by using coal fired boiler for centralized heating, to increase economics of heating.The software called Protel99se for circuit designed is used to develop the hardware of the controller. The hardware includes the power supply circuit, the reset circuit,the clock circuit, the alarm circuit, the LCD display circuit, and the temperature collection which is the core of this controller. The three-pin integrated-circuit voltage regulator W7800 (7900) series component 7805 is used for the power supply. The Atmel AT89S51 chip is the core chip of the controller. The integrated temperature sensor DS18B20 is used to measure water temperature in boiler. The key circuit is used to set the alerm temperature and analog water in or out. In addition, LCD is used to display water level bound, current water level, temperature alerm value by presupposition and current temperature. When water level beyond its bound or when current temperature beyond its alerm value, the system gives an alerm and makes boiler burner off. When water temperature is down, the system releases alerm and makes boiler burener on. The system does it again and again.So the system can save energy and improve energy utilization rate. Aim at the demand and characteristic of the system, on the basis of these hardware and implement method, using assemble language, system designs boiler temperature control system design based on singlechip. This software includes temperature and water level monitor main program, temperature collection subprogram, analoy water in and out subprogram, keyboard scan subprogram, LCD display subprogram etc. Use practicality to validate system’s dependability and stability, and the system can operate successfully.

Keywords:MCU; Liquid Crystal Display; Gas boiler; Temperature control;DS18B20

辽宁科技大学本科生毕业设计 第III页

目录

1 绪论 ................................................................ 1

1.1 1.2

课题背景及研究意义 .............................................. 1 系统的总体设计思想 .............................................. 2

2 系统方案论证及工作原理 ........................................... 4

2.1 设计方案论证 ...................................................... 4 2.2 系统结构框图 ...................................................... 4 2.2.1主要器件的选择 ................................................... 6 2.2.2 锅炉辅助器件选择 ................................................. 6

3 硬件电路设计 ....................................................... 8

3.1 主电路 ............................................................ 8 3.2 单片机选择设计 .................................................... 9 3.3 单片机最小系统 ................................................... 11 3.3.1时钟电路设计 ................................................. 11 3.3.2 复位电路 ..................................................... 12 3.4温度检测电路设计及温度传感器选择 .................................. 12 3.4.1 DS18B20简介 ................................................. 12 3.4.2温度采集电路 ................................................. 14 3.5 温度控制电路设计 ................................................. 14 3.6 水位控制电路 ..................................................... 15 3.6 显示电路设计 ..................................................... 17 3.7 报警电路设计 ..................................................... 21 3.8 稳压电源电路设计 ................................................. 22 3.9按键电路设计 ...................................................... 22

4 系统软件设计 ...................................................... 24

4.1主流程图设计 ...................................................... 24 4.2中断程序程序 ...................................................... 25 4.3 DS18B20温度采集子程序设计 ....................................... 25 4.4 LCD液晶显示子程序设计 ........................................... 27

总 结 ................................................................ 28 致 谢 ................................................................ 29 参考文献 ............................................................. 30 附 录 ................................................................ 31

辽宁科技大学本科生毕业设计 第IV页

附件A:总程序 ........................................................ 31

辽宁科技大学本科生毕业设计 第1页

1 绪论

1.1 课题背景及研究意义

锅炉是一种热能转换设备,由锅和炉两大主体和保证其安全经济连续运行的附件,仪表附属设备,自控和保护系统组成,水在锅(锅筒)中不断被炉里燃料燃烧释放出来的能量加热,温度升高并产生带压蒸汽,由于水的沸点随压力的升高而升高,锅是密封的,水蒸气在里面的膨胀受到限制而产生压力形成热动力(严格的说锅炉的水蒸气是水在锅筒中定压加热至饱和水再汽化形成的)作为一种能源广泛使用。锅炉广泛用于生产和生活之中。中小型锅炉作为供暖设备用于提供热水,取暖方面得到了广泛应用。目前,取暖多采用集中供暖方式。集中供暖,一般都是按一个采暖季每平方(建筑面积)来收费的,对北方地区来说,天气比较冷,需要供暖时间长,应该集中供暖省钱。指集中集团式供暖的一种形式。从能源利用方面讲,集中供暖一次性投资大,运行费用高,无论是否需要,暖气始终全天供热,因楼层不同而造成温度不均,若遇到供暖偏热,居民只有开窗降温,使宝贵的能源白白浪费。 这种供暖方式从原理上而言,效率较高。集中供暖的锅炉大多数是燃媒锅炉,锅炉燃烧时污染大,已经带来了严重的环境污染问题。由于这些用户采用集中取暖,给个别用户带来不便的缺陷。

基于这种情况,近年来采用以天然气,液化石油气为燃料的中小型燃气锅炉具有高效、环境污染小,发热量大甚至无污染等特点,受到普遍欢迎。尤其在国外,燃气锅炉目前已得到了普遍应用。家用燃气锅炉常见的是套管式燃气锅炉、板换式燃气锅炉、冷凝式燃气锅炉。随着科技的发展以及各种客观条件的具备,生活采暖用燃气锅炉的应用也必将得到进一步的发展与推广。随着燃料不断补给,燃料充足,城市燃气管网逐步完善,燃气使用率逐步会提高。市场经济的发展与开放,国有企业享受国家能源补贴的取消,住房逐渐私有化,供热管网费、采暖费全部由个人支付。会有越来越多的人放弃集中供热方式而采用分散采暖方式。而小型家用燃气锅炉的使用作为集中供暖的一个很好补充或替代它必将被越来越多的人关注和选用成为趋势。

目前市场上家用燃气锅炉为进口,价格高,售后服务不够完善,不利于燃气锅炉的推广使用,研制燃气锅炉的公司亦相对较少。因此研制开发小型家用燃气锅炉就具有现实的意义与客观的市场价值。

辽宁科技大学本科生毕业设计 第2页

本设计将结合小型家用燃气锅炉实际的需要,利用MCS-51系列单片机为核心器件组成温度控制系统,采用温度采集技术,通过运行和分析研究,以期正确认识和全面理解利用单片机实现温度采集技术在过程控制中的应用。

1.2 系统的总体设计思想

目前,世界计算机市场上出现了专门用于工业控制的单片机系列产品,单片机以其体积小、重量轻、功耗低、价格便宜、功能强的特点,在工业控制的实践中得到越来越广泛的应用单片机不仅可以实现各种常规的控制,还可以根据被控对象的特性,充分利用控制理论的最新研究成果,采用更完善的控制方式,以获得更好的控制效果。目前,由于家用锅炉属于批量生产,而且每台锅炉需要一套完整的控制系统,针对这些特点,尤其从产品成本角度出发,以MCS-51为核心器件组成的控制系统是比较理想的选择。此外,MCS-51系列单片机运算能力、完备的控制功能、加上完善的外部接口电路,对中小型锅炉控制系统完全可以胜任。在外围芯片选取时,尽量选取典型的、易于扩展和替换的芯片和电路,并本着节约成本的思想。选用基于单总线的数字温度传感器DS18B20和LCD液晶显示器。DS18B20温度传感器采用美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域;LCD液晶显示器为平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。液晶显示器功耗很低,因此倍受工程师青睐,适用于使用电池的电子设备。它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。它们二者与单片机的接口比较简单,而且编程强度不大,既保证了系统的稳定性,又缩短了系统的开发周期,节约了开发成本。

系统在软件上采取模块化的程序结构。主程序作为控制程序,为整个系统软件的一条主线,其它功能模块均采用子程序调用、查询等方式,为调试和扩充提供了方便。

本系统的电源采用市场上常见的W7800(7800)系列7805电源稳压芯片,模拟信号和数字信号分别用单独的供电回路,以避免电源干扰。利用温度传感器DS18B20采集测量锅炉水温;使用LCD液晶显示器显示水位的上下限值、预先设定的温度报警值和当前采集的温度值。利用继电器控制燃烧器和给水泵的加热和给水。当锅炉内的水的实际水温超过报警温度值,系统会发出报警声音,这时接在单片机一端的继电器动作,燃烧器断电。此时温度传感器实时对锅炉温度检测,当温度降到设定值的下限时,继

辽宁科技大学本科生毕业设计 第3页

电器重新通电。燃烧器电源重新接通,锅炉继续加热。如此反复监控温度。这样对锅炉温度控制不仅可以节约能源,提高能源的使用率。此外,为符合实际本系统对锅炉的水位进行实时监控,防止锅炉干烧和锅炉水溢出,以免造成能源浪费和水溢出引起的锅炉爆炸严重后果。

辽宁科技大学本科生毕业设计 第4页

2 系统方案论证及工作原理

2.1 设计方案论证

方案一:采用AT89S51单片机、7805电源稳压芯片、热敏电阻、74HC138和16*16点阵显示器,液位控制器等核心部件。该方案中单片机控制16*16点阵显示器这部分程序比较复杂,编程的强度较大,容易出错。另外,在硬件电路上,74HC138、16*16点阵显示器与单片机接口复杂,而且它们的外围电路较多,不适合用在锅炉的嵌入式系统设计中。采用液位继电器可以简单控制锅炉液位,但增加了成本开销。

方案二:采用AT89S51单片机、7805电源稳压芯片、温度传感器DS18B20和液晶显示器LCD1602等核心部件。该方案采用液晶显示器来显示水位的上下限值、当前水位、预先设定的温度报警值和当前采集的温度值,直观、接口简单而且编程强度不大。用不锈钢管制作成的装置放于水位上下限,简单。这样就可以缩短系统的开发周期,减少系统成本开销。

综上分析,采用第二种方案。本系统主控单片机的全部程序都是用汇编语言来编写,采用KeiluVision3集成开发环境来开发单片机应用程序。

2.2 系统结构框图

锅炉温度控制系统的主控部分由单片机构成。通过按键电路进行温度报警值的设定,并对锅炉的水温进行采集及处理,然后与报警值比较,当温度值大于温度上限值(报警值)时就报警,停止加热。当温度少于温度下限值时,重新启动进行加热处理。以此重复对锅炉温度控制。同时为结合实际需要,本系统亦对锅炉水位进行控制。液晶显示,显示水位上限值,水位下限值以及温度报警值和实际温度值。图2.1所示是其系统结构框图。

辽宁科技大学本科生毕业设计 第5页

报警 按键设定 AT89C51 液晶显示 稳压电源 复位 温度采集 给水泵 继电器

图2.1 系统结构框图

燃烧器

在工业生产中,锅炉是一种重要的动力系统。其中锅炉的温度过程控制,又是一个重要环节。本系统过程控制系统主要应用于燃气锅炉的水温控制系统。在燃气锅炉里面,天然气液化石油气作为燃料,锅炉中的水作为加热对象。温度传感器的输出信号经调理电路处理后作为单片机系统的输入信号。本系统要采样的是锅炉的水温和锅炉的水位控制信号。

温度控制系统的控制信号通过继电器控制燃烧器内进出气,由三个进气阀实现控制。燃烧器的作用是:继电器接通燃烧器电源后,燃烧器通过其内部的光电检测管检测锅炉内有无火光,若有火光则表示点火成功,不需启动点火变压器,否则启动点火变压器进行点火,同时电磁阀打开进气,这时光电管检测到火焰,关闭点火变压器,

辽宁科技大学本科生毕业设计 第6页

系统点火成功。该中小型燃气锅炉所需要温度的热水是根据用户需要调节的。控制系统根据温度传感器检测到的温度与温度设定值比较,给出控制信号.若实际温度大于报警值时,单片机实行对继电器的电源关断,这时燃烧器断电,锅炉不进行加热处理。温度传感器一直检测锅炉内部的水温。当温度传感器检测的温度小于用户设定值的时候,单片机根据温度的比较信号,重新对继电器进行通电,锅炉重新加热。

本系统燃烧控制系统(又称为燃烧调节系统)采用有差调节系统。有差调节时系统调节过程中被调参数值在设定的参数范围内变动。在供热锅炉中常采用有差调节就能达到要求,所以系统采用有差调节系统并采用双位控制。如图2.2所示。

双位控制 位式控制 有差调节系统 燃烧控制(调节)系统 三位控制 比例控制 比例积分调节(PI) 无差调节系统 比例积分微分调节(PID)

图2.2 燃烧控制(调节)系统

2.2.1主要器件的选择

1.选用Atmel公司单片机AT89S51。

2.选用Dallas半导体公司温度传感器DS18B20 3.液晶显示器LCD1602 2.2.2 锅炉辅助器件选择 1.奥林燃烧器

型号:GP-300T

功率(kg):700-4000

辽宁科技大学本科生毕业设计 第7页

火焰探 测器型号:QRA-2 伺服马达型号:SQM

气阀密封检漏器型号:VDK200/VPS504/DK2F 燃烧器控制:外置

重量(kg):320 2.CHL系列立式不锈钢多级泵

流 量:最大22m3/h 扬 程:最大60m 液体温度:-50℃~120℃ 环境温度:最高+160℃ 工作压力:1.6MPa/2.5MPa 工作电压:220V/380V 3.不锈钢管

辽宁科技大学本科生毕业设计 第8页

3 硬件电路设计

3.1 主电路

1.温度控制电路

图3.1 温度控制电路

2.水位控制电路

图3.2 锅炉加水电路

辽宁科技大学本科生毕业设计 第9页

图 3.3 水位检测电路

3.2 单片机选择设计

AT89S51是美国ATMEL生产的低功耗,高性能CMOS8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。

(1) AT89S51主要功能列举如下:

① 为一般控制应用的8位单芯片。

② 晶片内部具有时钟振荡器(传统最高工作频率可至12MHz)。 ③ 内部程式存储器(ROM为4KB)。 ④ 内部数据存储器(RAM为128B)。

⑤ 32条双向输入输出线,且每条均可以单独做 I/O的控制。 ⑥ 5个中断向量源。 ⑦ 2组独立的16位定时器。 ⑧ 单芯片提供位逻辑运算指令。

(2) AT89S51管脚排列及系统所用引脚功能介绍。管脚排列如图3.4所示,下面介

绍引脚的功能。

辽宁科技大学本科生毕业设计 第10页

图3.4 AT89S51引脚图

1.VCC:AT89S51 电源正端输入,接+5V。 2.GND:电源地端。

3.XTAL1:单芯片系统时钟的反相放大器输入端。 4.XTAL2:系统时钟的反相放大器输出端。

5.PORT0:(P0.0~P0.7):端口0是一个8位宽的开路漏极(Open Drain)双向输出入端口。P0在当做I/O用时可以推动8个LS的TTL负载。

6.PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。

7.PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。

8.PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:

辽宁科技大学本科生毕业设计 第11页

9.P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。

3.3 单片机最小系统

3.3.1时钟电路设计

AT89S51的时钟可由内部产生也可以由外部产生。在这个设计中只是用了内部产生。利用芯片内部振荡电路,在XTAL1,XTAL2(18,19脚)的引脚上外接定时元件,内部振荡器便能产生自激振荡,用示波器便可观察到XTAL2输出的正弦波,定时元件可以采用石英晶体和电容组成的并联谐振电路,它与单片机的接法的如图3-5所示。晶体可以在1.2MHz~12MHz之间所选,电容可以在20~60pF之间所选,通常选择30pF左右,电容C6,C7的大小对振荡频率有微小的影响,可起频率微调作用。在设计印制板时,晶体和电容应尽可能与单片机芯片靠近,以减少寄生电容,保证振荡器可靠工作,一般采用瓷片电容。

图3.5 时钟电路

辽宁科技大学本科生毕业设计 第12页

3.3.2 复位电路

单片机上电后,在其9脚(RESET)出现24个振荡周期以上的高电平后,单片机内部初始复位。为了确保单片机正常复位,必需使其第9脚上出现的高电平保持2μs以上。复位电路如图 3.6 所示。

图3.6 复位电路

系统的复位电路是由RC电路组成,外加一个手动复位按钮。刚上电时或者触动按钮后C5两端的电压为0,这时RST为高电平,而其高电平保持时间是由R和C的时间常数决定,由公式(3-1)可知,C充电的时间常数τ等于0.22ms,远远大于2μs,即使RST高电平的时间保持2μs以上,确保了单片机正常复位。

τ=R*C (3-1)

3.4温度检测电路设计及温度传感器选择 3.4.1 DS18B20简介

Dallas半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。

DS18B20可以程序设定9-12位的分辨率,精度为0.5摄氏度。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。如图3.7所示DS18B20引脚排列图

辽宁科技大学本科生毕业设计 第13页

图3.7 DS18B20引脚排列图

(A)DS18B20特性:

1.独特的单线接口仅需一个端口引脚进行通讯。 2.简单的多点分布应用。 3.无需外部应用。 4.无需外部器件。 5.可通过数据线供电。 6.零待机功耗。

7.测温范围-55~+125℃,以0.5℃递增。 8.温度以8位数字量读出。

9.温度数字量转换时间200ms(典型值)。 10.用户可定义的非易失性温度报警设置。

11.报警搜索命令识别并标志超过程序限定温度的器件。

12.应用包括温度控制,工业系统,消费品,温度计或任何热感测系统 (B)ROM操作品令 :

总线主机检测到DSl820的存在,便可以发出ROM操作命令之一,这些命令如

指令 代码 1.Read ROM(读ROM) 2.Match ROM(匹配ROM) 3.Skip ROM(跳过ROM) 4.Search ROM(搜索ROM)

[33H]

[55H] [CCH] [F0H]

辽宁科技大学本科生毕业设计 第14页

5.Alarm search(告警搜索) [ECH] (C)存储器操作命令

指令 代码 1.Write Scratchpad(写暂存存储器) [4EH] 2.Read Scratchpad(读暂存存储器)

[BEH]

3.Copy Scratchpad(复制暂存存储器) [48H] 4.Convert Temperature(温度变换) 5.Recall EPROM(重新调出) 6.Read Power supply(读电源)

[44H] [B8H] [B4H]

(D)DS18B20管脚功能表,如表3.1所示

表3.1 DS18B20管脚功能表

引脚序号 1 2 3

引 脚 名 称 GND DQ VDD

接地

数据输入/输出脚 接5V电源

功 能 3.4.2温度采集电路

温度采集电路只有一个DS18B20温度传感器,它与单片机的接口比较简单,如图3.8所示。只要给传感器5V的供电并把它的单总线接到单片机的P口就可以了。

图3.8 温度采集电路

3.5 温度控制电路设计

本系统采用继电器进行对燃烧器工作方式控制,从而锅炉控制温度。当P口输出

辽宁科技大学本科生毕业设计 第15页

高电平时,经反相驱动器7406变为低电平,使发光二极管发光,从而使光敏三极管导通,进而是Q3导通,因而继电器的线圈通电,接通锅炉燃烧器。本部分电路与单片机的接口如图3.9所示。

1.当P1.7输出高电平时,燃烧器通电,燃烧器对锅炉加热,进行加热处理。 2.当P1.7输出低电平时,燃烧器断电,燃烧器对锅炉加热,不进行加热处理。

图3.9 温度控制电路

3.6 水位控制电路

锅炉在正常加温工作情况下,同时对锅炉液位检测。当锅炉的水位满足条件时开始工作。

本系统设计利用普通水的导电性质采用不绣钢管作为测量液位的器件,放于锅炉上下限的金属棒是否正在导电的情况判断锅炉的水位是不是在上下限范围之间,单片机通过采集的水位变化的信号,发出对给水泵控制的命令,控制锅炉内水位符合条件。

辽宁科技大学本科生毕业设计 第16页

图3.10水位检测电路

如图3.10水位检测电路所示,金属棒1放于水位上限位置,金属棒2放于水位下限位置,金属棒3放于水位以下比较远点的位置。其中金属棒1和金属棒2用限流电阻分别与单片机相连接,金属棒3接+5v的电源。单片机不断的检测单片机端口p1.2和p1.3的电平情况。

(1)当P1.2=高电平和P1.3=高电平时,即实际水位在水位上限以上的位置,这时系统发出报警命令,系统停止工作。

(2)当P1.2=高电平和P1.3=低电平时,即实际水位在水位上限和水位下限之间的位置,单片机不进行处理,即保持给水泵的状态不变。

(3)当P1.2=低电平和P1.3=低电平时,即实际水位在下限以下的位置,这时系统控制给水泵工作,锅炉开始加水,并报警。

辽宁科技大学本科生毕业设计 第17页

图3.11 水位控制电路

当锅炉水位处与水位下限值的时,单片机P1.4口输出一个高电平,继电器接通,此时给水泵通电,给水泵开始工作给锅炉加水。

3.6 显示电路设计

图3.12为LCD1602引脚分配图。其引脚说明见表3.2。

LCD1602是具有4位/8位并口可选接口方式的液晶显示模块,它能同时显示两行字符,每行有16个字符。字符以5*7点阵形式显示。其字符中共有160种字符。人选指令有11条(清屏、返回、输入方式设置、显示开关控制、移位、功能设置、CGRAM地址设置、DDRAM地址设置、读忙信号及地址高数器、写数据、读数据),内部有80字节的RAM,8位数据接口,另外三根控制总线用于完成对写和读数据或指令时序控制。由该模块构成的液晶显示方案与LED点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多。

辽宁科技大学本科生毕业设计 第18页

3.12 LCD1602引脚分配图

(1) LCD1602引脚说明

表3.2 LCD1602引脚说明

管脚号 1 2 3

符号 VCC

VDD 电源电压(+5V) VL

电源地(GND)

功能

寄存器选择输入端,输入MPU选择模块内部寄存器类型信号;

RS=0,当MPU进行写模块操作,指向指令寄存器; 当MPU进行模块操作,指向地址计数器;

RS=1,无论MPU读操作还是写操作,均指向数据寄存器

4 RS

读写控制输入端,输入MPU选择读/写模块操作信号; R/W=0 读操作;R/W=1 写操作

5

R/W 读写控制输入端,输入MPU选择读/写模块操作信号;

R/W=0 读操作;R/W=1 写操作

6

E

读操作时,高电平有效;写操作时,下降沿有效

辽宁科技大学本科生毕业设计 第19页

7

DB0 数据输入/输出口,MPU与模块之间的数据传送通道4位

方式通讯时,不使用DBO~DB3

8

DB1 数据输入/输出口,MPU与模块之间的数据传送通道4位

方式通讯时,不使用DBO~DB3

9

DB2 数据输入/输出口,MPU与模块之间的数据传送通道4位3

表3-2 LCD1602引脚说明续表 方式通讯时,不使用DBO~DB

10

DB3 数据输入/输出口,MPU与模块之间的数据传送通道4位

方式通讯时,不使用DBO~DB3

11

DB4 数据输入/输出口,MPU与模块之间的数据传送通道4位

方式通讯时,不使用DBO~DB3

12

DB5 数据输入/输出口,MPU与模块之间的数据传送通道4位

方式通讯时,不使用DBO~DB3

13

DB6 数据输入/输出口,MPU与模块之间的数据传送通道4位

方式通讯时,不使用DBO~DB3

15

DB7 数据输入/输出口,MPU与模块之间的数据传送通道4位

方式通讯时,不使用DBO~DB3

16 BL+ BL-

背光的负端0V

(2)LCD1602结构块图。如图3.13所示为LCD1602结构块图,指明了LCD1602内部结构模块。

辽宁科技大学本科生毕业设计 第20页

图3.13 LCD1602结构块图

本系统采用LCD1602作为显示模块,它可以方便的和单片机接口,其主要功能是显示水位的上下限值、当前水位、预先设定的温度报警值和当前采集的温度值。其中VDD接5V电源用于显示LCD液晶显示芯片的工作,VL串接阻值1.8K欧姆为了调节LCD液晶显示芯片字符的亮度,当阻值越大时,LCD液晶显示越模糊。用滑动变阻器能更好的调节LCD液晶字符显示的亮度,合适于锅炉的水位于水温的观察。BL+接5V电源是调节显示显示LCD液晶显示芯片是显示背光的亮度。LCD液晶显示电路如图3.14所示。

辽宁科技大学本科生毕业设计 第21页

图3.14 LCD液晶显示电路

3.7 报警电路设计

本系统采用蜂鸣器进行报警,并用两个LED指示灯表示工作状态,红灯亮绿灯灭表示报警;红灯灭绿灯亮表示正常工作。该部分电路与单片机的接口如图3.15所示。

图3.15 报警电路

辽宁科技大学本科生毕业设计 第22页

电路由限流电阻R1、三极管Q1、两个二极管和蜂鸣器组成。这个电路并不是一般的放大电路,三极管不是工作在放大状态,而是工作在饱和状态和截止状态。当基极为低电平时,晶体管处于饱和状态,饱和电压为UCES=0. 3V,此时,蜂鸣器鸣叫。当基极为高电平时,晶体管截止,相当于开路,输出为高电平,蜂鸣器停止鸣叫。

3.8 稳压电源电路设计

78系列三端稳压器是最长见的集成稳压器件。具有过热,过流,调整管安全工作区保护功能。性能优良,可靠性搞。同时又由于器件只有三个引脚,所以使用简单方便,价格低廉,应用广泛。

稳压电源电路如图 3.16所示,从J1输入9~12V的直流电,打上开关,经C1和C2滤波后,加到7805稳压块的输入端,再从其输出端输出稳定的+5V的电压。因为在本设计中,电路中均采用低功耗的器件,所以稳压块并不需要加散热片。此外,由电阻R2和发光二极管D4组成电源指示电路具有上电指示作用。

图3.16 稳压电源电路

3.9按键电路设计

本系统为符合实际要求,进入系统之前首先对温度报警值的设置。本系统有三个按键分别为K1,K2,K3.如图3.17所示。

(1) K1设置锅炉温度报警值的温度值增加按键。K1每按下一次,温度报警值显示加比上一次值增加一度。

(2) K2设置锅炉温度报警值的温度值减少按键。K1每按下一次,温度报警值显

辽宁科技大学本科生毕业设计 第23页

示比上一次值减少一度。

(3) K3温度报警值确定值。

图3.17 按键电路设计

辽宁科技大学本科生毕业设计 第24页

4 系统软件设计

本章讲述的系统软件设计包括锅炉温度控制的单片机程序设计以及构成系统的各部分子程序设计。

4.1主流程图设计

锅炉温度控制系统的单片机程序设计主流程图如图4.1所示。

本系统进入执行时先对锅炉水位进行与设定的水位上下限进行判断,然后按条件不同处理结果。当锅炉水位满足条件的时候再对锅炉的水温采样监控,并进行相应的处理。

图 4.1 软件主流程

辽宁科技大学本科生毕业设计 第25页

4.2中断程序程序

中断服务程序序 K1是否按下 否 是 加1并示 否 K2是否按下 是 减1并显示 否 K3是否按下 是 返回

图4.2 中断服务程序

4.3 DS18B20温度采集子程序设计

DS18B20有严格的协议来确保其数据的完整性。协议包括几种单线信号类型:复位脉冲,存在脉冲,写0、写1、读0、读1。所有这些信号类型除存在脉冲外,其它的信号均由总线主机产生。开始与SD18B20进行任何通信。都要对其进行初始化,在接收到复位脉冲后,再对SD18B20进行正确的ROM命令和存贮器操作命令。在总线主机初始化过程,主机通过拉高单总线,以产生复位脉冲。接着,在主机释放总线,并进入接收模式。当总线被释放后,上拉电阻将总线拉高。在单总线器件检测到上升沿

辽宁科技大学本科生毕业设计 第26页

后,接着产生延时,接着通过拉低总线,以产生存在脉冲。DS18B20温度采集子程序流程图如图4.3所示。

开始 检测DS18B02 是否存在 否 是 跳过EOM匹配 发出温度转换 命令 跳过ROM匹配 发出温度读取 命令 保存采集的温度 结束

图4.3 DS18B20温度采集子程序流程图

辽宁科技大学本科生毕业设计 第27页

4.4 LCD液晶显示子程序设计

本系统采用是16*2的LCD1602,单片机对其初始化,然后将需要显示的字符在LCD存储的地址和要求在LCD显示的地址送出,再检测LCD是否处在忙碌不能接收命令或数据的状态,检测到LCD空闲时就可以写数据显示了。LCD液晶显示子流程图如图4.4所示,具体实现过程请查阅附录LCD液晶显示子程序。

开始 LCD液晶显示 模块初始化 将需要的显示信息和LCD的地址送出 是 检测LCD是否忙碌 否 写数据显示 结束

图4.4 LCD液晶显示子流程图

辽宁科技大学本科生毕业设计 第28页

总 结

本设计通过单片机的控制,实现了锅炉温度控制的基本功能,利用继电器控制燃烧器的工作,并且对锅炉水位进行控制,并通过显示屏显示出水温水位的状态信息,确保了能够在正常范围下工作。

系统中以AT89S51芯片作为控制芯片,采用一线总线的温度传感器DS18B20,用LCD1602液晶显示模块显示水温水位的状态信息,这些都得使硬件电路变得简单,性能得到提高。而且有蜂鸣器进行报警,使得本设计在应用上更加安全。

在本次设计中,我不但巩固了基础知识,而且锻炼了自己的学习能力,通过查阅资料,了解了大量课堂上学不到的东西,为以后的工作和学习打下了夯实的基础,但遗憾的是本设计并未通过了实物模拟,在实际应用上肯定存在着不少缺欠。希望以后能做出实物,发现设计上的缺欠,并加以改进,完善本系统的设计。

辽宁科技大学本科生毕业设计 第29页

致 谢

经过2个多月的努力,本设计终于完成了,在完成之际我要真挚的感谢吴文波老师,是吴老师一直以来给予本设计的巨大帮助,使本设计才得以顺利完成。同时也非常感谢电信学院的每一位老师,是他们传授本人专业知识。师恩深重,无以为报,特在此向老师们致以本人最崇高的敬意和最衷心的感谢!

本设计的完成也离不开同学的帮助,感谢他们对我的设计提出的宝贵意见。本设计参考了大量的文献资料,向各学术界的前辈们致敬!

同时在此还要感谢答辩组的老师,感谢他们在百忙之中评阅本人的设计。

辽宁科技大学本科生毕业设计 第30页

参考文献

[1] 潘永雄,张晓蓟.新编单片机原理与应用[M].西安:西安电子科技大学出版社,2002. [2]燃油燃气锅炉房设计手册编写组.燃油燃气锅炉房设计手册[M].北京:机械工业出版社,1998.

[3] 张仁青,李彦,朱传堂等,燃油、燃煤气、燃煤锅炉房的对比和展望[J].江苏暖通空调制冷,1998,3:7-11.

[4] YLZK-C42型全自动常压油炉电脑控制器使用说明书[M].南京二南京仁泰锅炉白控设备有限公司.

[5] 陈兆煊,陈伟权.燃油、燃气常压热水炉国内外发展应用概况分析和建议[J].工业锅炉,1998,3:71-74.

[6] 李之光等常压热水锅炉及其供暖系统[M].北京:机械工业出版社,1992.

[7] 李晓光,鹿道智,于惠君等.小型然油燃气锅炉[M]大连:大连理工大学出版社,1999. [8] 何立民.单片机应用技术选编[M].北京:北京航空航大大学出版社,2000. [9] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1996.

[10] 胡建,刘玉宾,朱焕立.单片机与接口技术[M].北京:机械工业出版社,2004. [11] 高锋.单片微机应用系统设计及实用技术[M].北京:机械工业出版社,2004. [12] 肖玲妮,袁增贵,Protel 99 SE印刷电路板设计教程[M].北京:清华大学出版社,2003.

[13]陈杰,黄鸿.传感器与检测技术[M].北京:高等教育出版社. [14] 高才苹.新型供热锅炉手册[M].上海:上海交通大学出版社,2002. [15] 超钦新,惠世恩.燃油 燃气锅炉[M].西安:西安交通大学出版社,1999. [16] Jams M. Sihigtrolh. Understanding Small Microcontroller[M]. PTR Prentice Hall, 1993,112-123.

[17] Motorola, Microcontroller Setectro Guide. Quarter[M].2001,4:146-157.

[18]K.J.Astrom. T.Hagglund, The future of PID control,Control Engineering Practice 9 [M](2001)1163-1175

[19]Ljung L, System Identification User's Guide, MadiWorks,Inc[M]. 1997

辽宁科技大学本科生毕业设计 第31页

附 录

附件A:总程序

TEMP_ZH DATA 24H ;实时温度值存放单元

TEMPL DATA 25H ;温度存放低八位 TEMPH DATA 26H ;温度存放高八位

TEMPHC DATA 29H ;存放百位数和十位数BCD TEMPLC DATA 2AH ;存放个位数和小数BCD

BOILER_SW EQU P1.2 ;给水泵开关

WATER_SW_H EQU P1.7 ;燃烧器开关

K1 EQU P24 ;报警温度值温度增加

K2 EQU P2.5 ;报警温度值减少

K3

EQU P2.6;设定报警温度确定键

GREEN EQU P1.0 ;绿灯为正常工作指示灯

TEMP_AL EQU 21H ;温度报警值存放单元 TEMP_AL1 EQU 31H ;存放报警温度值的个位 TEMP_AL2 EQU 32H ;存放报警温度值的十位 WATER_AL1 EQU 33H ;当前水位的个位数存放单元 WATER_AL2 EQU 34H ;当前水位的十位数存放单元 WATER_LEVEL EQU 22H ;当前水位存放单元 WATER EQU 28H ;当前水位存放单元 SPK EQU P3.7

;蜂鸣器引脚定义

RED EQU P1.1 ;红灯为报警指示灯

LCD_X EQU 2FH ;LCD 地址变量 LCD_RS EQU P2.0 ;数据/指令寄存器选择输入端 LCD_RW EQU P2.1 ;读写控制输入端 LCD_EN EQU P2.2 ;使能信号输入端

辽宁科技大学本科生毕业设计 第32页

FLAG1 EQU 2FH.7 ;DS18B20是否存在标记

FLAG EQU 2FH.6 ;报警标记

DATE_LINE1 EQU P3.3 ;通道1DS18B20数据口 ;===================================================== ORG 0000H JMP MAIN

MAIN: MOV SP,#60H MOV A,#00H

MOV R0,#20H ;将 20H-2FH 单元清零 MOV R1,#10H CLEAR: MOV @R0,A INC R0

DJNZ R1,CLEAR

MOV WATER,#50

;对 LCD 做初始化设置及测试,并写自定义数据

MOV TEMP_AL,#23 CALL SET_LCD 入CGRAM

CALL TEMP_SET ;显示设定温度报警值的信息 MOV A,#0C9H

;设定温度摄示度标记的显示位置

;设置堆栈

;跳到主程序入口

CALL TEMP_BJ ;显示温度摄示度的标记

LCALL DIS_TEMP

;显示初始化的报警温度

MAIN1: MOV 20H,#0

LCALL KEY

;调用按键扫描程序

JNB 20H.0,DEC_TEMP

;报警湿度值加1

ADD_TEMP: INC TEMP_AL

LCALL DIS_TEMP AJMP MAIN1 DEC TEMP_AL LCALL DIS_TEMP

;显示改变后的报警温度

DEC_TEMP: JNB 20H.1,CONFIRM

;报警湿度值减1 ;显示改变后的报警温度

辽宁科技大学本科生毕业设计 第33页

AJMP MAIN1

CONFIRM: JNB 20H.2,MAIN1 ;如果没按任何键就返回MAIN1继续扫描 ;SETB SPK ;

LCALL DIS_TEMP1

CALL MENU_OK1 ;LCD显示温度采集和水位控制信息 LCALL DIS_TEMP1 ;显示已设定的温度报警值 MOV A,#0CEH

;当前温度摄示度标记的显示位置

CALL TEMP_BJ ;显示当前温度摄示度的标记

;SETB SPK SETB RED ;CLR GREEN

;

LJMP START

;================================================== DIS_TEMP: MOV A,TEMP_AL ;显示改变后的报警温度

MOV B,#10 DIV AB

MOV TEMP_AL2,A ;保存温度报警值的十位数 MOV LCD_X,#7 ;设置位置

;显示报警温度值的十位

CALL SHOW_DIG2 INC LCD_X

MOV A,TEMP_AL MOV B,#10 DIV AB

MOV A,B

;个位

MOV TEMP_AL1,A ;保存温度报警值的个位数

;显示报警温度值的个位

CALL SHOW_DIG2

RET

;================================================== DIS_WATER: MOV A,WATER

;显示当前水位的值

MOV B,#10 DIV AB

辽宁科技大学本科生毕业设计 第34页

MOV WATER_AL2,A ;保存温度报警值的十位数 MOV LCD_X,#7 ;设置位置

;显示报警温度值的十位

CALL SHOW_DIG1 INC LCD_X

MOV A,WATER MOV B,#10 DIV AB

MOV A,B

;个位

MOV WATER_AL1,A ;保存温度报警值的个位数

;显示报警温度值的个位

CALL SHOW_DIG1

RET

;================================================== ;================================================== DIS_TEMP1: MOV A,TEMP_AL ;显示已设定的温度报警值

MOV B,#10 DIV AB

MOV TEMP_AL2,A ;保存温度报警值的十位数 MOV LCD_X,#3 ;设置位置

;显示报警温度值的十位

CALL SHOW_DIG2 INC LCD_X

MOV A,TEMP_AL MOV B,#10 DIV AB

MOV A,B

;个位

MOV TEMP_AL1,A ;保存温度报警值的个位数

;显示报警温度值的个位

CALL SHOW_DIG2

RET

;================================================== START: CALL RE_18B20_1 确度

;检测通道1的DS18B20是否存在,并设置12位精

辽宁科技大学本科生毕业设计 第35页

CALL RESET1 ;18B20复位子程序,检测18B20是否存在 JNB FLAG1,START11 ;如果DS1820不存在则跳START11 ; CALL MENU_OK1 ; MOV A,#0CEH

; CALL TEMP_BJ ;显示温度摄示度的标记 JMP START21 START11: CALL MENU_ERROR1 MOV A,#0CBH

CALL TEMP_BJ ;显示温度摄示度的标记 JMP START

START21: ;检查到有温度传感器后的处理 CALL RESET1

;18B20复位子程序,再次检测18B20是否存在

;如果不存在则显示ERROR ;如果存在则显示OK

JNB FLAG1,START11 ;DS1820不存在则转到START11报错 MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE1

MOV A,#44H ; 发出温度转换命令 CALL WRITE1 CALL RESET1

MOV A,#0CCH ; 跳过ROM匹配 CALL WRITE1

MOV A,#0BEH ; 发出读温度命令 CALL WRITE1 CALL READ1

M1: CAll CONVTEMP TEMPHC、TEMPLC CAll DISPBCD

;显示区BCD码温度值刷新子程序,即把BCD转为十六进制 6FH-73H,;其中70H存放小数点,6FH存放十分

;处理温度BCD码子程序,并将处理结果存放到

LJMP M1

;读出温度值到TEMPH、TEMPL

;跳到温度处理、显示程序

辽宁科技大学本科生毕业设计 第36页

位数,71H存放个位数,72H存放十位数,73H存入百位数

MOV A,72H ;跳过85.0摄氏度

DISPLAY: CALL DELAY2

CALL CONV

;将采集到的温度在LCD1602显示出来

CJNE A,#8,DISPLAY MOV A,71H CJNE A,#5,DISPLAY MOV A,6FH CJNE A,#0,DISPLAY LJMP START

;LCALL DIS_TEMP1 ;显示已设定的温度报警值

MOV A,#0C5H

CALL TEMP_BJ ;显示报警温度摄示度的标记

LCALL DIS_WATER ;显示当前水位的值 MOV 20H,#0 LCALL KEY

;调用按键扫描程序

JNB 20H.0,DEC_WATER

LCALL DIS_WATER ;显示当前水位的值 AJMP COMPARE1

;当前水位与水位上限值80比较

;当前水位与水位上限值80比较

ADD_WATER:INC WATER

DEC_WATER:JNB 20H.1,COMPARE1

COMPARE1: CLR C

DEC WATER

;水位减1

LCALL DIS_WATER ;显示当前水位的值

;当前水位与水位上限值80比较

MOV A,WATER_AL2 ;取得当前水位的十位数 CJNE A,#8,NEXT11 ;十位数比较 AJMP LOOP1

;如果十位数相等,则转去比较个位数

;如果十位数小于8,转去比较下限值

NEXT11: JC COMPARE2

辽宁科技大学本科生毕业设计 第37页

CLR SPK

;如果十位数大于8就报警

SETB WATER-SW-H ;关闭给水泵 CLR RED

SETB GREEN AJMP COMPARE3

;转去当前温度与设定的报警温度比较

LOOP1: CLR C

SETB flag CLR SPK

;报警标记置位

;如果个位数大于0就报警

MOV A,WATER_AL1 ;取得当前水位的个位数 JZ COMPARE3

;如果个位数等于0去比较温度

SETB GREEN CLR RED

SETB WATER-SW-H ;当前水位高于上限值关闭给水泵开关

AJMP COMPARE3 COMPARE2: CLR C

;当前水位与下限比较

;取得当前水位的十位数

MOV A,WATER_AL2

CJNE A,#2,NEXT12 ;个数比较 AJMP COMPARE3

;如果十位数等于2,则表明水位大于或等于20就转去

比较温度

NEXT12: JNC COMPARE3 比较

SETB FLAG

;报警标记置位

;如果十位数小于2就报警

;十位数大于2就转去当前温度与设定的报警温度

CLR SPK

CLR WATER_SW_H ;如果当前水位低于下限值就打开给水泵开关

CLR BOILER_SW ;当前温度超过温度报警值关闭锅炉燃烧器开关,停止加

CLR RED

SETB GREEN

辽宁科技大学本科生毕业设计 第38页

AJMP COMPARE3

;转去当前温度与设定的报警温度比较

COMPARE3: CLR C

MOV A,72H

;当前温度与设定的报警温度比较

CJNE A,TEMP_AL2,NEXT1 ;实际温度值与报警温度值的十位数比较 AJMP NEXT

;十位数相等时就转去比较个位数

;实际温度值的十位数少时则转START0

NEXT1: JC START0

;SETB flag CLR SPK

;报警标记置位

;实际温度值的十位数高于报警温度值的十位数就报警

SETB BOILER_SW ;当前温度超过温度报警值关闭锅炉燃烧器开关,

停止加热 SETB RED

CLR GREEN

CLR BOILER_SW ;打开锅炉燃烧器开关,继续加热 LJMP START

;比较完毕,重新采集温度和水位

NEXT: CLR C

MOV A,71H

CJNE A,TEMP_AL1,NEXT2 ;实际温度值与报警温度值的个位数比较 AJMP NEXT0

;个位数相等时就转去比较十分位数

;实际温度值的个位数少时则转START0

NEXT2: JC START0

;SETB flag

;报警标记置位

CLR SPK ;十位数相等时,实际温度值的个位数高于报警温度值的个位数就报警

SETB BOILER_SW ;如果当前温度超过温度报警值时就关闭锅炉燃烧

器开关,停止加热

CLR RED SETB GREEN

LJMP START ;比较完毕,重新采集温度和水位

辽宁科技大学本科生毕业设计 第39页

NEXT0: MOV A,6FH JZ START0

;SETB flag CLR SPK

;实际温度值的十分位数等于0时则转START0

;报警标记置位

;十位数和个位数相等时,实际温度值的十分位数大于0就报警

SETB BOILER_SW ;如果当前温度超过温度报警值时就关闭锅炉燃烧

器开关,停止加热

CLR RED SETB GREEN LJMP START

;比较完毕,重新采集温度和水位

START0:

JB flag,LOOP4 集温度和水位

SETB SPK 续采集温度和水位

SETB RED CLR GREEN

;如果水位和温度都没有出现报警时就使绿灯亮,然后继

;如果水位出现报警但温度没有出现报警时就继续采

LOOP4: LJMP START

;====================================================================

;==============================================

;================================================ LP:

ORL P1,#03H;逻辑或,检测水位 MOV A,P1;读P1口

JNB ACC.3,LP1, P1.3=0跳转到LP1

JB ACC.4,LP2;当P1.4=0表示实际水位在下限,跳转 BK: MOV A #20

ACALL D2S;调延时2S子程序

AJMP LP

LP1:JNB ACC 4,L00P3;当P1.4=0则转

辽宁科技大学本科生毕业设计 第40页

SETB SPK;报警

SETB P1. 2;使P1 2=1,停止电机工作 LP4:SJMP L00P4;出现故障后程序进入 等待状态

LP3: CLR P1.2;启动电机 AJMP BK

LP2: SETB P1 2;电动机停止工作 电机工作 AJMP BK END

;================================================== ;LCD显示温度标记子程序

;================================================== TEMP_BJ:

;MOV A,#0CAH

CALL WCOM ;调用LCD写命令子程序 MOV DPTR,#BJ1 ;指针指到显示消息 MOV R1,#0 MOV R0,#2

BBJJ1: MOV A,R1 MOVC A,@A+DPTR

CALL WDATA ;调用LCD写数据子程序 INC R1

DJNZ R0,BBJJ1 RET BJ1:

DB 00H,\

;摄示度标记

;================================================= TEMP_SET:

;设定温度报警值

辽宁科技大学本科生毕业设计 第41页

MOV DPTR,#TEMP_SET1 ;指针指到显示消息 MOV A,#1 ;显示在第一行

CALL LCD_PRINT ;在LCD的第一行或第二行显示字符 RET TEMP_SET1:

DB \

;================================================= MENU_OK1:

;LCD显示温度采集和水位控制信息

MOV DPTR,#M_OK1 ;指针指到显示消息 MOV A,#1 ;显示在第一行

CALL LCD_PRINT ;在LCD的第一行或第二行显示字符 MOV DPTR,#M_OK2 ;指针指到显示消息 MOV A,#2 ;显示在第二行

CALL LCD_PRINT ;在LCD的第一行或第二行显示字符 RET M_OK1:

DB \ L:20\M_OK2:

DB \ \

;================================================= MENU_ERROR1:

;LCD显示传感器1不存在信息

MOV DPTR,#M_ERROR1 ;指针指到显示消息1 MOV A,#1 ;显示在第一行

CALL LCD_PRINT ;在LCD的第一行或第二行显示字符 MOV DPTR,#M_ERROR2 ;指针指到显示消息1 MOV A,#2 ;显示在第一行

CALL LCD_PRINT ;在LCD的第一行或第二行显示字符 RET M_ERROR1:

DB \ DS18B20 ERROR \M_ERROR2:

辽宁科技大学本科生毕业设计 第42页

DB \ \

;==================================================== RESET1:

;18B20复位子程序,检测18B20是否存在

SETB DATE_LINE1

NOP

CLR DATE_LINE1

MOV R0,#6BH ;主机发出延时复位低脉冲 MOV R1,#04H TSR11: DJNZ R0,$ MOV R0,#6BH DJNZ R1,TSR11

SETB DATE_LINE1 ;然后拉高数据线 NOP NOP NOP

MOV R0,#32H

TSR21: JNB DATE_LINE1,TSR31 ;等待DS18B20回应 DJNZ R0,TSR21

JMP TSR41 ; 延时

TSR31: SETB FLAG1 ; 置标志位,表示DS1820存在 JMP TSR51

TSR41: CLR FLAG1 ; 清标志位,表示DS1820不存在 JMP TSR71 TSR51: MOV R0,#06BH

TSR61: DJNZ R0,$ ; 时序要求延时一段时间 TSR71: SETB DATE_LINE1 RET

;======================================================= RE_18B20_1:

;检测通道1的DS18B20是否存在,并设置12位精确度

JB FLAG1,RE_18B20A1 RET RE_18B20A1:

辽宁科技大学本科生毕业设计 第43页

CALL RESET1 ;检测DS18B20是否存在 MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE1 ;调用传感器1写数据或命令子程序,下同 MOV A,#7FH ;12位精确度 LCALL WRITE1 RET

;-------------------------------------------------------------- ;将自定义字符写入LCD1602的CGRAM中 ;-------------------------------------------------------------- STORE_DATA:

MOV A,#40H CALL WCOM MOV R2,#08H MOV DPTR,#D_DATA MOV R3,#00H S_DATA:

MOV A,R3

MOVC A,@A+DPTR

CALL WDATA ;写入数据 INC R3

DJNZ R2,S_DATA RET

D_DATA:

DB 0CH,12H,12H,0CH,00H,00H,00H,00H

;============================================================== WRITE1:

;传感器1写数据或命令子程序

MOV R2,#8 ;一共8位数据

CLR C WR1:

CLR DATE_LINE1 ;开始写入DS18B20总线要处于复位(低)状态 MOV R3,#07

辽宁科技大学本科生毕业设计 第44页

DJNZ R3,$ ;总线复位保持16微妙以上

RRC A ;把一个字节DATA 分成8个BIT环移给C MOV DATE_LINE1,C ;写入一个BIT MOV R3,#3CH

DJNZ R3,$ ;等待100微妙 SETB DATE_LINE1 ;重新释放总线 NOP

DJNZ R2,WR1 ;写入下一个BIT SETB DATE_LINE1 RET

;============================================================== READ1:

;读取传感器1的温度子程序

MOV R4,#2 ; 将温度低位、高位从DS18B20中读出存入TEMPH、

TEMPL

MOV R1,#TEMPL RE00: MOV R2,#8 RE01: CLR CY

SETB DATE_LINE1 NOP NOP

CLR DATE_LINE1 ;读前总线保持为低 NOP NOP NOP

SETB DATE_LINE1 ;开始读总线释放 MOV R3,#09 ;延时18微妙 DJNZ R3,$

MOV C,DATE_LINE1 ;从DS18B20总线读得一个BIT MOV R3,#3CH

DJNZ R3,$ ;等待100微妙

RRC A ;把读得的位值环移给A

辽宁科技大学本科生毕业设计 第45页

DJNZ R2,RE01 ;读下一个BIT MOV @R1,A INC R1 DJNZ R4,RE00 RET

;******************按键检测程序****************************

KEY: JB K1,L1 ;判断K1是被否按下,否则转移L1

MOV R5,#1 LCALL DELAY JB K1,L1

;确认是否按下

JNB K1,$ ;等待键释放

SETB 20H.0 ;值增加置位 AJMP L2

L1: JB K2,L2 ; 判断K2是被否按下,否则转移L2

MOV R5,#1 LCALL DELAY JB K2,L2

;确认是否按下

JNB K2,$ ;等待键释放

SETB 20H.1 ;值减少置位

L2: JB K3,L3 ; 判断K2是被否按下,否则转移L3

MOV R5,#1 LCALL DELAY JB K3,L3

;确认是否按下

JNB K3,$ ;等待键释放

SETB 20H.2 ;值确定置位 L3:

RET

;***************************************************** ; 处理温度 BCD 码子程序

;**************************************************** CONVTEMP: MOV A,TEMPH ;判温度是否零下

辽宁科技大学本科生毕业设计 第46页

ANL A,#80H

JZ TEMPC1 ;温度零上转 CLR C

MOV A,TEMPL ;二进制数求补(双字节) CPL A ;取反加1 ADD A,#01H

TEMPC1: TEMPC11:

MOV TEMPL,A MOV A,TEMPH CPL A ADDC A,#00H MOV TEMPH,A SJMP TEMPC11 MOV TEMPHC,#0AH MOV A,TEMPHC SWAP A MOV TEMPHC,A MOV A,TEMPL

ANL A,#0FH ;乘0.0625 MOV DPTR,#TEMPDOTTAB MOVC A,@A+DPTR

MOV TEMPLC,A ;TEMPLC LOW=小数部分 BCD MOV A,TEMPL ;整数部分 ANL A,#0F0H ;取出高四位 SWAP A MOV TEMPL,A

MOV A,TEMPH ;取出低四位 ANL A,#0FH SWAP A

ORL A,TEMPL ;重新组合 MOV TEMP_ZH,A

;实时温度存放单元

本文来源:https://www.bwwdw.com/article/pk2w.html

Top