畢業(yè)論文參考原理圖及程序_第1頁
畢業(yè)論文參考原理圖及程序_第2頁
畢業(yè)論文參考原理圖及程序_第3頁
畢業(yè)論文參考原理圖及程序_第4頁
畢業(yè)論文參考原理圖及程序_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、畢業(yè)論文參考原理圖及程序第三章 系統(tǒng)軟件設計3.1程序流程圖3.1.1 主程序流程圖3-1所示。位于上下限之間開始系統(tǒng)初始化搜索DS18B20是否存在?讀溫度值并顯示溫度比較下限警報上限警報NY高于上限低于上限結 束圖3-1 主程序圖流程圖3.1.2 檢測DS18B20子程序程序開始時要檢測是否有DS18B20,找不到時會發(fā)出警報并顯示“Connect error!”字樣。其流程圖如圖3-2。開始初始化操作FLAG置“1”FLAG1置“0”結 束等待DS18B20回應NY圖3-2 檢測DS18B20流程圖3.1.3 溫度轉換子程序傳感器將得到的數(shù)據通過轉換指令轉換成二進制數(shù)傳到DS18B20的

2、RAM的兩個字節(jié)中。其流程圖如圖3-3。開始初始化跳過ROM匹配發(fā)出溫度轉換指令結 束圖3-3 溫度轉換流程圖3.1.4 溫度值轉換為BCD碼子程序溫度值轉換成BCD碼,以便在顯示器上顯示常見的數(shù)字格式。其流程圖如圖3-4。開始溫度值組合SYMBOL取“+”號SYMBOL取“-”號取反加1轉換BCD碼并分為個位和十位結 束零上判斷符號零下圖3-4 轉換為BCD碼流程圖3.1.5 溫度比較子程序溫度值先與下限比較,然后與上限比較。若超過范圍,就動作與繼電器和蜂鳴器,進行聲光報警。其流程圖如圖3-5。開始FLAG2置“1”獲得溫度BCD組合的值FLAG3置“1”初始化與下限比較與上限比較結 束沒超

3、過超過超過沒超過圖3-5 溫度比較流程圖3.1.6 讀取溫度高字節(jié)、低字節(jié)和報警值子程序通過讀指令將溫度值低、高字節(jié)和上、下限值送到單片機指定的存儲單元中。其流程圖如圖3-6。開始指到下一個存儲單元讀一個BIT到C環(huán)移給A移到指定存儲單元讀暫存器指令跳過ROM匹配初始化字節(jié)取完沒1個字節(jié)沒結 束NYNY圖3-6 讀取溫度高字節(jié)、低字節(jié)和報警值流程圖3.1.7 寫入一個字節(jié)子程序通過寫指令將數(shù)據或指令送到DS18B20中。其流程圖如圖3-7。開始初始化將A環(huán)移一位到C送入DQ結 束Y是否傳完1個字節(jié)N圖3-7 寫入一個字節(jié)流程圖3.1.8 鍵盤掃描子程序通過中斷方式調用鍵盤掃描子程序,其中K1為

4、設置鍵;K2模式設置時,上移光標,自定義參數(shù)設置時,改變上限值;K3模式設置時,下移光標,自定義參數(shù)設置時,改變下限值;K4為確定鍵。其流程圖如圖3-8。開始退出設置光標下移光標上移自定義模式選擇判斷下一鍵模式選擇和自定義結 束K4K1K4K3K2FLAG5=1FLAG5=0圖3-8 鍵盤掃描流程圖3.1.9 顯示數(shù)據子程序顯示溫度值在顯示器上。其流程圖如圖3-9。開始指定字符位置顯示個位數(shù)顯示十位數(shù)顯示符號指定字符位置指定字符位置結 束 圖3-9 顯示數(shù)據流程圖3.1.10 顯示固定字符子程序顯示固定的字符如“Welcome to use!”等字樣。其流程圖如圖3-10。指定字符位置指定首字

