2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩23頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機原理課程</b></p><p><b>  設計報告</b></p><p><b>  一、設計目標</b></p><p>  本設計采用LED和數碼顯示管顯示洗衣機所處在的模式和水位,所處的的洗衣狀態,水溫,以及完成洗衣的剩余時間。實現不同模式下水位的選擇一

2、共三種模式(標準,輕柔,快洗),四種水位,當洗衣機啟動后,上水電磁閥打開注水,當水到達設定的限位時,上水電磁閥斷電,注水過程停止,啟動電機全自動控制洗衣操作,整個過程的進行按時間控制,時間自定。液位檢測和控制:使水位限定在某一個給定的液位范圍內,當水位越限時進入超水位中斷報警提示并打開下水電磁閥放水,不啟動洗衣過程,待滿足要求后,投入運行。當投入洗衣量大于洗衣機額定容量時,控制系統應報警,不啟動洗衣過程。待滿足要求后,投入運行</

3、p><p>  1、洗衣程序功能:手動模式:用戶可以選擇單獨的單洗,漂洗,長脫水;自動模式:用戶可以根據需求通過鍵盤選擇以下模式:即標準洗衣程序、輕柔洗衣、快洗每種模式下又可以選擇四種水位;再上電后如果不進行任何操作一段時間后洗衣機便進入默認模式進行洗衣。 </p><p>  2、顯示功能:顯示選擇的模式,水位,正在進行的洗衣操作(狀態),水溫,完成洗衣過程的剩余時間。<

4、/p><p>  特殊功能:超水位報警并自動放水,達到要求后結束報警開始洗衣;超容量報警,待用戶排除后結束報警開始洗衣。</p><p><b>  設計過程</b></p><p><b>  1、硬件設計</b></p><p><b> ?。?)系統總體設計</b></

5、p><p>  一臺洗衣機大體可分為5部分,分別為按鍵控制部分、顯示部分、進水部分、排水部分、電機部分。這5部分按鍵控制為輸入,其余為輸出。如下圖</p><p><b>  總體結構圖</b></p><p><b> ?。?)具體實現</b></p><p>  本設計用98C51單片機實現洗衣機的

6、控制,通過對撥碼開關和鍵盤的操作實現手動自動模式的選擇,以及水位得選擇,也可以進行任何操作進入默認模式。當選擇好模式后進入該模式設置該模式下的參數,然后再次掃描鍵盤,去選擇水位,選定水位后,進入該水位模式設置水位參數。</p><p>  在P1.4為低電平是進入手動模式,手動模式下若P1.5為低電平則進入單洗過程,單洗完成聲光報警提示用戶此過程完成;若P1.5為高電平檢查P1.6若為低電平進去漂洗程序進行漂洗,

7、漂洗完成聲光報警提示用戶漂洗結束。柔P1.6為高電平則檢查P1.7若為低電平就進入長脫水程序,進行長脫水,長脫水結束聲光報警提示用戶操作完成;若P1.7為高電平則從P1.5重新檢查直到檢查到低電平為止。</p><p>  在P1.4為高電平時不是手動模式,則去掃描鍵盤,第一次掃描鍵盤為選擇標準,輕柔,快洗模式,待選擇好模式設定好參數后,再次掃描鍵盤選擇水位,選擇好水位后設置參數,然后進入洗衣過程。如果15秒內沒

8、有掃描到模式的按鍵,則進入默認模式。</p><p>  單洗衣程序包括單洗、漂洗、長脫水三個過程。</p><p>  自動模式下的三個模式都包括單洗、漂洗、長脫水三個過程,只是在不同模式和水位下的參數不同罷了;洗衣過程:進入洗衣程序開定時器開始倒計時,根據選擇的水位進水,進水完成后,在沒有超出要求水位的情況下,進入單洗過程,電動機開始正反轉過程根據所選模式中設置的正反轉次數以及不同模式

9、下正反轉的時間自動洗衣;待單洗完成就進入排水過程,排水時間由水位模式設置,排水結束后進入漂洗過程。漂洗過程:先進行段脫水,脫水結束再進水,進水完成再進行短洗,短洗時間為四分鐘,短洗完成在排水,然后重復上述過程一次即完成漂洗過程,漂洗完成進入長脫水過程,長脫水時間為四分鐘,電機高速旋轉,長脫水結束,整個洗衣過稱也結束,此時聲光報警提示用戶洗衣完成。</p><p>  標準模式下的單洗過程,電機正反轉36次,每次正

