基于51单片机的水温控制器设计

更新时间:2024-05-12 23:14:01 阅读量: 综合文库 文档下载

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

毕业设计任务书

毕业设计课题 基于51单片机的水温控制器设计 学生姓名 钟小月 学 号 08

系 名 称 信息工程系 专业及班级 通信技术 讯联1201 指导教师 张卫兵

湖南信息职业技术学院 通信技术专业 2012 届学生毕业设计任务书

学生姓名 钟小月 毕业设计题目 学 号 08 专业 通信技术 基于51单片机的水温控制器设计 课题来源[2] 科学研究 班级 讯联1201 课题类型[1] 产品设计类 毕业设计时间 2014年 9 月 15 日至 2014 年 11 月 15 日 本设计以STC89C51为核心的温度控制系统的工作原理和设计方法。温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。单片机通过对信号进行相应处理,从而实现温度控制的目的。 课题简介 本产品可实现对温度的测量,并能根据设定值对温度环境进行调节,实现控温的目的。设计基于单片计算机的温度控制器,用于控制温度。具体要求如下: 课题任务 要求 1、温度连续可调,范围为0℃—99.9℃。 2、环境温度降低时(例如用电风扇降温),温度误差小于1℃。 3、用十进制数码管显示水的实际温度。 4、当温度低于设定的阀值时,相应的指示灯亮,同时相应的继电器吸合,继电器可以驱动负载。当温度高于报警值时,声光报警。 温度控制的静态误差小于0.1℃。 第1周:课题的确定及材料准备,了解设计思路,整理框图。 第2-3周:完成水温控制电路原理图设计。 第4-5周:根据实际情况修改并完成原理图,进行程序设计并完成水温控制器的Protues仿真。 第6周:程序的编译及仿真,进行PCB的设计与制作。 第7-8周:完成电路的组装与调试。 第9周:下载程序并进行联机与调试,测试功能并做好论文资料的收集。 第10周:毕业论文的撰写。 1、单片计算机原理及应用 张鑫,陈书谦 电子工业出版社。 2、《现代电子技术》 郑水云,杜丽霞 2008年第3期。 3、单片机编程与入门 杨西明,朱祺 北京机械工业出版社。 4、单片机原理及应用教程 刘瑞新 北京机械工业出版社 进程安排 主要参考文献 指导老师 意见 指导教师签字: 年 月 日 专业教研室意见 教研室主任签字: 年 月 日 所在系意见 系主任签字: 年 月 日

学生毕业设计开题报告书

学生姓名 钟小月 毕业设计题目 学 号 08 专业 通信技术 基于51单片机的水温控制器设计 课题来源[2] 科学研究 班级 讯联1201 课题类型[1] 产品设计类 毕业设计时间 2014 年 9 月 15日至 2014 年 11 月 15 日 一、选题依据和意义 温度无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用。随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计论述了一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C51单片机最小系统,测温电路、实时时钟电路、LCD液晶显示电路以及通讯模块电路等。 二、基本内容及解决的主要问题 基本内容:本课题设计的是一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。DS18B20温度传感器的特性:测温范围为-55℃~+125℃ ,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。 解决的主要问题:在现代冶金、石油、化工及电力生产过程中温度都起着非常重要的作用;基于单片机水温控制器系统大部分使用是在实验室、工业、医药、农业中。 三、 进度、步骤 1. 09月7 日-09月13日:下达任务、讲授、查资料; 2. 09月14日-10月2日:方案确定,软件设计; 3. 10月3 日-10月19日:软件调试; 4. 10月20日-11月01日:撰写毕业设计说明书和毕业论文; 5. 11月02日-11月15日:提交课题,毕业答辩。 四、方法、措施 设计方案如图一所示;它是由STC89C51单片机、继电器、数码管、键盘输入、DS18B20五部分组成。 继电器 STC89C51单片机 数码管 键盘输DS18B20 图一 系统设计框架 五、设计成果 六、主要参考文献[3] 1、李广弟,朱月秀,王秀山.《单片机基础》北京航空航天大学出版社,2001(07). 2、 蔡美琴,张为民等.《MCS-51系列单片机系统及其应用》高等教育出版社,2004(06). 3、 张毅刚,等.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,1997.

