DS18B20溫度控制數(shù)碼管顯示(匯編非常詳細(xì))_第1頁
DS18B20溫度控制數(shù)碼管顯示(匯編非常詳細(xì))_第2頁
DS18B20溫度控制數(shù)碼管顯示(匯編非常詳細(xì))_第3頁
DS18B20溫度控制數(shù)碼管顯示(匯編非常詳細(xì))_第4頁
DS18B20溫度控制數(shù)碼管顯示(匯編非常詳細(xì))_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、DS18B20溫度控制數(shù)碼管顯示(匯編非常詳細(xì))*1、P1.6=f進(jìn)入設(shè)定溫度報(bào)警值TL狀態(tài):*2、P1.6f進(jìn)入設(shè)定溫度報(bào)警值TH狀態(tài):L20H283、P1.6f返回4、設(shè)定過程:P1.4匐口鍵(UP)P1.5f鍵(DOWN),可快速調(diào)。*TIMER_LDATA23HTIMER_HDATA24HTIMER_COUNDATA25HTEMPLDATA26HTEMPHDATA27HTEMP_THDATA28HTEMP_TLDATA29HTEMPHCDATA2AHTEMPLCDATA2BHTEMP_ZHDATA2CHBEEPEQUP3.7DATA_LINEEQUP3.3RELAYEQUP1.3FLA

2、G1EQU20H.0FLAG2EQU20H.1K1EQUP1.4K2EQUP1.5K3EQUP1.6K4EQUP1.7ORG0000HJMPMAINORG000BHAJMPINT_T0;MAIN:MOVSP,#30HMOVTMOD,#01H;T0,方式1MOVTIMER_L,#00H;50ms定時(shí)值MOVTIMER_H,#4CHMOVTIMER_COUN,#00H;中斷計(jì)數(shù)MOVIE,#82HLCALLREAD_E2;LCALLRE_18B20MOV20H,#00HSETBBEEPSETBRELAYMOV7FH,#0AHCALLRESETJNBFLAG1,MAIN1JMPSTARTMAIN1:

3、CALLRESETJBFLAG1,STARTLCALLBEEP_BLJMPMAIN1START:MOVA,#0CCHCALLWRITEMOVA,#044HCALLWRITECALLRESETMOVA,#0CCHCALLWRITEMOVA,#0BEHCALLWRITECALLREADCALLCONVTEMPCALLDISPBCDCALLDISP1CALLSCANKEY;EA=1,ET0=1;熄滅符;復(fù)位與檢測(cè)DS18B20;FLAG1=0,DS18B20不存在;DS18B20錯(cuò)誤,報(bào)警;跳過ROM匹配發(fā)出溫度轉(zhuǎn)換命令;跳過ROM匹配;發(fā)出讀溫度命令;讀溫度數(shù)據(jù)LCALLTEMP_COMPJMPM

4、AIN1J;DS18B20復(fù)位與檢測(cè)子程序;FLAG1=1OK,FLAG1=0ERROR;RESET:SETBDATA_LINENOPCLRDATA_LINEMOVR0,#64H;主機(jī)發(fā)出延時(shí)600微秒的復(fù)位低脈沖RESET1:MOVR1,#03HDJNZR0,$MOVR0,#64HDJNZR1,RESET1SETBDATA_LINE;然后拉高數(shù)據(jù)線RESET2:NOPMOVR0,#25HJNBDATA_LINE,RESET3;等待DS18B20回應(yīng)DJNZR0,RESET2JMPRESET4;延時(shí)RESET3:SETBFLAG1;置標(biāo)志位,表示DS1820存在RESET4:JMPRESET5

5、CLRFLAG1;涓標(biāo)志位,表小DS1820/、存在RESET5:JMPRESET6MOVR0,#064HDJNZR0,$;時(shí)序要求延時(shí)一段時(shí)間RESET6:SETBDATA_LINERETJ;=WRITE:MOVR2,#8;一共8位數(shù)據(jù)CLRCYWR1:CLRDATA_LINE;開始寫入DS18B20總線要處于復(fù)位(低)狀態(tài)MOVR3,#09DJNZR3,$;總線復(fù)位保去芋18微妙以上RRCA;把一個(gè)字節(jié)DATA分成8個(gè)BIT環(huán)移給CMOVDATA_LINE,C;寫入一個(gè)BITMOVR3,#23DJNZR3,$;等待46微妙SETBDATA_LINE;重新釋放總線NOPDJNZR2,WR1;

