基于MCS-51單片機的壓力傳感器實驗_第1頁
基于MCS-51單片機的壓力傳感器實驗_第2頁
基于MCS-51單片機的壓力傳感器實驗_第3頁
基于MCS-51單片機的壓力傳感器實驗_第4頁
基于MCS-51單片機的壓力傳感器實驗_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、燕山大學課 程 設 計 說 明 書題目: 壓力傳感器實驗學院(系): 里仁學院年級專業(yè): 儀表10-2學 號:學生姓名:指導教師:教師職稱:燕山大學課程設計(論文)任務書院(系):電氣工程學院 基層教學單位:儀器科學與工程系 說明:此表一式四份,學生、指導教師、基層教學單位、系部各一份。年 月 日摘要此次設計是基于8051單片機的壓力檢測系統(tǒng),簡要介紹了壓力傳感器電路的工作原理和弱信號傳感器電路以及A/D變換電路的工作原理, 通過壓力傳感器將需要測量的位置的壓力信號轉化為電信號,再經(jīng)過運算放大器進行信號放大,送至8位A D 轉換器ADC0808,然后將模擬信號轉換成單片機可以識別的數(shù)字信號,再

2、經(jīng)單片機轉換成LED 顯示器可以識別的信息,最后顯示輸出。關鍵詞: 8051單片機 壓力傳感器A/D變換電路 LED 顯示器目錄摘要- -2關鍵字- -2第一章 總體設計方案及模塊劃分-4第二章各模塊設計參數(shù)-52.2 A/D轉換模塊-8第三章 壓力傳感器實驗數(shù)據(jù)采集、顯示及程序-20第四章 心得體會-29參考文獻資料-30第一章總體設計方案及模塊劃分1.1 總體設計方案本次設計是基于8051單片機的測量與顯示。電路采用ADC0809模數(shù)轉換電路,ADC0809是CMOS 工藝,采用逐次逼近法的8位A/D轉換芯片,片內(nèi)有帶鎖存功能的8路模擬電子開關,先用ADC0809的轉換器對各路電壓值進行采

3、樣,然后將模擬信號轉換成單片機可以識別的數(shù)字信號,再經(jīng)單片機轉換成LED 顯示器可以識別的信息,最后顯示輸出。本次設計是以單片機組成的壓力測量,系統(tǒng)中必須有前向通道作為電信號的輸入通道,用來采集輸入信息。壓力的測量,需要傳感器,利用傳感器將壓力轉換成電信號后,再經(jīng)放大并經(jīng)A/D轉換為數(shù)字量后才能由計算機進行有效處理。然后用LED 進行顯示。本設計的最終結果是,將軟件下載到硬件上調(diào)試出來了需要顯示的數(shù)據(jù),當輸入的模擬信號發(fā)生變化的時候,通過A/D轉換后,LED 將顯示不同的數(shù)值。1.2 模塊劃分(1) 傳感器元件模塊傳感器元件主要是對壓力這樣的物理量轉變成電信號。(2) A/D轉換電路模塊A/D

4、轉換電路是將模擬量轉換為數(shù)字量,便于單片機的處理。(3) 控制器處理模塊控制器是通過51系列單片機對數(shù)字信號,按照預定目的進行處理。(4) 顯示與報告模塊顯示與報告是對于最終輸出結果進行直觀的表達。1.3設計框圖如下圖所示: 圖1.3.1 設計框圖第二章 各模塊設計參數(shù)壓力傳感器是壓力檢測系統(tǒng)中的重要組成部分,由各種壓力敏感元件將被測壓力信號轉換成容易測量的電信號作輸出,給顯示儀表顯示壓力值,或供控制和報警使用。力學傳感器的種類繁多,如電阻應變片壓力傳感器、半導體應變片壓力傳感器、壓阻式壓力傳感器、電感式壓力傳感器、電容式壓力傳感器諧振式壓力傳感器及電容式加速度傳感器等。 而電阻應變式傳感器具

