求AT89S52单片机同时控制两个温度的程序 20

用18B20测温我可以买在一个AT89S52上同时显示及控制两路温度温度值可设定到设定温度报警... 用18B20测温 我可以买
在一个AT89S52上同时显示及控制两路温度 温度值可设定 到设定温度报警
展开
 我来答
百度网友0ad5d59
2010-03-01 · TA获得超过1192个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:572万
展开全部
晕倒.
18b20读写程序 网上满天飞..还买

控制温度..用什么控制也没说.......
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
DJ影逸
2010-03-01 · TA获得超过869个赞
知道小有建树答主
回答量:1815
采纳率:0%
帮助的人:595万
展开全部
怎么控制温度都没说,别人怎么帮你?
要学会搜索查资料,18B20测温程序满世界都是。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Isospeed
2010-03-01 · TA获得超过1038个赞
知道答主
回答量:176
采纳率:0%
帮助的人:187万
展开全部
参考下这段程序吧

include <at89x051.h>
#include <intrins.h>
//sbit DQ =P3^3;//定义通信端口
#define DQ P3_3
extern void delay(unsigned char);
void Init_DS18B20(void);
unsigned char ReadOneChar(void);
void WriteOneChar(unsigned char);
unsigned int ReadTemperature(void);
void disptemp(void);
unsigned int tmprom[10]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
//延时函数
//void delay(unsigned int i)
//{
//while(i--);
//}
/*
//初始化函数
////////////以下是8M和11。0592M晶体///////////////
void Init_DS18B20(void)
{
unsigned char x=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(80);//精确延时 大于 480us
DQ = 1;//拉高总线
delay(9);
x=DQ;//稍做延时后 如果x=0则初始化成功 x=1则初始化失败
while(x){;}
delay(80);
} */
/*
//读一个字节
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0;// 给脉冲信号
dat>>=1;
//delay(1);
DQ = 1;// 给脉冲信号
if(DQ)
dat|=0x80;
delay(10);
}
return(dat);
}*/
/*
//写一个字节
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
delay(0);
DQ = dat&0x01;
delay(7);
DQ = 1;
dat>>=1;
}
}
*/////////////////////////////////////
////////////以下是6M晶体///////////////////
//初始化函数
void Init_DS18B20(void)
{
unsigned char x=0;
DQ=1;//DQ复位
delay(8);//稍做延时
DQ=0;//单片机将DQ拉低
delay(30);//精确延时 大于 480us
DQ = 1;//拉高总线
delay(4);
/*_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); */
x=DQ;//稍做延时后 如果x=0则初始化成功 x=1则初始化失败
while(x){;}
delay(25);
}

//读一个字节
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0;// 给脉冲信号
dat>>=1;
//delay(1);
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
//_nop_();
//_nop_();
//_nop_();
DQ = 1;// 给脉冲信号
if(DQ)
dat|=0x80;
/*_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); */
delay(3);
}
return(dat);
}

//写一个字节
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
//delay(0);
DQ = dat&0x01;
/*_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();*/
delay(3);
DQ = 1;
_nop_();
dat>>=1;
}
}
//////////////////////////////////////////
//读取温度
unsigned int ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int t=0;
float tt=0;

Init_DS18B20();
WriteOneChar(0xCC);// 跳过读序号列号的操作
WriteOneChar(0x44);// 启动温度转换
Init_DS18B20();
WriteOneChar(0xCC);//跳过读序号列号的操作
WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
//tt=(a&0x0f)*0.0625;
//a>>=4;
t=b;
t<<=8;
t=t|a;
//tt=t*0.0625;//将温度的高位与低位合并
//t= tt*10+0.5;//对结果进行4舍5入

return(t);
}

void disptemp(void){
EA=0;
tmprom[0]=ReadTemperature();
EA=1;
}

//////////////////////////////////////////////////

void delay(unsigned char us){
while(us--);
}
//6M的晶体振荡器 delay(20)=262us
//12M........... delay(20)=131us

/////////////////////////////////////////////////////
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式