10、轉十八秒,停兩秒,再反轉十八秒,停兩秒;輕柔模式下單洗過程,電機正反轉36次,每次正傳是三秒停兩秒,再反轉是三秒,停兩秒;快洗模式下但系過程,電機正反轉24次,每次正轉十八秒,停兩秒,再反轉十八秒,停兩秒;三種模式下的漂洗過程相同見下面漂洗過程分析;每個模式下的長脫水都是相同的,都是電機正傳四分鐘。</p><p>  進排水由時間控制,每個水位下設置好了進排水的時間,進水時P3.4置一,表示開進水閥,進水完成時

11、P3.4置0表示關進水閥;排水是P3.5置1表示開排水閥,排水完成是P3.5置0表示管排水閥。</p><p>  在顯示時開始考慮的是通過按鍵實現交替顯示,但是這樣就必須時刻掃描鍵盤,這使程序進入了掃描鍵盤的死循環,無法進行其他的工能,在多次考慮后發現在進排水,電機動作時沒有其他的要求,可以利用這段時間去驅動數碼管顯示模式,水位,狀態,溫度,以及剩余時間等,剩余時間單獨顯示,其他的一起顯示,這樣就只需要顯示兩次

12、,每次十秒,交替顯示,單洗是短洗時電機正傳是顯示十秒的模式,水位,狀態,溫度,然后數碼管熄滅十秒或五秒,電機反轉時顯示十秒的剩余時間,再熄滅十秒或五秒,這樣循環進行;在脫水或進排水時兩種顯示一十秒每次交替顯示,這樣在整個過程中多有顯示,很好地解決了顯示與洗衣同時進行的問題了。</p><p>  電機的正反轉實現方式:當P3.6為1,P3.7為0時電機正轉,當P3.6和P3.7都為0時電機停轉,當P3.6為0,P

13、3.7為1時電機反轉。電機正反轉用LED燈模擬,紅燈亮表示正傳,綠燈亮表示反轉,兩燈都熄滅表示電機停轉。</p><p>  自動模式下,數碼管右邊第一為表示模式,b表示標準模式,q表示輕柔模式,3表示快洗模式,第二位表示水位分別用1、2、3、4表示四種水位;中間兩位表示正在進行的動作即狀態,7H表示進水,dH表示短脫水,dd表示短洗,CH表示長脫水PH表示排水;左邊兩位顯示的是水的溫度。在顯示模式2下用四個數碼

14、管顯示剩余時間。</p><p>  在手動模式下的單洗,漂洗,長脫水需要單獨設置參數,具體設置見附錄的程序中;單洗時,模式水位顯示位顯示的是d7表示手動下的單洗;漂洗是顯示P7表示漂洗,長脫水時顯示CH表示長脫水;手動下單洗為28分鐘,漂洗為18分鐘,長脫水為4分鐘。</p><p>  默認模式下調用的是標準模式下水位2的洗衣程序,顯示也完全相同;</p><p&g

15、t;  另外每一個動作完成時都有一秒鐘的蜂鳴提示。</p><p>  2、軟件程序的設計:</p><p>  洗衣機的一次洗衣過程控制過程比較簡單,主要為順序控制,如先進水、洗滌(電機正轉反轉)、再排水脫水,難點在于過程選擇,如不同的衣物所用的洗滌、漂洗、電機正轉反轉時間不同,如果為每個過程單獨編一套指令,則指令系統變得很龐大,效率低,為此,把脫水、洗滌、排水、短洗、漂洗、進水單獨編為

16、一個子程序,由主程序根據過程選擇,不斷調用,由些減少源程序的長度,不同的洗衣過程,三大動作的時間不同,這可以通過建立數據表格,通過查表的方式獲得每個洗衣過程所需時間。此外,還需編出顯示子程序,延時子程序供主程序不斷調用,而且在每一個模式和水位下設置了不同參數,這樣通過對子程序的調用,就實現了同一模式下不同水位的選擇這一擴展功能,僅僅在自動模式下就有3*4=12種小模式了。</p><p><b>  三

17、、設計結果</b></p><p><b>  1、電路原理圖</b></p><p><b>  2、PCB版圖:</b></p><p><b>  3、流程圖</b></p><p><b>  N </b></p&g

18、t;<p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  主程序框圖</b></p><p>  自動模式下模式水位的選擇</p><p

19、>  洗衣流程單洗流程</p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  

20、長脫水流程</b></p><p><b>  漂洗流程</b></p><p><b>  進水流程排水流程</b></p><p><b>  N</b></p><p><b>  NY</b></p><p&

21、gt;<b>  Y</b></p><p><b>  N</b></p><p><b>  N</b></p><p><b>  YY</b></p><p><b>  電機正反轉流程</b></p><

22、;p><b>  N</b></p><p><b>  Y</b></p><p>  超水位報警并自動排水流程</p><p><b>  匯編語言</b></p><p>  洗衣機系統的匯編程序</p><p>  FLAG EQU