6、寫入下一個(gè)BITSETBDATA_LINERET尸=;ADS18B20中讀出溫度低位、高位和報(bào)警值TH、TL;存入26H、27H、28H、29H;READ:MOVR4,#4MOVR1,#26H;將溫度高位和低位從;存入26H、27H、28HDS18B20中讀出、29HRE00:RE01:MOVR2,#8CLRCSETBDATA_LINENOPNOPCLRDATA_LINE;讀前總線保持為低NOPNOPNOPSETBDATA_LINE;開始讀總線釋放MOVR3,#09;延時(shí)18微妙DJNZR3,$MOVC,DATA_LINE;從DS18B20總線讀得一一個(gè)BITMOVR3,#23DJNZR3,$

7、;等待46微妙RRCA;把讀得的位值環(huán)移給ADJNZR2,RE01;讀卜一個(gè)BITMOVR1,AINCR1DJNZR4,RE00RETJ;200ms對(duì)閃動(dòng)標(biāo)記取反一次JINT_T0:PUSHACCPUSHPSWMOVTL0,TIMER_LMOVTH0,TIMER_HINCTIMER_COUNMOVA,TIMER_COUNCJNEA,#04H,INT_ENDMOVTIMER_COUN,#00HCPLFLAG2INTEND:POPPSWPOPACCRETI;重新對(duì)DS18B20初始化;將設(shè)定的溫度報(bào)警值寫入DS18B20尸=RE_18B20:JBFLAG1,RE_18B20ARETRE_18B20

8、A:CALLMOVRESETA,#0CCH;跳過ROM匹配LCALLWRITEMOVA,#4EH;寫暫存寄存器LCALLWRITEMOVA,TEMP_TH;TH(報(bào)警上限)LCALLWRITEMOVA,TEMP_TL;TL(報(bào)警下限)LCALLWRITEMOVA,#7FH;12位精確度LCALLWRITERET;=;功能鍵掃描子程序;=SCANKEY:SCAN_K1:MOVP1,#0F0HJBK1,SCAN_K2CALLBEEP_BLCALLALERT_TLSCAN_K11:CALLALERT_PLAYJBK1,SCAN_K1CALLBEEP_BLCALLALERT_THSCAN_K2:CAL

9、LALERT_PLAYJBK1,SCAN_K11CALLBEEP_BLJBK2,SCAN_K3SCAN_K3:CALLBEEP_BLJBK3,SCAN_K4CALLBEEPBLLCALLRESET_ALERTLCALLRE_18B20LCALLWRITE_E2SCAN_K4:JBK4,SCAN_ENDCALLBEEP_BLSCAN_END:RETJ;設(shè)置溫度報(bào)警值尸=RESET_ALERT:CALLALERT_TLCALLALERT_PLAYJNBK3,$;K3為位移鍵SETBTR0RESET_TL:CALLALERT_PLAYJNBFLAG2,R_TL01mov75H,7m;送入熄滅符mov

10、76H,7mCALLALERT_PLAYJMPR_TL02R_TL01:CALLALERT_TLmov75h,7Eh;送設(shè)定值mov76h,7DhCALLALERT_PLAY;顯示設(shè)定值R_TL02:JNBK1,K011AJNBK2,K011BJNBK3,RESET_THJMPRESET_TLK011A:INCTEMP_TLMOVA,TEMP_TLCJNEA,#120,K012A;沒有到設(shè)定上限值,轉(zhuǎn)MOVTEMP_TL,#0K012A:CALLTL_DELJMPRESET_TLK011B:DECTEMP_TLMOVA,TEMP_TLCJNEA,#00H,K012B;沒有到設(shè)5限值,轉(zhuǎn)MOVT

11、EMP_TL,#119K012B:CALLTL_DELJMPRESET_TLJRESET_TH:CALLBEEP_BLJNBK3,$RESET_TH1:CALLALERT_PLAYJNBFLAG2,R_TH01mov75H,7fh;送入熄滅符mov76H,7mCALLALERT_PLAYJMPR_TH02R_TH01:CALLALERT_THmov75h,7Eh;mov76h,7DhCALLALERT_PLAYR_TH02:JNBK1,K021AJNBK2,K021BJNBK3,K002JMPRESET_TH1K021A:INCTEMP_THMOVA,TEMP_THCJNEA,#120,K02