4、 刘瑞星,胡健等.《Protel DXP 实用教程》机械工业出版社,2003(04). 5、 于海生. 《计算机控制技术》 机械工业出版社 2007(05). 6、 谭浩强. 《C程序设计》 清华大学出版社. 指导教师意见 指导教师签名: 年 月 日 专业教研室意见 教研室主任签名: 年 月 日 所在系意见 负责人签名: 年 月 日

湖南信息职业技术学院 信息工程 系 2012 届毕业设计

评阅、答辩及成绩评定表 题 目 姓 名 指导教师 钟小月 张卫兵 姓名 答 辩 与 会 人 员 系别 所在 部门 职务 (职称) 基于51单片机的水温控制器设计 信息工程 姓名 专业 /班级 职务 职务 (职称) 通信技术 讯联1201 姓名 学号 职称 08 职务 (职称) 指导教师评语(主要对学生毕业设计的工作态度、研究内容与方法、工作量、文献应用、创新性、实用性、科学性及存在的不足等进行综合评价): 成绩: 指导教师签名: 年 月 日 答辩记录: 会议主持人: 记 录 人: 年 月 日 答辩小组意见: 评语: 成绩: 答辩委员会(组长)签名: 年 月 日 评定成绩: 评定等级: 系领导小组组长签名: 年 月 日 基于51单片机的水温控制器设计

摘要

随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计论述了一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C51单片机最小系统,测温电路、系统电源电路、LED液晶显示电路以及按键接口电路等。系统程序主要包括主程序,读出温度子程序,计算温度子程序、按键处理程序、LED显示程序以及数据存储程序等。

[关键词] STC89C51单片机;DS18B20;显示电路

目 录

一、引言.................................................................... 3

(一)课题研究的背景 ...................................................... 3 (二)课题研究的目的和意义 ................................................ 3 二、硬件电路的设计.......................................................... 3

(一)系统设计的框架 ...................................................... 4 (二)单片机最小系统电路 .................................................. 4 (三)单片机的选型 ........................................................ 5

1.STC89C51单片机简介 ................................................ 5 2.STC89C51主要功能及PDIP封装 ....................................... 7 3.STC89C51单片机引脚介绍 ............................................ 7 (四)温度传感器电路 ...................................................... 8

1.DS18B20 温度传感器简介............................................. 8 2.DS18B20引脚介绍 .................................................. 10 3.DS18B20内部结构 .................................................. 10 3.DS18B20程序流程图 ................................................ 11 (五)系统电源电路的设计................................................... 11 (六)LED显示电路........................................................ 12 (七)按键接口电路....................................................... 13 三、系统软件设计........................................................... 14

(一)计算温度子程序 ..................................................... 15 (二)按键处理子程序 ..................................................... 16 (三)计算温度子程序 ..................................................... 17 (四)显示数据刷新子程序 ................................................. 18 四、结束语................................................................. 19 参考文献................................................................... 20 致谢....................................................................... 21 附件1:系统原理图 ......................................................... 22 附件2:水温控制元件清单 ................................................... 23 附件3:程序设计 ........................................................... 24

一、引言 (一)课题研究的背景

工业控制是计算机的一个重要应用领域,计算机控制系统正是为了适应这一领域的需要而发展起来的一门专业技术,它主要研究如何将计算机技术、通过信息技术和自动控制理论应用于工业生产过程,并设计出所需要的计算机控制系统。随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计就是基于单片机STC89C51温度控制系统的设计,通过本次课程实践,我们更加的明确了单片机的广泛用途和使用方法,以及其工作的原理。 (二)课题研究的目的和意义