23、 45H ;DS18B20是否存在標志 </p><p>  DQ EQU P1.3 ;DQ引腳由P2.5控制 </p><p>  ORG 0000H</p><p>  LJMP START</p><p>  ORG 0003H</p><p>  LJMP

24、 PINT0</p><p>  ORG 0013H</p><p>  LJMP PINT1</p><p>  ORG 001BH</p><p>  LJMP P_T1</p><p>  ORG 0030H</p><p>  START: MOV SP,#60H

25、</p><p>  CLR P3.4 ;關進水閥 </p><p>  CLR P3.5;關排水閥 </p><p>  CLR P3.6;電機不轉動 </p><p>  CLR P3.7 ;電機不轉動 </p><p>  MOV IP,#01H;INTI為

26、高優先級 </p><p>  SETB EA;CPU允許中斷 </p><p>  SETB IT0;跳變觸發方式 </p><p>  SETB IT1;跳變觸發方式 </p><p>  MOV TH1,#3CH<

27、;/p><p>  MOV TL1,#0B0H</p><p>  MOV 40H,#20;1S定時 </p><p>  MOV TMOD,#10H</p><p>  SETB EX1;允許INT1中斷SETB EX0;允許INT0中斷 S

28、ETB ET1;允許定時器T1中斷 MOV 4DH,#05 ;等待5秒,供用戶選擇手動還是 </p><p>  DENDAI:LCALL DL1S ;自動,若選擇手動并設置自動模式下的哪種 </p><p>  DJNZ 4DH,DENDAI ;工作方式,單洗,單漂,長脫水 </p><p>  MO

29、V P1,#0F6H</p><p>  LCALL DL1S</p><p>  MOV P1,#0FFH</p><p>  MOV 4FH,#250</p><p>  BACK:JB P1.4,KSSM1;P1.4為1即使自動模式,轉到掃描鍵盤 JNB P1.5,TODANXI ;P1.5為0

30、即為選擇單洗,轉到單洗JNB P1.6,TOPX;P1.6為0即為選擇漂洗,轉到漂洗JNB P1.7,TOCTS;P1.7為0即為選擇長脫水,轉到長脫水JMP BACK;沒有檢測到手動選擇的是什么,換回重新檢測;******手動單洗程序******** </p><p>  TODANXI:SETB TR1</p><

31、p>  MOV 30H,#07 ;狀態顯示參數,顯示7 </p><p>  MOV 31H,#13 ;狀態顯示參數,顯示d,d7代表單洗 </p><p>  MOV 2AH,#18H ;電機動作24分鐘 </p><p>  MOV 2CH,#05H ;進排水4分鐘 </p><p>  MOV 25H,

32、#36;設正反轉次數 </p><p>  MOV 26H,#08;轉動8+10s </p><p>  MOV 27H,#02;停2秒 </p><p>  MOV 28H,#40;進排水2分鐘,40+20x4 </p><p>  LCALLDJSCZ</p><p>  LCALL D

33、ANXI</p><p>  JNB P1.6,TOPX</p><p>  LJMP THEND</p><p>  ;****手動漂洗程序****** </p><p>  TOPX:SETB TR1</p><p>  MOV 30H,#07 ;狀態顯示參數,顯示7 </p><

34、p>  MOV 31H,#18 ;狀態顯示參數,顯示P,P7代表漂洗 </p><p>  MOV 2AH,#0EH ;電機動作14分鐘 </p><p>  MOV 2CH,#05H ;進排水4分鐘 </p><p>  MOV 28H,#40;進排水2分鐘,40+20x4 </p><p>  LCALL

35、DJSCZ</p><p><b>  LCALL PX</b></p><p>  JNB P1.7,TOCTS</p><p>  LJMP THEND</p><p>  ;****手動長脫水****** </p><p>  TOCTS:SETB TR1</p>

36、<p>  MOV 30H,#16;狀態顯示參數,顯示H </p><p>  MOV 31H,#12;狀態顯示參數,顯示C,CH代表長脫水 </p><p>  MOV 2AH,#04H ;脫水4分鐘 </p><p>  MOV 2CH,#00H</p><p>  LCALLDJSCZ</

37、p><p>  LCALL CTS</p><p>  LJMP THEND </p><p>  ;****鍵盤掃描1******</p><p>  KSSM1:MOV P2,#0F0H ;置P2.0~P2.3為輸出,P2.4~P2.6為輸入</p><p>  MOV A,P2</

38、p><p>  ANL A,#0F0H</p><p>  XRL A,#0F0H</p><p>  JZ NO_KEY1 ;A為0則無按鍵</p><p>  LCALL DL20MS ;延時消抖</p><p>  MOV A,P2</p><p>  A

