请教关于DS18B20温度传感器的温度读取我想用P1口的8个引脚每个引脚挂1个DS18B20传感器,然后从P1.0开始顺序读取温度数值,温度读取的程序我有,请大侠们帮助给些端口轮流读取数据的例程,我的

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 16:24:52
请教关于DS18B20温度传感器的温度读取我想用P1口的8个引脚每个引脚挂1个DS18B20传感器,然后从P1.0开始顺序读取温度数值,温度读取的程序我有,请大侠们帮助给些端口轮流读取数据的例程,我的

请教关于DS18B20温度传感器的温度读取我想用P1口的8个引脚每个引脚挂1个DS18B20传感器,然后从P1.0开始顺序读取温度数值,温度读取的程序我有,请大侠们帮助给些端口轮流读取数据的例程,我的
请教关于DS18B20温度传感器的温度读取
我想用P1口的8个引脚每个引脚挂1个DS18B20传感器,然后从P1.0开始顺序读取温度数值,温度读取的程序我有,请大侠们帮助给些端口轮流读取数据的例程,
我的程序中只有如下定义1个端口,请帮助改写:
sbit DQ=P3^7; //ds18b20 端口

请教关于DS18B20温度传感器的温度读取我想用P1口的8个引脚每个引脚挂1个DS18B20传感器,然后从P1.0开始顺序读取温度数值,温度读取的程序我有,请大侠们帮助给些端口轮流读取数据的例程,我的
我这有个现成的C源程序,你参考一下吧!
三通道18B20温度测量数码管显示.-55-+125℃,用1位数码管显示当前通道号,4位数码管显示18B20当前通道温度值(一位小数),负号位与正温度百位1用同一位数码管显示,该位为0不显示,如:0 27.9、1 123.1、2 -35.6.连接方法:三个18B20均接P3.7,P0口(JP10)接8位数码管段码口(J12).
#include
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit ADDR0 = P2^2;
sbit ADDR1 = P2^3;//定义38译码器地址
sbit ADDR2 = P2^4;
uint8 x,h;//定义通道
uint16 ans,ansb[3],f,g,p; //ans各通道温度值,f符号值,g为小数部分,p为1秒的计数变量
code uint8 number[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x80};//0,1,2,3,4,5,6,7,8,9,-,灭,小数点
sbit DQ = P3^7; //温度DQ一线输入口
#define nops(); {_nop_(); _nop_(); _nop_(); _nop_();} //定义空指令
uint8 romid[3][8]={//romid二维数组存放每个芯片ROM编号
\x05{0x28,0xA2,0xb4,0x0A,0x00,0x00,0x00,0x83},//0通道
\x05{0x28,0xA2,0xb4,0x0A,0x03,0x00,0x00,0x83},//1通道
\x05{0x28,0xA2,0xb4,0x0A,0x05,0x00,0x00,0x83},//2通道
\x05\x05\x05\x05};
// 定时器初始化
void T1_init(void)
{
TMOD = 0x10; //定时器1工作在方式1(显示扫描定时)
TH1 = 0xfc;
TL1 = 0x67;//T1定时1ms初值
TR1 = 1;//启动T1
}
void delay(uint16 n)
{
\x05while (n--);
}
// 18B20复位函数
void DS18b20_reset(void)
{
\x05bit flag=1;
\x05while (flag)
\x05{
\x05\x05while (flag)
\x05 \x05{
\x05 \x05\x05DQ = 1;
\x05\x05\x05delay(1);
\x05 \x05\x05DQ = 0;
\x05 \x05\x05delay(50); // 550us
\x05 \x05\x05DQ = 1; //给18B20发出复位信号
\x05 \x05\x05delay(6); // 66us
\x05 \x05\x05flag = DQ; //检测18B20发出的存在脉冲"0",判断复位是否成功
\x05\x05}
\x05\x05delay(45); //延时500us
\x05\x05flag = DQ;\x05//18B20存在脉冲过后变"1",取反后仍为"0"
\x05}
\x05DQ=1;
}
//18B20写1个字节函数 * 向1-WIRE总线上写一个字节
void write_byte(uint8 val)
{
\x05uint8 i;
\x05for (i=0; i>= 1; //右移一位
\x05}
\x05DQ = 1;
\x05delay(1);
}
//18B20读1个字节函数 * 从1-WIRE总线上读取一个字节
uint8 read_byte(void)
{
\x05uint8 i,value=0;
\x05for (i=0; i>= 1;
\x05\x05DQ = 0;
\x05\x05nops(); //4us
\x05\x05DQ = 1;
\x05\x05nops(); //4us
\x05\x05if (DQ)
\x05\x05\x05value|=0x80;
\x05\x05delay(6); //66us
\x05}\x05\x05\x05\x05
\x05DQ=1;
\x05return(value);
}
// 启动温度转换
void start_temp_sensor(void)
{
\x05DS18b20_reset();
\x05write_byte(0xCC); // 发Skip ROM命令
\x05write_byte(0x44); // 发转换命令
}
// 读出温度,多点多个18B20测温主程序:
void read_temp() //读取通道x的温度值
{
uint8 i,temp_data[2];//读出温度暂放
uint16 temp;
for(x=0;x

温度传感器ds18b20的温度和电压有没有换算公式? 请教关于DS18B20温度传感器的温度读取我想用P1口的8个引脚每个引脚挂1个DS18B20传感器,然后从P1.0开始顺序读取温度数值,温度读取的程序我有,请大侠们帮助给些端口轮流读取数据的例程,我的 数字温度传感器DS18B20是怎么实现温度补偿的?我想问的是怎么写程序控制DS18B20? ds18b20温度传感器测量油料温度,怎么样保证油库安全? 一线式数字温度传感器DS18B20,一线式数字温度传感器DS18B20的“一线式”是什么意思,感激不尽. 这个温度传感器是靠什么来探测温度的?ds18b20?红外?超声波?需要接触温度源吗? 关于ds18b20的温度补偿我的论文是用DS18B20芯片,请问怎么添加温度补偿 我在知道里看到你的问题.能不能给我发下这个 【6.19 实例19——1线数字式温度传感器DS18B20实例】proteus关于这个的【6.19 实例19——1线数字式温度传感器DS18B20实例】 ds18b20温度是几位的呀 DS18B20温度传感器实现实时温度测量单机片机用AT89S52显示用四个共阳极的数码显示管晶振12MHz温度精确到0.5度 DS18B20数字温度传感器+125℃的数字输出为07D0H -55℃的数字输出为 FC90H.124 123.0 度这些温度的十六进制怎么表示 请问,热敏电阻(10k,25度)和温度传感器(ds18b20)哪个对温度比较敏感? 关于温度传感器DS18B20的疑问我做的数字温度计,利用DS18B20作为检测元件,外接51单片机最小系统.烧完程序后为什么一直只显示85.0度呢? 基于单片机的电池监控系统,其中温度采集电路运用到了DS18B20温度传感器我想知道它最后采集出来的温度是环境温度?还是电池温度?还是工作系统的温度? 什么是温度传感器的温度补偿? 温度传感器DS18B20用AVR怎么读和写?最好有示例的程序lnlh21 - 试用期 一级 :你说那个网站资料太少,找不到我要的 ds18b20数字温度传感器的封装如何解决环氧树脂的气泡问题?【真空灌胶机?】 温度传感器ds18b20 可应用在哪些方面?