随着社会的发展,温度的测量及控制变得越来越重要。本文采用单片机STC89C51设计了温度实时测量及控制系统。单片机STC89C51 能够根据温度传感器DS18B20 所采集的温度在液晶屏上实时显示,通过控制从而把温度控制在设定的范围之内。所有温度数据均通过液晶显示器LED显示出来。系统可以根据时钟存储相关的数据。

通过该课程的学习使我们对计算机控制系统有一个全面的了解、掌握常规控制算法的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力。

二、硬件电路的设计

(一)系统设计的框架

本课题设计的是一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统其主要包括:电源模块、温度采集模块、按键处理模块、LED显示模块、以及单片机最小系统。

继电器 STC89C51单片机 数码管 键盘输入 DS18B20

图1 系统设计框架

(二)单片机最小系统电路

在课题设计的温度控制系统设计中,控制核心是STC89C51单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4K FLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1μS。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图2-1所示:

VCCK013RESET+C110uF241234567891011121314151617181920 P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTP3.0(RXD)P3.1(TXD)P3.2(INT0)P3.3(INT1)P3.4(T0)P3.5(T1)P3.6(WR)P3.7(RD)XTAL2XTAL1GNDVCC(AD0)P0.0(AD1)P0.1(AD2)P0.2(AD3)P0.3(AD4)P0.4(AD5)P0.5(AD6)P0.6(AD7)P0.7EA/VPPALE/PROGPSEN(A15)P2.7(A14)P2.6(A13)P2.5(A12)P2.4(A11)P2.3(A10)P2.2(A9)P2.1(A8)P2.0VCC4039383736353433323130292827262524232221C211.0592MHzR710K30Y1C330图2-1 单片机最小系统电路 89C52(1)内部方式时钟电路

在8051芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路,如图2-2所示。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。请读者特别注意时钟脉冲与振荡脉冲之间的二分频关系,否则会造成概念上的错误。一般地,电容C1和C2取30pF左右,晶体的振荡频率范围是1.2~12MHz。晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。8051在通常应用情况下,使用振荡频率为6MHz或12MHz。

8051XTAL1C1晶振1C2XTAL2至内部时钟电路

图 2-2 时钟振荡电路 (2)外部方式时钟电路

在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入惟一的公用外部脉冲信号作为各单片机的振荡脉冲。这时,外部的脉冲信号是经XTAL2引脚注入,其连接如图2-3所示。

VCC8051外部时钟信号TTL1XTAL2XTAL1VSS

图 2-3 外部时钟源接法

(3) 时序

时序是用定时单位来说明的。8051的时序定时单位共有4个,从小到大依次是:节拍、状态、机器周期和指令周期。它们之间的关系如下:

1)一个振荡脉冲的周期为节拍;

2)一个状态就包含两个节拍; 3)一个机器周期的宽度为6个状态; 4)一条指令周期由若干个机器周期组成。 (4) 单片机的复位电路

单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,复位后PC=0000H,使单片机从第一个单元取指令。单片机复位的条件是:必须使RST/VPD 或RST引脚加上持续两个机器周期(即24个振荡周期)的高电平。若时钟频率为12 MHz,每机器周期为1 μs,则只需2μs以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

单片机复位期间不产生ALE和PSEN信号,即ALE=1和PSEN=1。这表明单片机复位期间不会有任何取指操作。复位后,内部各专用寄存器状态如下:

PC: 0000H TMOD: 00H ACC: 00H TCON: 00H B: 00H TH0: 00H PSW: 00H TL0: 00H SP: 07H TH1: 00H DPTR: 0000H TL1: 00H P0~P3:FFH SCON: 00H IP: ***00000B SBUF: 不定 IE: 0**00000B PCON: 0***0000 其中,*表示无关位。注意:

(1)复位后PC值为0000H,表明复位后程序从0000H 开始执行,这一点在实训中已介绍。

