//温度传感器初始化
uchar tplsb,tpmsb; //读取数据的低8位和高8位
int ds_cmd=0;//温度开关
int
ds18B20_init()
{
DS_PORT &= ~DQ_18B20; //输出锁存器写0,以后不再更改
DS_DDR &= ~DQ_18B20; //输入模式(上电时为高电平)
return TRUE;
}
//温度传感器是否在线或者存在true 表示存在,false不存在
char
ds18b20_reset(void)
{
char bus_flag;
DQ_0(); //设置1-wire总线为低电平(占领总线)
/*现在延迟480us~960us, 与硬件密切相关,但应尽可能选小值(480us),
把抖动留给系统(比如在延迟期间发生中断导致延迟变长)。
*/
delay_us(490); //490us
printf("67===");
cli(); //下面这段时间要求比较严格,为保险起见,关闭中断
DQ_1(); //设置1-wire总线为高电平(释放总线)
delay_us(67.5); //60us+7.5us!(忙延时,一种策略)
//探测总线上是否有器件
if(DQ_status())
bus_flag=FALSE; //复位单总线但没有发现有器件在线
else
bus_flag=TRUE; //复位单总线并发现有器件在线
sei(); //退出临界代码区(开中断)
printf("82===");
/*保证Master释放总线的时间(不是说总线处于高电平的时间)不小于
480us即可,这一时间从读总线状态之前就开始了,所以这里把这个
时间计算在内。在Master释放总线的前半段,也是被动器件声明它
们在线之时。
*/
delay_us(490-67.5); //490-67.5us
printf("发现器件没%c",bus_flag);
return(bus_flag);
}
18b20 在 proteus 中为何 读不出温度数值
很有可能是主机发出温度转换命令(0x44)后,由于程序设定的延迟时间不够长,温度转换没有完成就开始读取数据了
我的ds18b20程序为什么读不到温度。大侠们指导下
试试这个吧!include<pic.h> define uchar unsigned char define uint unsigned int define DQ RC1 define DQ_HIGH() TRISC1=1 define DQ_LOW() TRISC1=0;DQ=0 __CONFIG(0x3B31);const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};const uchar table1[]...
单片机接DS18B20温度飘移问题
你LCD刷新时间长一点,就不会飘了。
请教关于DS18B20温度传感器的温度读取
三通道18B20温度测量数码管显示。-55-+125℃,用1位数码管显示当前通道号,4位数码管显示18B20当前通道温度值(一位小数),负号位与正温度百位1用同一位数码管显示,该位为0不显示,如:0 27.9、1 123.1、2 -35.6。连接方法:三个18B20均接P3.7,P0口(JP10)接8位数码管段码口(J12...
各位大侠,我是单片机新手,做个DS18B20的温测小系统,数码管老显示“00...
1.先不考虑检测值,单显示测试正常否。2.温度检测值应该是没检测到
我现在写了DS18B20的c程序还有用定时器输出的PWM波程序,用数码管显示...
我告诉你为什么:因为定时器中断是强制性的,一旦计时溢出,无论程序执行到何处都会被暂停,优先去执行中断服务程序。 DS18B20这种对时序有严格要求的单总线通讯,在发送和接收数据时被定时器中断扰乱了时序,所以无法通讯。要解决此问题建议你采用带硬件PWM的MCU,或者将18B20通讯代码放在中断服务程序内部,...
MSP430 DS18B20哪位大侠帮我看看,为什么液晶上一直显示15.9C呢,数据...
void DS18B20_delay_us(unsigned int n);unsigned char Bus_1820_reset(void);unsigned char Read_1820_word(void);void Write_1820_word(unsigned char m);\/ 函数名:延时函数 功能:延时 输入:无 输出:无 调用函数:无 版本:1.0 \/ void DS18B20_delay_us(unsigned int n)\/\/16MHz { unsi...
18B20测温时读取到的温度数据怎么转换!
RET ; 判断DS1820是否存在?若DS18B20不存在则返回 TSS2: MOV A,#0CCH ; 跳过ROM匹配 LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 LCALL DISPLAY ;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒 LCALL INIT_1820;准备读温度前先复位 MOV ...
关于DS18B20的精度问题
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;可编程 的分辨率为9~12位,对应的可分辨...
请问DS18B20和DS1820有什么区别
回答:DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 “一...