39、NL A,#0F0H ;重讀鍵盤</p><p>  XRL A,#0F0H</p><p>  JZ NO_KEY1 ;A為0則無按鍵</p><p>  MOV R2,#11110111B ;列掃描初值</p><p>  LSM1:MOV A,R2</p><p>

40、  MOV P2,A</p><p>  MOV A,P2</p><p>  ANL A,#11110000B</p><p>  MOV R3,A</p><p>  CJNE A,#0F0H,KEY1;有鍵按下則跳轉</p><p>  MOV A,R2</p><p

41、><b>  RR A</b></p><p><b>  MOV R2,A</b></p><p>  XRL A,#01111111B</p><p>  JNZ LSM1</p><p>  NO_KEY1:LJMP NEXT3</p><p>

42、;  KEY1:MOV A,R2</p><p>  ANL A,#0FH</p><p>  ORL A,R3</p><p>  MOV R4,A</p><p>  SHIFANG1: MOV A,P2</p><p>  ANL A,#0F0H</p><p> 

43、 XRL A,#0F0H</p><p>  JNZ SHIFANG1</p><p>  LCALL DL20MS</p><p>  MOV A,P2</p><p>  ANL A,#0F0H</p><p>  XRL A,#0F0H</p><p>  JNZ

44、SHIFANG1</p><p>  MOV A,R4</p><p>  CJNE A,#0D7H,NEXT1</p><p>  LJMP FANGSHI1</p><p>  NEXT1:CJNE A,#0DBH,NEXT2</p><p>  LJMP FANGSHI2</p>&

45、lt;p>  NEXT2:CJNE A,#0DDH,NEXT3</p><p>  LJMP FANGSHI3</p><p>  NEXT3: DJNZ 4FH,KSSM1</p><p>  LJMP MORENMOSHI;跳到默認模式 </p><p>  ;****實際鍵盤掃描2*****</p

46、><p>  KSSM2:MOV P2,#0F0H ;置P2.0~P2.3為輸出,P2.4~P2.6為輸入</p><p>  MOV A,P2</p><p>  ANL A,#0F0H</p><p>  XRL A,#0F0H</p><p>  JZ NO_KEY2 ;A為0

47、則無按鍵</p><p>  LCALL DL20MS ;延時消抖</p><p>  MOV A,P2</p><p>  ANL A,#0F0H ;重讀鍵盤</p><p>  XRL A,#0F0H</p><p>  JZ NO_KEY2 ;A為0則無按鍵</

48、p><p>  MOV R2,#11110111B ;列掃描初值</p><p>  LSM2:MOV A,R2</p><p>  MOV P2,A</p><p>  MOV A,P2</p><p>  ANL A,#11110000B</p><p>  MOV

49、 R3,A</p><p>  CJNE A,#0F0H,KEY2;有鍵按下則跳轉</p><p>  MOV A,R2</p><p><b>  RR A</b></p><p><b>  MOV R2,A</b></p><p>  XRL A

50、,#01111111B</p><p>  JNZ LSM2</p><p>  NO_KEY2:LJMP KSSM2</p><p>  KEY2:MOV A,R2</p><p>  ANL A,#0FH</p><p>  ORL A,R3</p><p>  MOV

51、 R4,A</p><p>  SHIFANG2: MOV A,P2</p><p>  ANL A,#0F0H</p><p>  XRL A,#0F0H</p><p>  JNZ SHIFANG2</p><p>  LCALL DL20MS</p><p>  MOV

52、 A,P2</p><p>  ANL A,#0F0H</p><p>  XRL A,#0F0H</p><p>  JNZ SHIFANG2</p><p>  MOV A,R4</p><p>  CJNE A,#0B7H,NEXT4</p><p>  LJMP S

53、HUIWEI1</p><p>  NEXT4: CJNE A,#0BBH,NEXT5</p><p>  LJMP SHUIWEI2</p><p>  NEXT5:CJNE A,#0BDH,NEXT6</p><p>  LJMP SHUIWEI3</p><p>  NEXT6:CJNE A,#7

54、7H,NEXT7</p><p>  LJMP SHUIWEI4</p><p>  NEXT7: LJMP KSSM2</p><p>  ;*****默認模式***** </p><p>  MORENMOSHI: MOV 2AH,#2AH;設置時間1的參數42分鐘 MOV 30H,#0B

55、H;顯示方式為b代表標準 MOV 25H,#36;正反轉次數 MOV 26H,#08;轉動8+10s MOV 27H,#02</p><p>  MOV 2CH,#0DH;時間2,為13分鐘 </p><p>  MOV 31H,#01;顯示

