《#8.13#--项目18基于AT89S52单片机水温控制器的设计.pdf》由会员分享,可在线阅读,更多相关《#8.13#--项目18基于AT89S52单片机水温控制器的设计.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目项目18 基于基于AT89S52单片机水温控制器的设计单片机水温控制器的设计18.1 项目概述项目概述水温控制无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用,过低的温度或过高的温度都会使水资源失去应有的作用,从而造成水资源的巨大浪费,给生活和生产带来许多不利因素。基于AT89S52单片机水温控制器与传统的水温控制器相比操作方便、价格低、精度高和扩展容易等优点,因此市场前景看好。18.2 项目要求项目要求基于AT89S52单片机水温控制器晶振采用18MHz,具体要求如下所示。初始温度设置为50度。越限报警温度设为70度。控制精度为1度。(4)控制范围为环境温度室温到70度。18
2、.3 系统设计系统设计18.3.1框图设计框图设计 基于AT89S52单片机水温控制器由AT89S52单片机、键盘、显示器、温度检测和加热装置等组成,系统框图如图18-1所示。图18-1 基于AT89S52单片机水温控制器系统框图 18.3.2 知识点知识点通过学习和查阅资料,本项目需要掌握和了解知识如下所示。+5V电源原理及设计。单片机复位电路工作原理及设计。单片机晶振电路工作原理及设计。按键电路的设计。蜂鸣器及其驱动电路设计。LED的特性及使用。AT89S52单片机引脚。温度传感器DS18B20的使用。单片机端口隔离和驱动电路设计。单片机C语言、汇编语言混合编程。18.4 硬件设计硬件设计
3、18.4.1电路原理图电路原理图基于AT89S52单片机水温控制器的电路原理图如图18-2所示。通过按键电路来设置加热温度,并将设置的温度值在数码管上显示。环境温度由DS18B20来测出,传到单片机进行处理。蜂鸣器用来报警,如果温度超过70度,蜂鸣器发出声音,发出警报。加热器电路如图18-3所示,为了防止干扰在单片机接口P1.7输出接光电隔离.1 18.4.2 元件清单元件清单基于AT89S52单片机水温控制器元件清单如表18-1所示。表18-1 基于AT89S52单片机水温控制器元件清单元件名称型号数量用途元件名称型号数量用途单片机AT89S521个控制核心电容0.01F1加热控制电路晶振1
4、8MHz1个晶振电路电阻1001电容30pF2个光电隔离MOC30111电解电容10F/10V1个复位电路电阻3302电阻10k1个可控硅10A/500V1电源+5V/0.5A1提供+5V电炉1KW1集成块74LS041个显示电路电阻4.7k1测温电路数码管8段共阳2个测温传感器DSB18201电阻5008个按键2按键电路18.5 软件设计软件设计18.5.1程序流程图程序流程图单片机先进行温度控制的预设置,并显示控制温度,通过和环境温度进行比较决定加热器打开还是关闭,程序流程图如图18-4所示。2图18-4 程序流程图18.5.2 程序清单程序清单基于AT89S52单片机水温控制器程序清单如
5、下所示。#include reg52.h#define Disdata P0 /段码输出#define discan P2 /位选输出#define uchar unsigned char#define uint unsigned intsbit DQ=P37;/温度输sbit Ha=P15;/加热器sbit Wa=P15;/报警器sbit Key_I=P32;sbit Key_II=P33;uint h;uint key_2=5,0;/初始温度uchar dis_718=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90;/
6、数码管显示列表 0 1 2 3 4 5 6 7 8 9uchar code scan_con2=0 xfd,0 xfe;/列扫描控制字*/uchar temp_data2;/11US延时函数void delay(uint t)for(;t0;t-);/显示扫描函数void scan()3char k;for(k=0;k0;i-)/DQ=1;#pragma ASM NOPNOP#pragma ENDASMDQ=0;#pragma ASM NOPNOPNOPNOPNOP#pragma ENDASM;/5usDQ=val&0 x01;/最低位移出delay(6);/66usval=val/2;/右移
7、位DQ=1;delay(1);/18B20读1个字节函数uchar read_byte(void)uchar i;uchar value=0;4for(i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ=0;#pragma ASM NOPNOPNOPNOP#pragma ENDASM /4usDQ=1;#pragma ASM NOPNOPNOPNOP#pragma ENDASM if(DQ)value|=0 x80;delay(6);/66usDQ=1;return(value);/18B20复位函数ow_reset(void)char presence=1;w
8、hile(presence)while(presence)DQ=1;_#pragma ASM NOPNOP#pragma ENDASMDQ=0;delay(50);5DQ=1;delay(6);presence=DQ;/presence=0继续下步delay(45);/延时500uspresence=DQ;DQ=1;void read_temp()write_byte(0 xCC);/发Skip ROM命令write_byte(0 xBE);/发读命令temp_data0=read_byte();/温度低8位temp_data1=read_byte();/温度8位ow_reset();writ
9、e_byte(0 xCC);/Skip ROMwrite_byte(0 x44);/发转换命令/温度数据处理函数/越线报警/加热控制void work_temp()uchar tt_2,tt,key;key=key_0*10+key_1;tt_0=temp_data0&0 xf0;tt_1=temp_data1&0 x0f;tt=tt_1+tt_2;if(tt0 x70)Wa=0;/报警if(ttkey)Ha=1;/关加热器if(ttkey)Ha=0;/开加热器main()6Wa=1;Ha=1;P3=0XFF;EX0=1;EX1=1;EA=1;Disdata=0 xff;/初始化端discan
10、=0X00;scan();write_byte(0 xCC);/发Skip ROM命令write_byte(0 xBE);while(1)read_temp();/读出18B20温度数据work_temp();/加热控制 /void intto(void)interrupt 0delay(2);if(Key_I=1)if(key_0=9)key_0=0;else key_0+;scan();Key_I=0;void intt1(void)interrupt 1delay(2);if(Key_II=1)if(key_1=9)key_1=0;else7 key_1+;scan();Key_II=0
11、;18.6.系统调试及仿真系统调试及仿真1、系统调试、系统调试单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试是基础,如果硬件调试不通过,软件设计则是无从做起。硬件的调试主要是把电路各种参数调整到符合设计要求。先排除硬件电路故障包括设计性错误和工艺性故障。一般原则是先静态后动态。利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。先要将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,然后用万用表测试各电源电压,这些都
12、没有问题后,接上仿真机进行联机调试观察各接口线路是否正常。单片机AT89S52是系统的核心,利用万用表检测单片机电源VCC为(40脚)+5V、晶振是否正常工作(可用示波器测试、也可以用万用表检测两引脚电压一般为1.8V2.3V之间)、复位引脚RST(复位时为高电平,单片机工作时为低电平)、是否为+5V(高电平),这样一来单片机就能工作了,再结合电路图,检测故障就很容易了。2、用用Proteus软件仿真软件仿真经过Keil软件编译通过后,在ProteusISIS编辑环境中绘制仿真电路图,将编译好的“XM18.hex”文件加载到AT89C52里,然后启动仿真,就可以看到仿真效果。本项目仿真见教学资源“项目18”。8