下載手機(jī)汽配人

急求基于單片機(jī)AT89C51的數(shù)字溫度報警器,具有上下限的在-20度到70度之間的匯編程序或C語言程序!拜托

提問者:網(wǎng)友 2018-08-05
最佳回答
;單片機(jī)DS18B20溫度計C語言程序 #include #include #include //要用到取絕對值函數(shù)abs() //通過DS18B20測試當(dāng)前環(huán)境溫度, 并通過數(shù)碼管顯示當(dāng)前溫度值, 目前顯示范圍: -55~ +125度 sbit wela = P2^7; //數(shù)碼管位選 sbit dula = P2^6; //數(shù)碼管段選 sbit ds = P2^2; int tempValue; //0-F數(shù)碼管的編碼(共陽極) unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //0-9數(shù)碼管的編碼(共陽極), 帶小數(shù)點 unsigned char code tableWidthDot[]={0x40, 0x79, 0x24, 0x30,0x19, 0x12, 0x02,0x78, 0x00, 0x10}; //延時函數(shù), 對于11.0592MHz時鐘, 例i=10,則大概延時10ms. void delay(unsigned int i) { unsigned int j; while(i--) { for(j = 0; j < 125; j++); } } //初始化DS18B20 //讓DS18B20一段相對長時間低電平, 然后一段相對非常短時間高電平, 即可啟動 void dsInit() { //對于11.0592MHz時鐘, unsigned int型的i, 作一個i++操作的時間大于?us unsigned int i; ds = 0; i = 100; //拉低約800us, 符合協(xié)議要求的480us以上 while(i>0) i--; ds = 1; //產(chǎn)生一個上升沿, 進(jìn)入等待應(yīng)答狀態(tài) i = 4; while(i>0) i--; } void dsWait() { unsigned int i; while(ds); while(~ds); //檢測到應(yīng)答脈沖 i = 4; while(i > 0) i--; } //向DS18B20讀取一位數(shù)據(jù) //讀一位, 讓DS18B20一小周期低電平, 然后兩小周期高電平, //之后DS18B20則會輸出持續(xù)一段時間
回答者:網(wǎng)友
產(chǎn)品精選
搜索問答
還沒有汽配人賬號?立即注冊

我要提問

汽配限時折扣

本頁是網(wǎng)友提供的關(guān)于“急求基于單片機(jī)AT89C51的數(shù)字溫度報警器,具有上下限的在-20度到70度之間的匯編程序或C語言程序!拜托”的解答,僅供您參考,汽配人網(wǎng)不保證該解答的準(zhǔn)確性。