(2)SP值为07H,表明堆栈底部在07H。一般需重新设置SP值。 (3)P0~P3口值为FFH。P0~P3口用作输入口时,必须先写入“1”。单片机在复位后,已使P0~P3口每一端线为“1”,为这些端线用作输入口做好了准备。 电路以STC89C51单片机最小系统为控制核心,测温电路由DS18B20提供,输入部分采用三个独立式按键S1、S2、S3。数码管显示部分。 (三)单片机的选型

本课题设计的温度控制系统主控制芯片选型为STC89C51单片机,其特点如下:

1.STC89C51单片机简介

STC89C51是由宏晶科技公司生产的与工业标准MCS-51指令集和输出管脚相兼容的单片机。

(1)中央处理器(CPU)

中央处理器是单片机的核心,完成运算和控制功能。8051的CPU能处理8位二进制数或代码。

(2)内部数据存储器(内部RAM)

8051芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。

(3)内部程序存储器(内部ROM)

8051共有4KB掩膜ROM,用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部ROM。

(4)定时/计数器

8051共有两个16位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。

(5)并行I/O口

MCS-51共有4个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入/输出。

(6)串行口

8051单片机有一个全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。

(7)中断控制系统

8051单片机的中断功能较强,以满足控制应用的需要。8051共有5个中断源,即外中断两个,定时/计数中断两个,串行中断一个。全部中断分为高级和低级共两个优先级别。

(8) 时钟电路

8051芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。系统允许的晶振频率一般为6 MHz和12 MHz。

从上述内容可以看出,MCS-51虽然是一个单片机芯片,但作为计算机应该具有的基本部件它都包括,因此,实际上它已是一个简单的微型计算机系统了。

2. STC89C51主要功能及PDIP封装

STC89C51主要功能如表1所示,其PDIP封装如图3所示 主要功能特性 兼容MCS51指令系统 32个双向I/O口 3个16位可编程定时/计数器中断 2个串行中断 2个外部中断源 2个读写中断口线 低功耗空闲和掉电模式 3.STC89C51引脚介绍

① 主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 ②外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 ③控制引脚(4根)

RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。

ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号

EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

④可编程输入/输出引脚(32根)

STC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7 综上所述,MCS—51系列单片机的引脚作用可归纳为以下两点: 1).单片机功能多,引脚数少,因而许多引脚具有第2功能;

2).单片机对外呈3总线形式,由P2、P0口组成16位地址总线;由P0口分

8K可反复擦写Flash ROM 256x8bit内部RAM 时钟频率0-24MHz 可编程UART串行通道 共6个中断源 3级加密位 软件设置睡眠和唤醒功能 表1:STC89C51主要功能

时复用作为数据总线。

U11234567891011121314151617181920P10P11P12P13P14P15P16P17RESETP30/RXDP31/TXDP32/INT0P33/INT1P34/T0P35/T1P36WRP37/RDX2X1GNDSTC89C52VCCP00P01P02P03P04P05P06P07EA/VPALE/PPSENP27P26P25P24P23P22P21P204039383736353433323130292827262524232221

图3 STC89C51封装图

(四)温度传感器电路

采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。

(1)DS18B20温度传感器简介

DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:

(1)系统的特性:测温范围为-55℃~+125℃ ,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。

