基于单片机的智能温控系统的设计与实现Word文件下载.docx
- 文档编号:20371490
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:14
- 大小:76.16KB
基于单片机的智能温控系统的设计与实现Word文件下载.docx
《基于单片机的智能温控系统的设计与实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能温控系统的设计与实现Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
3.1单片机最小系统
在基于单片机的应用系统中,其核心是单片机的最小系统,而单片机又是最小系统的核心,为了方便起见,采用的单片机型号是:
STC89C52R(内部资源有:
8KB
FLASH512BSRAM,4t8位1/0,2个TC,1个UART带ISP和IAP功能。
是近年来流行的低端51单片机。
时钟电路采用12.0M晶体,复位电路采用简单的RC复位电路。
R=10K,C=10uF详细电路见总体原理图
3.2DS18B20简介
DS18B2C是采用“1-wire”一线总线传输数据的集成温度传感器,信息经过单线接口送入DS18B2C或从DS18B20送出,因此从中央处理器到DS18B2C仅需连接一条线。
可采用外部电源供电,也可采用总线供电方式,此时,把VDD连接在一起
作为数字电源。
因为每一个DS18B20有唯一的系列号(siliconserialnumber),因此多个DS18B20可以存在于同一条单线总线上,这允许在许多地方放置温度灵敏器件。
此特性的应用范围包括HVAC环境控制,建筑物、设备或机械内的温度检测。
与单片机接口3.2DS18B20.
MA-.-'
-.s
TOOTHER1-IIREDBVICBS
1四、总体原理图见附录五、程序设计、主程序流程图1
六、项目总结
通过对该项目的设计制作,我对简单的单片机控制系统的开发过程有了比较全面的理解,在这次实习中,我的体会有:
1.细心,制作硬件和编写程序,调试程序,都需要细心,否则很容易失败。
2.基础,单片机不是万能的,它需要外部硬件电路的配合,这些电路不复杂,但是要弄明白它的原理,还是要下一番功夫的。
像基础的电子焊接,测量,元件的识别等都是。
3.团队合作,由于时间的关系,每个项目由几个人合作,这时就特别需要团队合作意识。
4.撰写设计文档,对写设计文档总感到是一种累赘一一反正实物已经出来了,有没有文档关系不大。
现在需要在设计过程中随时记录一些东西,最后整理成设计文档。
将一个大的问题分割成几个相对独立的部分,更容易解决。
5.
附录1:
电路原理图
附录2:
代码:
(1)名称:
温控系统
头文件包含特殊
#include<
reg52.h>
//包含头文件,一般情况不需要改动,功能寄存器的定义
//#include<
INTRINS.H>
#defineucharunsignedchar
#defineuintunsignedint
加热
报警
温度加
温度减
/******************************************************************//*定义端口*//******************************************************************/sbitDQ=P2A7;
//ds18b20端口
sbitledj=P1A1;
//
sbitledb=P1A7;
〃
sbitkeyup=P3A0;
//
sbitkeydn=P3A1;
///******************************************************************//*全局变量*//******************************************************************/uinttmax=30;
uinttmin=26;
uinttemp;
ucharshi,ge,temph,i,j,x;
ucharcodetab[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
//7段数码管段码表共阳/******************************************************************//*函数声明*//******************************************************************/unsignedintReadWD(void);
voidcsh(void);
unsignedcharReadOneChar(void);
voidWriteOneChar(uchardat);
voiddelay(uinti);
voidxs(ucharshi,ucharge);
voidsjcl();
/******************************************************************//*主函数*//******************************************************************/voidmain()
{
//unsignedchartemph;
基于单片机的智能温控系统的设计与实现while
(1)
if(keyup==0)
{for(j=0;
j<
20;
j++)
{for(i=0;
i<
i++)
shi=tmax/10;
ge=tmax_x0010_xs(shi,ge);
}
delay(5000);
shi=10;
ge=10;
xs(shi,ge);
tmax++;
while(keyup==0);
}if(keydn==0)
tmax--;
while(keydn==0);
}}
elseif(keydn==0)
j++){for(i=0;
{shi=tmin/10;
ge=tmin_x0010_xs(shi,ge);
shi=10;
xs(shi,ge);
tmin++;
while(keyup==0);
if(keydn==0)
tmin--;
while(keydn==0);
else
if(x==0)
temp=ReadWD();
//定时读取当前温度
temph=temp>
>
4;
shi=temph/10;
//十位温度
ge=temph_x0010_;
//个位温度
//显示温度
sjcl();
//数据处理
/******************************************************************/
/*显示函数*//******************************************************************/voidxs(ucharshi,ucharge)
P2=2;
P0=tab[shi];
delay(500);
P2=3;
P0=tab[ge];
P2=4;
P0=0xc6;
/*
*/
数据处理函数
voidsjcl()
if(temph>
tmax)
ledj=1;
ledb=0;
elseif(temph>
=tmin&
&
temph<
=tmax)
ledb=1;
{ledj=0;
voiddelay(unsignedinti)//延时函数
while(i--);
/****************************************************************'
voidcsh(void)
//unsignedcharx=0;
DQ=1;
//DQ复位
delay(8);
//稍做延时
DQ=0;
//单片机将DQ拉低
delay(80);
//精确延时大于480us
//拉高总线
delay(10);
x=DQ;
//稍做延时后如果x=0则初始化成功x=1则初始化失败
delay(5);
读一个字节
unsignedcharReadOneChar(void)
unsignedchari=0;
unsignedchardat=0;
for(i=8;
i>
0;
i--)
DQ=0;
//给脉冲信号
dat>
=1;
if(DQ==1)dat|=0x80;
}return(dat);
/******************************************************************//*写一个字节*//******************************************************************/voidWriteOneChar(unsignedchardat)
DQ=dat&
0x01;
/*读取温度*/
unsignedintReadWD(void)
unsignedchara=0;
unsignedintb=0;
unsignedintt=0;
csh();
WriteOneChar(0xCC);
//跳过读序号列号的操作WriteOneChar(0x44);
//启动温度转换delay(200);
//跳过读序号列号的操作
WriteOneChar(0xBE);
//读取温度寄存器等(共可读9个寄存器)前两个就是温度
a=ReadOneChar();
//低位b=ReadOneChar();
//高位
b<
<
=8;
t=a+b;
return(t);
(2)名称:
DS18B20温度计,温度值由单片机发给上位机并显示(扩展功能程序)
/*
名称:
18B20温度传感器,温度在上位机显示公司:
陕西圣弘科技有限公司编写:
赵进全
日期:
2010.8*/
//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
stdio.h>
//#include<
sbitDQ=P2A7;
ucharshi,ge,bh;
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
//7段数码管段码表共阳/******************************************************************/
/*函数声明*/
unsignedintReadWD(void);
voidcsh(void);
/*主函数*//******************************************************************/voidinit_com(void)//串口初始化函数
TMOD=0X20;
//定时器1定时方式2
//PCON=0X00;
SCON=0X50;
//串口方式1,允许接收
TH1=0XFD;
//波特率为9600
TL1=0XFD;
TR1=1;
voidcomm(char*parr)//串口发送数据函数{
dounsignedcharTempH,buff[2];
init_com();
while
(1)
TempH=temp>
shi=TempH_x0010_0/10;
//十位温度ge=TempH_x0010_0_x0010_;
//个位温度bh=0x39;
//显示C符号
sprintf(buff,%d,temp>
4);
//将整型温度转换成字符型comm(buff);
//将字符型温度由串口发送到上位机}
voidxs(ucharshi,ucharge)
P2=1;
delay(500);
P0=0;
P0=0;
P2=3;
P0=bh;
}/******************************************************************//*延时函数*/voidcsh(void)
unsignedcharx=0;
DQ=1;
//DQ复位delay(8);
//稍做延时后如果x=0则初始化成功x=1则初始化失败delay(5);
}/******************************************************************//*读一个字节*/
unsignedcharReadOneChar(void){
unsignedchardat=0;
给脉冲信号DQ=0;
if(DQ)
dat|=0x80;
return(dat);
/*写一个字节*/voidWriteOneChar(unsignedchardat)
delay(5);
}delay(5);
读取温度
unsignedintReadWD(void){
csh();
跳过读序号列号的操作
启动温度转换
//WriteOneChar(0x44);
delay(200);
//温度
读取温度寄存器等(共可读9个寄存器)
前两个就是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 智能 温控 系统 设计 实现