下載手機(jī)汽配人

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

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

我要提問

汽配限時(shí)折扣

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