12、2A;沒有到設(shè)定上限值,轉(zhuǎn)MOVTEMP_TH,#0K022A:CALLTH_DELJMPRESET_TH1K021B:DECTEMP_TH;減1MOVA,TEMP_THCJNEA,#00H,K022B;沒有到設(shè)5限值,轉(zhuǎn)MOVTEMP_TH,#119K022B:CALLTH_DELJMPRESET_TH1K002:CALLBEEP_BLCLRTR0;關(guān)閉中斷RETJ;鍵延時(shí)子程序;多次調(diào)用報(bào)警值顯示程序來延時(shí);TL_DEL:;報(bào)警低值延時(shí)MOVR2,#0AHTL_DEL1:CALLALERT_TLCALLALERT_PLAYDJNZR2,TL_DEL1RETTH_DEL:;報(bào)警高值延時(shí)MOV

13、R2,#0AHTH_DEL1:CALLALERT_THCALLALERT_PLAYDJNZR2,TH_DEL1RET實(shí)時(shí)溫度值與設(shè)定報(bào)警溫度值TH、TL比較子程序當(dāng)實(shí)際溫度大于當(dāng)實(shí)際溫度小于TH的設(shè)定值時(shí),顯示TH的設(shè)定值時(shí),顯示“H;繼電器關(guān)閉。“O;繼電器吸合。當(dāng)實(shí)際溫度小于TL的設(shè)定值時(shí),顯示“L:閃動(dòng)顯示標(biāo)記符H、L、OTEMP_COMP:SETBTR0;啟動(dòng)中斷MOVA,TEMP_THSUBBA,TEMP_ZH;減數(shù)被減數(shù),則JCCHULI1;借位標(biāo)志位C=1,轉(zhuǎn)MOVA,TEMP_ZHSUBBA,TEMP_TL;減數(shù)被減數(shù),則JCCHULI2;借位標(biāo)志位C=1,轉(zhuǎn)JNBFLAG2,

14、T_COMP1;FLAG2=0,顯示標(biāo)記字符MOV74H,#0AH;熄滅符LCALLDISP1JMPT_COMP2T_COMP1:MOV74H,#00HLCALLDISP1;顯示"O"T_COMP2:CLRRELAY;繼電器吸合CLRTR0;關(guān)閉中斷RET;超溫處理;CHULI1:SETBRELAY;繼電器關(guān)閉JNBFLAG2,CHULI10MOV74H,#0AH;熄滅符LCALLDISP1JMPCHULI11CHULI10:MOV74H,#0DHLCALLDISP1;顯示"H"CALLBEEP_BL;蜂鳴器響CHULI11:CLRTR0;關(guān)閉中斷RET

15、;欠溫處理;CHULI2:;欠溫處理JNBFLAG2,CHULI20MOV74H,#0AH;熄滅符LCALLDISP1JMPCHULI21CHULI20:MOV74H,#0CHLCALLDISP1;顯示"L"CALLBEEP_BL;蜂鳴器響CHULI21:CLRTR0;關(guān)閉中斷RET;把DS18B20暫存器里的溫度報(bào)警值拷貝到EEROMJWRITE_E2:CALLRESETMOVA,#0CCH;跳過ROM匹配LCALLWRITEMOVA,#48H;溫度報(bào)警值拷貝到EEROMLCALLWRITERETJ;把DS18B20EEROM里的溫度報(bào)警值拷貝回暫存器;READ_E2:C

16、ALLRESETMOVA,#0CCH;跳過ROM匹配LCALLWRITEMOVA,#0B8H;溫度報(bào)警值拷貝回暫存器CALLWRITERET.*;處理溫度BCD碼子程序.*;CONVTEMP:MOVA,TEMPH;判溫度是否零下ANLA,#80HJZTEMPC1;溫度零上轉(zhuǎn)CLRCMOVA,TEMPL;一進(jìn)制數(shù)求補(bǔ)(雙字節(jié))CPLA;取反加1ADDA,#01HMOVTEMPL,AMOVA,TEMPH;一CPLAADDCA,#00HMOVTEMPH,A;TEMPHCHI=符號(hào)位MOVTEMPHC,#0BHSJMPTEMPC11TEMPC1:MOVTEMPHC,#0AH;TEMPC11:MOVA,

17、TEMPHCSWAPAMOVTEMPHC,AMOVA,TEMPLANLA,#0FH乘0.0625MOVDPTR,#TEMPDOTTABMOVCA,A+DPTRMOVTEMPLC,A;TEMPLCLOW=小數(shù)部分BCDMOVA,TEMPL;整數(shù)部分ANLA,#0F0HSWAPAMOVTEMPL,AMOVA,TEMPHANLA,#0FHSWAPAORLA,TEMPLMOVTEMP_ZH,A;組合后的臉入TEMP_ZHLCALLHEX2BCD1MOVTEMPL,AANLA,#0F0HSWAPAORLA,TEMPHC;TEMPHCLOW=十位數(shù)BCDMOVTEMPHC,AMOVA,TEMPLANLA,

