8路温度采集监控系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/******************************************************************************/
Delay(80); //精确延时大于480us
DQ_0 = 1; //拉高总线
Delay(14);
Delay(20);
}
/******************************************************************************/
unsigned char ReadOneChar_1(void)//读一个字节
void WriteOneChar_1(unsigned char dat)//写一个字节
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ_0 = 0;
DQ_0 = dat&0x01;
Delay(5);
DQ_0 = 1;
dat>>=1;
}
}
//-------------------------------------------------------------------------------------222222222
/******************************************************************************/
void Delay(int num) //延时函数
{
while(num--) ;
}
//---------------------------------------------------111111111
sbit DQ_5 = P2^5 ;
sbit DQ_6 = P2^6 ;
sbit DQ_7 = P2^7 ;
long uint tvalue;//温度值
uchar tflag;//温度正负标志
uchar move;//温度传感器的选择
void delay1ms(unsigned int ms)//延时1毫秒(不够精确的)
void WriteOneChar_4(unsigned char dat)//写一个字节
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ_3 = 0;
DQ_3 = dat&0x01;
Delay(5);
DQ_3 = 1;
dat>>=1;
}
}
//-------------------------------------------------------------------------------------55555555
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ_0 = 0; //给脉冲信号
dat>>=1;
DQ_0 = 1; //给脉冲信号
if(DQ_0)
dat|=0x80;
Delay(4);
}
return(dat);
}
/******************************************************************************/
Delay(80); //精确延时大于480us
DQ_3 = 1; //拉高总线
Delay(14);
Delay(20);
}
/******************************************************************************/
unsigned char ReadOneChar_4(void)//读一个字节
#define uchar unsigned char
#define uint unsigned int
//温度传感器定义
sbit DQ_0 = P2^0 ; //定义ds18B20总线IO
sbit DQ_1 = P2^1 ;
sbit DQ_2 = P2^2 ;
sbit DQ_3 = P2^3 ;
sbit DQ_4 = P2^4 ;
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ_3 = 0; //给脉冲信号
dat>>=1;
DQ_3 = 1; //给脉冲信号
if(DQ_3)
dat|=0x80;
Delay(4);
}
return(dat);
}
/******************************************************************************/
发送端电路图如下:
图3 发送端电路图
3.
接收端电路由按键电路和显示电路组成。通过RS-232通信接口技术接收发送端传来的数据,由数码管显示。
(1)显示电路设计
显示采用数码管,数码管显示有静态串行显示和动态扫描显示等方式,这里选择数码管动态扫描显示。数码管动态扫描显示电路由6个共阴极数码管、74LS245及电阻组成。P0口输出显示段码,经由一片74LS245驱动输出给数码管,P1口输出位码(片选),如图4所示。
图4 显示电路图
4.
8路温度采集监控系统有两种工作模式。用手动按键进行工作模式切换,在手动模式下按UP键通道加1,按DOWN键通道减1。这3个按键分别接P2口的P2.0、P2.1和P2.2引脚,如图5所示。
图5 显示电路图
四、
1.
#include<at89x52.h>
#include<intrins.h>
void WriteOneChar_2(unsigned char dat)//写一个字节
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ_1 = 0;
DQ_1 = dat&0x01;
Delay(5);
DQ_1 = 1;
dat>>=1;
}
}
//-------------------------------------------------------------------------------------33333333
/******************************************************************************/
void Init_DS18B20_3(void)//初始化ds1820
{
DQ_2 = 1; //DQ复位
Delay(8); //稍做延时
DQ_2 = 0; //单片机将DQ拉低
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ_2 = 0; //给脉冲信号
dat>>=1;
DQ_2 = 1; //给脉冲信号
if(DQ_2)
dat|=0x80;
Delay(4);
}
return(dat);
}
/******************************************************************************/
/******************************************************************************/
void Init_DS18B20_1(void)//初始化ds1820
{
DQ_0 = 1; //DQ复位
Delay(8); //稍做延时
DQ_0 = 0; //单片机将DQ拉低
{
unsigned char i=0;
unsigned char dat = 0;
for (i来自百度文库8;i>0;i--)
{
DQ_1 = 0; //给脉冲信号
dat>>=1;
DQ_1 = 1; //给脉冲信号
if(DQ_1)
dat|=0x80;
Delay(4);
}
return(dat);
}
/******************************************************************************/
{unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}
void putc(uchar c) //传送一个字节
{
SBUF = c;
while(TI == 0);
TI = 0;
}
/******************************ds1820程序***************************************/
/******************************************************************************/
void Init_DS18B20_4(void)//初始化ds1820
{
DQ_3 = 1; //DQ复位
Delay(8); //稍做延时
DQ_3 = 0; //单片机将DQ拉低
/******************************************************************************/
void Init_DS18B20_2(void)//初始化ds1820
{
DQ_1 = 1; //DQ复位
Delay(8); //稍做延时
DQ_1 = 0; //单片机将DQ拉低
(1) DQ引脚电路
DS18B20是支持“一线总线”接口的温度传感器,能通过一个单线接口进行发送或接受信息。在电路设计上,可以把8个DS18B20的DQ引脚分别接到P2口的8个引脚。另外,每个DQ引脚还需要接上拉电阻4.7K和电源。
(2) 供电方式选择
工作任务要求测量温度范围在-55~+125℃。如果选择寄生电源方式,当温度高于100℃时,DS18B20的漏电流比较大,通信可能无法进行,同时为了提高温度测量速度,选择外部供电方式。在VDD引脚接入一个外部电源,GND引脚接地,GND引脚不能悬空。
一、
通过两个单片机最小系统、时钟芯片、RS-232通讯接口以及DS18B20单线数字传感器来实现远程温度的采集,远程控制。
二、
1.
基于RS232串行通信的8路温度采集监控系统
2.
通过两个单片机实现数据传送。主机循环采集监控8个通道的温度值通过RS-232通讯接口传送给从机,从机实现显示自动控制,自动控制模式下每3秒更换一个通道,每个循环更换8次,一直循环下去,更换成手动后,按下手动按键,开始手动控制,按下UP键,通道加一,按下DOWN键,通道减一。
Delay(80); //精确延时大于480us
DQ_1 = 1; //拉高总线
Delay(14);
Delay(20);
}
/******************************************************************************/
unsigned char ReadOneChar_2(void)//读一个字节
3.
《基于RS232串行通信的8路温度采集监控系统》设计流程图,如图1所示。
图1流程图
三、
1.
《基于RS232串行通信的8路温度采集监控系统>由两片单片机构成,发送端通过传感器采集温度发送给接收端,接收端使用按键控制模式转换和数码管显示温度。
图2电路图
2.
发送端使用DS18B20温度传感器采集温度通过RS-232通信接口电路传送给接收端。
Delay(80); //精确延时大于480us
DQ_2 = 1; //拉高总线
Delay(14);
Delay(20);
}
/******************************************************************************/
unsigned char ReadOneChar_3(void)//读一个字节
void WriteOneChar_3(unsigned char dat)//写一个字节
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ_2 = 0;
DQ_2 = dat&0x01;
Delay(5);
DQ_2 = 1;
dat>>=1;
}
}
//-------------------------------------------------------------------------------------44444444
相关文档
最新文档