DS18B20溫度傳感器C程序_第1頁
DS18B20溫度傳感器C程序_第2頁
DS18B20溫度傳感器C程序_第3頁
DS18B20溫度傳感器C程序_第4頁
DS18B20溫度傳感器C程序_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、ds18b20溫度傳感器c程序ds18b20溫度傳感器c程序單片機型號:stc89c54rd+, stc89c52rc 測 試通過。晶震頻率:11.05924使用時只需要修改對應(yīng)的外部管腳即可。main.c:#include #include sbit io_18b20 = p3a2; /18b20 通訊引腳。extern void delayx1 ous(unsigned char t);extern bit getl8b20temp(int *temp);extern bit getl8b20ack();extern bit startl8b20();unsigned char code

2、ledchar = oxco, 0xf9, 0xa4, oxbo, 0x99, 0x92, 0x82, 0xf8,0x80, 0x90, 0x88, 0x83, 0xc6, oxal, 0x86,0x8e);數(shù)碼管編碼0-funsigned char ledbuff12 = oxff, oxff, oxff, oxff, oxff, oxff,oxff, oxff, oxff, oxff, oxff, oxff;int temp=l;unsigned char fig;unsigned char t0rh,t0rl;void configtimero(unsigned int ms) 開內(nèi) 部

3、定時器延時,到時間后觸發(fā)中斷。unsigned long tmp;tmp = 11059200 / 12;tmp = (tmp * ms) /1000;tmp = 65536 - tmp;tmp = tmp + 18;t0rh = (unsigned char)(tmp8);torl = (unsigned char)tmp;tmod &= oxfo;tmod |= 0x01;th0 = t0rh;tlo = torl;eto = 1;tro = x;)void ledscan()序。數(shù)碼管掃描程static unsigned char i = 0,a=0xf8;/pl是數(shù)碼pl = oxff

4、;管數(shù)據(jù)引腳,注意跟據(jù)實際情況修改 器數(shù)據(jù)輸入引腳,注意跟據(jù)實際情況修改 我這里12個數(shù)碼管,2個138譯碼器,所以最 大掃描到0x04.po = (p0 & a) i a;/po是138譯碼pl = ledbuffi;if (i sizeof(ledbuff)-l)i+;elsei = 0;if(a=0x04)a=0xf8,p0=0xf8;/12 個數(shù)碼管,范圍從0xf8到0x04,不用糾結(jié)這個,跟 電路有關(guān)系,12個數(shù)碼管得用2個138譯碼器。a+;) void main()unsigned char s=0;p0=0xf8;啟動檢測18b20器件,startl8b20();如有此器件,寫

5、入命令。啟動內(nèi)部定時器延configtimero(2);時。while(l)if(flg=l) 每中斷200次這里fig值1, 采集18b20的時間不要太快,建議大約延時1 秒一次。 startl8b20();s=getl8b20temp( & temp);/ 給18b20 一個存放數(shù)據(jù)的變量。flg=o;if(s);取數(shù)ledbuff6=ledchar(temp4)/10據(jù)高位ledbuff5=ledchar(temp4) % 10&0x7f;取數(shù)據(jù)低位ledbuff4=ledchar(temp&0xf)*625/1000;取小數(shù)1位。)else;沒有檢測到器件時錯誤處理。)void int

6、errupttimero() interrupt 1 (static unsigned char n=0;tho = torh;tlo = torl;ledscan();n+;if(n=200)n=0,flg=l;)18b20.c#include #include sbit io 18b20 = p3a2; extern int temp;void delayx 10us(unsigned char t) (do _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); while (t);)bit getl8b20ack

7、()(bit ack;ea = 0;io 18b20 = 0;delayx10us(50);io 18b20 = 1;delayx10us(6);ack = io 18b20; while(!io_18b20);ea=1;return ack;) void writel8b20(unsigned char dat)(unsigned char mask;ea = 0;for(mask=0x01; mask!= 0; mask=l) (io 18b20 = 0;_nop_();_nop_();if(mask&dat) = 0)io 18b20 = 0;elseio 18b20 = 1;delay

8、x10us(6);io 18b20 = l;)ea=1;)unsigned char readl8b20()(unsigned char dat;unsigned char mask;ea = 0;for(mask=0x01; mask!=0; mask=l) (io 18b20 = 0;_nop_();_nop_();io 18b20 = l;_nop_();_nop_();if(!io_18b20)dat &=mask;elsedat 1= mask;delayx10us(6);)ea=1;return dat;)bit startl8b20()(bit ack;ack = getl8b20ack();if(ack = 0)(writel8b20(0xcc);writel8b20(0x44);)return -ack;bit getl8b20temp(int *temp)(bit ack;unsigned char lsb, msb;ack =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論