tp2416kit溫度感測器

2021-06-26 11:01:59 字數 3123 閱讀 9252

1,初始化

#define tmp_gpio_cfgpin_out (v_pgpioregs->gpfcon=v_pgpioregs->gpfcon&(~(3<<2)) | 1<<2)

#define tmp_gpio_cfgpin_in  (v_pgpioregs->gpfcon=v_pgpioregs->gpfcon&(~(3<<2)) | 0<<2)

#define tmp_gpio_pulldown   (v_pgpioregs->gpfudp=v_pgpioregs->gpfudp&(~(3<<2)) | 0<<2)

#define tmp_gpio_pullup     (v_pgpioregs->gpfudp=v_pgpioregs->gpfudp&(~(3<<2)) | 1<<2)

#define tmp_gpio_setdata_down  (v_pgpioregs->gpfdat=v_pgpioregs->gpfdat&(~(1<<1)) | 0<<1)

#define tmp_gpio_setdata_up    (v_pgpioregs->gpfdat=v_pgpioregs->gpfdat&(~(1<<1)) | 1<<1)

#define tmp_gpio_setdata( n)  setdat(n)//(v_pgpioregs->gpfdat=v_pgpioregs->gpfdat&(~(1<<1)) | n<<1)

#define tmp_gpio_getdata  (v_pgpioregs->gpfdat&((1<<1)) )

static int ds18b20_init(void)  

2,寫時序

static void write_byte(unsigned char data)  

tmp_gpio_setdata_up;//(dq, 1);        // 重新釋放ds18b20匯流排  

}  3,讀資料返回給應用程式

static unsigned char read_byte(void)  

tmp_gpio_cfgpin_out;//(dq, cfg_out);  

tmp_gpio_pulldown;//(dq, 0);  

tmp_gpio_setdata_up;//(dq, 1);        // 釋放ds18b20匯流排  

return data;  

}  dword tmp_read(dword hopencontext, lpvoid pbuffer, dword count)

;  

//struct ds18b20_device *dev = filp->private_data;  

int tmp;//=result[0]+result[1]*16;

flag = ds18b20_init();  

if (flag)  

#if 1

write_byte(0xcc);  

write_byte(0x44);  

flag = ds18b20_init();  

if (flag)  

return -1;  

write_byte(0xcc);  

write_byte(0xbe);  

result[0] = read_byte();    // 溫度低八位  

result[1] = read_byte();    // 溫度高八位

//*(dword *)pbuffer=*(dword *)result;

//pbuffer=(lpvoid)result;

*(dword *)pbuffer=(int)result[0]+(((int)result[1])<<8);

// integer_value = ((result[0] & 0xf0) >> 4) | ((result[1] & 0x07) << 4);  

// 精確到0.25度  

// decimal_value = 0.5 * ((result[0] & 0x0f) >> 3) + 0.25 * ((result[0] & 0x07) >> 2);  

// decimal_value = 0.5 * ((result[0] & 0x0f) >> 3) + 0.25 * ((result[0] & 0x07) >> 2)+ 0.125 * ((result[0] & 0x03) >> 1)+ 0.0625 * ((result[0] & 0x01) >>0);  

// tmpvalue = (float)integer_value + decimal_value;

//  tmp=result[0]-'0'+(result[1]-'0'<<8);

//*(dword *)pbuffer=(int)(result[0])+(int)(result[1]<<4);

// pbuffer[0] = read_byte();    // 溫度低八位  

// pbuffer[1] = read_byte();    // 溫度高八位  

retailmsg(1,(text("tmpvalue= %d %d %d %d \r\n"),(int)result[0],(int)result[1],*(dword *)result,*(dword *)pbuffer));

#endif

return true;

}4,應用程式讀取

void ctmpdlg::oncalvalue()

;int nbytes= 0;

int sock;

dword dwbytes;

float tmpvalue;

unsigned char integer_value = 0;  

float temperature, decimal_value;  // 溫度數值,decimal_value為小數部分的值  

hdevicetmp=createfile(l"tmp1:",generic_write | generic_read, 0, null, open_existing, 0, null);

//deviceiocontrol(hdevicetmp,0,null,0,null,0,null,null);

// memset(byreceivebuf, 0, 1024);

while(1)}}

器件選型 溫度感測器

溫度感測器是當今眾多產品應用中最常用的技術之一,比如應用在汽車 白電和工業類產品等中。為了進行可靠的溫度測量,選擇合適的溫度感測器十分重要。了解不同型別溫度感測器的優缺點有助於在測量前做出正確的選擇。熱電偶 熱敏電阻 ntc ptc 電阻溫度檢測器 rtd 和晶元型溫度感測器是測量中最常見的型別,它...

Arduino使用模擬溫度感測器

這也是37款感測器套件中的一款,感測器的樣式如下圖所示 測試 如下 用的就是商家資料中提供的 includedouble thermister int rawadc void setup void loop 本身比較簡單,應該沒有什麼問題,但是實際串列埠監視器中輸出的資料卻沒有變化,一直都是如下的資...

溫度感測器 熱電偶

什麼叫熱電偶?這就要從熱電偶測溫原理說起,熱電偶是一種感溫元件,是一次儀表,它直接測量溫度,並把溫度訊號轉換成熱電動勢訊號,通過電氣儀表 二次儀表 轉換成被測介質的溫度。熱電偶測溫的基本原理是兩種不同成份的材質導體 稱為熱電偶絲材或熱電極 組成閉合迴路,當接合點兩端的溫度不同,存在溫度梯度時,迴路中...