5、符地址顯示單個字符指到下一個字符地址字符是否為“0”結 束YN開始圖3-10 顯示固定字符流程圖附錄DQBITP2.2;數(shù)據線GWEIEQU40H;個位SWEIEQU41H;十位SXIANEQU44H;溫度上限BCDXXIANEQU45H;溫度下限BCDDATALEQU42H;讀出溫度低字節(jié)DATAHEQU43H;讀出溫度高字節(jié)ZHZHENGEQU4BH;組合后的整數(shù)值ZHBCDEQU4CH;BCD組合KEYK4EQU4DH;用于區(qū)分,當前按下K4第幾次CURSOREQU4EH;光標位置SYMBOLEQU50H;符號位FLAG1BIT00H;1表示找到DS18B20,0表示初始化DS18B20

6、失敗FLAG2BIT01H;低于下限報警標志FLAG3BIT02H;高于上限報警標志FLAG4BIT03H;啟動時誤報警判斷標志FLAG5BIT04H;模式設置或自定義上下限判斷位,0表示模式設置,1表示自定義FLAG6BIT05H;設置鍵功能判斷:0表示退出設置,1表示進入設置FLAG7BIT06H;用于ARROW子程序,0表示箭頭在第一行,1表示箭頭在第二行FLAG8BIT07H;區(qū)分當前溫度是否在零下,0表示零上,1表示零下REDBITP2.1;上限紅色LEDYELLOWBITP2.0;下限黃色LEDBEEPBITP2.3K1BITP1.0K2BITP1.1K3BITP1.2K4BITP

7、1.3RSPINBITP3.7RWPINBITP3.6EPINBITP3.5ORG0000HLJMPMAINORG0003HLJMPSUBEX0;鍵盤處理MAIN:MOVSP,#60HSETBBEEP;蜂鳴器CLRFLAG1CLRFLAG2CLRFLAG3CLRFLAG4CLRFLAG5CLRFLAG6CLRFLAG7CLRFLAG8MOVGWEI,#00HMOVSWEI,#00HMOVSXIAN,#23HMOVXXIAN,#18HMOVZHZHENG,#00HMOVKEYK4,#01HMOVCURSOR,#01HMOV4FH,#90SETBEX0;外部中斷設置SETBEASETBIT0LCA

8、LLLCDRESETLCALLWELCOMELCALLRESET;復位與檢測DS18B20JNBFLAG1,MAIN1;FLAG1=0,DS18B20不存在MAIN1:SETBREDSETBYELLOWMOVA,#01HLCALLLCDWCLCALLCONERRORMAIN2:LCALLRESETJBFLAG1,STARTLCALLBEEP_BL;DS18B20錯誤,報警JMPMAIN2START:MOVA,#0CCH;跳過ROM匹配LCALLWRITEMOVA,#044H;發(fā)出溫度轉換命令LCALLWRITELCALLDELAY_800MSLCALLRESETMOVA,#0CCH;跳過ROM

9、匹配LCALLWRITEMOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITELCALLREADDATA;讀溫度數(shù)據LCALLTO_BCDJBFLAG4,NEXT0DJNZ4FH,START;多讀幾次,消除啟動的誤報警SETBFLAG4MOVA,#01HLCALLTEMPERATURENEXT0:LCALLDISPLAYLCALLCOMP_TEMPJNBFLAG2,NEXT1LCALLX_ALARMSJMPFENDNEXT1:JNBFLAG3,PENDLCALLS_ALARMPEND:SJMPMAIN2;外部中斷服務程序 SUBEXO:CLREX0PUSHPSWPUSHACCMOVP1,#0

10、FFHLCALLDELAY_10MSJBK1,EX0_ENDCLRFLAG6MOVA,#01HLCALLLCDWCLCALLSETILCALLARROWSETBREDSETBYELLOWJNBK1,$LCALLKEY_SCANMOVA,#01HLCALLLCDWCLCALLTEMPERATURELCALLDISPLAYEX0_END:SETBEX0POPACCPOPPSWRETI;鍵盤掃描程序;K1設置鍵;K2模式設置時,上移光標;自定義參數(shù)設置時,改變上限值;K3模式設置時,下移光標;自定義參數(shù)設置時,改變下限值;K4確定鍵KEY_SCAN:PUSHPSWPUSHACCKEY_LOOP:JB