56、水位為1 </p><p>  MOV 28H,#50;進排水時間,50s+80s </p><p>  LCALL XYCHX</p><p><b>  RET</b></p><p>  ;****自動情況下方式一即為標準模式***</p><p> 

57、 FANGSHI1 : MOV 2AH,#2AH;設置時間1的參數42分鐘 MOV 30H,#0BH;顯示方式為b代表標準 MOV 25H,#36;正反轉次數 MOV 26H,#08;轉動8+10s MOV 27H,#02;停兩秒 LCALL KSSM2;調用鍵盤掃描

58、程序,選擇水位</p><p>  LJMP THEND</p><p>  ;******自動情況下方式二,即為輕柔模式*******FANGSHI2: MOV 2AH,#24H;設置時間1的參數24分鐘 MOV 30H,#25;顯示方式為q代表輕柔 MOV 25H,#36;正反轉次數

59、 MOV 26H,#03;轉動3+10s MOV 27H,#02;停兩秒 </p><p>  LCALL KSSM2;調用鍵盤掃描程序,選擇水位</p><p>  LJMP THEND</p><p>  ;*****自動情況下方式三,

60、即為快洗模式***** FANGSHI3: MOV 2AH,#1EH ;設置時間1的參數30分鐘 MOV 30H,#03;顯示方式為3代表快洗 MOV 25H,#18;正反轉次數 MOV 26H,#08;轉動8+10s </p><p>  MOV 2

61、7H,#02;停兩秒 </p><p>  LCALL KSSM2;調用鍵盤掃描程序,選擇水位</p><p>  LJMP THEND</p><p>  ;******水位一***** * </p><p>  SHUIWEI1: MOV 2CH,#0DH;時間2,為13分

62、鐘 </p><p>  MOV 31H,#01;顯示水位為1 </p><p>  MOV 28H,#50;進排水時間,50s+80s </p><p>  LCALL XYCHX</p><p><b>  RET</b></p><p&g

63、t;  ;*****水位二***** </p><p>  SHUIWEI2: MOV 2CH,#0CH;時間2,為12分鐘 </p><p>  MOV 31H,#02;顯示水位為2 </p><p>  MOV 28H,#40;進排水時間,40s+80s </p&

64、gt;<p>  LCALL XYCHX</p><p><b>  RET</b></p><p>  ;*****水位三****** </p><p>  SHUIWEI3: MOV 2CH,#0BH;時間2,為11分鐘 </p><p>  MOV

65、31H,#03;顯示水位為3 </p><p>  MOV 28H,#30;進排水時間,30s+80s </p><p>  LCALL XYCHX</p><p><b>  RET</b></p><p>  ;*****水位四********* <

66、/p><p>  SHUIWEI4: MOV 2CH,#0AH;時間2,為10分鐘 </p><p>  MOV 31H,#04;顯示水位為4 </p><p>  MOV 28H,#20;進排水時間,20s+80s </p><p>  LCALL XYCHX</p><p&g

67、t;<b>  RET</b></p><p>  ;*******洗衣程序****** </p><p>  XYCHX: SETB TR1;開定時器 </p><p>  LCALL DANXI;調單洗程序 </p><p>  LCALL PX;調漂洗程序 </p>

68、<p>  LCALL CTS;調長脫水程序 </p><p>  RET </p><p>  ;******單洗程序 *******</p><p><b>  DANXI: </b></p><p>  LCALL DJSCZ ;倒計時初值 </p><

69、;p>  LCALL JSH;調進水程序 </p><p>  GOON2: MOV 32H,#07</p><p>  MOV 33H,#13</p><p>  LCALL ZFZ;調正反轉程序 </p><p>  DJNZ 25H,GOON2;循環幾次 </p><p>

70、  LCALL PSH;排水 </p><p><b>  RET</b></p><p>  ;******漂洗程序 ******* </p><p>  PX:MOV 29H,#02;循環2次 </p><p>  LCALL DTS;短脫水 </p><p>

71、;  GOON3: LCALL JSH;進水 </p><p>  LCALL DXD;短洗滌 </p><p>  LCALL PSH;排水 </p><p>  LCALL DTS;短脫水 </p><p>  DJNZ 29H,GOON3</p><p><b

72、>  RET</b></p><p>  ;*****長脫水程序(4分鐘) ****** </p><p>  CTS:MOV 32H,#16;狀態顯示查表參數,顯示H</p><p>  MOV 33H,#12;狀態顯示查表參數,顯示C,表示長脫水 </p><p>  MOV 2BH,#12