18、#0FHSWAPA;TEMPLCHI=個(gè)位數(shù)BCDORLA,TEMPLCMOVTEMPLC,AMOVA,R7BCDJZTEMPC12ANLA,#0FHSWAPAMOVR7,AMOVA,TEMPHC;TEMPHCHI=百位數(shù)ANLA,#0FHORLA,R7MOVTEMPHC,ATEMPC12:RET;小數(shù)部分碼表;TEMPDOTTAB:DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB06H,07H,08H,08H,09H,09HJ;顯示區(qū)BCD碼溫度值刷新子程序JDISPBCD:MOVA,TEMPLCANLA,#0FHMOV70H,A;小數(shù)位MOVA,TEM

19、PLCSWAPAANLA,#0FHMOV71H,A;個(gè)位MOVA,TEMPHCANLA,#0FHMOV72H,A;十位MOVA,TEMPHCSWAPAANLA,#0FHMOV73H,A;百位MOVA,TEMPHCANLA,#0F0HCJNEA,#010H,DISPBCD0SJMPDISPBCD2DISPBCD0:MOVA,TEMPHCANLA,#0FHJNZDISPBCD2;十位數(shù)是0MOVA,TEMPHCSWAPAANLA,#0FHMOV73H,#0AH;符號(hào)位不顯示MOV72H,A;十位數(shù)顯示符號(hào)DISPBCD2:RET;*;溫度顯示子程序;*;顯示數(shù)據(jù)在70H73H單元內(nèi),用4位共陽數(shù)碼

20、管顯示,P0口輸出段碼數(shù)據(jù),;P2口作掃描控制,每個(gè)LED數(shù)碼管亮2MS時(shí)間再逐位循環(huán)。DISP1:MOVR1,#70H;指向顯示數(shù)據(jù)首址;掃描控制字初值MOVR5,#7FHPLAY:MOVP0,#0FFHMOVA,R5MOVP2,A;掃描字放入AMOVA,R1;取顯示數(shù)據(jù)到AMOVDPTR,#TAB;取段碼表地址MOVCA,A+DPTR;查顯示數(shù)據(jù)對(duì)應(yīng)段碼MOVP0,AMOVA,R5;段碼放入P0口JBACC.6,LOOP5CLRP0.7;小數(shù)點(diǎn)處理LOOP5:LCALLDL_MS;顯示2MSINCR1;指向卜一個(gè)地址MOVA,R5;放回R5內(nèi)JNBACC.3,ENDOUT;ACC.3=0時(shí)

21、一次顯示結(jié)束RRA;A中數(shù)據(jù)循環(huán)左移MOVR5,A;放入R5中AJMPPLAY;跳回PLAY循環(huán)ENDOUT:MOVP0,#0FFH;一次顯布結(jié)束,P0口復(fù)位MOVP2,#0FFHRET;P2口復(fù)位TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H;“0"“I”"2""3""4""5""6"""7""包""9"H"DL_

22、MS:MOVR6,#0AH;2MS延時(shí)程序,LED顯示程序用DL1:MOVR7,#64HDL2:DJNZR7,DL2DJNZR6,DL1RET.*;;單字節(jié)十六進(jìn)制轉(zhuǎn)BCD*HEX2BCD1:MOVB,#064HDIVABMOVR7,AMOVA,#0AHXCHA,BDIVABSWAPAORLA,BRET;報(bào)警值TH、TL數(shù)據(jù)轉(zhuǎn)換;ALERT_TL:ALERT_TL1:MOV79H,#0CHMOV78H,#0BHMOVA,TEMP_TLMOVR0,#77HMOVB,#064HDIVABCJNEA,#01H,ALERT_TL1MOVR0,AJMPALERT_TL2MOVA,#0BH;顯示ALERT_TL2:MOVR0,AMOVA,#0AHXCHA,BDIVABDECR0MOVR0,AMOV7DH,ADECR0MOVR0,BMOV7EH,BRET;ALERT_TH:MOV79H,#0DHMOV78H,#0BHMOVA,TEMP_THALERTALERT_TH1:_TH2:MOVR0,#77HMOVB,#064HDI

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論