Ubuntu下編寫ds18b20驅動程式

2021-06-08 00:47:19 字數 1269 閱讀 5883

本程式是在大三實習階段的時候寫的乙個驅動程式,當時對於驅動程式的理解不是很徹底,只是在別人的框架下自己去填寫**,先把ds18b20的時序圖讀懂,照著時序圖寫**就可以了,但是要注意的就是時序圖中的延時問題,在滿足要求的情況下,盡量延時長一點!!!寫驅動程式還有一點很重要的就是會自己測試程式,要在能盡可能的測試到驅動程式最容易出錯的地方。

1.以下是驅動程式**:

注:本程式在飛凌ok6410開發板上測試通過,其它的開發板也一樣,只要做很少的改動應該就可以執行,不過,本程式只實現了一塊ds18b20的情況,比較簡單。多塊的情況也可以通過晶元手冊做一定的改動,不過,我沒試過。

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define device_name "ds18b20"

unsigned int tmp;

int output_mode(void)

int input_mode(void)

int output_bit(unsigned int bit)

unsigned int input_bit(void)

int init_ds18b20(void)

if(!tp)

else

}int write_to_ds18b20(unsigned char byte)

else

}return 0;

}unsigned char read_from_ds18b20(void)

if ((led=open("/dev/leds",o_rdonly)) < 0)

old=new=0;

while(1)

result=(double)new*np;

printf("%.2lf \n", result);

sleep(1);

old=new;

}close(fd);

return 0;

}void warn(int fd)}注:

以上的測試程式在一定程度上有點bug,由於實習完後,沒有開發板了,所以沒有再做修改。也沒有測試了。

ds18b20驅動配置

初始化時序 void ds18b20 rst void 返回1 沒有檢測到ds18b20的存在返回0 存在 u8 ds18b20 check void if retry 200 return1 else retry 0 while ds18b20 dq in retry 240 if retry 2...

DS18B20驅動根據資料手冊編寫

include sbit ds18b20 p1 4 void delay ds18b20 unsigned int x void ds18b20 res void 溫度計初始化 void ds18b20 write bit unsigned char x 溫度計寫入資料所用的函式 ds18b20 1...

DS18B20溫度測量

1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入開始轉換的功能命令,0x44。4.延遲大約 750 900 毫秒 1.ds18b20 復位。2.寫入跳過 rom 的位元組命令,0xcc。3.寫入讀暫存的功能命令,0xbe。4.讀入第 0 個位元組 ls byte,轉換...