73、;設置調用延時顯示程序的次數 </p><p>  SETB P3.5;開排水閥 </p><p>  SETB P3.6</p><p>  CLR P3.7;開始脫水 </p><p>  LCALL YSXS;延時并顯示 </p><p>  CLR P3.6;停止脫水

74、 </p><p>  CLR P3.5;關排水閥 </p><p>  LCALL SHGTS;聲光提示 </p><p><b>  RET</b></p><p>  ;******進水程序******* </p><p>  JSH:MOV 32H,#16;

75、狀態顯示查表參數顯示H </p><p>  MOV 33H,#07;狀態顯示查表參數顯示7,7H代表進水 </p><p>  MOV 24H,28H;進水時間參數 </p><p>  SETB P3.4;開排進閥 </p><p>  LCALL JPSHYS;延時并顯示 </p>&

76、lt;p>  CLR P3.4;關進水閥 </p><p>  LCALL SHGTS;聲光提示 </p><p><b>  RET</b></p><p>  ; *****短脫水程序(2分鐘)******** </p><p>  DTS: MOV 32H,#16;狀態顯示查表

77、參數,顯示H </p><p>  MOV 33H,#13;狀態顯示查表參數,顯示d,dH代表短脫水 </p><p>  MOV 2BH,#06;設置調用延時顯示程序的次數 </p><p>  SETB P3.5;開排水閥 </p><p>  SETB P3.6</p><p> 

78、 CLR P3.7;開始脫水 </p><p>  LCALL YSXS;延時并顯示 </p><p>  CLR P3.6;停止脫水 </p><p>  CLR P3.5;關排水閥 </p><p>  LCALL SHGTS;聲光提示 </p><p><b&g

79、t;  RET</b></p><p>  ;*****短洗程序 4分鐘******* </p><p>  DXD:MOV 32H,#13;狀態顯示查表參數 </p><p>  MOV 33H,#13;狀態顯示查表參數 </p><p>  MOV 25H,#08H;正反轉次數 </p

80、><p>  MOV 26H,#03H;3+10s </p><p>  MOV 27H,#02H;停兩秒 </p><p>  GOON1:LCALL ZFZ</p><p>  DJNZ 25H,GOON1;正反轉8次 </p><p>  LCALL SHGTS;聲光提示 &

81、lt;/p><p><b>  RET</b></p><p>  ;******排水程序****** </p><p>  PSH:MOV 32H,#16;狀態顯示查表參數,顯示H </p><p>  MOV 33H,#18;狀態顯示查表參數,顯示P,PH代表排水 </p><

82、p>  MOV 24H,28H;進水時間參數 </p><p>  SETB P3.5;開排進閥 </p><p>  LCALL JPSHYS;延時并顯示 </p><p>  CLR P3.5;關進水閥 </p><p>  LCALL SHGTS;聲光提示 </p><

83、;p><b>  RET</b></p><p>  ;****進排水延時并顯示程序***** </p><p>  JPSHYS:MOV R7,#04H ;調4次顯示,共80s </p><p>  GO4:LCALL T01</p><p>  LCALL T02</p>&l

84、t;p>  DJNZ R7,GO4;4次完沒有 </p><p><b>  RET</b></p><p>  ;*******脫水延時顯示 ******* </p><p><b>  YSXS:NOP</b></p><p>  GO3:LCALL T01</p&

85、gt;<p>  LCALL T02</p><p>  DJNZ 2BH,GO3</p><p><b>  RET </b></p><p>  ;*****20ms延時子程序******* </p><p>  DL20MS:MOV 20H,#10</p><p> 

86、 DELY1:MOV 21H,#250</p><p>  DELY2:NOP</p><p><b>  NOP</b></p><p>  NOP </p><p><b>  NOP</b></p><p><b>

87、;  NOP</b></p><p><b>  NOP</b></p><p>  DJNZ 21H,DELY2</p><p>  DJNZ 20H,DELY1</p><p><b>  RET</b></p><p>  ;******1s延時子程序

88、 ****** </p><p>  DL1S:MOV 22H,#50</p><p>  DELY3:LCALL DL20MS</p><p>  DJNZ 22H,DELY3</p><p><b>  RET</b></p><p>  ;******t0延時子程序******

89、 </p><p><b>  TO:NOP</b></p><p>  GO5:LCALL DL1S</p><p>  DJNZ 24H,GO5</p><p><b>  RET</b></p><p>  ;******1ms延時程序***** &l

90、t;/p><p>  DL1MS:MOV 23H,#250</p><p>  DELY4:NOP</p><p><b>  NOP</b></p><p>  DJNZ 23H,DELY4</p><p><b>  RET</b></p><p&

91、gt;  ;*******t01延時顯示程序 ****** </p><p>  T01:MOV 47H,#10</p><p>  GO10:MOV R6,#00</p><p>  LCALL DO18B20</p><p>  GO1:LCALL XSCX1;調顯示程序1 </p><p>