5、有悠久的歷史。由于它具有結構簡單、體積小、使用方便、性能穩(wěn)定、可靠、靈敏度高動態(tài)響應快、適合靜態(tài)及動態(tài)測量、測量精度高等諸多優(yōu)點,因此是目前應用最廣泛的傳感器之一,本實驗采用電阻應變式傳感器作為壓力傳感器。壓力傳感器構成:電阻應變式傳感器由彈性元件和電阻應變片構成,當彈性元件感受到物理量時,其表面產(chǎn)生應變,粘貼在彈性元件表面的電阻應變片的電阻值將隨著彈性元件的應變而相應變化。通過測量電阻應變片的電阻值變化,可以用來測量位移加速度、力、力矩、壓力等各種參數(shù)。壓力傳感器的工作原理:本質(zhì)上是惠斯通電橋,這里采用的是最常見的電阻應變片式的壓力傳感器。它得到廣泛應用的原因是溫度特性好,減小溫度變化帶來的

6、誤差。膜片上的壓力使得電橋不平衡,從而產(chǎn)生一個差動的輸出信號,這種結構的基本特性之一是它的差動輸出電壓U 與偏置電壓U 成正比關系,這種關系隱含壓力測量精度直接決定偏置電源的容限值,當四個橋臂電阻達到相應的關系時,電橋輸出為零,或則就有電壓輸出同時,它也能提供一種溫度補償最通用的方法。本實驗研究壓力傳感器電路如圖2.1.1所示,為壓力傳感器的電路,其由三部分組成(1)電源電路部分;(2)電橋電路部分;(3)放大電路部分。 如圖示,傳感器采用恒壓源供電,CC V 為+15V,經(jīng)過23R 與40R 分壓(電容起濾波作用 ,點5、6、7三點處有相同電壓1U :1UUO設橋臂電阻分別為4321, ,

7、, R R R R ,=+=118 /(1/1/(112111031R R R R R R ,=120' 42R R R ,則當壓力傳感器受力時, 電阻變化對應的輸出電壓值為11'帶入電阻、電壓值得0.75'O R U R =. (2.1.3) 最后經(jīng)過放大部分,如圖2.1.3,為壓力傳感器的微弱電壓輸出的放大電路。分析它是一個差分放大電路, 其放大倍數(shù)為R A R = , 那么放大后的電壓值為 250' 0.756253' ' O R R U R R =又SF RR =' ,選定材料,這里取410-=S ,代入式(4.1.3)得0.06

8、25O U F =. 因為A D 轉換器的最大輸入電壓為5v ,所以該壓力傳感器的測量范圍為080N。UO UO2.2. A/D轉換模塊模擬量輸入通道的任務是將模擬量轉換成數(shù)字量。能夠完成這一任務的器件稱之為模數(shù)轉換器,簡稱A/D轉換器。本次設計的中A/D轉換器的任務是將放大器輸出的模擬信號轉換位數(shù)字量進行輸出。A/D轉換電路的核心元件是ADC0808芯片ADC0808是ADC0809的簡化版本,功能基本相同。一般在硬件仿真時采用ADC0808進行A/D轉換,實際使用時采用ADC0809進行A/D轉換。ADC0809是帶有8位A/D轉換器、8路多路開關以及微處理機兼容的控制邏輯的CMOS 組件

9、。它是逐次逼近式A/D轉換器,可以和單片機直接接口。2.2.1 ADC0809的內(nèi)部邏輯結構由下圖可知,ADC0809由一個8路模擬開關、一個地址鎖存與譯碼器、一個A/D轉換器和一個三態(tài)輸出鎖存器組成。多路開關可選通8個模擬通道,允許8路模擬量分時輸入,共用A/D轉換器進行轉換。三態(tài)輸出鎖器用于鎖存A/D轉換完的數(shù)字量,當OE 端為高電平時,才可以從三態(tài)輸出鎖存器取走轉換完的數(shù)據(jù)。 2.2.2 ADC0809的引腳結構ADC0809各腳功能如下:D7-D0:8位數(shù)字量輸出引腳IN0-IN7:8位模擬量輸入引腳VCC :+5V工作電壓GND :地REF (+):參考電壓正端REF (-):參考電

10、壓負端START :A/D轉換啟動信號輸入端。當ST 上跳沿時,所有內(nèi)部寄存器清零;下跳沿時,開始進行A/D轉換;在轉換期間,ST 應保持低電平。ALE :地址鎖存允許信號輸入端,高電平有效。當ALE 線為高電平時,地址鎖存與譯碼器將A ,B ,C 三條地址線的地址信號進行鎖存,經(jīng)譯碼后被選中的通道的模擬量進入轉換器進行轉換。EOC :轉換結束信號輸出引腳。當EOC 為高電平時,表明轉換結束;否則,表明正在進行A/D轉換。OE :輸出允許控制端,用以打開三態(tài)數(shù)據(jù)輸出鎖存器。 CLK :時鐘信號輸入端(一般為500KHz )。A 、B 、C :地址輸入線,用于選通IN0IN7上的一路模擬量輸入。

11、ADC0809對輸入模擬量要求:信號單極性,電壓范圍是05V ,若信號太小,必須進行放大;輸入的模擬量在轉換過程中應該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。 2.2.3 ADC0809應用說明1) ADC0809內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機直接相連。 2) 初始化時,使ST 和OE 信號全為低電平。 3) 送要轉換的哪一通道的地址到A ,B ,C 端口上。 4) 在ST 端給出一個至少有100ns 寬的正脈沖信號。 5) 是否轉換完畢,我們根據(jù)EOC 信號來判斷。6) 當EOC 變?yōu)楦唠娖綍r,這時給OE 為高電平,轉換的數(shù)據(jù)就輸出給單片機了。(4) AD