(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。

(3)系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。

(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。

DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD,共用地线GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。

DS18B20的性能特点如下:

(1) 采用DALLAS公司独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;

(2)在使用中不需要任何外围元件;

(3)可用数据线供电,供电电压范围:+3.0V~+5.5V;

(4)测温范围:-55~+125℃。固有测温分辨率为0.5℃。当在-10℃~+85℃范围内,可确保测量误差不超过0.5℃,在-55~+125℃范围内,测量误差也不超过2℃;

(5)通过编程可实现9~12位的数字读数方式; (6)用户可自设定非易失性的报警上下限值;

(7)支持多点的组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温

(8)负压特性,即具有电源反接保护电路。当电源电压的极性反接时,能保护DS18B20不会因发热而烧毁,但此时芯片无法正常工作;

(9)DS18B20的转换速率比较高,进行9位的温度值转换只需93.75ms; (10)适配各种单片机或系统;

(11)内含64位激光修正的只读存储ROM,扣除8位产品系列号和8位循环冗余校验码(CRC)之后,产品序号占48位。出厂前产品序号存入其ROM中。在构成大型温控系统时,允许在单线总线上挂接多片DS18B20。

在本设计中采用外部供电方式实现DS18B20传感器与单片机的连接,其接口电路如图4所示。

图4 温度传感器接口

(2)DS18B20引脚介绍

图5:DS18B20引脚

各引脚功能为:I/O为数据输入/输出端(即单线总线),它属于漏极开路输出,外接上拉电阻后,常态下呈高电平。UDD是可供选用的外部电源端,不用时接地,GND为地,NC空脚。 (3) DS18B20的内部结构

DS18B20的内部结构主要包括7部分:寄生电源、温度传感器、64位激光(loser)ROM与单线接口、高速暂存器(即便筏式RAM,用于存放中间数据)、TH触发寄存器和TL触发寄存器,分别用来存储用户设定的温度上下限值、存储和控制逻辑、位循环冗余校验码(CRC)发生器。

图6 DS18B20内部结构图 (4)DS18B20程序设计

开始 18B20复位 否 18B20存在? 是 发出温度转换命令 显示测温写入18B20 点位置 延时 延时 读温度前复位 发出读温度命令 写入18B20 读入温度值数据 返回

图7程序流程图

(五)系统电源电路的设计

控制系统主控制部分电源需要用5V直流电源供电,其电路如图8所示,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。其主要原理是把单相交流电经 过电源变压器、整流电路、滤波电路、稳压电路转换成稳

定的直流电压。

由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。需通过低通滤波电路滤波,使输出电压平滑。稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片7805解决了电源稳压问题。

在该温度控制系统中,其电源电路设计如下图8所示。

图8电源电路模块

(六)LED显示电路

本课题设计的温度控制系统是采用液晶屏4-LED数码管作为显示模块,其接口原理图如下图9所示:

图9 液晶显示接口电路

(七)按键接口电路

本课题设计采用的键盘模块,其接口原理图如下图10所示

图10 键盘模块电路

三、系统软件设计

系统的软件主要是采用C语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘等模块。用的是循环查询方式,来显示和控制温度,主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值并负责调用各子程序,其程序流程如图11

系统程序流程图。

初始化 开始 启动DS18B20 读温度 计算温度 LED显示

图11系统程序流程图

(一)计算温度子程序

读出温度子程序的主要功能包括初始化,判断DS18B20是否存在,若存在则进行一系列的读操,作若不存在则返回。其程序流程图如图12所示。

开始 初始化 DS18B20存在? ROM操作命令 存储操作命令 读取温度值 返回

图12读温度流程图 (二)按键处理子程序

按键处理子程序主要是负责参数的设置,主程序每循环一次都要对按键进行扫描,判断是否有输入键按下则进行一系列的按键输入操作。其程序流程框图如图13所示。

开始 否 ENTER键是否按下 是 是 ENTER-FLAG为1 否 是 是否由ENTER按下 否 是 是否由UP按下 否 UP子程序 是否由DOWN按下 DOWN子程序 否 DISPLAY显示 是 ENTERflag=1 子程序退出子程序(RET)返回主界面

图13 温度转换流程图

(三)计算温度子程序

计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图14所示。

开始 N 温度零下? Y 温度值取补码置“—”标志 置“+”标志 计算小数位温度 BCD值

图14计算温度子程序

(四)显示数据刷新子程序

显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图15

结束 计算整数位温度BCD值

结束 温度数据移入显示寄存器 N

十位数0? Y 百位数0? Y 十位数显示符号百位数不显示 百位数显示数据(不显示符号) N 图15 数据刷新子程序

四、结束语

通过此次毕业论文的课题设计,我们学会了怎样把所学的书本知识应用于实践中去,并学会了如何去思考整个控制系统的软硬件设计。实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。

致谢

岁月如梭,如歌。转眼间,三年的求学生活即将结束,站在毕业的门槛上,回首往昔,奋斗和辛劳成为丝丝的记忆,甜美与欢笑也都尘埃落定。心中有无尽的难舍与眷恋,从这里走出,对我的人生来说,将是踏上一个新的征程。

本文的顺利完成,离不开各位老师、同学和朋友的关心和帮助。在此,向我的指导老师刘婷老师表示衷心的感谢并致以崇高的敬意!她严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;她诲人不倦的敬业精神以及宽容的待人风范给予我无尽的启迪。

在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成学业,感激他们一直以来对我的抚养与培育。

感谢一直陪伴在我身边的同学、朋友感谢她们为我提出的有益的建议和意见,三年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。

最后,我要特别感谢各位任课老师,尤其是张卫兵老师和孙小进老师。是他们在我毕业的最后给了我巨大的帮助与鼓励,使我能够顺利完成毕业论文,在此表示衷心的感激。

参考文献

[1] 李广弟,朱月秀,王秀山.《单片机基础》北京航空航天大学出版社,2001(07). [2] 蔡美琴,张为民等.《MCS-51系列单片机系统及其应用》高等教育出版社,2004(06).

[3] 张毅刚,等.MCS-51单片机应用设计[M].哈尔滨工业大学出版社,1997. [4] 刘瑞星,胡健等.《Protel DXP 实用教程》机械工业出版社,2003(04). [5] 于海生. 《计算机控制技术》 机械工业出版社 2007(05). [6] 谭浩强. 《C程序设计》 清华大学出版社.

[7] 康华光. 《电子技术基础 模拟部分》 高等教育出版社 1998(08). [8] 余锡存. 《单片机原理与接口技术》 西安电子科技大学出版社,2003.

a=c/100; //计算得到十位数字 b=c/10-a*10; //计算得到个位数字 m=c/10; //计算得到整数位 n=c-a*100-b*10; //计算得到小数位 if(m<0){m=0;n=0;} //设置温度显示上限

if(m>99){m=99;n=9;} //设置温度显示上限 }

/*****显示开机初始化等待画面*****/ void Disp_init(void) {

P0 = ~0x80; //显示---- P2 = 0x7F; //依次打开各位 Delay(200); //延时 P2 = 0xDF; Delay(200); P2 = 0xF7; Delay(200); P2 = 0xFD; Delay(200);

P2 = 0xFF; //关闭显示 }

/*****显示温度子程序*****/

void Disp_Temperature(void) //显示温度 {

P0 = ~0x98; //显示C P2 = 0x7F; //打开位 Delay(400); //延时

P2 = 0xff; //关闭显示 P0=~LEDData[n]; //显示个位 P2 = 0xDF; Delay(400);

P2 = 0xff; //关闭显示 P0 =~LEDData[m]; //显示十位 DIAN = 0; //显示小数点 P2 = 0xF7; Delay(400);

P2 = 0xff; //关闭显示 P0 =~LEDData[m/10]; //显示百位 P2 = 0xFD; Delay(400);

P2 = 0xff; //关闭显示 }

/*****显示报警温度子程序*****/

void Disp_alarm(uchar baojing) {

P0 =~0x98; //显示C P2 = 0x7F; //选中位 Delay(200);

P2 = 0xff; //关闭显示

P0 =~LEDData[baojing]; //显示十位 P2 = 0xDF; Delay(200);

P2 = 0xff; //关闭显示

P0 =~LEDData[baojing/10]; //显示百位 P2 = 0xF7; Delay(200);

P2 = 0xff; //关闭显示

if(set_st==1)P0 =~0xCE; //设置上限时显示H else if(set_st==2)P0 =~0x1A; //设置下限时显示L P2 = 0xFD; Delay(200);

P2 = 0xff; //关闭显示 }

/*****报警子程序*****/ void Alarm() {

if(x>=10){beep_st=~beep_st;x=0;} //控制闪烁(x随定时器每50ms加1,10次时500ms,这里闪烁就是500ms亮500ms灭) if(m>=shangxian) //温度大于上限时 {

ALAM=0; //制冷继电器吸合 ALAM1=1;

if(beep_st==1)//控制蜂鸣器闪烁变量为1时 BEEP=0; //蜂鸣器响

else //控制蜂鸣器闪烁变量为0时 BEEP=1; //蜂鸣器停止 }

else if(m

ALAM1=0; //升温继电器吸合 ALAM=1;

if(beep_st==1)//控制蜂鸣器闪烁 BEEP=0; else BEEP=1; }

else //水温在上下限范围内时

{

BEEP=1; //关闭蜂鸣器

ALAM=1; //关闭加热和制冷继电器 ALAM1=1; } }

/*****主函数*****/ void main(void) {

uint z;

InitTimer(); //初始化定时器 EA=1; //全局中断开关

TR0=1; //打开定时器定时开关 ET0=1; //开启定时器0

IT0=1; //外部中断下降沿有效 IT1=1;

check_wendu();

check_wendu(); //读取两次温度,防止开机读取到85°C,使继电器误操作

for(z=0;z<300;z++) //开机画面 {

Disp_init(); }

while(1) //while循环 {

if(SET==0) //判断设置键是否按下 {

Delay(2000); //延时去抖

do{}while(SET==0); //执行空语句,判断按键是否松开,松开向下执行,否则重新执行空语句

set_st++;x=0;shanshuo_st=1; //设置键松开后将设置变量加1,闪烁标志位置1

if(set_st>2)set_st=0; //当设置完成时,退出设置 }

if(set_st==0) //正常工作时 {

EX0=0; //关闭外部中断0 EX1=0; //关闭外部中断1 check_wendu();

Disp_Temperature(); //检测温度 Alarm(); //报警检测 }

else if(set_st==1) //设置上限时 {

BEEP=1; //关闭蜂鸣器 ALAM=1;

ALAM1=1; //继电器关闭 EX0=1; //开启外部中断0 EX1=1; //开启外部中断1

if(x>=10){shanshuo_st=~shanshuo_st;x=0;}

if(shanshuo_st) {Disp_alarm(shangxian);} //闪烁 }

else if(set_st==2) //设置下限时 {

BEEP=1; //关闭蜂鸣器 ALAM=1;

ALAM1=1; //关闭继电器 EX0=1; //开启外部中断0 EX1=1; //开启外部中断1

if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st) {Disp_alarm(xiaxian);} //闪烁 } } }

/*****定时器0中断服务程序*****/ void timer0(void) interrupt 1 {

TH0=0x3c; TL0=0xb0; //12MHz晶振时定时50ms x++; }

/*****外部中断0服务程序*****/ void int0(void) interrupt 0 {

EX0=0; //关外部中断0

if(DEC==0&&set_st==1) //设置上限时按下减按键 {

do {

Disp_alarm(shangxian); //显示设置 }

while(DEC==0);

shangxian--; //将上限值减1

if(shangxian<=xiaxian)shangxian=xiaxian+1; //上限值最小比下限值大1 }

else if(DEC==0&&set_st==2) //设置下限时按下减按键 {

do {

Disp_alarm(xiaxian); }

while(DEC==0); xiaxian--; //下限减1

if(xiaxian<0)xiaxian=0; //减到0时停止 } }

/*****外部中断1服务程序*****/ void int1(void) interrupt 2 {

EX1=0; //关外部中断1

if(ADD==0&&set_st==1) //设置上限时按下加按键 {

do {

Disp_alarm(shangxian); }

while(ADD==0);

shangxian++; //上限值加1

if(shangxian>99)shangxian=99;//最大加到99 }

else if(ADD==0&&set_st==2) //设置下限时按下加按键 {

do {

Disp_alarm(xiaxian); }

while(ADD==0); xiaxian++; //下限加

if(xiaxian>=shangxian)xiaxian=shangxian-1; //下限最大加到上限值减1 } }

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

Top