本程式是在大三實習階段的時候寫的乙個驅動程式,當時對於驅動程式的理解不是很徹底,只是在別人的框架下自己去填寫**,先把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,轉換...