12、C0809工作時序圖在ALE=1期間,模擬開關的地址(ADDC 、ADDB 和ADDA )存入地址鎖存。輸入啟動信號START 的上升沿復位ADC0809,下降沿啟動A/D轉換。EOC 為輸出的轉換結束信號,正在轉換時為0,轉換結束時為1。OE 為輸出允許控制端,在轉換完成后用來打開輸出三態(tài)門,以便從ADC0809輸出這次轉換的結果。ADC0809的時序圖如下圖 2.2.4. 接口電路的設計實驗電路及接線如下圖示 : 圖2.2.3 接線框圖 圖2.2.4 實驗電路連線圖A/D轉換器的結構及連線圖如上圖所示,AD0809的工作過程如下:首先用指令選擇0809的一個模擬輸入通道,當執(zhí)行MOVX D

13、PTR,A時,產(chǎn)生一個啟動信號給START 引腳送入脈沖,開始對選中通道轉換。當轉換結束后發(fā)出結束信號,置EOC 引腳信號為高電平,該信號可以作為中斷申請信號,當讀允許信號到,OE 端有高電平,則可以讀出轉換的數(shù)字量,利用MOVX A,DPTR把該通道轉換結果讀到累加器A 中。轉換電壓為05V ,調(diào)節(jié)橋路中的電位器,使其輸出電壓為05V ,可以在較小范圍內(nèi)波動,當滿量程輸出時對應八個1的輸出,由于前邊計算的電壓變化和電阻變化成正比關系,而且電阻變化和應變成正比,進而得出的壓力和電壓是成正比的。傳感器橋路輸出的電壓經(jīng)過比例變換后轉換成二進制碼的形式送入P0口。 其程序框圖如下: 圖五 主程序流程

14、圖圖六 中斷子程序本實驗采用8051單片機,其管腳圖如下: XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 3.控制線(4根)(1)ALE/PROG:地址鎖存允許/片內(nèi)EPROM 編程脈沖。 ALE功能:用來鎖存P0口送出的低8位地址。 PROG功能:片內(nèi)有EPROM 的芯片,在EPROM 編程期間,此引腳輸入編程脈沖。 (2)PSEN:外ROM 讀選通信號。(3)RST/VPD:復位/備用電源。 RST(Reset )功能:復位信號輸入端。 VPD功能:在Vcc 掉電情況下,接備用電源。 (4)EA/Vpp:內(nèi)外ROM 選擇/片內(nèi)EPROM 編程電源。 EA功能:內(nèi)外ROM 選