11、FLAG6,KEY_NEXT0MOVP1,#0FFHJNBK4,KEY_NEXT1JNBK3,KEY_K3JNBK2,KEY_K2JNBK1,KEY_K1LJMPKEY_LOOPKEY_NEXT0:LJMPKEY_ENDKEY_NEXT1:LJMPKEY_K4KEY_K1:LCALLDELAY_10MS;去除抖動JBK1,KEY_LOOPJNBK1,$SETBFLAG6LJMPKEY_LOOPKEY_K2:LCALLDELAY_10MSJBK2,KEY_LOOPJNBK2,$MOVA,KEYK4DECACCJZNEXTK20DECACCJZNEXTK21NEXTK20:CLRFLAG5CLRF

12、LAG7LCALLARROWLJMPKEY_LOOPNEXTK21:JBFLAG5,UPLOWK2CLRFLAG7LCALLARROWMOVA,CURSORDECACCJZCURSOR21DECACCJZCURSOR22DECACCJZCURSOR.23CURSOR21:;指到SUMMERMOVCURSOR,#01HLJMPKEY_LOOPCURSOR22:MOVCURSOR,#01HMOVA,#01HLCALLLCDWCLCALLMODEPAGE1LCALLARROWLJMPKEY_LOOPCURSOR23:MOVCURSOR,#02HLJMPKEY_LOOPUPLOWK2:MOVA,SXI

13、ANANLA,#0FHADDA,#1DAACCADDA,#20HMOVSXIAN,ALCALLUPPERLJMPKEY_LOOPKEY_K3:LCALLDELAY_10MSJBK3,KEY_K3ENDJNBK3,$MOVA,KEYK4DECACCJZNEXTK30NEXTK30:SETBFLAG5SETBFLAG7LCALLARROWLJMPKEY_LOOPNEXTK31:JBFLAG5,UPLOWK3SETBFLAG7LCALLARROWMOVA,CURSORDECACCJZCURSOR31DECACCJZCURSOR32DECACCJZCURSOR33MOVCURSOR,#02HLJMPK

14、EY_LOOPCURSOR32:MOVCURSOR,#03HMOVA,#01HLCALLLCDWCLCALLMODEPAGE32LJMPKEY_LOOPCURSOR33:MOVCURSOR,#03HLJMPKEY_LOOPUPLOWK3:MOVA,XXIANANLA,#0FHADDA,#1DAACCANLA,#0FHADDA,#10HMOVXXIAN,ALCALLLOWERLJMPKEY_LOOPKEY_K3END:LJMPKEY_LOOPKEY_K4:LCALLDELAY_10MSJBK4,KEY_K4NEXTJNBK4,$MOVA,KEYK4DECACCJZNEXTK40DECACCJZN

15、EXTK41KEY_K4NEXT:LJMPKEY_K4ENDNEXTK40:JNBFLAG5,SELMODE;是否處于模式選擇狀態(tài)MOVA,#01HLCALLLCDWCLCALLUPLOWLCALLUPPERLCALLLOWERINCKE;YK4LJMPKEY_K4ENDSELMODE:MOVA,#01HLCALLLCDWCLCALLMODEPAGE1CLRFLAG7;指向SUMMERMOVCURSOR,#01HLCALLARROWINCKEYK4LJMPKEY_K4ENDNEXTK41:MOVA,#01HLCALLLCDWCLCALLSETIMOVC,FLAG5MOVFLAG7,CLCALL

16、ARROWJNBFLAG5,MODESETLCALLRESETMOVA,#0CCH;跳過ROM匹配LCALLWRITEMOVA,#4EH;發(fā)出寫暫存器命令LCALLWRITEMOVA,SXIANLCALLWRITEMOVA,XXIANLCALLWRITELCALLRESETMOVA,#0CCH;跳過ROM匹配LCALLWRITEMOVA,#48H;發(fā)出復制暫存器命令LCALLWRITEDECKEYK4LJMPKEY_K4ENDMODESET:MOVA,CURSORDECACCJZSUMMERDECACCJZWINTERDECACCJZCUSTOMSUMMER:MOVSXIAN,#24HMOVX

