




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
"微機原理及接口技術"課程設計說明書課題:家用空調溫度控制器的控制程序設計專業(yè):班級::**:指導教師:王亞林2015年1月8日目錄第1章、設計任務與目標31.1設計課題:31.2設計目的:31.3設計任務:31.4根本設計要求:3第2章、總體設計規(guī)劃與方案論證 62.1設計環(huán)節(jié)及進程安排 62.2方案論證6第3章、總體軟件設計說明及總流程圖103.1總體軟件設計說明103.2總流程圖 11第4章、系統(tǒng)資源分配說明 134.1系統(tǒng)資源分配 134.1.1系統(tǒng)部單元分配表 134.1.2硬件資源分配 154.2數(shù)據(jù)定義說明 164.2.1局部數(shù)據(jù)定義說明 16第5章、局部程序設計說明 175.1總初始化以及自檢5.2主流程5.2.1按鍵音模塊 175.2.2單按鍵消抖模塊 175.2.3PB按鍵功能模塊 185.2.4.根本界面拆字模塊 195.2.54*4矩陣鍵盤模塊 195.2.6模式顯示模塊 205.2.7顯示更新模塊 215.2.8室溫度AD轉換模塊 215.2.94*4矩陣鍵盤掃描子程序 215.2.10整點報時模塊 235.2.11空調進程判斷及顯示模塊 235.2.12三分鐘壓縮機保護模塊 235.2.13風向擺動模塊 245.2.14驅動控制模塊 245.2.15定時開關機模塊 25第6章、系統(tǒng)功能與用戶操作使用說明266.1操作顯示局部266.2系統(tǒng)功能266.3用戶操作使用說明27第7章、課程設計總結 27第8章、附錄:源程序清單30
第1章設計任務與目標1.1設計課題:家用空調溫度控制器的控制程序設計1.2設計目的:通過小型微機應用產品控制程序的設計與調試過程,運用"微機原理及接口技術"課程所學的根本知識,進而得到理解、穩(wěn)固和提高,學習掌握分析與解決實際問題的方法與手段,提高設計、編程與調試的實際動手能力,作為工程技術工作的一次根本訓練。1.3設計任務:隨著現(xiàn)代生活條件的提高,家用空調已廣泛使用,是一種用于房間提供處理空氣溫度變化的機組。它的功能是對該房間空氣的溫度、濕度、和空氣流速等參數(shù)進展調節(jié),以滿足人體舒適的要求。設計一個以AT89S51單片機為核心的家用空調溫度控制器,根本任務是利用AT89S51單片機、ADC0809模數(shù)轉換器等芯片設計并制作一個具有制冷、制熱、通風和自動運行的手控型空調控制器,包含實時鐘顯示,可選擇制冷、制熱、通風、自動運行等工作模式,能對溫度進展設定和控制,具有壓縮機三分鐘自動保護等功能,編寫智能控制器的控制程序并在實驗板上模擬調試。1.4根本設計要求:1、開機進展適當?shù)挠嘘P接口部件及數(shù)碼顯示器、指示燈、訊響器等自檢。2、八位LED七段數(shù)碼管作為時鐘及其他界面信息顯示。3、根本顯示模式為按照24小時制動態(tài)顯示實時鐘的時、分、秒信息。4、4×4鍵盤作為參數(shù)設定與設備操作的輸入設備,由“0〞~“9〞數(shù)字鍵及假設干個功能鍵組成,“0〞~“9〞數(shù)字鍵須按照國際通行排列布局,鍵按下時應回饋短促的鍵音,鍵盤掃描還應采取消抖動處理。時鐘調校功能:按下“時鐘設定〞鍵則進入時鐘設定界面,在調取并顯示當前實時鐘的時、分值根底上供逐位輸入新的時、分值,當前數(shù)字位以2Hz頻率閃爍顯示的形式標示;按“確定〞鍵則審核不存在超值域的情況下存入新的時、分值,同時對秒清0以及對秒的前級計時環(huán)節(jié)置初值;按“取消〞鍵則不存新值返回根本顯示模式;還可設置“←〞鍵、“→〞鍵等以方便操作。利用實驗板上的按鈕、撥動開關替代設備的開關量輸入信號,應當由開關量輸入處理子模塊程序統(tǒng)一對開關量輸入信號進展檢測輸入并進展軟件消抖動處理;利用實驗板上的驅動LED指示燈的輸出接口電路替代設備的開關量輸出驅動信號,應當對輸出控制信息建立輸出緩存,并統(tǒng)一由輸出驅動子模塊程序根據(jù)輸出緩存容執(zhí)行實質的輸出驅動;利用實驗板上的蜂鳴器替代設備的訊響部件,應當統(tǒng)一由訊響驅動子模塊程序綜合各功能程序模塊所產生的訊響邏輯標記信息執(zhí)行實質的蜂鳴器驅動。7、空調控制器應具有制冷、制熱、通風和自動運行四種工作模式。a.制冷:室風機、壓縮機及室外風機工作,而四通換向閥停頓工作。b.制熱:室風機、壓縮機、室外風機和四通換向閥均工作。c.通風:室風機工作,而壓縮機、室外風機和四通換向閥均不工作?!鵧.自動運行:能根據(jù)當前室溫度和自動運行的設定溫度,自動選擇制冷、制熱或通風工作模式。e.每按一下工作模式選擇鍵時,工作模式按圖1所示的箭頭方向依此變換:圖1工作模式選擇8、能對溫度進展設定和控制:a.制冷時溫度調節(jié)圍為:20℃~32℃。當室溫度高于設定溫度1℃時,開場制冷;而當室溫度降到設定溫度時,則轉為通風狀態(tài)。b.制熱時溫度調節(jié)圍為:14℃~30℃。當室溫度低于設定溫度1℃時,開場制熱;而當室溫度升到設定溫度時,則轉為通風狀態(tài)。c.通風時溫度設置欄顯示“一一〞,并且溫度設置鍵無效?!鵧.自動運行溫度調節(jié)圍為:25℃、27℃、29℃。假設室溫度低于設定溫度5℃時,自動按制熱工作模式運行;假設室溫度高于設定溫度時,則按制冷模式運行;否則按通風模式運行。e.溫度設定鍵每按一下,則溫度上升或下降1℃〔在設定圍〕。f.控溫精度為±1℃9、室風機具有高、中、低三檔風速和自動風控制功能。每按一下風速選擇鍵時,風速模式按圖4所示的箭頭方向依此變換:圖2風速模式選擇※其中自動風與工作模式及溫度有關:a.制冷時,當室溫度高于設定溫度5℃時,為高速風;當室溫度高于設定溫度2℃~5℃時,為中速風;當室溫度不高于設定溫度2℃時,為低速風;b.制熱時,當室溫度低于設定溫度5℃時,為高速風;當室溫度低于設定溫度2℃~5℃時,為中速風;當室溫度不低于設定溫度2℃時,為低速風;c.通風時,當室溫度高于25℃時,為高速風;當室溫度介于20℃~25℃時,為中速風;當室溫度低于設定溫度20℃時,為低速風;※10、具有壓縮機三分鐘自動保護功能。由于家用空調器所使用的壓縮機大多為電容啟動運行電動機,帶載啟動能力較差,因此無論在制冷運行還是在制熱運行時,當壓縮機停頓工作后,必須在三分鐘后才允許重新啟動?!?1、24小時預約定時開/關機功能。定時開機:定時開機必須是在關機狀態(tài)下才能進展,按下“定時〞鍵,顯示定時時間并閃動,通過“↑〞“↓〞鍵可以調節(jié)時間,調整好后點擊“定時〞鍵。定時關機:定時關機必須在空調運行的情況下進展※12、風向自動控制功能。通過自動控制室風機水平導風葉片的轉動,將調節(jié)后的舒適氣流送到房間的各個角落。第2章總體設計規(guī)劃與方案論證2.1設計環(huán)節(jié)及進程安排:根據(jù)任務書要求,為實現(xiàn)成功設計家用空調溫度控制器的控制程序設計和確保設計順利進展,我的進程安排如下:時間安排任務天數(shù)布置課題,明確任務1天總體方案規(guī)劃構思1天主體功能控制程序設計及調試5天程序功能完善、改良與擴展3天程序驗收1天辯論1天編寫設計說明書3天2.2方案論證程序設計規(guī)劃有許多,但是選擇一個較適宜的方案是至關重要的,它可以提高程序的執(zhí)行效率,有利于程序的調試,提高程序的可讀性。1:在主程序跳入循環(huán)前進展順序自檢,通過觀察實驗板的現(xiàn)象進而判斷實驗板是否正常。2:數(shù)碼管顯示程序由硬件決定,采取片選端和位選端連接接口芯片,接口芯片進而和單片機引腳連接,這樣大大減少了要占用的單片機引腳的數(shù)目。且數(shù)碼管的顯示方式為動態(tài)顯示,動態(tài)顯示方法:各位顯示器的字位控制線由相應的I/O口線控制,每一位顯示器均有一根字位控制線,各位顯示器的字段控制線對應并聯(lián),由一個8位I/O口控制。其特點是占用I/O端口少、驅動程序稍繁,須不斷更新驅動,占用CPU時間多、總的驅動電流小。3:對于按鍵音的處理,采用的方法是按鍵按下后,啟動按鍵音,隨后在主循環(huán)的第一句清楚按鍵音。4:對于四中工作模式的判斷,:設置一個標志位,標志位中的容A、C、F、H依次代表自動模式、制冷模式、通風模式、制熱模式。5:對于三檔風速以及自動風的判斷,設置一個標志位,標志位中的容A、▔、—、_依次代表自動、高速、中速、低速。6:選擇定時器1工作方式2〔M1M0=10,自動重裝計數(shù)初值的8位定時器/計數(shù)器〕16位定時器/計數(shù)器被拆成兩個8位存放器TH1和TL1,CPU在對它們初始化時必須裝入一樣的定時器/計數(shù)器初值。以TL1作計數(shù)器,而TH1作為預置存放器。當計數(shù)滿溢出時,TF1置“1〞,同時將TH1中的計數(shù)初值以硬件方法自動裝入TL1。這種工作方式很適合于那些重復計數(shù)的應用場合,本程序計數(shù)即采用選擇定時器1工作方式2。7:LED顯示器工作原理有兩種:一是LED靜態(tài)顯示驅動方式。各位的公共端連接在一起〔接地或+5V〕。每位的段碼線〔a~dp〕分別與一個8位的鎖存器輸出相連。只要輸出鎖存器的段碼不變,就穩(wěn)定地驅動并顯示對應的字符,直到輸出另一個段碼為止。靜態(tài)驅動特點:接口邏輯及驅動程序簡單、顯示亮度高且穩(wěn)定、但占用I/O端口多、總的驅動電流大。二是動態(tài)顯示驅動方式。當LED位數(shù)較多時,為了簡化電路,降低本錢,采用動態(tài)顯示方式?!?〕電路連接方法:a、各位顯示器的字位控制線由相應的I/O口線控制,每一位顯示器均有一根字位控制線。b、各位顯示器的字段控制線對應并聯(lián),由一個8位I/O口控制。顯示原理:逐個點亮,循環(huán)顯示,利用人眼的視覺殘留效應。綜上所述,我LED顯示器工作選擇動態(tài)顯示驅動方式8:鍵盤接口的工作原理分獨立式按鍵接口和行列式鍵盤接口獨立式鍵盤接口(適于鍵數(shù)較少、操作快、同時多鍵動作場合)各鍵相互獨立,每個按鍵各接一根輸入線,通過檢測輸入線的電平狀態(tài)可很容易判斷那個鍵被按下。行列式〔矩陣式〕鍵盤及其接口(適于按鍵數(shù)目較多的場合;可節(jié)省較多的I/O口線端;同時只會有一個鍵閉合的場合。)行列式鍵盤按鍵的識別方法掃描法判斷有無鍵閉合:首先使列線D4~D7都輸出0,檢測行線D0~D3。如果無鍵閉合,D0~D3輸入全為1;如果有鍵閉合,就會有*一根行線輸入為0。查找閉合鍵號:逐行逐列掃描,閉合鍵號=列號+行首鍵號b.線反轉法采用線反轉法的鍵盤行線、列線端口各自應當可以在輸入與輸出方式間切換!如圖:高四位與低四位均可獨立改變其輸入或輸出方式第1步:列線輸出為全‘0’,隨后輸入行線電平如有‘0’,則‘0’所在的行就是閉合的按鍵所在行;無‘0’則無鍵閉合。第2步:行線輸出為全‘0’,隨后輸入列線電平如有‘0’,則‘0’所在的列就是閉合的按鍵所在列;無‘0’則無鍵閉合。結合上述兩步,可確定按鍵所在行和列。綜上所述,選擇行列式鍵盤按鍵的線反轉法9:按鍵狀態(tài)的輸入與消抖動機械觸點的彈性作用,觸點在閉合和斷開瞬間的電接觸情況不穩(wěn)定,造成了電壓信號的抖動現(xiàn)象,時間一般為5~10ms。這種現(xiàn)象會引起CPU對于一次鍵操作進展屢次處理,因此必須設法消抖動。10:壓縮機三分鐘自動保護定時方法:①定時中斷,0.01S次數(shù);②計主流程次數(shù)我采取計主流程次數(shù)180*100次,總時間180*100*0.01S=3分鐘。第3章總體軟件設計說明及總流程圖3.1總體軟件設計說明總初始化,對數(shù)碼顯示器、指示燈、蜂鳴器的自檢以及各使用單元的初值設定和各個芯片的初始化設置等。本設計程序為12個主流程2個中斷效勞子程序,單片機就是在這些子模塊下循環(huán)執(zhí)行,這些子模塊依次包含有:;主工作流程LOOP:LCALLJYIN ;按鍵音子程序LCALLTPB ;單按鍵子程序LCALL*DPB;調用消抖單按鍵輸入LCALLCZ;調用顯示容送顯緩子程序(拆字將時分秒送右6位顯示緩沖單元) LCALLKT ;行列式鍵盤子程序 LCALLWD*S ;溫度顯示子程序 LCALLDISP;調用顯示更新子程序(動態(tài)驅動8位數(shù)碼顯示器一遍,約8mS) LCALLADSUB ;調用A/D子程序(采集AN1輸入電壓的A/D數(shù)據(jù)送左2位顯示) LCALLKEY ;調用鍵盤掃描子程序(掃描到按鍵壓下時在左第3位顯示鍵號)LCALLCLOCK ;整點報時子程序 LCALLJCPD ;進程判斷以及進程顯示子程序LCALLYSBH ;三分鐘壓縮機保護 LCALLF*BD ;風向擺動LCALLDSGJ;定時開/關機 SJMPLOOP;反復循環(huán)主流程此外,還有一些沒被主流程調用,但被其它模塊調用的模塊,比方驅動控制模塊,時鐘調校模塊等。3.2總流程圖判當前進程或模式界面,取相應內容按格式送顯緩數(shù)碼管、指示燈、訊響器,可自檢接口芯片等各模塊所用資源初值初態(tài)(中斷、定時、存儲單元等〕延時40mSI/O接口芯片〔8255〕及I/O初值初態(tài)根本初始化延時等待各芯片退出復位開場獨立按鍵PB0~7的檢測鍵盤掃描顯示更新驅動顯示內容送顯緩工作初始化設備自檢*時鐘調校*壓縮機三分鐘自動保護……返回主流程風速選擇控制工作模式選擇輸出驅動控制根據(jù)工作進程輸出驅動室內風機、壓縮機、室外風機和四通換向閥工作,控制相應指示燈。
蜂鳴器的輸出控制也在此模塊通過A/D室內溫度送室內溫度單元溫度設定和控制室內溫度檢測第4章系統(tǒng)資源分配及數(shù)據(jù)定義說明判當前進程或模式界面,取相應內容按格式送顯緩數(shù)碼管、指示燈、訊響器,可自檢接口芯片等各模塊所用資源初值初態(tài)(中斷、定時、存儲單元等〕延時40mSI/O接口芯片〔8255〕及I/O初值初態(tài)根本初始化延時等待各芯片退出復位開場獨立按鍵PB0~7的檢測鍵盤掃描顯示更新驅動顯示內容送顯緩工作初始化設備自檢*時鐘調校*壓縮機三分鐘自動保護……返回主流程風速選擇控制工作模式選擇輸出驅動控制根據(jù)工作進程輸出驅動室內風機、壓縮機、室外風機和四通換向閥工作,控制相應指示燈。
蜂鳴器的輸出控制也在此模塊通過A/D室內溫度送室內溫度單元溫度設定和控制室內溫度檢測4.1系統(tǒng)資源分配4.1.1系統(tǒng)部單元分配表數(shù)據(jù)地址數(shù)據(jù)定義數(shù)碼進制數(shù)據(jù)初值數(shù)據(jù)圍備注11H時十位修改單元BCD碼00~212H時個位修改單元BCD碼80~913H分十位修改單元BCD碼50~614H分個位修改單元BCD碼90~916H鍵碼查詢次數(shù)20H蜂鳴器驅動標志位二進制碼FFH全零:蜂鳴器響全1:不響29HPB按鈕滾存消抖單元二進制碼2AHPB按鈕滾存消抖單元二進制碼2BHPB按鈕滾存消抖單元二進制碼2CHPB按鈕滾存消抖單元二進制碼2DHPB按鈕滾存消抖單元二進制碼2EH新按鈕變化情況存放單元二進制碼0H2EH新按鈕變化情況存放單元二進制碼30H數(shù)碼管顯示緩存單元二進制碼10H最右邊數(shù)碼管31H數(shù)碼管顯示緩存單元二進制碼12H32H數(shù)碼管顯示緩存單元二進制碼01H33H數(shù)碼管顯示緩存單元二進制碼05H34H數(shù)碼管顯示緩存單元二進制碼09H35H數(shù)碼管顯示緩存單元二進制碼08H36H數(shù)碼管顯示緩存單元二進制碼12H37H數(shù)碼管顯示緩存單元二進制碼10H最左邊數(shù)碼管38H278us計數(shù)單元十進制碼360~3639H10ms計數(shù)單元BCD碼0H0~993AH1s計數(shù)單元BCD碼45H0~603BH分鐘存儲單元BCD碼59H0~603CH時鐘存儲單元BCD碼08H0~2450H壓縮機保護存儲單元二進制碼51H風向控制標志位二進制碼D5:左右擺動D6:上下擺動D7:睡眠模式56H壓縮機循環(huán)常數(shù)十進制碼18057H壓縮機循環(huán)常數(shù)十進制碼10058H壓縮機新態(tài)數(shù)據(jù)二進制碼59H壓縮機舊態(tài)數(shù)據(jù)二進制碼5AH工作模式單元二進制碼0:自動A1:制冷C2:通風F3:制熱H5BH進程判斷二進制碼0:自動進程1:制冷進程2:通風進程3:制熱進程5CH風速模式單元二進制碼5DH風速標志位二進制碼0:高速1:中速3:低速5EH設定溫度二進制碼5FH室溫度二進制碼64H矩陣鍵盤消抖單元新鍵號二進制碼10H65H矩陣鍵盤消抖單元舊鍵號二進制碼66H顯示模式切換二進制碼10H后2位10:正常時鐘顯示11~14:修改模式70H~7FH堆棧單元二進制碼特殊存放器區(qū)特殊功能二進制碼4.1.2硬件資源分配名稱作用數(shù)碼管顯示界面SW0空調開/關機SW1顯示界面顯示切換PB0工作模式切換PB1風速模式切換PB2溫度-PB3溫度+PB4未用此鍵PB5左右擺動控制PB6上下擺動控制PB7睡眠模式K0數(shù)字鍵1K1數(shù)字鍵2K2數(shù)字鍵3K3定時鍵K4數(shù)字鍵4K5數(shù)字鍵5K6數(shù)字鍵6K7確定鍵K8數(shù)字鍵7K9數(shù)字鍵8K10數(shù)字鍵9K11撤銷/返回K12左移<-K13數(shù)字鍵0K14右移->K15設置L0室風機L1壓縮機L2室外風機L3四通換向閥L5低速風顯示L6中速風顯示L7高速風顯示L13左右掃風L14上下掃風L15睡眠AN1改變室溫度復位按鈕復位4.2數(shù)據(jù)定義說明4.2.1局部數(shù)據(jù)定義說明〔1〕因為單片機復位后SP中的容為07H,是堆棧實際從08H開場,但為了防止堆棧區(qū)與工作存放區(qū)08H~1FH發(fā)生沖突,故初始化定義SP值為6FH。〔2〕初始化定義TH1和TL1為00H,認為誤差只來自于外部晶振。實時時鐘實現(xiàn)1秒準確定時的根本思想是9216=256×36或=128×72或=64×144T1方式2定時時間設為(256×12÷11.0592)uS中斷一次;38H單元每(256×12÷11.0592)uS加1,計滿36次得10mS=0.01S=1/100秒;39H單元每10mS加1,計滿50次得0.5秒,計滿100次得1秒;第5章局部程序設計說明〔各局部程序或各子模塊程序功能原理論述:程序設計的思路與方案、程序原理說明,對少量特別且重要的程序代碼可列舉并詳析〕5.1總初始化以及自檢功能描述總初始化程序主要是在程序開場進入主流程時,設置定時器1中斷效勞子程序入口、中斷對程序中用到的數(shù)據(jù)單元賦予初始值、開啟定時中斷、實現(xiàn)設備自檢等。該程序段只在程序開場時執(zhí)行一遍。程序設計思路當家用空調溫度控制器開機進入工作狀態(tài)后,立即進入自檢以及總初始化,確保各軟硬件的完好性,以便進展正常工作。程序原理說明首先稍加延時(40mS),以待各芯片均退出復位狀態(tài)。接著蜂鳴器響1S后關蜂鳴器,然后P1口輸出全‘0',所驅動的L0~L7指示燈全亮1S后熄滅。開中斷總允許,初始化T1為定時方式2,T0為計數(shù)方式2。讓其沒256Tm產生一次中斷,以實現(xiàn)準確計時。接著對數(shù)據(jù)單元賦予初始值5.2主流程5.2.1按鍵音模塊功能描述使得按鍵按下時回饋短促的鍵音,以便判斷是否按下按鍵設計思路及方案設置一個數(shù)據(jù)單元20H單元存放蜂鳴器是否響的數(shù)據(jù),然后判斷數(shù)據(jù)值。全0為響,響過之后全置為1,全1為不響。程序原理說明20H單元存放蜂鳴器是否響的數(shù)據(jù),全0為響,全1為不響。判斷是否為0,不為零就跳轉出去并完畢。是0就讓蜂鳴器響,直到LCALLCLOCK時停頓響;實現(xiàn)了蜂鳴器響,就可以讓20H置全1。5.2.2單按鍵消抖模塊功能描述檢測按鈕是否被壓下,以便判斷是否觸發(fā)相應的動作,有消抖措施設計思路及方案對PB按鈕進展掃描,將電平變化量讀取采集,并利用滾動濾波法消除抖動,確保去除抖動造成的誤動作,并利用采集到的電平變化量進展判斷按鈕操作,并判斷是否觸發(fā)相應的動作程序原理說明對PB按鈕電平變化量進展掃描,按鈕掃描用到的接口芯片是8255A〔U5〕,由于在總初始化已經(jīng)對U5進展初始化,已經(jīng)定義B口為輸入口,故首先DPTR只想B口,接著把PB0~PB7電平值存放到29H單元,進過滾動濾波法消除抖動之后,將新狀態(tài)存入2EH,舊狀態(tài)存入2FH。滾動濾波法消除抖動單元為29H~2DH,只有在5個單元容一致,才將掃描到的電平值送入新狀態(tài)暫存單元。設置新態(tài)和舊態(tài)就是為了方便檢測按鈕前后狀態(tài),判斷是否有壓下,以便判斷是否觸發(fā)相應的動作。5.2.3PB按鍵功能模塊程序功能描述:該模塊的作用在于空調開啟后對工作模式,風速模式,設定溫度,左右掃風、上下掃風、睡眠等進展修改程序設計思路及原理描述:按下PB0按鍵則可改變空調的工作模式,具體順序為自動模式,制冷模式,通風模式,制熱模式。按下PB1按鍵則可依次改變風速模式,具體順序為自動模式,高風速模式,中風速模式,低風速模式,循環(huán)而行。按下PB2按鍵則對設定溫度減小1度,在自動模式下則減小2度。按下PB3按鍵則對設定溫度增加1度,在自動模式下則增加2度。按下PB5按鍵則可控制空調是否左右掃風,按下PB6按鍵則可控制空調是否上下掃風,按下PB6按鍵則可控制是否空調進展睡眠模式、程序設計具體實現(xiàn)如下:①對PB按鍵進展檢測,假設在消抖后有按鍵按下,則實現(xiàn)對應的功能。②設置設定溫度的初值并規(guī)定圍,在對應的各個模式下,對設定溫度賦初值和規(guī)定圍5.2.4根本界面拆字模塊功能描述在根本進程10H時鐘顯示進程下,將實時鐘數(shù)據(jù)送去顯示緩存并顯示程序原理說明二位數(shù)字轉換為兩個單獨的數(shù)字,依次屏蔽高四位和低四位,對于低四位可以直接送入,高四位需經(jīng)過SWAP語句轉換過后便可送入。拆字程序原理具體步驟如下:①置顯示緩沖單元首地址(對應于最右顯示位)。②取當前數(shù)據(jù)單元BCD碼,依次保存該數(shù)據(jù)碼的低4位和高4位,高四位經(jīng)過SWAP命令處理,進而分別送入顯示緩沖單元。③利用循環(huán),直到小時單元拆字完畢為止。5.2.54*4矩陣鍵盤模塊程序功能描述:行列式鍵盤功能子模塊用于實現(xiàn)對時間進展設置。程序設計思路及原理描述:通過對4*4矩陣鍵盤的按鍵判斷,對實時鐘的分或者時進展設置。123定時456確定789撤消←0→設置程序具體實現(xiàn)方法如下:①設置按鍵按下后將當前時間送入時間修改單元,開場執(zhí)行閃爍并準備設置時間。②判斷4*4矩陣鍵盤的鍵號,并將判斷有效的鍵號送入修改單元,以實現(xiàn)對時間的設置,按下“取消鍵〞則不修改時間,直接退出該程序,按下“確定鍵〞則完成對時間的設置。“定時〞按鍵用來對空調進展定時開關機,該按鍵按下后,顯示界面進入定時模式,設置好定時時間后按下定時鍵。再按一次返回鍵返回時鐘顯示界面,當?shù)搅嗽O置時間時,如果是關機就會定時開機復位,如果是開機狀態(tài)空調到設置時間就會自動關機。5.2.6模式顯示模塊程序功能描述:模式顯示子模塊用于實現(xiàn)將空調的工作模式,風速模式,設定溫度,室溫度這些信息顯示在數(shù)碼管上,是否切換顯示由撥動開關SW1控制。程序設計思路及原理描述:模式顯示子模塊首先對SW1的轉臺進展判斷,假設判斷符合,則顯示空調的工作模式,風速模式,設定溫度,室溫度這些信息。假設不符合,則自動跳過,數(shù)碼管依然顯示實時鐘信息。程序原理具體步驟如下:①程序對SW1進展判斷,假設SW1撥上則顯示空調的工作模式,風速模式,設定溫度,室溫度這些信息。撥下則總動跳過,數(shù)碼管正常顯示實時鐘信息。數(shù)碼管8數(shù)碼管7數(shù)碼管6數(shù)碼管5數(shù)碼管4數(shù)碼管3數(shù)碼管2數(shù)碼管1工作模式風速模式—設定溫度十位設定溫度個位—室溫度十位室溫度個位②假設SW1撥上,則顯示空調的工作模式,風速模式,設定溫度,室溫度,具體如下:工作模式:“A〞代表自動模式,“C〞代表制冷模式,“F〞代表通風模式,“H〞代表制熱模式。風速模式:“A〞代表自動模式,上劃線“▔〞代表高速模式,中劃線“—〞代表中速模式,下劃線“_〞代表低速模式。5.2.7顯示更新驅動模塊功能描述:顯示更新驅動子模塊主要實現(xiàn)在數(shù)碼光上點亮什么數(shù)字的功能。實驗板上面的數(shù)碼管為共陰極,所以只要對要點亮的段選賦1值即可。程序思路及原理描述:該程序將顯示緩沖單元30H-37H的容依次送到數(shù)碼管上,使數(shù)碼管依次顯示對應的信息,以實現(xiàn)動態(tài)掃描。程序原理具體步驟如下:①置顯示緩沖單元首地址,即要顯示位的位碼初值〔從最右位起〕,選中此數(shù)碼管顯示有效,即從位碼輸出口〔8255-B口〕輸出緩沖單元的容。②查表得相應字段碼,讓該字段碼輸出〔8255-A口〕,為了防止發(fā)生竄顯現(xiàn)象,在每個數(shù)碼管顯示完畢后,應把斷碼置為無效,再繼續(xù)執(zhí)行循環(huán)程序。③在送入數(shù)據(jù)之后,要對數(shù)碼管點亮進展一個一定間隔的延時程序,方便人眼觀察到,實現(xiàn)依照次序讓各位數(shù)碼管顯示過去的動態(tài)顯示。顯示更新的查表方式是直接利用字段表與字段序號的關系,直接查表得到字斷碼。5.2.8室溫度AD轉換模塊程序功能描述:室溫度AD轉換子模塊主要實現(xiàn)將利用溫度感應器將室溫度這一模擬量轉換為單片機可識別的數(shù)字量,將采集到的數(shù)字量除以4,得到對應的溫度值,溫度值圍為0-63℃。程序設計思路及原理描述通過A/D轉換芯片ADC0809芯片轉換,經(jīng)過算術運算,得到室溫度。程序原理具體步驟如下:①AD轉換出室溫度數(shù)據(jù)②將此數(shù)據(jù)保存在室溫度單元中。5.2.94*4矩陣鍵盤掃描模塊功能描述:當開關SW1撥到時間顯示模式時,鍵盤的按鍵才能使用,否則在工作模式時4*4矩陣鍵盤無效。當按下4*4矩陣鍵盤上的任意一個按鍵,主流程執(zhí)行到這個子程序時,將4*4矩陣鍵盤的按鍵號送入對應的存儲單元,以供其他需要4*4矩陣鍵盤的子程序模塊使用。程序思路及原理描述:4*4矩陣鍵盤掃描子程序采用反轉法來掃描鍵盤,得到鍵盤的行列碼,采用逐一比擬的方法得到其行列碼對應的鍵號值,采用滾存消抖處理消除鍵盤開關的電平抖動現(xiàn)象,具體步驟如下:①根據(jù)原有實驗板的硬件設施,先把8255的C口先初始化為高4位輸出方式驅鍵行線、低4位輸入方式驅鍵列線,鍵盤行線(高4位)輸出驅動全'0',輸入鍵盤列線電平(低4位)存60H單元。②C口改初始化為高4位輸入驅鍵行線、低4位輸出驅鍵列線,讓鍵盤列線(低4位)輸出驅動全'0',輸入鍵盤行線電平(高4位)在A中。③保存列線電平值所在的低4位和行線電平值所在的高4位,將列線電平值、行線電平值組合成8位行列碼于預先編排的單元中。④查預先編排好的鍵碼表,讀取鍵碼表中當前鍵號對應位置的鍵碼,當采集到的鍵碼與表中的鍵碼一樣時,說明查到了當前按下的鍵號,否則鍵號存儲單元的值為61H,說明查完十六個鍵碼值無一形成對應關系,即鍵盤無按下或則是同時有多個按鍵同時按下。鍵盤消抖是用延時原理即待開關電平穩(wěn)定時才存入新掃描的鍵號。通過原理分析可知,只要改變鍵碼在鍵碼表中的位置,就可以人為的改變按鍵的鍵號值,到達自定義鍵號的目的。鍵盤的接線是其行線和列線分別接8255C口的高四位與低四位。5.2.10整點報時模塊程序功能描述:整點報時,讓蜂鳴器響1秒鐘程序設計思路及原理描述通過CJNE指令判斷分鐘是否為00,不是退出子程序,是的話繼續(xù)判斷秒鐘是否為00,如果秒鐘也為零,說明到了整點就讓蜂鳴器響直到秒鐘單元變?yōu)?秒,這時剛好到達1S〔即蜂鳴器響1S時間關閉〕。5.2.11空調進程判斷及顯示模塊程序功能描述:該模塊的功能作用在對空調在自開工作模式下的進程進展判斷,和制冷制熱是否需要通風進展判斷,判斷后通過LED燈顯示相關風機工作狀態(tài)顯示工作進程。程序設計思路及原理描述通過多重判斷語句CJNE對當前實際溫度和設定溫度以及工作模式進展比擬處理,判斷得到當前工作進程。程序原理具體步驟如下:①判斷當前是否是自開工作模式,是則進展自動模式下的判斷。②不是則判斷是否是自動風速模式,然后對自動風速模式進展相關判斷③然后對制冷制熱模式進展室溫和設定溫度的比擬。④最后對得出的進程通過LED燈顯示出來對應器件是否工作。5.2.12三分鐘壓縮機保護模塊程序功能描述:該模塊的功能作用在為了保護壓縮機在關閉后不會立即開啟造成不必要的損壞。壓縮機三分鐘自動保護定時方法:①定時中斷,0.01S次數(shù);②計主流程次數(shù)我采取計主流程次數(shù)180*100次,總時間180*100*0.01S=3分鐘。程序設計思路及方案在輸出驅動模塊中輸出前對壓縮機驅動位進展判斷,可保存壓縮機驅動位的前態(tài),當現(xiàn)態(tài)是停機時即不斷對停機計時單元計時,計滿三分鐘則將壓縮機可工作標志位置有效;當前態(tài)是停機現(xiàn)態(tài)是工作,即壓縮機要重啟工作時要對壓縮機可工作標志位進展判斷,有效時才啟開工作,啟動后該標志置為無效同時停機計時單元置初值。程序原理說明該程序主要是通過DJNZ語句起到延遲開啟壓縮機效果。程序原理具體步驟如下:①先判斷壓縮機前態(tài)是否為工作,然后判斷新態(tài)是否為關閉。②滿足以上條件則讓50H〔壓縮機計時允許單元〕置*0FFH,此時不再讀取外部壓縮機狀態(tài)數(shù)據(jù),開場三分鐘計時,計時期間,屏蔽壓縮機工作。③計時完畢后,對50H〔壓縮機計時允許單元〕置*0,此時開場讀取壓縮機數(shù)據(jù)。準備下一次判斷是否需要開場計時。5.2.13風向擺動模塊程序功能描述:通過獨立按鍵電平檢測,判斷是否觸發(fā)控制空調是否進展左右掃風和上下掃風。程序設計思路及方案首先進展電平開關SW0~7檢測,sw0開關為0即為關機狀態(tài)則返回。判斷PB5、PB6是否按下,按下則繼續(xù),51H單元存放風向左右擺動,上下擺動的數(shù)據(jù),則令相應的標志位置0或1,然后讀取51H數(shù)據(jù),并輸出給外部端口驅動L8~L15。沒按下按鍵判斷別的按鍵是否按下。5.2.14驅動控制模塊程序功能描述:統(tǒng)一判斷工作進程和風速,驅動室風機、壓縮機、室外風機、四通換向閥工作或停頓工作,和切換風速程序設計思路及方案將工作模式單元的值送給累加器A,判斷屬于什么進程,制冷進程時室風機、壓縮機及室外風機工作,而四通換向閥停頓工作。制熱進程時室風機、壓縮機、室外風機和四通換向閥均工作。通風進程時室風機工作,而壓縮機、室外風機和四通換向閥均不工作。風速模式單元的值送給累加器A,判斷屬于什么風速,讓對應的二極管工作進展顯示。5.2.15定時開關機模塊程序功能描述:該模塊的功能作用是用來對空調進展定時開關機,定時按鍵按下后,顯示界面進入定時模式,設置好定時時間后按下定時鍵。再按一次返回鍵返回時鐘顯示界面,當?shù)搅嗽O置時間時,如果是關機就會定時開機復位,如果是開機狀態(tài)空調到設置時間就會自動關機。程序設計思路及方案分配兩個數(shù)據(jù)單元,一個存放設定的小時數(shù)據(jù),一個存放分鐘數(shù)據(jù),然后跟實時鐘存放小時和分鐘的數(shù)據(jù)單元比擬,當值相等時檢測是處于關機狀態(tài)還是處于開機狀態(tài),如果是關機狀態(tài)就讓空調開機復位,如果是開機狀態(tài),就讓空調停頓工作。程序原理說明電平開關SW0~7檢測,輸入SW0~7電平,判斷SW0是否為0,為1則進展定時開機設置,;判斷SW0為0,則定時關機〔讓L0-L7全暗,或讓蜂鳴器響1分鐘提示〕;;判斷SW0為1,則定時開機復位。
第6章系統(tǒng)功能與用戶操作使用說明6.1操作顯示局部各按鍵以及指示燈功能分布圖時分秒工作,風速模式設定溫度室溫度室壓縮室外四通 低中 高風機機風機換向閥風速風速風速〔L0〕〔L1〕〔L2〕〔L3〕〔L4〕〔L5〕〔L6〕〔L7〕SW0SW1〔空調開關〕〔溫度顯示開關〕PB按鍵鍵盤局部:PB0PB1PB2PB3模式風速設定溫度設定溫度切換鍵切換鍵減一加一6.2系統(tǒng)功能:本空調遙控器具有實時鐘顯示功能,并可通過鍵盤按鍵進展調校,還具有定時關機和倒計時關機功能,可自動制冷制熱通風,用戶只需啟動和選擇模式即可,除此之外還有壓縮機三分鐘自動保護。6.3用戶操作使用說明1、初次使用時,接通電源時鐘界面的初始時間是08—59—45,可以簡單通過以下步驟實現(xiàn)對實時鐘的調校設置:①按下鍵盤上的“設置〞鍵,這時您觀察到的界面信息是時間的閃爍,當前閃爍位為正在修改位,說明已經(jīng)進入了時鐘調校模式。②按下您認為需要調校的時間對應的調節(jié)鍵。③當您已經(jīng)調整到自己設定的時間,這時你只需按下“確定〞鍵,時鐘就會從這個設定的時間下,開場計時;如您想直接退出調校,只需按下“取消〞鍵,就可以退出調校模式,恢復原來時間的計時。2、功能選擇①撥上SW0“開關〞按鍵,空調各局部順利工作,撥下SW0“開關〞按鍵后,空調關閉各項器件。撥上SW1“顯示切換〞按鍵,此時數(shù)碼管正常顯示工作模式,風速模式,設定溫度,室溫度等信息。撥下時,則正常顯示實時鐘信息。②空調正常啟動后,通過按下PB0,PB1,PB2,PB3四個按鍵可以依次調整工作模式,風速模式,設定溫度的減小1℃和增大1℃。③空調正常啟動后,按下4*4矩陣鍵盤的定時按鍵,按下后,L9正常點亮,此時進入定時模式,在實時鐘到達九點鐘的時候,空調自動關機。假設按下后,再按一次,L9正常熄滅,表示退出定時模式,在定時模式下并不影響其他功能的實現(xiàn)。④空調正常啟動后,按下4*4矩陣鍵盤確實定鍵,確定鍵為復用鍵,另一功能為倒計時三分鐘自動關機,按下后,此時L8被正常點亮,表示進入三分鐘計時模式,再過三分鐘,空調自動關機。假設再按一次,則L8熄滅,表示已經(jīng)退出倒計時模式。第7章、課程設計總結本次的課程設計是家用空調溫度控制器的控制程序設計,運用"微機原理及接口技術"課程所學的知識設計一個以AT89S51單片機為核心的家用空調溫度控制器,具有制冷、制熱、通風和自動運行等工作模式,能對溫度進展設定和控制等功能。三周的課程設計完畢了,在這次的課程設計中不僅檢驗了我所學習的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在教師進展驗收時,我的壓縮機還有點有點小問題,但后來經(jīng)過修改,我設計的程序具備課程的全部要求,并且都可以正常實現(xiàn)功能。在設計過程中,我向教師請教,和同學們相互探討,相互學習,相互監(jiān)視。這使我對微機接口及原理比以前理解更加的透徹,對每一條指令的理解也提高到更高的程度。這是我以前學習微機原理課程所未到達的。我知道只有自己設計程序才能真正有所收獲。雖然有的同學不是自己寫程序教師不知情情況下也能通過驗收,但是我知道這樣對知識的理解不會更透徹。這次的程序對我來說最難的是對溫度進展設定和控制與自動風程序的編寫,因為自動風與工作模式和溫度有關,這就考驗我的統(tǒng)籌規(guī)劃能力,這局部的程序編寫讓我著實花了好久時間。不過所幸后來經(jīng)過教師的指導,終于有所頓悟。設計課程設計是我們專業(yè)課程知識綜合應用的實踐訓練,是我們邁向社會,從事職業(yè)工作前一個必不少的過程.〞千里之行始于足下〞,通過這次課程設計,我深深體會到這句千古名言的真正含義.我今天認真的進展課程設計,學會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的根底.通過這次模具設計,本人在多方面都有所提高。通過課程設計,綜合運用本專業(yè)所學課程的理論和生產實際知識進展程序設計,穩(wěn)固與擴大了我微機原理課程所學的容,體會了學以致用、突出自己勞動成果的喜悅心情,從中發(fā)現(xiàn)自己平時學習的缺乏和薄弱環(huán)節(jié),從而加以彌補。在此感我們的亞林教師.教師嚴謹細致、一絲不茍的作風一直是我工作、學習中的典范;教師循循善誘的教誨和不拘一格的思路給予我無盡的啟迪;同時感對我?guī)椭^的同學們,你們對我的幫助和支持,讓我感受到同學的友誼。對于本次的課程設計由于之前提前布置了題目,并且教師還對我們輔導,讓我們有了一個大體的思路。所以,在設計之前我覺得這次的設計會很難但對我來說應該不難。而且在課程設計之前我們有足夠的時間多課程設計的題目研究和對書本上的容進展復習。課程設計之前充滿著滿滿的信心。然而在真正的課程設計的時候,事情的進展并沒有像我想象的那樣順利,本次的課程設計是對所學知識的一個綜合理解和運用,由于之前的放松心態(tài),并沒有進展深入的理解,所以在真正的操作的時候我就迷惘了。還好,在兩周的設計中,運用教師所給的思路方法,還是在做好幫助我完成了本次的課程設計。在開場之前構造一個大體的思路,該有的功能模塊,該實現(xiàn)的功能,該如何實現(xiàn),按照這樣的思路分條寫出每條子程序,例如,實現(xiàn)空調模式的轉換,分配5AH單元來判斷進程,通過每按下一次PB0按鍵實現(xiàn)一個模式轉換到另一個模式,通過判斷5AH是否與“0〞“1〞“2〞“3〞相等來判斷是否相對應于“A〞自動“C〞制冷“H〞制熱“F〞通風。由于本次的課程設計是通過51單片機的111條指令去實現(xiàn)空調的溫度控制功能。所以掌握、理解透徹這111條指令才能完本錢次的設計。每一條指令的意思,有什么功能都要理解的一清二楚。由于本人的設計能力有限,在設計過程中難免出現(xiàn)錯誤,懇請教師們多多指教,我十分樂意承受你們的批評與指正,本人將萬分感。
第8章附錄:源程序清單〔詳細注釋〕ORG0000H ;復位入口 LJMPMAIN ;轉往主程序 ORG001BH ;定時器1中斷效勞子程序入口 LJMPIT1P ;定時中斷:進展實時鐘計時 ORG0030H ;主程序MAIN:MOVSP,*6FH ;總初始化,設定棧底指針LCALLD40MS ;稍加延時(40mS),以待各芯片均退出復位狀態(tài) MOVDPTR,*0FEFFH;對8255A〔U3)接口芯片初始化 MOVA,*89H;設定為A輸出(驅動字段)、B口輸出(驅動字位),C口輸入10001001 MOV*DPTR,A ;寫入方式控制字 MOVDPTR,*0FEFCH;消竄顯。DPTR指向U3-B口 MOVA,*0FFH ;置八段均不亮的字段碼(8255A初始化后輸出存放器全‘0') MOV*DPTR,A;輸出,關數(shù)碼顯示器(段輸出口初始驅動全為‘1'無效)消竄顯 MOVDPTR,*0FDFFH;對8255A〔U5)接口芯片初始化 MOVA,*8BH ;設定為A口輸出(驅L8~15),B口輸入(按鈕PB0~7),C口輸入(開關SW0~7)10001011 MOV*DPTR,A ;寫入方式控制字MOVDPTR,*0FDFCH;DPTR指向U5-A口 MOVA,*0FFH ;置八位輸出均為‘1'無效(8255A初始化后 MOV*DPTR,A ;輸出,令L8-15初始不亮 消竄顯 CLRP3.2 ;蜂鳴器響 LCALLD1S ;延時1S SETBP3.2 ;關蜂鳴器 MOVP1,*00H ;P1口輸出全‘0',所驅動的L0~L7指示燈全亮 LCALLD1S ;延時1S MOVP1,*0FFH ;熄L0~L7指示燈 MOV30H,*10H ;30H-37H為顯示緩沖單元,初始值令顯示‘-8951-’ MOV31H,*12H MOV32H,*01H MOV33H,*05HMOV34H,*09H MOV35H,*08H MOV36H,*12H MOV37H,*10H SETBEA ;開中斷總允許MOV38H,*00H ;38H單元為實時鐘200uS計數(shù)單元,清0MOV39H,*00H ;39H單元為10mS計數(shù)單元,清0 MOV3AH,*45H ;秒單元初值 MOV3BH,*59H ;分單元初值 MOV3CH,*08H ;時單元初值,時鐘初值08:59:47 MOVTMOD,*26H ;初始化T1為定時方式2,T0為計數(shù)方式2。MOVTL1,*0 ;置T1計數(shù)初值。MOVTH1,*0;即每約256uS請求中斷。 SETBET1 ;開T1中斷允許 SETBTR1 ;啟動T1定時工作 MOV4AH,*3AH MOV66H,*10H ;剛開場時盡快進展A/D MOV2EH,*00H MOVDPTR,*0FDFDHMOV*A,DPTRMOV2EH,A; MOV64H,*10H;新鍵碼設置為10MOV51H,*0FFH ;L8-L15初始不亮 MOV59H,*0FFH;風向擺動單元全為1 MOV11H,*0 ;當前時間送入時間修改單元 MOV12H,*8 MOV13H,*5 MOV14H,*9MOV5AH,*0;開機時是自動模式,顯示A MOV5BH,*2;進程為通風模式,點亮LO MOV5CH,*0;自動風模式,顯示A MOV5DH,*2;中速風模式,點亮L6 MOV5EH,*25;設定溫度為25度〔AA-25-**〕MOV21H,*0MOV22H,*0;主工作流程LOOP:LCALLJYIN ;按鍵音子程序LCALLTPB ;單按鍵子程序LCALL*DPB;調用消抖單按鍵輸入LCALLCZ;調用顯示容送顯緩子程序(拆字將時分秒送右6位顯示緩沖單元) LCALLKT ;行列式鍵盤子程序 LCALLWD*S ;溫度顯示子程序 LCALLDISP;調用顯示更新子程序(動態(tài)驅動8位數(shù)碼顯示器一遍,約8mS) LCALLADSUB ;調用A/D子程序(采集ADC0809的AN1輸入電壓的A/D數(shù)據(jù)送左2位顯示) LCALLKEY ;調用鍵盤掃描子程序(掃描到按鍵壓下時在左第3位顯示鍵號)LCALLCLOCK ;整點報時子程序 LCALLJCPD ;進程判斷以及進程顯示子程序LCALLYSBH ;三分鐘壓縮機保護 LCALLF*BD ;風向擺動LCALLDSGJ;定時開/關機 SJMPLOOP;反復循環(huán)主流程JYIN:MOVA,20H ;20H單元存放蜂鳴器是否響的數(shù)據(jù),全0為響,全1為不響 CJNEA,*0,RING;判斷是否為0,不為零就跳轉出去并完畢 CLRP3.2 ;是0就讓蜂鳴器響,直到LCALLCLOCK時停頓響 MOV20H,*0FFH ;實現(xiàn)了蜂鳴器響,就可以讓20H置全1RING:RETTPB:MOVDPTR,*0FDFEH ;電平開關SW0~7檢測 MOV*A,DPTR ;輸入SW0~7電平 JNBACC.0,TPBRR ;SW0開關為0則返回 JNB2FH.0,TPB2 ;模式功能按鍵2EH.0,TPB2 MOV20H,*0 INC5AH MOVA,5AH CJNEA,*1,TP1 ;制冷模式 MOV5BH,*1 ;制冷進程 MOV5EH,*24 ;制冷模式初值24度TPBRR: LJMPTPB4TP1:CJNEA,*3,TP2 ;制熱模式 MOV5BH,*3 ;制熱進程 MOV5EH,*16 ;制熱模式初值16度 LJMPTPB4TP2:CJNEA,*2,TP3 ;通風模式MOV5BH,*2 ;通風進程 LJMPTPB4 ;通風進程不修改設定溫度,直接跳過調整溫度功能按鍵TP3:MOV5AH,*00H ;自動模式 MOV5EH,*27 ;自動模式下設定溫度賦初值27度TPB2:JNB2FH.2,TPB3 ;減溫度功能按鍵2EH.2,TPB3 MOV20H,*0 MOVA,5AH CJNEA,*0,ZD1 ;是否自動模式 MOVA,5EH ;是自動模式 CJNEA,*25,ZD0 ;是否設定溫度為25度 LJMPTPB4 ;是25度就不要改ZD0:DEC5EH LJMPZD3 ;不是25度就降低2度ZD1:CJNEA,*1,ZD2 ;是否制冷模式 MOVA,5EH ;是制冷模式 CJNEA,*20,ZD3 ;是否20度 LJMPTPB4 ;20度不要減ZD2:CJNEA,*3,TPB1 ;判斷是否制熱模式,不是這個模式就只剩下通風模式了,功能退出 MOVA,5EH ;是制熱模式 CJNEA,*14,ZD3 ;是否14度 LJMPTPB4 ;14度就不要減ZD3:DEC5EH ;降低1度TPB3:JNB2FH.3,TPB1 ;加溫度功能按鍵2EH.3,TPB1 MOV20H,*0 MOVA,5AH CJNEA,*0,ZD5 ;是否自動模式 MOVA,5EH ;是自動模式 CJNEA,*29,ZD4 ;是否設定溫度為29度 LJMPTPB1 ;是29度就不要改ZD4:INC5EH LJMPZD7 ;不是29度就升高2度ZD5:CJNEA,*1,ZD6 ;是否制冷模式 MOVA,5EH ;是制冷模式 CJNEA,*32,ZD7 ;是否32度 LJMPTPB1 ;32度不要加ZD6:CJNEA,*3,TPB1 ;是否制熱模式,不是這個模式就只剩下通風模式了,功能退出 MOVA,5EH ;是制熱模式 CJNEA,*30,ZD7 ;是否30度 LJMPTPB1 ;30度就不要加ZD7:INC5EH ;升高1度TPB1:JNB2FH.1,TPB4 ;風速模式功能按鍵2EH.1,TPB4MOV20H,*0 INC5CH MOVA,5CH CJNEA,*1,TP4 ;是否高速風模式MOV5DH,*1 LJMPTPB4TP4: CJNEA,*2,TP5 ;是否中速風模式 MOV5DH,*2 LJMPTPB4TP5: CJNEA,*3,TP6 ;是否低速風模式 MOV5DH,*3 LJMPTPB4TP6: MOV5CH,*0 ;自動風模式TPB4:RET*DPB:MOV2FH,2EH ;原新態(tài)存為前態(tài),滾動濾波法消除按鍵抖動MOV2DH,2CHMOV2CH,2BHMOV2BH,2AHMOV2AH,29HMOVDPTR,*0FDFDHMOV*A,DPTRMOV29H,AMOVA,2DHCJNEA,2CH,*DRCJNEA,2BH,*DRCJNEA,2AH,*DRCJNEA,29H,*DRMOV2EH,A*DR:RETCZ: MOVR0,4AH;顯示容送顯緩子程序(拆字)。置時鐘數(shù)據(jù)單元首地址(秒單元) MOVR1,*30H ;置顯示緩沖單元首地址(對應于最右顯示位)CZ1:MOVA,R0 ;取當前數(shù)據(jù)單元BCD碼(3AH) ANLA,*0FH ;保存低4位〔個位〕 MOVR1,A ;送顯緩當前個位單元 INCR1 ;指向顯緩當前十位單元 MOVA,R0 ;再取當前數(shù)據(jù)單元BCD碼 ANLA,*0F0H ;保存高4位〔十位〕 SWAPA ;交換到低4位 MOVR1,A ;送顯緩當前十位單元 INCR1 ;指向顯緩下一個個位單元 MOVR1,*10H;給這個顯緩單元送“-〞的序號*16也就是*10H,最后會在顯示DISP模塊查表顯示 INCR1 ;再指向顯緩下一個個位單元 INCR0 ;指向下一個時鐘數(shù)據(jù)單元 CJNER0,*3DH,CZ1 ;未完繼續(xù) RET ;子程序返回KT: MOVA,66H ;如果是時鐘顯示模式就讀取時間后再送回 CJNEA,*10H,KTT ;如果不是正常時鐘顯示模式就判斷設置鍵是否按下 MOV11H,37H ;當前時間送入時間修改單元 MOV12H,36H MOV13H,34H MOV14H,33HKTT:MOVA,65HCJNEA,*10H,LK1MOVA,64HCJNEA,*0FH,LK1MOV20H,*0MOV66H,*11H ;按下設置鍵后顯示模式變?yōu)?1H MOV16H,*00H ;查詢總次數(shù)置為15次 RETLK1:MOVA,66H ;如果沒有按下設置鍵,就不用判斷了 CJNEA,*11H,LKSSLKSS:JCLKR ;如果顯示模式小于11H,也就是沒有按下設置鍵,就退出 MOVA,65H CJNEA,*10H,LKRMOVA,64HCJNEA,16H,LK2 ;判斷所有K0~14按鍵 LJMPK ;如果對應上K0~K14就實現(xiàn)功能LK2:INC16H ;沒對應上就對應下一個試試 MOVA,16H CJNEA,*0FH,LK3 ;如果到了K15就不用再對應 LJMPLKRLK3:LJMPLK1 ;沒到K15就返回繼續(xù)比擬K: MOVA,16H ;對應的16H是哪個按鍵 CJNEA,*0,K1 ;分別判定并實現(xiàn) MOVR0,66H MOVR0,*1 ;給當前單元送1LKJ*: INC66H ;顯示模式變?yōu)橄聜€模式 MOV20H,*0 MOVA,66H ;判斷是否到了15H CJNEA,*15H,LKR ;到了15H就變?yōu)?1H MOV66H,*11H LJMPLKRET ;功能實現(xiàn)完畢,返回K1: CJNEA,*1,K2;是不是K1按下呢,是就實現(xiàn)以下功能,不是就繼續(xù)跳轉查詢 MOVR0,66H ;當前閃爍位送給R0 MOVR0,*2 ;給當前閃爍位〔例如13H就是分鐘的十位〕送序號2,然后會在顯示disp中查表顯示數(shù)字2 LJMPLKJ* K2:CJNEA,*2,K3 ;是不是K2按下呢,是就實現(xiàn)以下功能,不是就繼續(xù)跳轉查詢 MOVR0,66H MOVR0,*3 LJMPLKJ*K3: CJNEA,*3,K4 ;是不是K3按下呢,是就實現(xiàn)以下功能,不是就繼續(xù)跳轉查詢 MOV20H,*0 PZ:MOVA,12H;非壓縮BCD碼轉化成壓縮BCD碼,取低位ASCII碼ANLA,*0FH;保存低4位(個位)MOV21H,A;暫存?zhèn)€位單元MOVA,11H;再取高位ASCII碼ANLA,*0FH;保存高4位(十位)SWAPA ORL21H,A;高、低4位相或,得壓縮BCD碼MOVA,14HANLA,*0FHMOV22H,AMOVA,13HANLA,*0FHSWAPA ORL22H,ALJMPLKRK4: CJNEA,*4,K5 ;是不是K4按下呢,是就實現(xiàn)以下功能,不是就繼續(xù)跳轉查詢 MOVR0,66H MOVR0,*4 LJMPLKJ*LKR:LJMPLKRET ;本子程序太長,這里設置一個跳轉中轉站,要不然一次跳不過去K5: CJNEA,*5,K6 ;是不是K5按下呢,是就實現(xiàn)以下功能,不是就繼續(xù)跳轉查詢 MOVR0,66H MOVR0,*5 LJMPLKJ*K6: CJNEA,*6,K7 ;是不是K6按下呢,是就實現(xiàn)以下功能,不是就繼續(xù)跳轉查詢 MOVR0,66H MOVR0,*6 LJMPLKJ*K7: CJNEA,*7,K8 ;是不是K7按下呢,是就實現(xiàn)以下功能〔確定鍵〕,不是就繼續(xù)跳轉查詢 MOVA,11H CJNEA,*3,HOUR0 ;小時十位修改單元是否超過了3,HOUR0: JCHOUR1 ;沒超過就繼續(xù)判斷 LJMPKNE ;超過了就執(zhí)行退出指令〔把修改前的時間讀取回來〕HOUR1: MOVA,11H ;小時十位修改單元11H是否為2 CJNEA,*2,MIN0 ;不是2就不用判斷小時的個位 MOVA,12H ;如果是2就判斷小時個位修改單元的12H是否大于等于4 CJNEA,*4,HOUR3 HOUR3: JCMIN0 ;如果小于24點就繼續(xù)判斷分鐘的修改數(shù)值 LJMPKNE ;如果大于24點就執(zhí)行退出指令〔把修改前的時間讀取回來〕MIN0:MOVA,13H CJNEA,*6,MIN1 ;分鐘的十位是否超過了6,MIN1:JCMIN2 ;沒有超過6就準備顯示 LJMPKNE ;超過了6就執(zhí)行退出指令〔把修改前的時間讀取回來〕MIN2:MOVA,11H SWAPA ORLA,12H MOV3CH,A MOVA,13H SWAPA ORLA,14H MOV3BH,A CLR3AH MOV66H,*10H ;然后進展一次拆字 MOV39H,*0 MOV3AH,*0CZ4:MOVR0,4AH MOVR1,*30H ;置顯示緩沖單元首地址(對應于最右顯示位)CZ2:MOVA,R0 ;取當前數(shù)據(jù)單元BCD碼 ANLA,*0FH ;保存低4位〔個位〕 MOVR1,A ;送顯緩當前個位單元 INCR1 ;指向顯緩當前十位單元 MOVA,R0 ;再取當前數(shù)據(jù)單元BCD碼 ANLA,*0F0H ;保存高4位〔十位〕 SWAPA ;交換到低4位 MOVR1,A ;送顯緩當前十位單元 INCR1 ;指向顯緩下一個個位單元 MOVR1,*10H INCR1 INCR0 ;指向下一個時鐘數(shù)據(jù)單元 CJNER0,*3DH,CZ2 ;未完繼續(xù) RETK8: CJNEA,*8,K9 MOVR0,66H MOVR0,*7 LJMPLKJ*K9: CJNEA,*9,K10 MOVR0,66H MOVR0,*8 LJMPLKJ*K10:CJNEA,*10,K11 MOVR0,66H MOVR0,*9 LJMPLKJ*K11: CJNEA,*11,K12KNE:MOV66H,*10H MOV11H,37H ;當前時間送入時間修改單元 MOV12H,36H MOV13H,34H MOV14H,33H MOV20H,*0 LJMPLKRETK12:CJNEA,*12,K13 MOVR0,66H MOVA,66H CJNEA,*10H,LKZZ MOV66H,*14HLKZZ:DEC66H MOVA,66H CJNEA,*10H,LKZ* MOV66H,*14HLKZ*:MOV20H,*0 LJMPLKRK13:CJNEA,*13,K14 MOVR0,66H MOVR0,*0 LJMPLKJ*K14:CJNEA,*14,LKRET LJMPLKJ*LKRET: MOV37H,11H ;暫時修改的時間顯示出來 MOV36H,12H MOV34H,13H MOV33H,14H RETWD*S: MOVDPTR,*0FDFEH ;電平開關SW0~7檢測 MOV*A,DPTR ;輸入SW0~7電平JNBACC.1,WDR ;SW1開關為0則返回,SW1為溫度,時鐘顯示切換開關 JNBACC.0,WDR ;SW0開關為0則返回,SW0為空調啟動開關 MOVA,5AH ;工作模式判斷 CJNEA,*0,WD1 ;5AH為存儲工作模式單元,比擬5AH是否為*0,不是就繼續(xù)比擬 MOV37H,*0AH ;5AH是0就顯示A,自動模式的意思 LJMPWD*2 ;然后顯示風速模式WD1:CJNEA,*1,WD2 ;5AH為存儲工作模式單元,比擬5AH是否為*1,不是就繼續(xù)比擬 MOV37H,*0CH ;5AH是1就顯示c,制冷的意思 LJMPWD*2 ;然后顯示風速模式WD2:CJNEA,*2,WD3 ;5AH為存儲工作模式單元,比擬5AH是否為*2,不是就不用比擬,因為只剩下通風模式這種可能 MOV37H,*0FH ;5AH就是2,就顯示F,通風模式的意思 LJMPWD*2 ;然后顯示風速模式WD3:MOV37H,*13H ;三種情況都不符合就會跳到這里,5AH是3就顯示H,制熱模式的意思WD*2: MOVA,5CH ;風速模式判斷 CJNEA,*0,WD4;5CH為風速模式存儲單元,比擬5CH是否為*0,不是就繼續(xù)比擬 MOV36H,*0AH ;5CH是0就顯示A,自動風速模式的意思 LJMPWD*3 ;然后顯示設定溫度WD4:CJNEA,*1,WD5;5CH為風速模式存儲單元,比擬5CH是否為*1,不是就繼續(xù)比擬 MOV36H,*16H ;5CH是1就顯示"~",高風速模式的意思 LJMPWD*3 ;然后顯示設定溫度WD5:CJNEA,*2,WD6 ;5CH為風速模式存儲單元,比擬5CH是否為*2,不是就不用比擬,因為只剩下低風速這種可能 MOV36H,*10H ;5CH是2就顯示"-",中風速模式的意思 LJMPWD*3 ;然后顯示設定溫度WD6:MOV36H,*15H ;5CH是3就顯示"_",低風速模式的意思WD*3:MOVA,5AH ;〔此段程序為設定溫度顯示模塊〕 CJNEA,*2,J* ;先判斷是否為通風模式,是就繼續(xù),給顯示緩沖單元送“--〞的序號,不是就跳到溫度顯示指令中 MOV34H,*10H ;"--"的序號 MOV33H,*10H ;"--"的序號 LJMPWD*4 ;跳到實際溫度顯示指令J*: MOVA,5EH ;把設定溫度給被除數(shù) MOVB,*10 ;除數(shù)設為10 DIVAB ;商給A,余數(shù)給B MOV34H,A ;商為設定溫度的十位 MOV33H,B ;余數(shù)為設定溫度的個位WD*4: MOVA,5FH ;把室溫給被除數(shù) MOVB,*10 ;除數(shù)設為10 DIVAB ;商給A,余數(shù)給B MOV31H,A ;商為室溫度的十位 MOV30H,B ;余數(shù)為室溫度的個位WDR:RET ;溫度顯示完畢DISP:MOVR0,*30H ;顯示更新子程序。置顯示緩沖單元首地址〔對應最右位〕 MOVR3,*01H ;位碼初值〔從最右位起〕 MOVA,R3DISP1: MOVDPTR,*0FEFDH ;8255-B口〔位碼輸出口〕 MOV*DPTR,A ;輸出當前字位碼 MOVA,R0 ; CJNEA,*33H,DIM ;是否顯示到了33H也就是從右往左數(shù)第四個數(shù)碼管也就是分鐘數(shù)的個位 MOVA,66H CJNEA,*14H,DIJ* ;判斷66H顯示模式單元存放的是否是*14H數(shù)據(jù),如果兩者同時滿足,就執(zhí)行閃爍指令,不滿足就看看是否是*13H,*12H,*11HDISS:MOVA,39H ;閃爍指令 MOVB,*25 ;除數(shù)為25 DIVAB ;39H〔百分之一秒〕單元的數(shù)據(jù)給A,A與B相除,商重新賦值給A,余數(shù)重新賦值給B,是這個指令的含義 ACC.0,DISB ;此時商只有四種可能,*00H,*01H,*10H,*11H,分別代表亮暗亮暗,從而實現(xiàn)在一秒出現(xiàn)2HZ的閃爍 LJMPDIJ* ;跳往關閉顯示這一位,并顯示下一位的程序中DIM:CJNEA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅認購定金合同范本
- 倉儲保管填寫合同范本
- 2025年四川貨運從業(yè)資格證考試的技巧
- 一房三賣買賣合同范本
- 停息掛賬律師委托合同范本
- 個人外匯貸款合同范本
- 助資合同范本
- 個人買房購房合同范本
- 公司稅貸合同范本
- 個人店面整體裝修合同范本
- 2015 年全國高校俄語專業(yè)四級水平測試試卷
- T∕CCCMHPIE 1.3-2016 植物提取物 橙皮苷
- 土石壩設計畢業(yè)設計
- 一季責任制整體護理持續(xù)改進實例
- 清華抬頭信紙
- 毫火針療法PPT課件
- 三年級部編版語文下冊第二單元日積月累
- 蝴蝶蘭溫室工廠化栽培管理技術
- 原發(fā)性肺癌手術臨床路徑(最全版)
- 最新工程招投標實訓課程標準教案
- 企業(yè)職工流動登記表格模板(最新)
評論
0/150
提交評論