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 本身比較簡單,應該沒有什麼問題,但是實際串列埠監視器中輸出的資料卻沒有變化,一直都是如下的資...
溫度感測器 熱電偶
什麼叫熱電偶?這就要從熱電偶測溫原理說起,熱電偶是一種感溫元件,是一次儀表,它直接測量溫度,並把溫度訊號轉換成熱電動勢訊號,通過電氣儀表 二次儀表 轉換成被測介質的溫度。熱電偶測溫的基本原理是兩種不同成份的材質導體 稱為熱電偶絲材或熱電極 組成閉合迴路,當接合點兩端的溫度不同,存在溫度梯度時,迴路中...