17、XIAN,#19HSJMPMODESET_ENDWINTER:MOVSXIAN,#22HMOVXXIAN,#17HSJMPMODESET_ENDCUSTOM:LCALLRESETMOVA,#0CCH;跳過ROM匹配LCALLWRITEMOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITELCALLREADLIM;讀出上下限MODESET_END:DECKEYK4LJMPKEY_K4ENDKEY_K4END:LJMPKEY_LOOPKEY_END:CLRFLAG6JNBK1,$POPACCPOPPSWRET;上下限報警程序,根據FLAG3的值做相應處理S_ALARM:PUSHPSWPUSHAC

18、CCLRREDSETBYELLOWLCALLBEEP_BLSETBREDPOPACCPOPPSWRET;溫度值比較,低于下限則FLAG2=1,高于上限則FLAG3=1COMP_TEMP:PUSHPSWPUSHACCCLRFLAG2CLRFLAG3JNBFLAG8,COMP_NEXTSETBFLAG2COMP_NEXT:CLRCMOVR0,GWEIMOVA,SWEISWAPACCORLA,R0MOVZHBCD,ASUBBA,XXIANINCNEXTSETBFLAG2;低于下限,則設置低溫度報警標志SJMPCOMPTEMPEXITNEXT:MOVA,SXIANSUBBA,ZHBCDINCCOMPT

19、EMPEXITSETBFLAG3;超過上限,則設置高溫度報警標志COMPTEMPEXIT:POPACCPOPPSWRET;將讀出的溫度組合并轉換為BCD碼給十位SWEI,個位GWEITO_BCD:PUSHPSWPUSHACCMOVA,42HSWAPACCANLA,#0FHMOVR0,AMOVA,43HSWAPACCANLA,#0F0HORLA,R0;得到組合數(shù)據MOVZHZHENG,AMOVA,43HANLA,#10HJZCHANGE0MOVSYMBOL,#20HSJMPCHANGE1CHANGE0:MOVSYMBOL,#20HCLRFLAG8CLRCMOVA,#63HSUBBA,ZHZHEN

20、GINCTOBCDMOVGWEI,#18HMOVSWEI,#18H;高于50度,顯示錯誤代碼SJMPEXIT_BCDCHANGE1:MOVA,ZHZHENGSETBFLAG8CPLACCINCACCMOVZHZHENG,ATOBCD:MOVA,ZHZHENGMOVB,#10DIVABMOVGWEI,BMOVSWEI,AEXIT_BCD:POPACCPOPPSERET;從DS18B20中讀出溫度低位、高位(TH、TL)和報警值;存入42H、43HREADDATA:PUSHPSWPUSHACCMOVR4,#2;將溫度高位和低位從DS18B20中讀出MOVR1,#42H;存入42H、43HRE00:

21、MOVR2,#8RE01:CLRCSETBDQNOPNOPCLRDQ;讀前總線保持為低NOPNOPNOPSETBDQ;開始讀總線釋放MOVR3,#09;延時18µsDJNZR3,5MOVC,DQ;從DS18B20總線讀得一個BITMOVR3,#23DJNZR3,$;等待46µsRRCACC;把讀得的位值環(huán)移給ADJNZR3,RE01;讀下一個BITMOVR1,AINCR1DJNZR4,RE00POPACCPOPPSWRET;寫入一個字節(jié),數(shù)據通過A傳遞WRITE:PUSHPSWPUSHACCMOVR2,#8;一共8位數(shù)據CLRCSETBDQNOPWRI:CLRDQ;開始寫入

22、DS18B20,總線要處于復位狀態(tài)MOVR3,#09MOVR3,$;總線復位保持18µs以上RRCACC;把一個字節(jié)DATA分成8個BIT環(huán)移給CMOVDQ,C;寫入一個BITMOVR3,#23DJNZR3,$;等待46µsSETBDQ;重新釋放總線NOPDJNZR2,WRI;寫入下一個BITSETBDQPOPACCPOPPSWRET;DS18B20復位與檢測子程序;FLAG1=1表示正確,F(xiàn)LAG=0表示錯誤RESET:PUSHPSWPUSHACCSETBDQNOPCLRDQMOVR0.#64H;主機發(fā)出延時600µs的復位脈沖MOVR1,#03HRESET1:

