水温控制系统毕业设计.docx
- 文档编号:11873560
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:22
- 大小:164.92KB
水温控制系统毕业设计.docx
《水温控制系统毕业设计.docx》由会员分享,可在线阅读,更多相关《水温控制系统毕业设计.docx(22页珍藏版)》请在冰豆网上搜索。
水温控制系统毕业设计
学科基础课硬件课程设计
设计说明书
水温控制系统设计
学生姓名
学号
班级
成绩
指导教师
计算机科学与技术系
2010年9月10日
学科基础课硬件课程设计评阅书
题目
水温控制系统设计
学生姓名
学号
指导教师评语及成绩
成绩:
教师签名:
年月日
答辩教师评语及成绩
成绩:
教师签名:
年月日
教研室意见
总成绩:
室主任签名:
年月日
课程设计任务书
2010—2011学年第一学期
专业:
计算机科学与技术学号0718014092姓名:
操瑞峰
课程设计名称:
学科基础课硬件课程设计
设计题目:
水温控制系统设计
完成期限:
自2010年8月30日至2010年10月10日共2周
设计依据、要求及主要内容(可另加附页):
一、目的任务:
掌握使用单片机设计水温控制系统的原理。
设置相应的按键,按相应的按键时应能对预定温度进行设置,并将其显示出来,要求误差不大于1度,并且要求弱电与强电分离,以保安全。
二、设计内容:
1.复习相关课程内容:
单片机原理及应用、计算机控制等课程相关内容;汇编语言程序设计的相关内容;熟悉模拟电路、数字电路的相关知识;
2.熟悉实验相关器材的主要功能。
3.在上述基础上,根据课程设计的基本要求,完成以下各项任务(反映在设计说明书中):
(1)题目要求涉及的硬件电路图及摘要说明。
(2)题目的工作原理及相应描述。
(3)程序流程框图。
(4)程序文本输入及实验完成。
三、时间安排:
1周一~1周三完成相关知识点的复习与软硬件设计;
1周四~2周三完成实验调试和编写设计说明书;
2周四~2周五进行课程设计验收、答辩。
四、设计要求:
1.软件程序文档;2.硬件电路图(用专用软件);3.完成实验;4.完成设计说明书。
指导教师(签字):
教研室主任(签字):
批准日期:
年月日
摘要
温度控制是无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用,过低的温度或过高的温度都会使水资源失去应有的作用,从而造成水资源的巨大浪费。
特别是在当前全球水资源极度缺乏的情况下,我们更应该掌握好对水温的控制,把身边的水资源好好地利用起来。
水温控制在工业及日常生活中应用广泛,分类较多,不同水温控制系统的控制方法也不尽相同,其中以PID控制法最为常见。
单片机控制部分采用AT89C51单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。
然而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变PID调节参数值以取得佳性能。
关键词:
单片机、水温控制、AT89C51、BS18B20
目录
1课题描述1
2问题分析和任务定义2
2.1问题分析2
2.2水温控制系统总体框图2
3硬件电路设计3
4程序设计4
4.1程序流程图4
4.2程序代码6
5电路仿真14
5.1仿真软件14
5.2仿真过程14
6调试、测试与结果分析16
6.1仿真16
6.2测试16
6.3结果分析16
7总结17
8心得体会18
参考文献19
1课题描述
水温控制在工业及日常生活中应用广泛,分类较多,不同水温控制系统的控制方法也不尽相同,其中以PID控制法最为常见。
单片机控制部分采用AT89C51单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。
然而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变PID调节参数值以取得佳性能。
本文首先用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。
然后在模型参考自适应算法MRAC基础上,用单片机实现了自适应控制,弥补了传统PID控制结构在特定场合下性能下降的不足,设计了一套实用的温度测控系统,使它在不同时间常数下均可以达到技术指标。
此外还有效减少了输出继电器的开关次数,适用于环境参数经常变化的小型水温控制系统。
开发环境:
微机windowsXP操作系统、DICE反汇编环境、Protues仿真系统、Keil环境
2问题分析和任务定义
2.1问题分析
实际上题目的任务就是要设计一个温控系统,系统的功能是温度测量和控温
在测量部分,要求测量40~90ºC的温度范围,还规定了测量的精度需高于1ºC,测温的结果要求显示。
在控制部分,要求系统能够将水温调节到给定的温度,并进行保温。
题目并未规定温度调节的时间长短,但显然调节时间越短越好。
题目没有具体给出具体加热的器具和方式,因此选手必须自行选择和制作加热装置,然后才能真正进行电路制作。
在发挥部分,还要求提高温度系统的控制性能,缩短调节时间,提高控制精度,增加打印功能。
2.2水温控制系统总体框图
图2.1总体设计
3硬件电路设计
水温控制硬件电路图,如图3.1所示:
图3.1水温控制硬件电路图
4程序设计
4.1程序流程图
(1)主程序流程图
图4.1水温控制主程序流程图
(2)软件结构程序流程图
图4.2软件结构程序流程图
4.2程序代码
;用于获取设置的温度值
TEMP_GETSHEQU10H
TEMP_GETSLEQU11H
;用于在数码管上显示
TEMP_SETHHEQU12H
TEMP_SETLLEQU13H
;用于存放实时温度值
A_BITEQU14H;个位
B_BITEQU15H;十位
;按键输入引脚定义
K1EQUP2.0
K2EQUP2.1
;控制状态引脚定义
DS1820EQUP3.7
FLAGEQU20H.1;DS18B20是否存在标记
DQEQUP3.7
;===========主程序===========
ORG0000H
JMPSTART
ORG03H
JMPEXT0
ORG0013H
JMPEXT1
START:
MOVA,#02H;设置温度值为:
25
MOVDPTR,#TABLE3
MOVCA,@A+DPTR
MOVTEMP_SETHH,A
MOVA,#05H
MOVDPTR,#TABLE3
MOVCA,@A+DPTR
MOVTEMP_SETLL,A
MOVIE,#10000101B
MOVIP,#00000001B
MOVTCON,#00000101B
MOVSP,#70H;设置堆栈指针
MOVR7,#00H;R7为按键K1次数记录
MOVR6,#00H;R6为按键K2次数记录
;============数码管显示子程序============
DISPLAY:
MOVP0,#0FFH
MOVA,TEMP_SETHH
MOVP0,A
MOVA,#00000001B
MOVP1,A
ACALLDELAY
ACALLTEMP_GETSHH1;调用该子程序,以便保存设置温度值的十位数的值
MOVP0,#0FFH
MOVA,TEMP_SETLL
MOVP0,A
MOVA,#00000010B
MOVP1,A
ACALLDELAY
ACALLTEMP_GETSLL1;调用该子程序,以便保存设置温度值的个位数的值
MOVP0,#0FFH
MOVA,#0BFH
MOVP0,A
MOVA,#00000100B
MOVP1,A
ACALLDELAY
MOVP0,#0FFH
MOVA,#0BFH
MOVP0,A
MOVA,#00001000B
MOVP1,A
ACALLDELAY
ACALLTEMP_DISPLAY;调用实时温度显示子程序
JMPDISPLAY
;============按键扫描子程序============
EXT0:
PUSHACC
PUSHPSW
INCR6
MOVA,R6
CJNEA,#10,DD1
MOVR6,#00H
MOVA,R6
DD1:
MOVDPTR,#TABLE1
MOVCA,@A+DPTR
MOVTEMP_SETHH,A
;ACALLDELAY
POPPSW
POPACC
RETI
EXT1:
PUSHACC
PUSHPSW
INCR7
MOVA,R7
CJNEA,#10,DD2
MOVR7,#00H
MOVA,R7
DD2:
MOVDPTR,#TABLE2
MOVCA,@A+DPTR
MOVTEMP_SETLL,A
;ACALLDELAY
POPPSW
POPACC
RETI
;=========================
;=========获取设置温度值的子程序=========
TEMP_GETSHH1:
;PUSHACC
MOVA,TEMP_SETHH;获取设置温度值的十位数
;MOVP0,#0FFH
MOVTEMP_GETSH,A
MOVR0,#0FFH
TEMP1:
INCR0
MOVA,R0
MOVDPTR,#TABLE3
MOVCA,@A+DPTR
MOVR1,TEMP_GETSH
CLRC
SUBBA,R1
JNZTEMP1
MOVTEMP_GETSH,R0
;POPACC
RET
TEMP_GETSLL1:
;PUSHACC
MOVA,TEMP_SETLL;获取设置温度值的个位数
MOVTEMP_GETSL,A
MOVR0,#0FFH
TEMP2:
INCR0
MOVA,R0
MOVDPTR,#TABLE3
MOVCA,@A+DPTR
MOVR1,TEMP_GETSL
CLRC
SUBBA,R1
JNZTEMP2
MOVTEMP_GETSL,R0
;POPACC
RET
;========================================
;==========初始化及读取温度值子程序======
RE_TEMP:
SETBDQ
ACALLRESET_1820
JBFLAG,ST
RET
ST:
MOVA,#0CCH
ACALLWRITE_1820
MOVA,#44H
ACALLWRITE_1820
ACALLRESET_1820
MOVA,#0CCH
ACALLWRITE_1820
MOVA,#0BEH
ACALLWRITE_1820
ACALLREAD_1820
RET
;========================================
;==========DS18B20复位初始化子程序=======
RESET_1820:
SETBDQ
NOP
CLRDQ
;主机发出延时537us的复位低脉冲
MOVR1,#3
DLY:
MOVR0,#107
DJNZR0,$
DJNZR1,DLY
;然后拉高数据线
SETBDQ
NOP
NOP
NOP
;等待DS18B20回应
MOVR0,#25H
T2:
JNBDQ,T3
DJNZR0,T2
JMPT4
;置标志位FLAG=1,表示DS18B20存在
T3:
SETBFLAG
JMPT5
;清标志位FLAG=0,表示DS18B20不存在
T4:
CLRFLAG
JMPT7
;时序要求延时一段时间
T5:
MOVR0,#117
T6:
DJNZR0,T6
T7:
SETBDQ
RET
;========================================
;===========写入DS1820子程序=============
;写入DS1820
WRITE_1820:
MOVR2,#8;一共8位数据
CLRC;C=0
WR1:
CLRDQ;总线低位,开始写入
MOVR3,#7
DJNZR3,$;保持16us以上
RRCA;把字节DATA分成8位,环移给C
MOVDQ,C;写入一个位
MOVR3,#23
DJNZR3,$;等待
SETBDQ;重新释放总线
NOP
DJNZR2,WR1;写入下一个位
SETBDQ;释放总线
RET
;========================================
;===========读出DS1820子程序=============
;将温度值从DS18B20中读出
READ_1820:
MOVR4,#2;读取两个字节的数据
MOVR1,#29H;低位存入TEMP_GETCL,高位存入TEMP_GETCH
RE0:
MOVR2,#8;数据一共8位
RE1:
CLRC
SETBDQ
NOP
NOP
CLRDQ;读前总线保持为低
NOP
NOP
NOP
SETBDQ;开始读总线释放
MOVR3,#9;延时18us
DJNZR3,$
MOVC,DQ;从总线读到一个位
MOVR3,#23
DJNZR3,$;等待50us
RRCA;把读到的位值环移给A
DJNZR2,RE1;读下一个位
MOV@R1,A
DECR1
DJNZR4,RE0
RET
;========================================
;=============温度显示子程序=============
TEMP_DISPLAY:
ACALLRE_TEMP;调用读取温度子程序
ACALLTURN
ACALLDATAES1
MOVA,29H
MOVB,#10
DIVAB
MOVB_BIT,A
MOVA_BIT,B
MOVP0,#0FFH
MOVDPTR,#TABLE3
MOVA,B_BIT
MOVCA,@A+DPTR
MOVP0,A
MOVP1,#00010000B
ACALLDELAY
MOVA,A_BIT
MOVP0,#0FFH
MOVCA,@A+DPTR
MOVP0,A
MOVP1,#00100000B
ACALLDELAY
RET
;========================================
;=============数据转化子程序=============
TURN:
MOVA,29H
MOVC,40H;28的位地址
RRCA
MOVC,41H
RRCA
MOVC,42H
RRCA
MOVC,43H
RRCA
MOV29H,A
RET
;========================================
;=============处理温度数据子程序=========
DATAES1:
MOVA,TEMP_GETSH
MOVB,#00001010B
MULAB
MOVR0,A
MOVA,TEMP_GETSL
ADDA,R0
MOVR0,A
MOVA,B_BIT
MOVB,#00001010B
MULAB
MOVR1,A
MOVA,A_BIT
ADDA,R1
MOVR1,A
MOVA,R0
CLRC
SUBBA,R1
JZDDAS3
RLCA
JCDDAS4
MOVP2,#11011111B
JMPDDAS5
DDAS3:
MOVP2,#10111111B
JMPDDAS5
DDAS4:
MOVP2,#01111111B
DDAS5:
ACALLDELAY
RET
;========================================
;===============延时子程序===============
DELAY:
;延时3ms
MOVR0,#25
DD3:
MOVR1,#100
DJNZR1,$
DJNZR0,DD3
RET
TABLE1:
;设置温度值十位数代码表
DB0B0H;3
DB99H;4
DB92H;5
DB82H;6
DB0F8H;7
DB80H;8
DB90H;9
DB0C0H;0
DB0F9H;1
DB0A4H;2
TABLE2:
;设置温度值个位数代码表
DB92H;5
DB82H;6
DB0F8H;7
DB80H;8
DB90H;9
DB0C0H;0
DB0F9H;1
DB0A4H;2
DB0B0H;3
DB99H;4
TABLE3:
;数码管显示代码表
DB0C0H;0
DB0F9H;1
DB0A4H;2
DB0B0H;3
DB99H;4
DB92H;5
DB82H;6
DB0F8H;7
DB80H;8
DB90H;9
END
5电路仿真
5.1仿真软件
电路仿真中采用
Proteus仿真软件。
该软件简单易用,容易上手,元器件较为齐全,仿真稳定,功能强大,故采用了此仿真软件。
5.2仿真过程
建立仿真电路图,如下图所示:
图5.1水温控制设计仿真电路图
6调试、测试与结果分析
6.1仿真
根据水温控制设计原理,可以按照以下步骤来完成仿真:
(1)根据要求在Proteus中选取元器件,设计电路图。
(2)编写代码,实现软件设计。
(3)使用Kiel编译程序,产生相应的Hex文件。
(4)将Hex文件装入Proteus仿真软件中,实现仿真。
6.2测试
(1)根据要求选取元器件。
(2)根据所设计电路图连接电路:
(3)编写代码,实现软件设计。
(4)使用Kiel编译程序,产生相应的Hex文件。
(5)将Hex文件装入DICE中,下载到AT89C51中,运行系统。
6.3结果分析
通过按照设计的电路图连接电路,装载、编译并运行程序,可以实现通过温度的变化,系统给出相应的警示。
7总结
微型计算机的出现和大量使用将人类社会带入一个新的时代,单片微型计算机(简称单片机)在其中扮演着十分重要的角色。
虽然它没有常见的PC那样大的体积和重量,不会在办公桌或控制台上占据一个显要的位置,但它就像小小的螺丝钉一样,镶嵌在人们工作、生活中需要计算、控制、测量等智能活动的各个角落。
单片机以其体积小、可靠性高、控制功能强、使用方便、性能价格比高、容易产品化等特点,在智能仪表、机电一体化、实时控制、分布式多机系统、家用电器等各个领域得到了广泛应用,对各个行业的技术改造和产品的更新换代起着重要的推动作用,对人们生活质量的提高产生了深刻的影响。
本次《基于单片机的水温控制系统设计》是以AT89C51为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。
在系统的软硬件调试过程中,不断地有问题出现,如OP-07、ADC0804会发烫,串行通信…,但是在老师和同学的指导和帮助下,通过电路检查、原理分析、程序修改等工作,这些问题都一一得到了解决,所以在这次调试过程中,我们学到了很多知识,同时也大大地提高了我们的实际动手能力,这对我们以后的系统设计会有很大的帮助。
同时,该系统还存在着一些问题,如温度显示精度不高,没有采用小数部分;PID算法的参数不够精确,这影响水温达到稳定的时间。
8心得体会
1、硬件装焊方面要有足够的耐心和细心,就算电路设计的再好,在焊接时出一点小差错,也是不允许的,往往电路的错误都是由于一些小问题引起的,如短路等,将造成不可预测的后果
2、软件方面注意的细节也很多,下面简单介绍一下这阵子写程序得到的一些经验:
(1)写较大的程序时一定要事先做好资源分配。
(2)堆栈指针SP应设初值。
(3)R1、R0也应规定好用哪一区的,即设PSW.3和PSW.4。
(4)进入中断时一定要记得保护ACC和PSW(视情况而定)。
(5)不止进中断时要保护,有时候在正常程序下也要对某些值进得保护。
可用堆栈式的保护也可先赋值给其他地址,过后再赋回来
(6)妥善使用位地址,位地址可做为一些标志位,可以给编程带来很大的方便。
在本程序中,我就用了三个位地址,使程序大大的简化了
参考文献
[1]李群芳.单片微型计算机与接口技术.电子工业出版社,2005.1
[2]何立民.MCS-51单片机应用系统设计.北京航空航天大学出版社,2000.3
[3]戴梅鄂.微型计算机技术及应用.清华大学出版社,2008.2
[4]李建忠.单片机原理及应用.西安电子科技出版社,2008.2
[5]沈美明.汇编语言程序设计.清华大学出版社,2008.10
[6]路而红.电子设计自动化应用技术.北京希望电子出版社,2000.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水温 控制系统 毕业设计