92、;  CJNE R6,#01,GO1</p><p>  DJNZ 47H,GO10</p><p><b>  RET</b></p><p>  ;******t02延時顯示程序2****** </p><p>  T02:MOV R6,#00</p><p>  GO2:LCALL

93、 SHJFL</p><p>  LCALL XSCX2</p><p>  CJNE R6,#10,GO2</p><p><b>  RET</b></p><p>  ;******正反轉程序******* </p><p>  ZFZ:MOV 24H,26H</p>

94、<p>  SETB P3.6</p><p>  CLR P3.7</p><p>  LCALL T01;正轉10秒 </p><p>  MOV P1,#07H</p><p>  LCALL TO;正轉8或3秒 </p><p>  CLR P3.6;停 </

95、p><p>  MOV 24H,27H </p><p>  LCALL TO;停2秒 </p><p>  MOV 24H,26H</p><p>  SETB P3.7</p><p>  LCALL T02;反轉十秒 </p><p>  MOV P1,#07H&l

96、t;/p><p>  LCALL TO;反轉8或3秒 </p><p><b>  CLR P3.7</b></p><p>  MOV 24H,27H </p><p>  LCALL TO;停2秒 </p><p><b>  RET</b></p&

97、gt;<p>  ;*******計算倒計時初值****** </p><p>  DJSCZ:MOV A,2AH</p><p>  ADD A,2CH</p><p><b>  DEC A</b></p><p>  MOV 42H,A</p><p>  MOV

98、 41H,#60</p><p><b>  RET</b></p><p>  ;*****定時到中斷****** </p><p>  P_T1:PUSH ACC</p><p><b>  PUSH PSW</b></p><p>  MOV TH1,#3CH

99、 ;重置計時初值 </p><p>  MOV TL1,#0BH</p><p>  DJNZ 40H,TODO1;到一秒使秒單元減一 </p><p>  MOV 40H,#20</p><p><b>  INC R6</b></p><p><b>  DE

100、C 41H</b></p><p>  MOV R2,41H</p><p>  CJNE R2,#00,TODO1</p><p>  MOV R3,42H</p><p>  CJNE R3,#00,TODO2</p><p><b>  CLR TR1</b><

101、/p><p>  LJMP TODO1</p><p>  TODO2:DEC 42H ;到一分鐘使分單元減一 </p><p>  MOV 41H,#60</p><p>  TODO1:POP PSW</p><p><b>  POP ACC</b></p>&

102、lt;p><b>  RETI</b></p><p>  ;****時間分離并緩存 **** </p><p>  SHJFL:MOV A,41H ;將秒分離到兩個單元里 </p><p>  MOV B,#10 ;一個存放個位,一個存放十位</p><p><b>  D

103、IV AB</b></p><p>  MOV 36H,B</p><p>  MOV 37H,A</p><p>  MOV A,42H</p><p>  MOV B,#10 ;將分鐘數分離到兩個單元 </p><p>  DIV AB;一個存放各位,一個存放十位 &l

104、t;/p><p>  MOV 38H,B</p><p>  MOV 39H,A</p><p><b>  RET</b></p><p>  ;************聲光提示程序 ********</p><p>  SHGTS:MOV P1,#06H</p><

105、p>  LCALL DL1S ;蜂鳴一秒 </p><p>  MOV P1,#07H</p><p>  LCALL DL1S;亮燈一秒 </p><p>  MOV P1,#00H</p><p><b>  RET</b></p><p>  ;*****顯示程序一

106、***** </p><p>  XSCX1:MOV R0,#30H ;數據首地址 </p><p>  MOV P1,#05H ;選顯示數碼管 </p><p>  LCALL DISP; 顯示模式 </p><p>  INC R0</p><p>  MOV P1,#04

107、H</p><p>  LCALL DISP ;顯示水位 </p><p><b>  INC R0</b></p><p>  MOV P1,#03H</p><p>  LCALL DISP;顯示狀態 </p><p><b>  INC R0</b&g

108、t;</p><p>  MOV P1,#02H</p><p>  LCALL DISP;顯示狀態 </p><p><b>  INC R0</b></p><p>  MOV P1,#01H</p><p>  LCALL DISP ;顯示溫度 </p>

109、<p><b>  INC R0</b></p><p>  MOV P1,#00H </p><p>  LCALL DISP ;顯示溫度 </p><p><b>  RET</b></p><p>  ;******顯示程序二***** </p>