15、擇端。80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。P3口還有 第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)。LCD 有四種基本操作,具體如表2.4.1所示。表2.4.1 LCD 與單片機之間有四種基本操作 (1讀狀態(tài)字執(zhí)行讀狀態(tài)字操作,如表2.4.2滿足RS=0,R/W=1。根據(jù)管腳功能,當為有效電平時,狀態(tài)命令字可從LCD 模塊傳輸?shù)綌?shù)據(jù)總線。同時可以保持一段時間,從而實現(xiàn)讀狀態(tài)字的功能。讀狀態(tài)字流程如圖2.4.1所示。 圖2.4.1 讀入狀態(tài)字流程圖(2命令字表2.4.2所示為命令字,其主要介紹了指令名稱、控制信號及控制代碼。其指令名稱是指要實現(xiàn)

16、的功能;控制代號是采用的十六進制的數(shù)值表示的。1)清零操作是指輸入某命令字后即能將整個屏幕顯示的內(nèi)容全部清除; 2)歸home 位:將光標送到初始位;其中的號為任意,高低電平均可; 3)輸入方式:設光標移動方向并指定整體顯示,是否移動。I/D=0:減量方式,S=1:移位方式,S=0:不移位;4)顯示狀態(tài):D 指設置整體顯示開關;C 指設置光標顯示開關;B 指設置光標的字符閃耀;5)光標畫面滾動:R/L指右移或左移;S/C指移動總體或光標; 6)功能設置:DL 接口數(shù)位,L 指顯示行數(shù),F(xiàn) 顯示字型;如DL=1:8位=0,4位N=1:2行=0:1行,G=1:5×10=0:5×

17、7(點陣7)CGRAM 地址設制:相當于一個數(shù)據(jù)庫,可以在其中選擇所需要的符號;8)DDRAM 地址設制:顯示定位;9)讀BF 和AC :B 為最高位忙的標志,F(xiàn) 為標志位; 10)寫數(shù)據(jù):將數(shù)據(jù)按要求寫入到對應的單元; 11)讀數(shù)據(jù):讀相應單元內(nèi)的數(shù)據(jù);表2.4.2 命令字 (3寫命令字由表2.4.2可知當RS=0,R/W=0時,才可以通過單片機或用戶指令把數(shù)據(jù)寫到LCD 模塊,此時就對LCD 進行調(diào)制。可采用查詢方式:先讀入狀態(tài)字,再判斷忙標志位,最后寫命令字。圖2.4.2所示為寫命令字的流程圖。 圖2.4.2 寫命令字流程圖1)定義光標位置顯示數(shù)據(jù)的某位,就是把顯示數(shù)據(jù)寫在相應的DDRA