23、DJNZR0,$MOVR0,#64HDJNZR1,RESET1SETBDQ;然后拉高數(shù)據線NOPMOVR0,#25HRESET2:JNBDQ,RESET3;等待DS18B20回應DJNZR0,RESET2JMPRESET4;延時RESET3:SETBFLAG1;置標志位,表示DS18B20存在JMPRESET5RESET4:CLRFLAG1;清標志位,表示DS18B20不存在JMPRESET6RESET5:MOVR0,#064HDJNZR0,$;時序要求延時一段時間RESET6:SETBDQPOPACCPOPPSWRET;蜂鳴器響一聲子程序;BEEP=0,蜂鳴器響B(tài)EEP_BL:PUSHPSW

24、PUSHACCMOVR6,#100BL2:LCALLDEX1CPLBEEP;對BEEP取反DJNZR6,BL2MOVR5,#20LCALLDELAYPOPACCPOPPSWRETDEX1:MOVR7,#200DE2:NOPDJNZR7,DE2RETDELAY:MOVR6,#50HDEL1:MOVR7,#100DJNZR7,5DJNZR7,$DJNZR6,DELAYRET;數(shù)據顯示程序DISPLAY:PUSHPSWPUSHACCMOVA,#0C2H;個位LCALLLCDWCMOVA,GWEIADDA,#30HLCALLLCDWDMOVA,#0C1H;十位LCALLLCDWCMOVA,#SWEIA

25、DDA,#30HLCALLLCDWDMOVA,#0C0H;符號位LCALLLCDWCMOVA,SYMBOLLCALLLCDWDPOPACCPOPPSWRETDELAY_10MS:;延時10µsMOVR3,#50DD1:MOVR4,#100DJNZR4,$DJNZR3,DD1RET;顯示歡迎界面WELCOME:PUSHACCMOVA,#80HLCALLLCDWCMOVDPTR,#TABWEICOMEWDISP1:CLRACCMOVCA,A+DPTRJZWEL_ENDLCALLLCDWDINCDPTRSJMPWDISP1WEL_END:POPACCRET;顯示連接錯誤CONERROR:P

26、USHACCMOVA,#80HLCALLLCDWCMOVDPTR,#TABCONNECTCDISP1:CLRACCMOVCA,A+DPTRJZCON_ENDLCALLLCDWDINCDPTRSJMPCDISP1CON_END:POPACCRET;顯示模式選擇第一頁面SUMMER&WINTERMODEPAGE1:PUSHACCMOVA,#80HLCALLLCDWCMOVDPTR,#TABMP1MPIDISP1:CLRACCMOVCA,A+DPTRJZMPIDISP2LCALLLCDWDINCDPTRSJMPMPIDISP1MPIDISP2:MOVA,#0C0HLCALLLCDWCMOVD

27、PTR,#TABMP2MPIDISP3:MOVCA,A+DPTRJZMP1_ENDLCALLLCDWDINCDPTRSJMPMPIDISP3MP1_END:POPACCRET;顯示模式選擇第一頁面WINTER&CUSTOMMODEPAGE2:PUSHACCMOVA,#80HLCALLLCDWCMOVDPTR,#TABMP2MP2DISP1:MOVCA,A+DPTRJZMP2DSIP2LCALLLCDWDINCDPTRSJMPMPWDISP1MP2DISP2:MOVA,#0C0HLCALLLCDWCMOVDPTR,#TABMP3MP2DISP3:CLRACCMOVCA,A+DPTRJZM

28、P2_ENDLCALLLCDWDINCDPTRSJMPMP2DISP3MP2_END:POPACCRET;顯示上下限設置界面UPLOW:PUSHACCMOVA,#80HLCALLLCDWCMOVDPTR,#TABUPULDISP1:CLRACCMOVCA,A+DPTRJZULDISP2LCALLLCDWDINCDPTRSJMPULDISP1ULDISP2:MOVA,#0C0HLCALLLCDWCMOVDPTR,#TABLOWULDSIP3:CLRACCMOVCA,A+DPTRJZUL_ENDLCALLLCDWDINCDPTRSJMPULDISP3UL_END:POPACCRET。;液晶初始化;初始化程序LCDRESET:;初始化程序LCALLDELAY5MS;延時15msLCALLDELAY5M

溫馨提示

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

評論

0/150

提交評論