




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于單片機的溫濕度控制系統目錄111122233摘要1.緒論1.1課題背景11.2立題的目的和意義11.3植被栽培技術溫室環境的調節1.4本系統主要研究內容 22、系統總體分析與設計 22.1系統功能及系統的組成和工作原理 22.1.1.總體方案2.1.2.實施措施2.1.3.硬件系統設計主機與主要部件的選擇:2.2溫濕度采樣與控制系統2.2.1.溫濕度采樣系統 32.2.2.溫濕度控制系統 32.3鍵盤顯示系統 42.4報警系統62.5硬件電路設計 62.5.1.系統硬件配置 62.5.2.主要組件簡介 683
軟件系統設計
83.1系統初始化模塊3.2鍵盤顯示模塊
103.3采樣轉換模塊
113.4溫濕度控制模塊113.5報警模塊 134硬件調試方案 144.1硬件電路的調試 144.2功能模塊的調試方案 14結論 15致謝 15參考文獻 16附錄: 18基于單片機的溫濕度控制系統設計摘要 本文利用8051單片機設計一個溫室的溫濕度控制系統,對給定的溫濕度進行控制并實時顯示,其中溫濕度信號各有四路,系統采用一定的算法對信號處理以確定采取某種控制手段,在本系統中采用溫度優先模式,循環處理。LCD顯示
ADC0809關鍵字:89C518729鍵盤顯示1.緒論1.1課題背景? 改革開放以來,人們對生活質量要求顯著提高,對美麗的植被和花卉的需求量也急劇上升,這對以種植植被為生計的園林工人是一個機遇,同時也對傳統的手工植被種植是一個挑戰,而基于單片機的溫濕度控制系統對解決這些問題有著非常重大的意義。前種植植被一般都用溫室栽培,為了充分的利用好溫室栽培這一高效技術,就必需有一套科學的,先進的管理方法,用以對不同種類植被生長的各個時期所需的溫度及濕度等進行實時的監控。溫濕度控制對于單片機的應用具有一定的實際意義,它代表了一類自動控制的方法。而且其應用十分廣泛。?? 8051單片機是常用于控制的芯片,在智能儀器儀表、工業檢測控制、機電一體化等方面取得了令人矚目的成果,用其作為溫濕度控制系統的實例也很多。使用8051單片機能夠實現溫濕度全程的自動控制,而且8051單片機易于學習、掌握,性價比高。使用8051型單片機設計溫濕度控制系統,可以及時、精確的反映室內的溫度以及濕度的變化。完成諸如升溫到特定溫度、降溫到特定溫度、在溫度上下限范圍內保持恒溫等多種控制方式,在濕度控制方面也是如此。將此系統應用到溫室當中無疑為植被的生長提供了更加適宜的環境。1.3植被栽培技術 植被“設施栽培”,即“保護地栽培”。它是指在某種類型的保護設施內(如陽畦、溫室、大棚等),人為地創造適宜植被生長發育的最佳環境條件,在不同季節內,尤其是不利于植被生長的季節內進行植被栽培的一種措施[1]。設施栽培是人類利用自然、改造自然的一種創造。由于設施內的條件是可以人為控制的,使得植被調節的周年生產得以實現。玻璃溫室和塑料薄膜溫室出現后,植被生產出現了劃時代的變化。現在人們可以根據自己的意愿,隨時生產出所需要的各種植被。可以說,這是“設施栽培”的功勞。在不利于植被生長的自然環境中,溫室能夠創造適宜植被生長發育的條件溫室環境的調節主要包括日光、溫度、濕度三個方面。 ·溫度:根據植被生長的適宜溫度進行溫室溫度調節,若低于下限溫度則采取升溫措施,通常采取電熱增溫和火力增溫等,火力增溫比較方便。若高于上限溫度則采取降溫措施,通常通過水管降溫和風扇降溫,風扇降溫比較方便。 日光:遮蔭是調節日照強度最好的辦法,其具體做法是加蓋遮陽網或草席,這種方法兼有降低溫度的效果。 ·濕度:為滿足溫室植被對濕度的要求,可以在地上、臺階、盆壁灑水,還可以在空中懸掛濕布,以增加水分的蒸發,最好的辦法是設置自動噴霧裝置,自動調節濕度[9]。如果濕度過大,容易導致植被病害,可以采用通風的辦法來降低濕度,而且最好在室溫與氣溫相差不大的時候進行。本系統注重溫度和濕度的調節,光照強度沒有考慮其中。1.4本系統主要研究內容本系統所要完成的任務是: 1.4.1人性化的設計。界限溫度值及濕度值能夠由用戶根據不同植被的各種生長需求由鍵盤輸入并通過顯示器顯示。1.4.2能夠實時、準確的顯示采樣溫度值與濕度值。 1.4.3通過采集溫度及濕度值,準確的判斷標準值與當前值之間的差異,及時的啟動報警裝置(包括警報燈的提示功能以及提示音等)進行報警,并采取相應的方案。 1.4.4能夠根據植被在不同時間段內對溫濕度的不同要求,用戶可隨機更改溫度及濕度值,以滿足用戶不同的需求。2、系統總體分析與設計2.1系統功能及系統的組成和工作原理2.1.1.總體方案·溫度監控:對溫室溫度進行測量,并通過升溫或降溫達到植被的最佳溫·濕度監控:對溫室濕度進行測量,并通過噴霧或去濕達到植被的最佳濕 ·控制處理:當溫度、濕度越限時報警,并根據報警信號提示采取一定手控制。 ·顯示:LCD就地顯示輸入值和相應的溫濕度,數碼管擺放在生產現場用顯示當前的溫濕度。2.1.2.實施措施·實際環境溫度與給定界限比較,執行加熱/制冷措施。·實際環境濕度與給定界限比較,執行加濕/去濕措施。·越限報警:當溫濕度越限時聲光報警。·鍵盤顯示:負責用戶的輸入及相關數據的顯示,其中包括LED和LCD顯示。2.1.3.硬件系統設計 經過上面的總體方案和實施措施的討論后可以開始著手硬件系統的設計,硬件系統是應用系統的基礎、軟件系統設計的依據主機與主要部件的選擇: 根據總體功能和性價比及其運行速度等因素的考慮,選用MCS-51系列的89C51為主機,滿足上面的要求而且設計方便,不需要再存儲擴展。 數據存儲片內設有128B,外部有8279的256B,而由于存入的數據是隨時更新的且不計小數位,存入8個16進制數字,其總共需要的容量只有16B,已經夠?用。對外部模擬量(溫度、濕度)采樣,選用ADC0809能夠滿足要求。 ·溫室溫濕度控制系統是以89C51單片機作為中央控制裝置,模數轉換器ADC0809,風扇,加熱設備,加濕設備,排潮設備,鍵盤顯示芯片等,其功能和原理如下: ·89C51作為中央控制裝置,負責中心運算和控制,協調系統各個模塊的工作。·四路采樣溫度信號采樣簡單平均處理,溫度保存為整數。·四路采樣濕度信號采樣簡單平均處理,溫度保存為整數。 ·模數轉換器ADC0809:即由模擬信號轉換為數字信號。它共有8個模數轉換通道。模數的轉換共有2種方法。一種是利用INT0中斷,當一次轉換結束后,ADC0809使INT0產生中斷,通知系統轉換完畢;另一種使用延時方法,開始轉換后系統延時100微秒等待轉換完成。本方案采用延時轉換的方法。 ·鍵盤顯示芯片:用8729識別鍵盤,負責用戶的輸入及相關的數據的LED顯示。例如選擇系統的工作模式,用戶輸入溫度及濕度的界限數據,顯示實時的溫度及濕度值等等。·風扇:負責系統的降溫工作。·加熱設備:負責系統的加熱工作。·噴霧設備:負責系統的加濕工作。·排潮設備:負責系統的去濕工作。 雙色燈,音效模塊:負責系統的報警功能。如果當前的溫度超過用戶設定的界限值時系統將自動報警,雙色燈在74LS273的控制下有規律的閃爍,同時音效模塊發出報警聲,通知用戶采取相應的措施。2.2溫濕度采樣與控制系統2.2.1.溫濕度采樣系統 為了更精確的反映溫室的溫度和濕度,取溫濕度各4路信號采樣簡單平均處理作為溫室的溫度和濕度。在分辨率達到的前提下,溫濕度的精度為1%2.2.2.溫濕度控制系統 首先,系統啟動后,提示用戶輸入溫度的上限與下限的溫度值。用戶輸入之后,系統自動求出中間值,根據實際溫度的情況采取相應的方案。如下圖2-2-1所示。下限溫度中間溫度
上限溫度36圖2-2-128
----
32
----??如果該時刻的實際溫度值低于用戶給定的下限溫度值時,系統立即啟動報警裝置,且系統處于升溫狀態,直到實際溫度達到用戶輸入的上下限溫度的中間值一定區間內時停止升溫。反之,如果實際溫度值高于用戶設定的上限值時,系統也會立即啟動報警裝置,且系統處于降溫狀態,直到實際溫度達到用戶輸入的上下限溫度的中間值一定區間內時停止降溫。? 選擇中間值作為控制參數,防止升溫——降溫——升溫的死循環,因為溫度低于下限時會一直升溫,可能導致溫度高于上限系統又開始降溫,這樣系統便一直重復升溫——降溫——升溫過程,導致設備在某一個溫濕度點附近頻繁的啟停,使設備壽命下降,而且沒有實際意義。選擇中間值的一定區間,是防止達到中間值時,采取了停止升溫或者降溫措施,溫度還是會持續上升或下降一會兒,這時候溫度可能不是正好在中間值處,系統便還是采取升溫或者降溫的措施,而此時的溫度值可能已經是很適合植被生長的需要的溫度值。所以本方案選在中間值的正負一度區間內,認為此區間內都是適合的,不產生任何控制動作變化,這樣就能解決設備頻繁啟停問題。2.3鍵盤顯示系統 鍵盤顯示系統采用8279芯片控制16鍵的鍵盤和8個七段數碼管,以實現用戶的輸入與數據輸出。16個鍵分別是“0”到“F”,對應的鍵值是0到15不需要鍵值的轉換。七段數碼管采用共陰極,系統中使用的段碼如下表2-3-1所示。7顯示
0
1段碼3FH
06H顯示
8
92
3
4
5
65BH
4FH
66H
6DH
7DH
07HA
B
C
D
E
F5EH
79H
71H段碼7FH
6FH
77H
7CH
39H表2-3-18279初始化時,設定的相關命令字如下:Z8279EQU08701H
;8279狀態/命令口地址D8279EQU08700H
;8279數據口地址LEDMODEQU00H
;左邊輸入八位字符顯示?;外部譯碼鍵掃描方式,雙鍵互鎖LEDFEQLEDCLSEQUEQU38H0D1H;掃描速率;清除顯示RAMLEDWR0址EQU80H;設定的將要寫入的顯示RAM地系統的連接圖如下圖2-3-2所示。?圖2-3-2AD0809與89C51連接圖:2.4報警系統 報警系統由聲音報警和警報燈報警組成。聲音報警通過P1.0口接SD口控制系統的音效模塊發聲,用CPU控制P1.0產生一定頻率的方波就可以實現音效模塊的發聲。音效模塊是一個帶有揚聲器的放大電路。如圖2-4-1所示。2.5硬件電路設計2.5.1.系統硬件配置采用總線型結構的設計。由P0口作數據線,P0口和P2口共同作地址。2.5.2. 主要組件簡介?(1)89C51芯片 89C51是Intel公司于80年代初推出的8位嵌入式微控制器(內部數據總線為8位,外部數據總線為8位),它與MCS-96系統中的其它芯片相比,具有性能高、功能全、售價低廉、使用方便(48PINDIP)等優點。89C51在工業應用方面有許多明顯的特點,它具有靈活方便的8位總線外圍支持器擴展功能,而在數據處理方面又有8位微機的快速功能。由于大的高度集成化已把許多常駐用的輸入檢測輸出控制通道都制作在同一塊硅片上,大大地靈活了外部連線,增強了系統的穩定性并且速度快(時鐘12MHz),非常適合于工業環境下安裝使用。因此本系統CPU選用89C51芯片。89C51單片機引腳采用40雙列直插式封裝結構。89C51系統CPU中的主要組件有:高速寄存器陣列、特殊功能寄存器(SFR)、寄存器控制器和算術邏輯單元(RALU)。它與外部通訊是通過特殊功能寄存器SFR或存儲器,控制器進行的。8051系統的CPU的主要特色是體積小,重量輕,抗干擾能力強,售價低,使用方便。此外,通過SFR還可以直接控制I/O、A/D.PWM、串行口等部件的有效運行。?CPU內部的一個控制單元和兩條總線寄存器陣列和EALU連接起來。這兩條總線是:16位地址總線(A-BUS)和8位數據總線(D-BUS)。數據總線僅在RALU與寄存器陣列或SFR之間傳送數據,地址總線用作上述數據傳送的地址總線或用作與寄存器控制器連接的多路復用地址/數據總線[7]。?CPU對片內RAM訪問是直接訪問和通過寄存器R0,R1間接訪問的。89C51工作時所需的時鐘可通過其XTALL輸入引腳由外部輸入,也可采用芯片內部的振蕩器。其工作頻率為6~12MHz。在本系統中采用11.0592MHz頻率。(2)74LS273地址鎖存器74LS273是帶有三態緩沖輸出的8D鎖存器74LS273;·D7~D0:三態門輸入端。·Q7~Q0:三態門輸出端。·GND:接地端。·Vcc:電源端。·OE:三態門使能端。·G(STB):8D鎖存器控制端(3)8279可編程鍵盤/顯示器接口芯片 8279使Intel公司為8位微處理器設計的通用鍵盤/顯示器接口芯片,其功能主要體現在二個方面:接收來自鍵盤的輸入數據并作預處理;數據顯示的管理和數據顯示器的控制。單片機采用8279管理鍵盤和顯示器,可減少軟件程序,減輕負擔,且顯示穩定,程序簡單。8279的引腳功能(采用40線雙列直插式封裝): ·DB0~DB7:雙向外部數據總線。用于傳送8279與CPU之間的命令、數據和狀態。·CS:片選信號線,低電平有效。 ·A0:區分信息的特征位。當A0位置1時,CPU寫入8279的信息位命令,CPU從8279讀出的信息為8279的狀態;當A0為0時,I/O信息都為數據。·RD,WR:讀和寫選通信號線,均為低電平有效。·IRQ:中斷請求輸出線,高電平有效。 ·RL7~RL0:鍵盤回送線,平時為高電平,只有當某一鍵閉合時,其中一條線才變低。·SL7~SL0:掃描輸出線,用于對鍵盤和顯示器進行掃描。·OUTB3~OUTB0OUTA3~OUTA0:顯示段輸出線。·BD:顯示熄滅控制線,低電平有效。·RESET:復位輸入線,高電平有效。 ·SHIFT,CNTL/STB:控制輸入線,由內部拉高電陰拉成高電平,也可由外部控制按鍵拉成低電平。·CLK:外部時鐘輸入線,其信號由外部振蕩器提供。·Vcc,GND:分別為+5V電源和地。(4)七段LED顯示器 LED是單片機應用系統中一種常見的輸出設備,通常使用的是七段顯示。這種顯示塊有共陰極與共陽極兩種。[4]以共陰極為例:顯示個位“4”a送0d,e送0b,c,f,g則送1gnd送0則立刻顯示4。 它由8個發光二極管(7段和一個小數點)構成,可用來顯示0~9,A、B、C、D.E、F、G(小數點)。在數碼管中,若把各二極管的陰極連在一起稱為共陰極數碼管;若把各二極管的陰極連接在一起稱為共陰極數碼管;若把各二極管的陽極連接在一起,則稱為共陽極數碼管。在本系統中采用共陰極數碼管。(5)ADC0809芯片[3]ADC0809是28腳雙列直插式封裝。·D7~D0:8位數字量輸出引腳。·IN0~IN7:8路模擬量輸入引腳。·Vcc:+5V工作電壓。·GND:地。(6)LCD顯示引腳功能[7]: ·D0~D7雙向數據總線。LCD數據讀寫方式可以分為8位和4位兩種,以8位數據進行讀寫操作則D0~D7都有效,若以4位方式進行讀寫操作,則只用到D4~D7 ·RS:寄存器選擇控制位。當RS=0時,并且做寫入的動作時,可以寫入指令寄存器,若RS=0,且做讀取操作時,可以讀取忙標準及地址記數器的內容。若RS=1,責用于讀取數據寄存器[7]。 ·R/W:LCD讀寫控制線。R/W=0時,LCD執行寫入操作,R/W=1時,LCD執行讀取操作。·EN:啟動控制線。高電平有效。·VCC:電源端。·VO:亮度調整電壓輸入控制器。當輸入0V時字符顯示最亮。·GND:接地。3.軟件系統設計3.1系統初始化模塊 系統初始化模塊的主要功能是完成系統的初始化以及設定系統的工作狀態初始化部分包括以下方面的內容: 3.1.1 系統啟動后,顯示器上顯示兩行,第一行為“WELCOMETOTHESYSTEM”,第二行顯示為“STARTWORK” 3.1.2等待用戶輸入溫度及濕度值。按“B”鍵表示開始輸入,這時可按溫度下限、上限,濕度下限、上限的順序依次輸入,如果輸入的順序錯可按“B”鍵可重新進行輸入,直到輸入正確;輸入完畢后按“C”鍵確定。3.1.3系統進入正常工作狀態。系統整體的工作方式如下框圖所示?圖3-1-1初始化程序部分的流程圖如下圖3-1-2所示。?圖3-1-23.2鍵盤顯示模塊??本系統中使用8279芯片完成有關鍵盤輸入和溫濕度顯示工作。溫度濕度是依次輸入的并且依次以下限、上限輸入,并且將溫濕度的中間數值存入單片機中,在將LED清零后顯示(分別在0123位),并依次顯示實時的溫度濕度數值(顯示在4567位)實際上,在系統初始化的過程中,除了初始化鍵盤和顯示器之外,其中還包括著調用8279鍵盤顯示模塊,8279鍵盤顯示模塊部分的基本流程如下圖3-2-1所示。?圖3-2-1其中顯示鍵值的程序流程圖如下:?圖3-2-23.3采樣轉換模塊 采樣轉換模塊是本系統中的核心模塊之一,它負責完成溫度和濕的測量及模擬量轉換為數字量的全過程,這也是它為什么重要的原因。系統每次轉換前ADC0809的IN0~IN7送個任意數,表示開始轉換,結果是一個數字量,將其轉化為#BCD碼,。送顯示程序顯示,并將數值返回給主函數。濕度也可以通過此種方法觀察變化,得出相應的結論。 為了更精確的反映系統的溫度和濕度,本系統對四路采樣信號作簡單平均處理,并將處理后的數值作為溫室的溫濕度,其過程如下圖。圖3-3-1 實時溫濕度顯示和溫濕度中間數值顯示便于我們實時比較和掌握系統工作狀況,實時的溫度濕度不在要求的區間內則進行升溫降溫處理。??圖3-3-23.4溫濕度控制模塊? 溫濕度判斷控制模塊也是系統的核心模塊之一,所謂判斷控制模塊,就是對用戶輸入的溫度和濕度與當前溫室內的實際溫濕度進行比較,先進行判斷,然后再進行控制,控制模塊是決定系統將要進行什么工作的。如溫度高于上限時需要降溫,低于下限時需要升溫,同時還要啟動警報等等。溫度判斷控制部分的程序整體思路如下如所示:????圖3-4-1 上面已經討論了采取中間值作為控制參數,采取中間值一定區間作為控制區間的原因,那么按照(2.2)的思想,控制程序流程圖如下:??圖3-4-2?濕度判斷控制部分與溫度判斷控制部分的功能及流程是相同的,便不再贅述了。3.5報警模塊?????? 報警模塊具備兩項功能,即為報警燈和聲音報警。報警燈模塊是完成LED有規律的閃爍,以便從視覺上提醒用戶。LED是由74LS273控制4個雙色LED燈組成的,其閃爍規律為:向74LS273發送的數據0F0H,則雙色LED燈發綠光。向74LS273發送的數據0FH,則雙色LED燈發紅光。向74LS273發送的數據0FFH,則雙色LED燈熄滅。向74LS273交替發送0F0H、0FFH,或0FH、0FFH,以實現LED燈紅/滅交替或綠/滅交替,這時我們就看到了閃爍的效果。在LED燈閃爍的同時,聲音報警也會同時啟動,可采用延時的方式來延長聲音報警的聲音。警報燈由4個雙色的LED燈組成,一共需要8根數據線,使用74LS273芯片控制。要實現的功能是使4個雙色LED燈有規律的閃爍,當用戶輸入溫度的上下限值后,系統進行實時的采樣,并判斷出當前溫度與用戶輸入溫度之間的差異,如果當前溫度低于用戶輸入的下限溫度值,則說明當前溫度過低,系統自動啟動警報燈,此時警報燈發出綠光并進行有規律的閃爍,同時開始加溫,直至加到所需溫度值時警報燈熄滅。反之,如果當前溫度高于用戶輸入的上限溫度值,則說明當前溫度過高,系統也會自動啟動警報燈,但此時警報燈會發出紅光并進行有規律的閃爍,同時開始降溫,直至降到所需溫度值時警報燈熄滅。?圖3-5-14硬件調試方案4.1硬件電路的調試 此部分的任務是在系統連接好后,調試各個組件能否正常工作,能否實現軟件設計的預期目標。其步驟如下:4.1.1按照系統設計,將系統需要的各個組件連接好。4.1.2根據實驗說明書,了解各個組件的工作原理,開始著手調試芯片。 4.1.3調試8279芯片。按照說明書調用8279.ASM匯編程序,運行,觀察現象。現象正確,說明8279芯片正常,可以使用。 4.1.4調試ADC0809芯片。按照說明書調用CON_W.ASM匯編程序,運行,觀察現象。現象正確,說明ADC0809芯片正常,可以使用。 4.1.5調試直流電機,按照說明書調用直流電機相應的匯編程序,運行,觀察現象。現象正確,說明直流電機正常,可以使用。4.2 功能模塊的調試方案? 把各個功能模塊編寫成單獨的源文件進行調試,調試成功以后,再將各部分聯合在一起。 整個系統的編寫、調試是從8279開始的。控制8279原理雖然簡單,但需要細節卻很多,如選擇顯示寄存器與送段碼的順序,8279的初始化等待時間等。用戶溫度輸入數據時上限、下限分別在七段數碼管的0、1、2、3位置顯示,濕度輸入數據時上限、下限分別在七段數碼管的4、5、6.7位置顯示。讀鍵存儲的過程是循環程序。可循環等待直到用戶輸入正確并確認為止。?? 采樣轉換模塊是一個比較重要的模塊,在調試的階段遇到的問題較多,由于它是程序運行的瓶頸,如果這一部分通不過的話,那么程序就無法執行下去,本系統采用的是延時的方法。溫濕度判斷控制模塊也一個非常重要的模塊,由于溫濕度對于植被的生長起著決定性的作用,因此,如果這兩個因素控制不好,這個系統就失敗了,這就需要我認真的考慮這一模塊的控制方式,調試階段比較順利。除了以上所提到的模塊之外,還有一些模塊也很重要,也都需要認真的調試,如報警模塊等。調試了各模塊之后,接下來的工作就是將各源程序段連接起來,進行綜合調試了,綜合調試需要我們特別注意細節部分,這樣才能盡可能的減少錯誤的產生。結論 雖然這個設計做的比較簡單,很多東西都考慮的不是很細,也有一些特別情況沒有做,但是用了很多精力用來完成這個論文,鑒于個人水平和時間的關系所以并沒有把自己當初設想的所有情況都考慮進去,這兩個月的畢業論文讓我學會的很多,覺得自己學的太少還有很多需要認真學習,學無止境,所以要更努力。致 謝 此次畢業設計是在我的導師陳勉老師的精心指導及全力支持下完成的。本系統的設計成功與陳老師的幫助是密不可分的,再加上自身的努力才能圓滿地完成預期的目標。陳老師對新知識,新事物都有自己獨到的理解,這深深的影響了我對學習的態度,將使我終生難忘。他們一絲不茍的工作態度和認真負責的敬業精神同樣給了我巨大的收益和鼓舞。這些都將使我受益匪淺,同時也要感謝我的父母,不是你們我就不可能在大學校園里,也就不可能有這個畢業設計! 最后,我要以最真摯的感情來感謝指導本次畢業設計中的導師,是您們用辛勤的勞動、無私的奉獻和淵博的知識換來了我的畢業設計。同時感謝各位同學對我的幫助,只有我們不斷的努力學習,明天才會更加美好,因為機會永遠屬于那些有準備的人。參考文獻[1]/product/9160/9160128.shtml[Z].[2]周堅,單片機輕松入門[M].北京:北京航空航天出版社,2002. [3]孫育才.MCS-51系列單片微型計算機及其應用[M].南京:東南大學出版社,2004.P231 [4]公孫茂,馬寶匍,孫晨.單片機入口接口實例集[M].北京:北京航空航天出版社,2002.P120 [5]求是科技.PIC單片機典型模塊設計和實例導航[M].北京:人民郵電出版社2005. [6]龍澤明,顧立志,王桂蓮,陳光軍.MCS-51單片機原理及工程應用[M].北京:國防工業出版社,2005. [7]胡輝.王曉,戴永成.單片機原理及應用設計[M].北京:中國水利水電出版社,2005.P6,P181[8]蔡菲娜.單片微型計算機原理和應用[M]。杭州:浙江大學出版社,2003[9]/Article/ShowArticle.asp?ArticleID=113[Z] BasedonmonolithicintegratedcircuittemperatureAndhumiditycontrolsystemdesignAbstract: Thisarticleuses8051monolithicintegratedcircuitstodesignagreenhousethetemperatureandhumiditycontrolsystem,totemperaturandhumiditycontrolandrealtimedisplaywhichassigns,temperaturehumiditysignalhasfourgroupsrespectively,thesystemusesthecertalgorithmtothesignalprocessingbytodetermineusessomecontrolmethod,usesthetemperaturefirstpatterninthissystem,circulatioprocessing.Keywords:The89C518729keyboardsLCD ADC0809附錄:IN0 EQU 7FF8HIN1 EQU 7FF9HIN2 EQU 7FFAHIN3 EQU 7FFBHIN4 EQU 7FFCHIN5 EQU 7FFDHIN6 EQU 7FFEHIN7 EQU 7FFFHEQU
50HEQU
51HSET_WLSET_WHSET_W EQU
52HCURTM_W
EQU
53H54H55H?SET_SL
EQUSET_SH
EQUSET_SEQU
56HCURTM_S
EQU57HZ8279
EQU08701H;8279狀態/命令口地址D8279
EQU08700H;8279數據口地址LEDMOD
EQU00H;左邊輸入八位字符顯示;外部譯碼鍵掃描方式,雙鍵互鎖LEDFEQEQU38H;掃描速率LEDCLSEQU0D1H;清除顯示
RAMREADKBEQU40H;讀FIFO
RAM地址
0的命令字ORG0000H?LJMPSTART?ORG0040H?START:?MOVSP,#60H?LCALLINIT?MOVR0,#00HMOV
R1,#00HMOV
R2,#00HMOV
R3,#00HMOV
R4,#00HMOV
R5,#00HMOV
R6,#00HMOV
R7,#00HMOV
40H,#00HP0.0P0.1P1.0???????LCALLDISPLAY_1液晶顯示程序:DISPLAY_ST:RS EQUEN EQUWLED EQUCLR ENLCALL LED_BLLCALL SET_LCDMOVMOVLCALLA,
#’1’B,
#15LCDP1;LCD
RC引腳定義;LCD
EN引腳定義;工作指示燈引腳定義;LCD被禁用;LCD閃爍;LCD做顯示測試;設置所要顯示的字符;設置所要顯示的位置;在LCD第一行顯示字符MOVA,#’2’;設置所要顯示的字符MOVB,#15;設置所要顯示的位置;在LCD第二行顯示字符;循環;LCD初試化并做測試;LCD被禁用;LCD初試化;延時;指針指到消息第一行;顯示在第一行;顯示執行消息于LCD第一行;指針指到消息第二行;顯示在第二行;顯示執行消息于LCD第二行;4位I/O初試化;雙列顯示字符使用5×7點陣;光標出現不閃爍;每次向右移動一位,顯示屏不動LCALL
LCDP2JMP
$SET_LCD:CLR
ENLCALL
INIT_LCDLCALL
DELAYMOV
DPTR,#LMESS1MOV
A,#1LCALL
LCD_PRINTMOV
DPTR,#LMESS2MOV
A,#2LCALL
LCD_PRINTRETINIT_LCD1:MOV
A,#28HLCALL
WCOMMOV
A,#0EHLCALL
WCOMMOV
A,#06HLCALL
WCOMMOV
A,#01H;清除LCD顯示屏;清除LCD的第一行,設置第一行字符;設置記數值;載入空格到LCD;輸出字符到LCD;記數結束;在LCD第一行或第二行顯示字符;設置第一行地址WCOMCLR_LINE;設置第一行地址LCALL
WCOMRETCLR_LINE1:MOV
A,80HLCALL
WCOMMOV
R0,#24CL:MOV
A,#’’LCALL
WDATADJNZ
R0,CLRETLCD_PRINT:CJNE
A,#1,LINE2LINE1:MOV
A,#80HLCALLLCALLMOV
A,80HLCALL
WCOMJMP
FILLLINE2:MOV A,
#0C0HLCALL
WCOM?LCALL
CLR_LINE?MOV
A,0C0H?LCALL
WCOM?FILL:?CLR
A?MOVC
A,
@A+DPTR?CJNE A,
#0,L1?RET?L1:LCALL
WDATA?INC
DOTR?JMP
FILL?RET?CLR_LINE:MOV
R0,#24;清除LCD該行字符?C1:MOV
A,#’’;載入空格符到LCD?LCALL
WDATA;輸出字符到LCD?DJNZ
R0,C1;記數結束?RET?DE:;短暫延時?MOV
R7,#5?DJNZ
R7,$?RET?EN1:?SET
EN?LCALL
DE?CLR
EN?LCALL
DE?RET?INIT_LCD:?MOV
P0,#30H;LCD四位接口指令重置?LCALL
EN1;RS=0,R/W=0,D4~D7=0011?MOV
P0,#30H?LCALL
EN1?MOV
P0,#30H?LCALL
EN1?MOV
P0,#20H;啟動四位接口指令?LCALL
EN1;RS=0,R/W=0,D4~D7=0010?LCALL
INIT_LCD1;LCD指令設置初試化?RET?WCOM:?MOV
P0,A;先寫入高四位命令?CLR
RS;RS=0寫入命令?LCALL
EN1;產生高電平起用脈沖?RLC
A;向左移四位?RLC
A?RLC
A?RLC
AMOVP0,A;先寫入低四位命令CLRRS;RS=0寫入命令LCALL
EN1;產生高電平起用脈沖RETWDATA:MOVP0,
A;先寫入高四位命令SETBRS;;RS=1寫入數據;產生高電平起用脈沖;向左移四位;寫入低四位命令;RS=1寫入數據;產生高電平起用脈沖;LCD閃動控制程序WLEDR5,#10LCALL
EN1RLC
ARLC
ARLC
ARLC
AMOV
P0,ASETB
RSLCALL
EN1RETLED_BL:MOV
R4,#4LE1:CPLMOVLCALL
DELAYDJNZ
R4,
LE1RETLEMSS:字符消息DB
“
WELCOME
TO
LCD
SYSTEM”;需要顯示的?DB“
START
WORK”LCDP1:PUSH
ACC;在LCD第一行特定位置顯示字符?MOV
A,
B;A=ACC,DATA所要顯示的字符;設置第一行地址;由堆棧取出A寄存器值;寫入所要顯示的字符;在LCD第一行特定位置顯示字符;A=ACC,DATA所要顯示的字符;設置第一行地址ADD
A,
#80HLACLL
WCOMPOP
ACCLCALL
WDATARETLCDP2:PUSH
ACCMOV
A,BADD
A,
#0C0HLACLL
WCOMPOP
ACCLCALL
WDATARETEND?;鍵識別LCALL
GETKEY;調用GETKEY;判斷是否有鍵入,無則再讀CJNE
A,#0FFH,SET_TMOV
A,BCJNE
A,#3CH,TTCJNE
R0,#00H,SET_1;判斷鍵入是否3CH;判斷是否有鍵入并鍵入完成SJMP
SET_TLCALL
DISPLAY_NOR;置8279工作方式MOV
DPTR
,#Z8279MOV
A,#LEDMODMOVX
@DPTR,AMOV
A,#LEDFEQ;置鍵盤掃描速率;清除LED顯示MOVX
@DPTR,AMOV
A,#LEDCLSMOVX
@DPTR,A;判斷是否鍵入B;作為標志位,判斷是否數據輸入確定SET_T:??????SET_1:????????LCALL
L1TT:
CJNE
A,#3BH,KSINCR0MOV
R4,#0LCALL
GETWORDMOV
A,BLCALL
GETWORD
MOV
A,BMOV
SET_WH,AMOV
A,SET_WLADD
A,SET_WHMOV
B,#02HDIV
ABMOV
SET_W,ALCALL
GETWORD
MOV
A,BMOV
SET_SH,AMOV
A,SET_SLADD
A,SET_SHMOV
B,#02HDIV
ABMOV
SET_S,AMOV
SET_WL,AMOV
R4,#2????????MOV
R4,#4LCALL
GETWORDMOV
A,BMOV
SET_SL,AMOV
R4,#6????????KS:
SJMP
SET_TSET_T1:;判斷輸入是否正確;若正確則無需再讀;若錯誤則調用SET_T再鍵入數據MOV
R1,#0AHSET_T2:
LCALL
GETKEYCJNE
A,#0FFH,RINGMOV
A,BCJNE
A,#3BH,RINGLJMP
SET_TRING:DJNZ
R1,SET_T2RET?GETKEY:
PUSH
DPH;保存現場PUSHDPLPUSHPSWMOVDPTR,#Z8279MOVXA,@DPTR;讀8279狀態ANLA,#07H;屏蔽D7-D3JNZGETVAL;判斷是否有鍵輸入MOVA,#0H;置標志(無鍵輸入)SJMPNKBHIT;讀FIFO
RAM命令GETVAL:
MOV
A,#READKBMOVX
@DPTR,A?MOV
DPTR,#D8279?MOVX
A,@DPTR
;讀鍵?ANL
A,#3FH
;屏蔽SHIFT和CTRL鍵?MOV
DPTR,#KEYCODE
;鍵碼表起始地址?MOVC
A,@A+DPTR
;查表?MOV
B,A
;置返回鍵值?MOV
A,#0FFH
;置標志(有鍵輸入)?NKBHIT:
POP
PSW?POP
DPL?POP
DPH?RET?GETWORD:
;讀數子程序?WKEY1:
LCALL
GETKEY
;讀鍵盤CJNEA,#0FFH,WKEY1;無鍵輸入,則再讀MOVA,BADDA,#0C6HJCERROR1;判斷輸入是否大于9MOVA,BSUBBA,#30HJCERROR1;判斷輸入是否小于0MOVR5,ALCALLDISLED;顯示輸入的字符?MOV
B,#10MUL
ABPUSH
ACC;保存輸入的值;讀鍵盤A,#016H
;判斷輸入是否大于9ERROR2;判斷輸入是否小于0;顯示輸入的字符;把得到的值存在B;置合法輸入標志??WKEY2:
LCALL
GETKEYCJNE
A,#0FFH,WKEY2
;無鍵輸入則再讀MOV
A,BADDJCMOV
A,BSUBBJCINCMOVLCALLMOVPOPADDMOVMOVAJMPA,#30HERROR2R4R5,ADISLEDB,AACCA,BB,AA,#0FFHKEYOK;置非法輸入標志ERROR2:SJMP
WKEY2ERROR1:SIMP
WKEY1KEYOK:
RET?INIT_TRF:MOV
DPTR,#8100HMOV
A,#0FFHMOVX
@DPTR,ARETINIT8279:;8279初始化子程序PUSHDPH;保存現場PUSHDPLPUSHACCLCALLDELAY;延時MOVDPTR
,#Z8279MOVA,#LEDMOD;置8279工作方式MOVX@DPTR,AMOVA,#LEDFEQ;置鍵盤掃描速率MOVX@DPTR,AMOVA,#LEDCLS;清除LED顯示MOVX@DPTR,A?;保存現場;置顯示起始地址;加位置偏移量;設定顯示位置;置顯示常數表起始位置DPTR,#Z8279@DPTR,ADPTR,#LEDSEGA,R5;查表A,@A+DPTRDPTR,#D8279@DPTR,A;顯示數據;恢復現場LCALL
DELAY
;延時DISLED:
PUSH
DPHPUSH
DPLPUSH
ACCMOV
A,#LEDWR0ADD
A,R4MOVMOVXMOVMOVMOVCMOVMOVXPOP
ACCPOP
DPLPOP
DPHRETDELAY:PUSH
0;延時子程序;保存現場MOV
0,#0H;恢復現場DJNZ
1,$DJNZ
0,DELAY1POP
1POP
0RET將鍵入下限于實時值比較PUSH 1?DELAY1:MOV 1,#0H?????L1:LCALL SET_T1LCALL A_D_WLCALL A_D_SLCALL CON_WLCALL A_D_WLCALL A_D_SLCALL CON_SSJMP L1溫度控制:CON_W:?MOV A,SET_WLCJNEA,CURTM_W,CON0_W若實時值在下限以下,則調用升溫若在下限以上則再判斷實時值與上限比較END_CON_W
DOWN_W若在上限下限以內則返回否則調用降溫SETB
P1.1;中間實時溫濕度顯示CLR
P1.1MOV
DPTR,#8100HMOV
A,#0FFHLJMPEND_CON_WCON0_W:JNCRISE_WJC CON1_WCON1_W:MOV A,SET_WHCJNE A,CURTM_W,CON2_WLJMP END_CON_WCON2_W:JNCJCEND_CON_W:RET降溫處理:DOWN_W:?LCALL DIS_WSLCALL REDLCALL TEST1_W????MOVX
@DPTR,ACLR
P1.2;中間實時溫濕度顯示LCALL
DIS_WSLCALL
GREENLCALL
TEST2_WSETB
P1.2測試降濕判斷是否降溫到中間值+1,無則繼測試升濕LJMPEND_CON_W升溫處理:RISE_W:?????MOVDPTR,#8100HMOVA,#0FFHMOVX@DPTR,ATEST1_W:LCALLA_D_WCLRCMOVA,CURTM_WMOVA,SET_WADDCA,#01HCJNEA,CURTM_S,TEST1_W續降濕RETTEST2_W:LCALLA_D_WCLRCMOV
A,
CURTM_WMOV
A,SET_WSUBB
A,#01HCJNE
A,CURTM_W,TEST_W判斷是否降溫到中間值-1,無則繼續升濕R1,00H,AD04MOVSJMPDPTR,#IN0TRANCJNE?四路溫度平均:A_D_W: MOV A,R1RL ARL AMOV R0,AMOV R1,AMOV A,@R0INC R0MOV R5,00HMOV R6,04HSTART:CJNE??AD04:??R3,01H,
AD05MOV
DPTR,#IN1SJMP
TRANSJMPTRANDPTR,#IN3AD05:
CJNE R3,02H,
AD06MOV
DPTR,#IN2?AD06:
MOVTRAN:?NOPNOPMOVX@DPTR,A
;啟動A_D?JBP3.3,$?MOVXA,@DPTRLCALLDELAYMOVXA,@DPTRADDA,R5MOVR5,ADJNZR6,TRANMOVA,R5ADDCA,
#0F2H;四舍五入ANDA,#0F6HCLRCRRCACLRCRRCAMOVCURTM_S,A;初始采樣0809一次@DPTR,A將鍵入下限于實時值比較;若實時值在下限以下,則調用升溫;若在下限以上則再判斷;實時值與上限比較A,SET_SHA,CURTM_S,CON2_SEND_CON_S;若在上限下限以內則返MOVXPOPDPLPOPDPHPOPACCPOPPSWRET濕度控制:CON_S:MOV A,SET_SLCJNEA,CURTM_S,CON0_SLJMPEND_CON_SCON0_S:JNCRISE_SJC CON1_SCON1_S:MOVCJNELJMPCON2_S:JNC END_CON_S回???JC
DOWN_S
;否則調用降溫END_CON_S:
LCALL
DISPLAY_END去濕處理:?DOWN_S:??SETB
P1.1?LCALL
DIS_WS
;中間實時溫濕度顯示?LCALL
RED?LCALL
TEST1_S?CLR
P1.1?MOV
DPTR,#8100H?MOV
A,#0FFH?MOVX
@DPTR,A?LJMP
END_CON_S?噴霧處理:?RISE_S:?CLR
P1.2?LCALL
DIS_WS
;中間實時溫濕度顯示?LCALL
GREEN?LCALL
TEST?SETB
P1.2?MOV
DPTR,#8100H;測試降濕;判斷是否降溫到中間值+1,無則繼;測試升濕;判斷是否降溫到中間值-1,無則繼續升MOV A,#0FFHMOVX@DPTR,ATEST1_S:LCALLA_D_SCLRCMOV A,CURTM_SMOV A,SET_SADDC A,#01HCJNEA,CURTM_S,TEST1_S續降濕RETTEST2_S:LCALLA_D_SCLRCMOV A,CURTM_SMOV A,SET_SSUBB A,#01HCJNEA,CURTM_S,TEST_S濕四路濕度輸入平均:A_D_S: MOV A,R1SJMP
TRANR3,01H,
AD02MOV
DPTR,#IN5SJMP
TRANR3,02H,
AD03TRANDPTR,#IN7@DPTR,A;啟動A_DRL
ARL
AMOV
R0,AMOV
R1,AMOV
A
,@R0INC
R0MOV
R5,00HMOV
R6,04HSTART:CJNE
R1,00H,AD01MOV
DPTR,#IN4?AD01:CJNE??AD02:CJNEMOV
DPTR,#IN6SJMPAD03:MOVTRAN:MOVXNOPNOPJB
P3.3,$MOVX
A,@DPTR;四舍五入;初始采樣0809一次??LCALLMOVXADDMOVDJNZMOVADDCANDCLRRRCCLRRRCMOVMOVXPOPPOPDELAYA,@DPTRA,R5R5,AR6,TRANA,R5A,
#0F2HA,#0F6HCA
C
ACURTM_W,A@DPTR,ADPLDPHACC
PSWPOPPOPRET中間數值的顯示和適時數值顯示:DIS_WS:LCALL LED-CLRMOV A,CURTM_WMOV B,#0AHDIV ABMOV R5,AMOV R4,#0LCALL DIS_LEDMOV R5,BMOV R4,#1LCALL DIS_LEDMOV A,CURTM_SMOV B,#0AHDIV ABMOV R5,AMOV R4,#2LCALL DIS_LEDMOV R5,BMOV R4,#3LCALL DIS_LEDMOV A,SET_SMOV B,#0AHDIV ABMOV R5,AMOV R4,#4LCALL DIS_LEDMOV R5,BMOV R4,#5LCALL DIS_LEDMOV A,SET_WMOV B,#0AHDIV ABMOV R5,AMOV R4,#6LCALL DIS_LEDMOV R5,BMOV R4,#7LCALL DIS_LEDLED_CLR:?MOVA,#0D1H?MOV@DPTR,A?RET液晶顯示程序如下:DISPLAY_NOR:RS
EQUP0.0;LCD
RC引腳定義EN
EQUP0.1;LCD
EN引腳定義WLED
EQUP1.0;工作指示燈引腳定義CLR
EN;LCD被禁用LCALL
LED_BL;LCD閃爍LCALL
SET_LCD;LCD做顯示測試MOV
A,
#’1’;設置所要顯示的字符MOV
B,
#15;設置所要顯示的位置LCALL
LCDP1;在LCD第一行顯示字符MOV
A,
#’2’;設置所要顯示的字符MOV
B,
#15;設置所要顯示的位置LCALL
LCDP2;在LCD第二行顯示字符JMP
$;循環SET_LCD:;LCD初試化并做測試CLR
EN;LCD被禁用LCALL
INIT_LCD;LCD初試化LCALL
DELAY;延時MOVDPTR,#LMESS1;指針指到消息第一行MOVA,#1;顯示在第一行LCALLLCD_PRINT;顯示執行消息于LCD第一行MOVDPTR,#LMESS2;指針指到消息第二行MOVA,#2;顯示在第二行LCALLLCD_PRINT;顯示執行消息于LCD第二行RETINIT_LCD1:;4位I/O初試化MOVA,#28HLCALLWCOM;雙列顯示字符使用5×7點陣MOVA,#0EHLCALLWCOM;光標出現不閃爍MOVA,#06HLCALLWCOM;每次向右移動一位,顯示屏不動MOVA,#01HLCALLWCOM;清除LCD顯示屏RETCLR_LINE1:MOVA,80H;清除LCD的第一行,設置第一行字符LCALLWCOMMOVR0,#24;設置記數值CL:MOV
A,#’’;載入空格到LCD;輸出字符到LCD;記數結束;在LCD第一行或第二行顯示字符;設置第一行地址WCOMCLR_LINE;設置第一行地址A,
#0C0HWCOMCLR_LINEA,0C0HWCOMLCALL
WDATADJNZ
R0,CLRETLCD_PRINT:CJNE
A,#1,LINE2LINE1:MOV
A,#80HLCALLLCALLMOV
A,80HLCALL
WCOMJMP
FILLLINE2:MOVLCALLLCALLMOVLCALLFILL:CLR
AMOVC
A,
@A+DPTRCJNE
A,
#0,L1RET;清除LCD該行字符;載入空格符到LCD;輸出字符到LCD;記數結束;短暫延時R7,$L1:LCALL
WDATAINC
DOTRJMP
FILLRETCLR_LINE:MOV
R0,#24C1:MOV
A,#’’LCALL
WDATADJNZ
R0,C1RETDE:MOV
R7,#5DJNZRETEN1:SET
ENLCALL
DECLR
ENLCALL
DERET?INIT_LCD:MOVP0,#30H;LCD四位接口指令重置LCALLEN1;RS=0,R/W=0,D4~D7=0011MOVP0,#30HLCALLEN1MOVP0,#30HLCALLEN1MOVP0,#20H;啟動四位接口指令LCALLEN1;RS=0,R/W=0,D4~D7=0010;LCD指令設置初試化;先寫入高四位命令;RS=0寫入命令;產生高電平起用脈沖;向左移四位;先寫入低四位命令;RS=0寫入命令;產生高電平起用脈沖LCALL
INIT_LCD1RETWCOM:MOV
P0,ACLR
RSLCALL
EN1RLC
ARLC
ARLC
ARLC
AMOV
P0,ACLR
RSLCALL
EN1RET;先寫入高四位命令;RS=1寫入數據;產生高電平起用脈沖;向左移四位;寫入低四位命令;RS=1寫入數據;產生高電平起用脈沖R4,#4;LCD閃動控制程序WLEDR5,#10WDATA:MOV
P0,
ASETB
RSLCALL
EN1RLC
ARLC
ARLC
ARLC
AMOV
P0,ASETB
RSLCALL
EN1RETLED_BL:MOVLE1:CPLMOVLCALL
DELAYDJNZ
R4,
LE1RETDB
“THE
SYSTEM
WORK”;需要顯示的字符消息DB
“NOFMALLY”;A=ACC,DATA所要顯示的字符;設置第一行地址A,
#80HWCOM
ACCWDATA;由堆棧取出A寄存器值;寫入所要顯示的字符;在LCD第一行特定位置顯示字符;A=ACC,DATA所要顯示的字符;設置第一行地址LEMSS:?LCDP1:MOV
A,
BADDLACLLPOPLCALLRETLCDP2:PUSH
ACCMOV
A,BADD
A,
#0C0HLACLL
WCOMPOP
ACCLCALL
WDATARETENDDISPLAY_END:RSENWLEDCLREQU
P0.0EQU
P0.1EQU
P1.0EN;LCD
RC引腳定義;LCD
EN引腳定義;工作指示燈引腳定義;LCD被禁用A,
#’2’B,
#15;LCD閃爍;LCD做顯示測試;設置所要顯示的字符;設置所要顯示的位置;在LCD第一行顯示字符;設置所要顯示的字符;設置所要顯示的位置;在LCD第二行顯示字符;循環;LCD初試化并做測試;LCD被禁用;LCD初試化;延時;指針指到消息第一行;顯示在第一行;顯示執行消息于LCD第一行;指針指到消息第二行;顯示在第二行;顯示執行消息于LCD第二行;4位I/O初試化LCALL
LED_BLLCALL
SET_LCDMOV
A,
#’1’MOV
B,
#15LCALL
LCDP1MOVMOVLCALL
LCDP2JMP
$SET_LCD:CLR
ENLCALL
INIT_LCDLCALL
DELAYMOV
DPTR,#LMESS1MOV
A,#1LCALL
LCD_PRINTMOV
DPTR,#LMESS2MOV
A,#2LCALL
LCD_PRINTRETINIT_LCD1:MOV
A,#28HLCALLWCOM;雙列顯示字符使用5×7點陣MOVA,#0EHLCALLWCOM;光標出現不閃爍MOVA,#06HLCALLWCOM;每次向右移動一位,顯示屏不動MOVA,#01HLCALLWCOM;清除LCD顯示屏RETCLR_LINE1:MOVA,80H;清除LCD的第一行,設置第一行字符LCALLWCOMMOVR0,#24;設置記數值CL:MOV
A,#’’;載入空格到LCDLCALLWDATA;輸出字符到LCD?DJNZ
R0,CL;記數結束?RET?LCD_PRINT:?CJNE
A,#1,LINE2;在LCD第一行或第二行顯示字符?LINE1:;設置第一行地址?MOV
A,#80H?LCALL
WCOM;設置第一行地址A,
#0C0HWCOMCLR_LINEA,0C0HWCOMLCALL
CLR_LINEMOV
A,80HLCALL
WCOMJMP
FILLLINE2:MOVLCALLLCALLMOVLCALLFILL:CLR
AMOVC
A,
@A+DPTRCJNE
A,
#0,L1RETL1:LCALL
WDATAINC
DOTRJMP
FILLRETCLR_LINE:MOV
R0,#24;清除LCD該行字符;載入空格符到LCD;輸出字符到LCD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025公司項目部管理人員安全培訓考試試題及答案 完整
- 2025年廠里廠里安全培訓考試試題【含答案】
- 2025年崗位安全培訓考試試題含答案(滿分必刷)
- 2025通信設備采購合同范本
- 2025工業用地轉讓代理合同
- 2025臨時電源租賃合同
- 2025授權投資協議合同范本
- 2025商場柜臺租賃合同模板
- 2025建筑工程施工合同示范本
- 2025電子產品銷售合同模板大全
- 小學高年級語文復習講座
- 商砼安全生產風險分級管控制度
- 強酸強堿燒傷及中毒的處理方法
- 廠家管道吹掃方案(參考)
- 超深水油田開發及水下生產系統概述-37頁的簡介
- 軋鋼高線車間裝配工工藝規程
- 法制副校長聘書模板52426
- 鋼板樁施工專項方案
- 水土保持常用監測表格(共9頁)
- PPT翻書動畫效果的制作
- 病理學第十六章-神經系統疾病
評論
0/150
提交評論