|
感興趣的朋友們可以參考哈,如有更好的建議多謝指點(diǎn)!!!
等我哪天把它整合到我的車載 溫控GPS系統(tǒng)里面。
程序分主從兩部分......
000111.jpg (4.44 MB, 下載次數(shù): 45)
下載附件
2021-3-26 15:22 上傳
單片機(jī)主機(jī)源程序如下:
從機(jī)代碼:
- #include "temp.H"
- void Delay1ms(unsigned int y) //延時(shí)函數(shù)
- {
- unsigned int x;
- for(y;y>0;y--)
- for(x=110;x>0;x--);
- }
-
- unsigned char Ds18b20Init() //DS18B20 的初始化函數(shù)
- {
- unsigned int i;
- DSPORT=0;
- i=70;
- while(i--);// 延時(shí) 642us
- DSPORT=1;
- i=0;
- while(DSPORT) //等待 DS18B20 拉低總線
- {
- i++;
- if(i>5000)// 等待>5MS
- return 0;//初始化失敗
- }
- return 1;//初始化成功
- }
-
-
- void Ds18b20WriteByte(unsigned char dat) //向 DS18B20寫入一個(gè)字節(jié)
- {
- unsigned int i,j;
- for(j=0;j<8;j++)
- {
- DSPORT=0; //每寫入一位數(shù)據(jù)之前先把總線拉低 1us
- i++;
- DSPORT=dat&0x01; //然后寫入一個(gè)數(shù)據(jù),從最低位開始
- i=6;
- while(i--); // 延時(shí) 68us,持續(xù)時(shí)間最少 60us
- DSPORT=1; // 然后釋放總線,至少 1us給總線恢復(fù)時(shí)間才能接著寫入第
- //二個(gè)數(shù)值
- dat>>=1;
- }
- }
-
- unsigned char Ds18b20ReadByte() //向 DS18B20 讀取一個(gè)字節(jié)
- {
- unsigned char byte,bi;
- unsigned int i,j;
- for(j=8;j>0;j--)
- {
- DSPORT=0;//先將總線拉低 1us
- i++;
- DSPORT=1;//然后釋放總線
- i++;
- i++;//延時(shí) 6us等待數(shù)據(jù)穩(wěn)定
- bi=DSPORT; //讀取數(shù)據(jù),從最低位開始讀取
- /*將 byte 右移一位,然后或上左移 7 位后的 bi,注意移動(dòng)之后移掉那位
- 補(bǔ) 0。*/
- byte=(byte>>1)|(bi<<7);
- i=4; //讀取完之后等待 48us再接著讀取下一個(gè)數(shù)
- while(i--);
- }
- return byte;
- }
-
- void Ds18b20ChangTemp() // 讓 DS18B20 開始轉(zhuǎn)換溫度
- {
- Ds18b20Init();
- Delay1ms(1);
- Ds18b20WriteByte(0xcc); //跳過 ROM 操作命令
- Ds18b20WriteByte(0x44); //溫度轉(zhuǎn)換命令
- }
-
- void Ds18b20ReadTempCom() //發(fā)送讀取溫度命令
- {
- Ds18b20Init();
- Delay1ms(1);
- Ds18b20WriteByte(0xcc); //跳過 ROM 操作命令
- Ds18b20WriteByte(0xbe); //發(fā)送讀取溫度命令
- }
-
- int Ds18b20ReadTemp() //讀取溫度
- {
- int temp=0;
- unsigned char tmh,tml;
- Ds18b20ChangTemp(); //先寫入轉(zhuǎn)換命令
- Ds18b20ReadTempCom(); //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令
- tml=Ds18b20ReadByte(); //讀取溫度值共 16 位,先讀低字節(jié)
- tmh=Ds18b20ReadByte(); //再讀高字節(jié)
- temp=tmh;
- temp<<=8;
- temp|=tml;
- return temp;
- }
復(fù)制代碼
所有代碼51hei提供下載:
單片機(jī)藍(lán)牙串口溫度例子 -我修改版.7z
(27.06 KB, 下載次數(shù): 40)
2021-3-26 15:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|