苏州天才家教网之水温控制器的设计软件部分Word文件下载.docx
- 文档编号:20924675
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:24
- 大小:114.64KB
苏州天才家教网之水温控制器的设计软件部分Word文件下载.docx
《苏州天才家教网之水温控制器的设计软件部分Word文件下载.docx》由会员分享,可在线阅读,更多相关《苏州天才家教网之水温控制器的设计软件部分Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
第四章核心部件简介及元件清单5
4.1元件清单5
4.2AT89S52单片机简介5
4.3数字温度传感器DS18B209
第五章软件设计10
5.1程序流程图10
5.2程序清单11
第六章系统仿真及测试20
6、1系统仿真20
6、2系统测试20
第七章结论和心得体会21
7、1结论21
7、2心得体会21
第一章引言
水是生命之源,这的确是最中肯的评价,自从生命在水中形成的第一天起,水在生命体中所起的作用就没有发生过改变,无论日常生活还是工业生产过程都离不开水,水温控制器广泛应用于社会生产、生活中的各个领域,如家用电器、汽车、材料、生物工程等,都起着非常重要的作用,温度过低或过高都会使水资源失去应有的作用,降低水资源的利用率,而且会造成水资源的巨大浪费,造成不必要的损失,给生活和生产带来许多不利因素,并且不符合当代社会的可持续发展观。
随着科技的进步和高新技术的不断发展与应用,近年来单片机发展十分迅速,应用十分广泛,单片机的应用已经渗透到仪器仪表、家电、机电一体化、产品研发与开发等各个行业,目前单片机已渗透到我们生活的各个领域,几乎很难找到没有单片机足迹的领域。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、(苏州家教网)全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说全自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。
科技越发达,智能化的东西就越多。
因此学习与应用单片机是社会发展的必然需求。
本设计是以AT89S52单片机为核心的水温控制器,通过采用C语言和汇编语言混合编程的模式来实现程序的功能,进而控制水温。
传统的温度采集方法不仅费时费力,而且精度差,单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。
本系统采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,大大简化了电路的复杂度,以及算法的要求。
本文介绍单片机结合DS18B20的水温控制器的设计,因此,本系统用一种新型的可编程温度传感器(DS18B20),不需A/D转换电路和复杂的信号调理电路,能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。
第二章设计要求和工作原理
2.1设计要求
用单片机设计一个水温控制器,满足如下技术要求:
1、初始温度设为500C;
2、越限报警温度设为700C;
3、控制精度为1℃;
4、控制范围为环境温度室温到700C。
5、电路包括温度显示功能,按键功能、报警功能。
2.2工作原理
本设计是以AT89S52单片机为核心的水温控制原理和设计方法,加热温度通过按键电路来设置,数码管用来显示设置的温度值,温度芯片DS18B20用来测出环境温度,传到单片机进行处理,蜂鸣器用来报警,如果温度超过70℃,蜂鸣器发出声音,发出警报。
如果控制温度大于设定温度,则关闭加热器,如果控制温度小于设定温度,则打开加热器。
第三章系统设计
3.1框图设计
基于AT89S52单片机水温控制器由AT89S52单片机、键盘、显示器、温度检测和加热装置等组成,框图如下所示:
晶振电路
复位电路
温度传感器
加热装置
按键
光电隔离
AT89S52单片机
5V电源
基于AT89S52单片机水温控制器框图
基于AT89S52单片机水温控制器的电路原理图
本项目需要通过学习和查阅相关资料,掌握和了解如下知识:
1、+5V电源原理及设计。
2、单片机复位电路工作原理及设计。
3、单片机晶振电路工作原理及设计。
4、按键电路的设计。
5、蜂鸣器及其驱动电路的设计。
6、LED的特性及使用
7、AT89S52单片机引脚
8、温度传感器DS18B20的使用。
9、单片机端口隔离和驱动电路设计。
10、单片机C语言、汇编语言混合编程。
第四章核心部件简介及元件清单
4.1元件清单
AT89S52单片机一个作为控制核心;
12MHZ晶振一个和30pF电容两个构造晶振电路;
10uF/10V电解电容一个和10kΩ电阻一个构造复位电路;
+5V/0.5A电源一个用来提供+5V电源,1个74LS04集成块、2个8段共阳数码管和8个500Ω电阻用来构造显示电路;
1个74LS245集成块用来驱动;
1个0.01uF电容、1个100Ω电阻、1个MOC3011光电隔离、2个330Ω电阻、(南京家教)1个10A/500V可控硅和1个1kW电炉构造加热控制电路;
1个4.7kΩ电阻和1个DS18B20测温传感器构造测温电路;
2个按键构造按键电路;
2个10kΩ1电阻作为上拉电阻。
4.2AT89S52单片机简介
AT89S52为ATMEL所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。
(一)、AT89S52主要功能列举如下:
1、拥有灵巧的8位CPU和在系统可编程Flash
2、晶片内部具时钟振荡器(传统最高工作频率可至12MHz)
3、内部程序存储器(ROM)为8KB
4、内部数据存储器(RAM)为256字节
5、32个可编程I/O口线
6、8个中断向量源
7、三个16位定时器/计数器
8、三级加密程序存储器
9、全双工UART串行通道
【注:
以上有关AT89S52单片机主要功能列举源自参考文献4.刘和平编《单片机原理及应用》[M]重庆大学出版社,2002】
(二)、AT89S52部分引脚功能介绍:
VCC:
AT89S52电源正端输入,接+5V。
VSS:
电源地端。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
EA/Vpp:
"
EA"
为英文"
ExternalAccess"
的缩写,外部访问允许,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
ALE:
ALE是英文"
AddressLatchEnable"
的缩写,表示地址锁存器启用信号。
AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。
平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,(苏州家教)因此可以用来驱动其他周边晶片的时基输入。
此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
以上有关AT89S52单片机引脚功能列举源自参考文献7.曹天汉等单片机原理与接口技术(第2版)[M]电子工业出版社2006】
PORT0(P0.0~P0.7):
端口0是一个8位宽的开路汲极(OpenDrain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。
其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。
如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。
设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
PORT1(P1.0~P1.7):
端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。
如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
PORT2(P2.0~P2.7):
端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。
P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
PORT3(P3.0~P3.7):
端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,(南昌家教)包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
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,外部数据存储器的读取信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
以上有关AT89S52单片机端口的内容源自参考文献1.孙育才主编《ATMEL新型AT89S52系列单片机及其应用》[M]清1华大学出版社.2006】
4.3数字温度传感器DS18B20
DS18B20是DALLAS公司生产的一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片,它具有三引脚TO-92小体积封装形式,温度测量范围-55~+125℃,可编程为9~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,业可采用寄生电源方式产生,多个DS18B20可以并联到三根或者两根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。
从而可以看出DS18B20可以非常方便的被用于远距离多点温度检测系统。
综上,在本系统中我采用温度芯片DS18B20测量温度。
该芯片的物理化学性很稳定,它能用做工业测温元件,且此元件线形较好。
在0—100摄氏度时,最大线形偏差小于1摄氏度。
该芯片直接向单片机传输数字信号,便于单片机处理及控制。
温度芯片DS18B20
以上有关数字温度传感器DS18B20内容介绍源自参考文献2.马云峰,陈子夫,李培全.《数字温度传感器DS18B20的原理与应用》[M]中国电子学会出版社.2001】
第五章软件设计
5.1程序流程图
单片机先进行温度控制的预设置,并显示控制温度,通过和环境温度进行比较决定加热器打开还是关闭,程序流程图如下:
设定控制温度
打开加热器
关闭加热器
显示设定温度
读取环境温度
环境温度和设定温度比较
Y
NNY
程序流程图
5.2程序清单
基于AT89S52单片机水温控制器程序清单如下:
#include"
reg52.h"
//头文件
#defineDisdatap0//段码输出口
#definediscanp2//位选输出口
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
sbitDQ=p3^7;
//温度输入口
sbitHa=p1^5;
//加热器
sbitWa=p1^5;
//报警器
sbitKey_I=p3^2;
//键盘引脚定义
sbitKey_II=p3^3;
Uinth;
//定义无符号整型变量
Uintkey_[2]={5,0};
//初始温度
Uchardis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//数码管显示列表"
0"
"
1"
2"
3"
4"
5"
6"
7"
8"
9"
ucharcodescan_con[2]={0xfd,0xfe};
//列扫描控制字
uchartemp_data[2];
//温度暂放
//11us延时函数
voiddelay(uint)
{
for(;
t>
0;
t--);
}
//显示扫描函数
voidscan()
chark;
for(k=0;
k<
2;
k++)
{Disdata=dis_7[key_[k]];
discan=scan_con[k];
Delay(50);
Discan=0xff;
//DS18B20写命令函数
voidwrite_byte(ucharval)
uchari;
for(i=8;
i>
i--)
DQ=1;
#pragmaASM
NOP
#pragmaENDASM
DQ=0;
#pragmaENDASM//5us
DQ=val&
0x01;
//最低位移出
delay(6);
//66us
val=val/2;
//右移一位
delay
(1);
//DS18B20读一个字节函数
ucharvalue=0;
0:
_nop_();
Value>
>
=1;
#pragmaENDASM//4us
#pragmaENDASM
if(DQ)value|=0x80;
return(value);
//DS18B20复位函数
ow_reset(void)
Charpresence=1;
while(presence)
delay(50);
presence=DQ;
//presence=0继续下一步
delay(45);
//延时500us
voidread_temp()
write_byte(0xCC);
write_byte(0xBE);
//发读命令
temp_data[0]=read_byte();
//温度低8位
temp_data[1]=read_byte();
//温度高8位
ow_reset();
write_byte(0x44);
//发转换命令
//温度数据处理函数
//越线报警
//加热控制
voidwork_temp()
uchartt_[2],tt,key;
key=key_[0]*10+key_[1];
//读取设定的温度值
tt_[0]=temp_data[0]&
0xf0;
tt_[1]=temp_data[1]&
0x0f;
tt=tt_[1]+tt_[2];
//读取DS18B20测得的环境温度
if(tt>
0x70){Wa=0;
}//报警,输出低电平,蜂鸣器导通
key)
Ha=1;
//关加热器,输出高电平,加热器截止
if(tt<
Ha=0;
//开加热器,低电平,加热器导通
main()
Wa=1;
P3=0XFF;
EX0=1;
EX1=1;
EA=1;
Disdata=0xff;
//初始化端口
discan=0X00;
scan();
while
(1)//死循环
read_temp();
//读出DS18B20温度数据
work_temp();
//加热控制
voidintto(void)interrupt0
delay
(2);
if(Key_I==0)
if(key_[0]==9)
key_[0]=0;
else
key_[0]++;
scan()
key_I=0;
Voidinttl(void)interrupt1
if(Key_II==0)
if(key_[1]==9)
key_[1]=0;
key_[1]++;
Key_II=0;
第六章系统仿真及测试
6、1系统仿真
利用proteus仿真软件进行在线仿真调试,发现了程序中的一些语法错了,主要是main函数大写了,一些定义的变量后忘了加分号等。
在单片机上把各模块程序分别进行调试使其正确无误,可以用在系统编程器将程序固化到AT89S52的FLASHROM中,接上电源脱机运行。
6、2系统测试
1、测试环境
环境温度20摄氏度,室内面积25平方米
测试仪器:
数字万用表,温度计0----100摄氏度
2、测试方法
使系统运行,采用温度计同时测量电炉内水温变化情况,得出系统测量的温度。
3、测试结果
设定温度由20摄氏度到70摄氏度
标定温差<
=1摄氏度调节时间13s(具体情况视现场而定)
静态误差<
=0.4摄氏度最大超调量1摄氏度
4、通过测试分析,(哈尔滨家教
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 苏州 天才 家教网 水温 控制器 设计 软件 部分
![提示](https://static.bdocx.com/images/bang_tan.gif)