ZKX's LAB

有谁对温度传感器很熟,跪求DS18B20原理,仿真图,C语言程序... ...原理讲清楚一点。谢谢... ds18b20 时钟参考脚

2020-10-06知识5

谁能帮忙调试下数字温度计ds18b20的程序啊 我的仿真一直出不来啊 不知道问题出在哪 程序应该没问题 这个没有问题的,你参考看看吧~读取DS18B20温度,通过数码管显示出来头文件*/includeincludedefine uint unsigned intdefine uchar unsigned chardefine_Nop()_nop_()sbit DQ=P3^5;定义DS18B20通信端口sbit LED_EN_PORT=P2^5;sbit DAC_ADC_EN_PORT=P3^7;定义发光二极管及ADC、DAC、时钟的锁存器有效脚LE*/define sled_dm_port P0/*定义数码管段码的控制脚*/define sled_wm_port P2/*定义数码管位码的控制脚*/定义数码管显示字符跟数字的对应数组关系*/uchar code sled_mun_to_char[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};0 1 2 3 4 5 6 7 8 9 a b c d e f*/定义需要点亮的数码管*/uchar code sled_bit_table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};uchar data sled_data[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};0-7号SLED缓冲值*/uchar data led_lighten_bit=0;LED灯点亮标志位0-7*/以下是DS18B20驱动程序/延时函数void delay(unsigned int i){while(i-);}初始化函数Init_DS18B20(void){unsigned char x=0;DQ=1;DQ复位delay(8);稍做延时DQ=0;单片机将DQ拉低delay(80);。

DS18b20是热敏电阻吗 #includeincludedefine uint unsigned intdefine uchar unsigned charsbit D=P3^5;sbit LED_EN_PORT=P2^5;sbit DAC_ADC_EN_PORT=P3^7;定义发光二极管及ADC、DAC、时钟的锁存器有效脚LE*/uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};段选uchar code able[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uint temp;void delay(uint z);void init_ds18b20(void);ReadOneChar();WriteOneChar(uchar dat);ReadTemperature(void);void delay(unsigned int z){while(z-);}void init_ds18b20(void)/初始化{ unsigned char x=0;D=1;DQ复位delay(8);稍做延时D=0;单片机将DQ拉低delay(80);精确延时 大于 480usD=1;拉高总线delay(14);x=D;稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(20);}ReadOneChar(){unsigned char i=0;unsigned char dat=0;for(i=8;i>;0;i-){D=0;给脉冲信号dat>;>;=1;D=1;给脉冲信号if(D)dat|=0x80;delay(4);}return(dat);}WriteOneChar(uchar dat){unsigned char i=0;for(i=8;i>;0;i-){D=0;D=dat&0x01;delay(5);D=1;dat>;>;=1;}}ReadTemperature(void){unsigned char a=0;unsigned char b=0。

温度传感器DS18B20如何检测温度? 温度传感器DS18B20中,低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。参考资料(文库):。

随机阅读

qrcode
访问手机版