基于单片机智能温控系统的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告设计名称基于单片机的智能温控系统的设计与实现

一、概述

随着嵌入式技术、计算机技术、通信技术的不断发展与成熟。控制系统以其直观、方便、准确、适用广泛而被越来越广泛地应用于工业过程、空调系统、智能楼宇等。恒温控制系统,控制对象是温度。温度控制在日常生活及工作领域应用的相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制,而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。

本项目设计是对温度进行实时监测与控制,设计的温度控制系统实现了基本的温度控制功能:被控温度围可以调整,初始围25<=T<=35。如果被测温度在25度到35度之间,则既不加热,又不报警;如果被测温度小于25度,则既加热,又报警;如果被测温度大于35度,则报警,不加热。

数码管显示温度,温度精确到整数。

二、方案设计

采用单片机+单总线DS18B20的方案,其中单片机采用51兼容系列

三、详细硬件设计及原件介绍

3.1 单片机最小系统

在基于单片机的应用系统中,其核心是单片机的最小系统,而单片机又是最小系统的核心,为了方便起见,采用的单片机型号是:STC89C52RC,部资源有:8KB FLASH ,512B SRAM,4个8位I/O,2个TC,1个UART,带ISP和IAP功能。是近年来流行的低端51单片机。时钟电路采用12.0M晶体,复位电路采用简单的RC复位电路。R=10K,C=10uF,详细电路见总体原理图

3.2 DS18B20简介

DS18B20是采用“1-wire”一线总线传输数据的集成温度传感器,信息经过单线接口送入DS18B20或从DS18B20送出,因此从中央处理器到DS18B20仅需连接一条线。可采用外部电源供电,也可采用总线供电方式,此时,把VDD连接在一起作为数字电源。

因为每一个DS18B20有唯一的系列号(silicon serial number),因此多个DS18B20可以存在于同一条单线总线上,这允许在许多地方放置温度灵敏器件。此特性的应用围包括HVAC环境控制,建筑物、设备或机械的温度检测。

3.2 DS18B20与单片机接口

四、总体原理图见附录1

五、程序设计

1、主程序流程图

六、项目总结

通过对该项目的设计制作,我对简单的单片机控制系统的开发过程有了比较全面的理解,在这次实习中,我的体会有:

1.细心,制作硬件和编写程序,调试程序,都需要细心,否则很容易失败。

2.基础,单片机不是万能的,它需要外部硬件电路的配合,这些电路不复杂,但是要弄明白它的原理,还是要下一番功夫的。像基础的电子焊接,测量,元件的识别等都是。

3.团队合作,由于时间的关系,每个项目由几个人合作,这时就特别需要团队合作意识。

4.撰写设计文档,对写设计文档总感到是一种累赘——反正实物已经出来了,有没有文档关系不大。现在需要在设计过程中随时记录一些东西,最后整理成设计文档。

5.将一个大的问题分割成几个相对独立的部分,更容易解决。

附录1:电路原理图

附录2:代码:

(1)名称:温控系统

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

//#include

#define uchar unsigned char

#define uint unsigned int

/******************************************************************/ /* 定义端口 */ /******************************************************************/ sbit DQ=P2^7;//ds18b20 端口

sbit ledj=P1^1;//加热

sbit ledb=P1^7;//报警

sbit keyup=P3^0; //温度加

sbit keydn=P3^1; //温度减

/******************************************************************/ /* 全局变量 */ /******************************************************************/ uint tmax=30;

uint tmin=26;

uint temp;

uchar shi,ge,temph,i,j,x;

uchar code tab[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71}; //7段数码管段码表共阳

/******************************************************************/ /* 函数声明 */ /******************************************************************/ unsigned int ReadWD(void);

void csh(void);

unsigned char ReadOneChar(void);

void WriteOneChar(uchar dat);

void delay(uint i);

void xs(uchar shi,uchar ge);

void sjcl();

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

{

//unsigned char temph;

相关文档
最新文档