18、M 地址中,DDRAM 地址占7位。Set DDRAM address 命令如表2.4.3所示。光標定位,寫入一個顯示字符后,DDRAM 地址會自動加1或減1,加或減由輸入方式設置。表2.4.3 Set DDRAM address命令 第1行DDRAM 地址與第2行DDRAM 地址并不連續(xù),如表2.4.4所示。表2.4.4 DDRAM 地址 2)1602LCD 的一般初始化(復位)過程延時15mS寫指令38H (不檢測忙信號) 延時5mS寫指令38H (不檢測忙信號) 延時5mS寫指令38H (不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號 寫指令38H :顯示模式設置 寫指令0

19、8H :顯示關閉寫指令01H :顯示清屏 寫指令06H :顯示光標移動設置 寫指令0CH :顯示開及光標設置2.4.2 LCD顯示程序設計LCD 顯示程序的設計一般先要確定LCD 的初始化、光標定位、確定顯示字符后,顯示流程如圖2.4.4顯示。 圖2.4.4 LCD 顯示程序流程圖2.4.3 AD0809接口電路及LCD 接口電路 第三章 壓力傳感器實驗數(shù)據(jù)采集、顯示及程序數(shù)據(jù)處理子程序是整個程序的核心。主要用來調(diào)整輸入值系數(shù),使輸出滿足量程要求。另外完成A/D的采樣結果從十六進制數(shù)向十進制數(shù)形式轉化。系數(shù)轉換在IN0輸入的數(shù)最大為5V ,要求壓力200pa 對應的是5V ,將系數(shù)進行一定倍數(shù)

20、的變換,并用小數(shù)點位置的變化體現(xiàn)這一過程。數(shù)制之間的轉換:在二進制數(shù)制中,每向左移一位表示數(shù)增加兩倍。要求壓力80N 對應的是5V ,而壓力與電壓的變換是線性關系,對應AD 轉換器的輸出為八個1,當有一定的壓力值輸入時,對應這個關系轉化成相應的二進制代碼送入P0口。然后再反過來應用這個變化關系,經(jīng)最終得到的數(shù)值進行二進制到BCD 碼轉化,然后逐位在LED 數(shù)碼管上顯示。數(shù)據(jù)采集用A/D0809芯片來完成,主要分為啟動、讀取數(shù)據(jù)、延時等待轉換結束、讀出轉換結果、存入指定內(nèi)存單元、繼續(xù)轉換(退出)幾個步驟。ADC0809初始化后,就具有了將某一通道輸入的05模擬信號轉換成對應的數(shù)字量00H FFH

21、 ,然后再存入存儲器的指定單元中。在控制方面有所區(qū)別。可以采用程序查詢方式,延時等待方式和中斷方式。顯示子程序是字符顯示,首先調(diào)用事先編好數(shù)碼管顯示子程序。初始化命令,然后輸出顯示命令。在顯示過程中一定要調(diào)用延時子程序。當輸入通道采集了一個新的過程參數(shù),當有壓力信號輸入時,調(diào)用顯示子程序在數(shù)碼管上顯示。;ADResult EQU 40HRS BIT P2.0; 定義LCM 的接腳RS 、R/W、Enable 為P2.0、P2.1、DB0_DB7 DATA P1 ;DB0-DB7的接腳為P1來控制,以方便程式的撰寫與維護;*-ORG 0000H ; 通知編譯器下面的程式由程式記憶體; 地址100

22、0H 開始存放AJMP START ; 跳到標記start 處執(zhí)行程式ORG 000BH ; 跳到中斷服務程式AJMP INSERSORG 0013HAJMP INTORG 30H ; 通知編譯器下面的程式由程式記憶體地址0030H 開始存入。START: NOPMOV TMOD,#0 ; 初始化TOMOV TL0,#0MOV TH0,#0SETB EASETB ET0SETB TR0SETB EX1SETB IT1MOV R5,#50 ; 設定延時次數(shù)。MOV SP,#60H ; 設定MCS-51從內(nèi)容資料記憶體地址61H 開始存放堆棧資料。CALL Initial ; 調(diào)用啟動LCM 的子

23、程式CALL CLS ; 調(diào)用清除顯示器的子程式MOV A,#10000000B ; 將二進制10000000的值放入累加器內(nèi),代表設定DDRAM 的地址為00H ,; 即將光標移到第一行第一個列的位置上。CALL Write_instruction ; 調(diào)用寫指令碼子程式 MOV DPTR,#LINE3 ; 將第一行字串在程式記憶體中的起始地址存入DPTRCALL STRING ; 調(diào)用STRING 子程式,將字串顯示到LCMMOV A,#11000010B ; 將二進制11000000的值放入累加器內(nèi),代表設定DDRAM 的地址為40H ,; 即將光標移到第二行第三個列的位置上 CALL

24、Write_instruction ; 調(diào)用寫指令碼子程式MOV DPTR,#LINE4 ; 將第二行字串在程式記憶體中的起始:地址存DPTR 。CALL STRINGCALL DELAY0CALL CLS ; 調(diào)用清除顯示器的子程式MOV A,#10000000B ; 將二進制10000000的值放入累加器內(nèi),代表設定DDRAM 的地址為00H ,; 即將光標移到第一行第一個列的位置上。CALL Write_instruction ;調(diào)用寫指令碼子程式。MOV DPTR,#LINE1 ; 將第一行字串在程式記憶體中的起始地址存入DPTRCALL STRING ; 調(diào)用STRING 子程式,將

25、字串顯示到LCMMOV A,#11000010B ; 將二進制11000000的值放入累加器內(nèi),代表設定DDRAM 的地址為40H ,; 即將光標移到第二行第三個列的位置上 CALL Write_instruction ;調(diào)用寫指令碼子程式。CALL AD0809Read ; 啟動AD0809;-LOOP: SJMP LOOPSJMP LOOP;JNB IE1, LOOP ; 查詢等待;CLR IE1;SJMP INT;-LINE1: DB " Pressure: ",00H ; 在LCM 第一行顯示字串"LCD Testing_"LINE2: DB &

26、quot;0123456789.",00H ; 在LCM 第二行顯示壓力數(shù)據(jù),保留三位小數(shù)LINE3: DB "Welcome To ",00HLINE4: DB "LiRen College!",00H;-;ADC0809啟動程序;-AD0809Read: MOV DPTR, #8000HMOV A, #00MOVX DPTR,A ; 起動 A/DMOV A, #40hDJNZ ACC, $ ; 延時 > 100us;* ; 工程量代換:B存高八位,A 存低八位; 程序中除以256相當于右移八位, 即高八位變?yōu)檎麛?shù)位, 低八位變?yōu)樾?shù)位

27、; 最后結果為: B存整數(shù)部分,A 存小數(shù)部分;* DAIHUAN: MOV B,#200MOV A,ADResultMUL ABMOV 51H,A ; 小數(shù)部分MOV 50H,B ; 整數(shù)部分RET;-;INT1查詢服務子程式;-INT: MOV DPTR,#8000HMOVX A, DPTR ; 讀入結果CALL CLSMOV A,#10000000B ; 將二進制10000000的值放入累加器內(nèi),代表設定DDRAM 的地址為00H ,; 即將光標移到第一行第一個列的位置上。CALL Write_instruction ;調(diào)用寫指令碼子程式。MOV DPTR,#LINE1 ; 將第一行字串

28、在程式記憶體中的起始地址存入DPTRCALL STRING ; 調(diào)用STRING 子程式,將字串顯示到LCMMOV A,#11000010B ; 將二進制11000000的值放入累加器內(nèi),代表設定DDRAM 的地址為40H ,; 即將光標移到第二行第三個列的位置上 CALL Write_instruction ;調(diào)用寫指令碼子程式。MOV A,#50HMOV ADResult, ACALL DAIHUANMOV DPTR,#LINE2 ; 將第二行字串在程式記憶體中的起始地址存DPTR 。CALL DATE ; 調(diào)用DATE 子程式,將數(shù)據(jù)顯示到LCM RETI;-;TO 中斷服務子程式;-I

29、NSERS: MOV TH0,#0MOV TL0,#0DJNZ R5,NOMOV R5,#50NO: RETI;-;Initial 子程序 設定LCM 使用8BITS 匯流排, 顯示兩行,; 使用5*7字型, 顯示器要顯示 光標要顯示但不閃爍;-Initial: MOV A,#00111000B ;CALL Write_instruction ; 第一次設置顯示模式MOV A,#00111000B ;CALL Write_instruction ; 第二次設置顯示模式MOV A,#00111000B ;CALL Write_instruction ; 第三次設置顯示模式MOV A,#00111

30、000B ;CALL Write_instruction ; 第四次設置顯示模式MOV A,#00001110B ;CALL Write_instruction ; 設置光標MOV A,#00000110B ;CALL Write_instruction ; 設置LCD 數(shù)據(jù)指針自動加一 RET;-;CheckBusy 子程序; 等待LCM 有空可以執(zhí)行下一行命令;-CheckBusy: PUSH ACC ; 將累加器ACC 的內(nèi)容放到堆棧內(nèi),; 以免破壞原來的ACC 的資料CheckBusyLoop: CLR ENABLE ; 設定E=0,禁能讀模式 SETB R_W ; 設定R/W=1,選

31、擇讀模式CLR RS ; 設定RS=0,選擇指令寄存器IR SETB ENABLE ; 將P3.3腳設定為1, 使能LCM MOV A,DB0_DB7 ; 將存在ACC 內(nèi)的資料經(jīng)由P1存入ACC 中; 以便查封第7位元及BF 是否為0什么MOV A,#00HJB ACC.7,CheckBusyLoop ; 判斷由LCM 讀入資料的第7位及BF; 是否為1, 若等于1表示LCM 忙碌中,CPU; 跳到標記CheckBusyLoop 繼續(xù)執(zhí)行程序POP ACC ; 將累加器ACC 內(nèi)容從堆棧區(qū)取出CALL DELAY ; 調(diào)用延遲子程序, 延時約數(shù)個mSRET ; 返回主程序;-;Write_i

32、nstruction子程序; 將ACC 內(nèi)的資料輸入到LCM 的IR 寄存器;-Write_instruction: CALL CheckBusy ; 調(diào)用CheckBusy 子程序確定LCM 可以執(zhí)行指令CLR ENABLE ; 設定E=0,禁能LCMCLR R_W ; 設定R/W=0,選擇寫模式CLR RS ; 設定RS=0,選擇指令寄存器IRSETB ENABLE ; 將P3.3腳設定為1, 使能LCMMOV DB0_DB7,A ; 將存在ACC 內(nèi)的指令碼經(jīng)由P1輸出到LCMCLR ENABLE ; 將P3.3設定為0,MCS-51向LCM 存取資料后,; 必須將LCM 的E 腳輸出0

33、, 讓LCM 禁能(Disable ; 不做介面的資料傳送或設定RET ; 返回主程序;-;WriteLCDData 子程序; 將ACC 內(nèi)的資料輸入到LCM 的DR 寄存器;-WriteLCDData:CALL CheckBusy ; 調(diào)用CheckBusy 子程序, 確定LCM 可以執(zhí)行指令CLR ENABLE ; 設定E=0,禁能LCMCLR R_W ; 設定R/W=0,選擇寫模式SETB RS ; 設定RS=1,選擇U 寄資料存器DR SETB ENABLE ; 將P3.3腳設定為1, 使能LCMMOV DB0_DB7,A ; 將存在ACC 內(nèi)的指令碼經(jīng)由P0輸出到LCMCLR ENA

34、BLERET ; 返回主程序;-;CLS 子程序 清除LCM 的顯示字幕;-CLS: MOV A,#01HCALL Write_instructionRET;-;DA TE 子程序; 壓力數(shù)據(jù)的掃描顯示;-DA TE: PUSH ACC ; 入棧累加器APUSH PSW ; 入棧PSW 中的CYHIG:MOV R1,#50HMOV A,R1CJNE A,#64H,CJ1 ; 判斷是否等于100, 等于100則直接顯示100 MOV A,#01HMOVC A,A+DPTRLCALL WriteLCDDataDEC ALCALL WriteLCDDataLCALL WriteLCDDataSJMP

35、 XSDCJ1: JC SHI ; 判斷是否大于100 大于100則繼續(xù)執(zhí)行分位操作 MOV B,#64H ; 否則跳轉到十位分位程序DIV AB ; 除法做分位處理MOVC A,A+DPTRLCALL WriteLCDDataMOV A,BSHI: CLR CCJNE A,#0AH,CJ2; 判斷是否等于10等于10則直接顯示10 MOV A,#01HMOVC A,A+DPTRLCALL WriteLCDDataDEC ALCALL WriteLCDDataSJMP XSDCJ2: JC GEE; 判斷是否大于10 MOV A,B; 否則跳轉到個位顯示程序 GEE: MOV B,#0AHDIV ABMOVC A,A+DPTRLCALL WriteLCDDataMOV A,BMOVC A,A+DPTRLCALL WriteLCDDataXSD: MOV A,#0AH; 小數(shù)點顯示程序 MOVC A,A+DPTRLCALL WriteLCDDataLOWER: INC R1; 小數(shù)位顯示程序 分位原理同上MOV A,R1MOV B,#64HDIV ABMOVC A,A+DPTRLCALL WriteLCDDataMOV A,

溫馨提示

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

評論

0/150

提交評論