110、<p>  XSCX2:MOV R0,#36H ;數據首地址 </p><p>  MOV P1,#05H ;選擇數碼管 </p><p>  LCALL DISP</p><p>  INC R0;改地址</p><p>  MOV P1,#04H;改數碼管 </p>

111、<p>  LCALL DISP</p><p><b>  INC R0</b></p><p>  MOV P1,#02H</p><p>  LCALL DISP</p><p><b>  INC R0</b></p><p>  MOV

112、P1,#01H</p><p>  LCALL DISP</p><p><b>  RET</b></p><p>  ;*****位顯示程序****** </p><p>  DISP:MOV DPTR,#LED_TAB</p><p>  MOV A,@R0</p>

113、<p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  LCALL DL1MS</p><p><b>  RET</b></p><p>  LED_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,

114、07H</p><p>  DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H</p><p>  DB 76H,38H,73H,31H,3EH,6EH,40H,80H,00H,67H</p><p>  ;****18B20的驅動機溫度轉換程序****** </p><p>  DO18B20:MOV 50H,#04&

115、lt;/p><p>  GOTO: LCALL RE_TEMP ;對傳感器設置及讀取 </p><p>  LCALL TURN ;轉化溫度子程序 </p><p>  LCALL DISPLAY ;數據轉換緩存程序 </p><p>  DJNZ 50H,GOTO

116、 ;循環 </p><p><b>  RET</b></p><p>  RE_TEMP: SETB DQ ;對DS18B20初始化及讀取</p><p>  ACALL RESET_1820 ;調用復位子程序 </p><p>  JB FLAG, ST

117、 ;判斷DS1820是否存在? </p><p><b>  RET </b></p><p>  ;*****復位子程序 ***** </p><p>  RESET_1820: SETB DQ </p><p><b>  NOP </b></p>&l

118、t;p>  CLR DQ ;主機發出延時501微秒的復位低脈沖 </p><p>  DLY: MOV R0,#250 </p><p>  TTO2: DJNZ R0,TTO2 ;然后拉高數據線,等待DS18B20回應 </p><p>  SETB DQ </p><p>&l

119、t;b>  NOP </b></p><p><b>  NOP </b></p><p><b>  NOP </b></p><p>  MOV R0,#35 </p><p>  T2: JNB DQ ,T3 ;等待DS18B20回

120、應,回應0電平 </p><p>  DJNZ R0, T2 ;等70us </p><p><b>  JMP T4</b></p><p>  T3: SETB FLAG ;置標志位,表示DS1820存在 </p><p><b>  JMP T5 &l

121、t;/b></p><p>  T4: MOV FLAG,#00H ;清標志位,表示DS1820不存在 </p><p><b>  JMP T7 </b></p><p>  T5: MOV R0,#120 </p><p>  T6: DJNZ R0,T6

122、 ;時序要求延時60-240us時間 </p><p>  T7: SETB DQ </p><p><b>  RET </b></p><p>  ;*******子程序溫度傳感工作程序 **** </p><p>  ST:

123、 ; DS18B20存在 </p><p>  MOV A,#0CCH ;跳過ROM匹配 p217 </p><p>  ACALL WRITE_1820 ;寫入數據 </p><p>  MOV A,#44H ;發出溫度轉換命令 </p><p>  ACALL WRITE_182

124、0 ;寫入數據 </p><p>  ACALL RESET_1820 ;準備讀溫度前先復位 </p><p>  MOV A,#0CCH ;跳過ROM匹配 </p><p>  ACALL WRITE_1820 ;寫入數據 </p><p>  MOV A,#0BEH

125、 ;發出讀溫度命令 </p><p>  ACALL WRITE_1820 ;寫入數據 </p><p>  ACALL READ_1820 ;讀出溫度數據 </p><p><b>  RET </b></p><p>  ;******寫入程

126、序 ******* </p><p>  WRITE_1820: ;寫入DS18B20(有具體的時序要求) </p><p>  MOV R2,#8 ;一共8位數據 </p><p><b>  CLR C </b></p><p>  WR

127、1: CLR DQ ;總線拉低,開始寫入 </p><p>  MOV R3,#8 </p><p>  TTO: DJNZ R3,TTO ;保持16微秒以上 </p><p>  RRC A ;把字節DATA分成8個BIT環移給C <

128、/p><p>  MOV DQ, C ;寫入一個BIT,地位在前,高位在后 </p><p>  MOV R3,#23 </p><p>  TTO1: DJNZ R3,TTO1 ;等待46微妙 </p><p>  SETB DQ ;重新釋放

129、總線 </p><p><b>  NOP </b></p><p>  DJNZ R2,WR1 ;寫入下一個BIT </p><p>  SETB DQ </p><p><b>  RET </b></p><p> 

溫馨提示

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

評論

0/150

提交評論