歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

基于MCS-51單片機的壓力傳感器實驗

  • 資源ID:17807083       資源大小:516.91KB        全文頁數(shù):34頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

基于MCS-51單片機的壓力傳感器實驗

燕山大學(xué)課 程 設(shè) 計 說 明 書題目: 壓力傳感器實驗 學(xué)院(系): 里仁學(xué)院 年級專業(yè): 儀表10-2 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 教師職稱: 燕山大學(xué)課程設(shè)計(論文)任務(wù)書院(系):電氣工程學(xué)院 基層教學(xué)單位:儀器科學(xué)與工程系學(xué) 號學(xué)生姓名專業(yè)(班級)設(shè)計題目壓力傳感器實驗設(shè)計技術(shù)參數(shù)研究壓力傳感器電路的工作原理和弱信號傳感器電路。熟悉A/D變換電路的工作原理。利用試驗板上提供的壓力傳感器電路,完成壓力的采樣和顯示。設(shè)計要求設(shè)計測量和顯示的硬件電路;編制相應(yīng)的程序。工作量設(shè)計的內(nèi)容滿足課程設(shè)計的教學(xué)目的與要求,設(shè)計題目的難度和工作量適合學(xué)生的知識和能力狀況,工作量飽滿。工作計劃查閱資料進行設(shè)計準(zhǔn)備、設(shè)計硬件電路、編制程序,編制程序、驗證設(shè)計、撰寫任務(wù)書。參考資料單片微型計算機接口技術(shù)及其應(yīng)用 張淑清 國防工業(yè)出版社單片機原理及應(yīng)用技術(shù) 張淑清單片機應(yīng)用技術(shù)匯編指導(dǎo)教師簽字基層教學(xué)單位主任簽字說明:此表一式四份,學(xué)生、指導(dǎo)教師、基層教學(xué)單位、系部各一份。 年 月 日摘要 此次設(shè)計是基于8051單片機的壓力檢測系統(tǒng),簡要介紹了壓力傳感器電路的工作原理和弱信號傳感器電路以及A/D變換電路的工作原理,通過壓力傳感器將需要測量的位置的壓力信號轉(zhuǎn)化為電信號,再經(jīng)過運算放大器進行信號放大,送至8位AD轉(zhuǎn)換器ADC0808,然后將模擬信號轉(zhuǎn)換成單片機可以識別的數(shù)字信號,再經(jīng)單片機轉(zhuǎn)換成LED顯示器可以識別的信息,最后顯示輸出。 關(guān)鍵詞: 8051單片機 壓力傳感器A/D變換電路LED顯示器目錄摘要- -2關(guān)鍵字- -2第一章 總體設(shè)計方案及模塊劃分-41.1總體設(shè)計方案-41.2模塊劃分-41.3設(shè)計框圖如下圖所示-5第二章各模塊設(shè)計參數(shù)-52.1傳感器元件模塊-52.2 A/D轉(zhuǎn)換模塊-82.3控制器處理模塊-14第三章 壓力傳感器實驗數(shù)據(jù)采集、顯示及程序-20 3.1數(shù)據(jù)采集及顯示-203.2程序設(shè)計-20第四章 心得體會-29參考文獻資料-30第一章總體設(shè)計方案及模塊劃分1.1 總體設(shè)計方案本次設(shè)計是基于8051單片機的測量與顯示。電路采用ADC0809模數(shù)轉(zhuǎn)換電路,ADC0809是CMOS工藝,采用逐次逼近法的8位A/D轉(zhuǎn)換芯片,片內(nèi)有帶鎖存功能的8路模擬電子開關(guān),先用ADC0809的轉(zhuǎn)換器對各路電壓值進行采樣,然后將模擬信號轉(zhuǎn)換成單片機可以識別的數(shù)字信號,再經(jīng)單片機轉(zhuǎn)換成LED顯示器可以識別的信息,最后顯示輸出。本次設(shè)計是以單片機組成的壓力測量,系統(tǒng)中必須有前向通道作為電信號的輸入通道,用來采集輸入信息。壓力的測量,需要傳感器,利用傳感器將壓力轉(zhuǎn)換成電信號后,再經(jīng)放大并經(jīng)A/D轉(zhuǎn)換為數(shù)字量后才能由計算機進行有效處理。然后用LED進行顯示。本設(shè)計的最終結(jié)果是,將軟件下載到硬件上調(diào)試出來了需要顯示的數(shù)據(jù),當(dāng)輸入的模擬信號發(fā)生變化的時候,通過A/D轉(zhuǎn)換后,LED將顯示不同的數(shù)值。1.2 模塊劃分(1) 傳感器元件模塊 傳感器元件主要是對壓力這樣的物理量轉(zhuǎn)變成電信號。(2) A/D轉(zhuǎn)換電路模塊 A/D轉(zhuǎn)換電路是將模擬量轉(zhuǎn)換為數(shù)字量,便于單片機的處理。(3) 控制器處理模塊 控制器是通過51系列單片機對數(shù)字信號,按照預(yù)定目的進行處理。(4) 顯示與報告模塊 顯示與報告是對于最終輸出結(jié)果進行直觀的表達。1.3設(shè)計框圖如下圖所示:圖1.3.1 設(shè)計框圖第二章 各模塊設(shè)計參數(shù)2.1傳感器元件模塊壓力傳感器是壓力檢測系統(tǒng)中的重要組成部分,由各種壓力敏感元件將被測壓力信號轉(zhuǎn)換成容易測量的電信號作輸出,給顯示儀表顯示壓力值,或供控制和報警使用。力學(xué)傳感器的種類繁多,如電阻應(yīng)變片壓力傳感器、半導(dǎo)體應(yīng)變片壓力傳感器、壓阻式壓力傳感器、電感式壓力傳感器、電容式壓力傳感器諧振式壓力傳感器及電容式加速度傳感器等。 而電阻應(yīng)變式傳感器具有悠久的歷史。由于它具有結(jié)構(gòu)簡單、體積小、使用方便、性能穩(wěn)定、可靠、靈敏度高動態(tài)響應(yīng)快、適合靜態(tài)及動態(tài)測量、測量精度高等諸多優(yōu)點,因此是目前應(yīng)用最廣泛的傳感器之一,本實驗采用電阻應(yīng)變式傳感器作為壓力傳感器。壓力傳感器構(gòu)成:電阻應(yīng)變式傳感器由彈性元件和電阻應(yīng)變片構(gòu)成,當(dāng)彈性元件感受到物理量時,其表面產(chǎn)生應(yīng)變,粘貼在彈性元件表面的電阻應(yīng)變片的電阻值將隨著彈性元件的應(yīng)變而相應(yīng)變化。通過測量電阻應(yīng)變片的電阻值變化,可以用來測量位移加速度、力、力矩、壓力等各種參數(shù)。壓力傳感器的工作原理:本質(zhì)上是惠斯通電橋,這里采用的是最常見的電阻應(yīng)變片式的壓力傳感器。它得到廣泛應(yīng)用的原因是溫度特性好,減小溫度變化帶來的誤差。膜片上的壓力使得電橋不平衡,從而產(chǎn)生一個差動的輸出信號,這種結(jié)構(gòu)的基本特性之一是它的差動輸出電壓U與偏置電壓U成正比關(guān)系,這種關(guān)系隱含壓力測量精度直接決定偏置電源的容限值,當(dāng)四個橋臂電阻達到相應(yīng)的關(guān)系時,電橋輸出為零,或則就有電壓輸出同時,它也能提供一種溫度補償最通用的方法。本實驗研究壓力傳感器電路如圖2.1.1所示,為壓力傳感器的電路,其由三部分組成(1)電源電路部分;(2)電橋電路部分;(3)放大電路部分。 圖2.1.1壓力傳感器電路 如圖示,傳感器采用恒壓源供電,為+15V,經(jīng)過與分壓(電容起濾波作用),點5、6、7三點處有相同電壓: (2.1.1) 根據(jù)上式,帶入數(shù)據(jù) , ,求得。 經(jīng)過電路電橋部分,簡化如下圖2.1.2 UO圖2.1.2壓力傳感器電橋電路設(shè)橋臂電阻分別為, ,則當(dāng)壓力傳感器受力時,電阻變化對應(yīng)的輸出電壓值為,由于<<1,則上式可化簡為 (2.1.2) 帶入電阻、電壓值得 . (2.1.3) 最后經(jīng)過放大部分,如圖2.1.3,為壓力傳感器的微弱電壓輸出的放大電路。分析它是一個差分放大電路,其放大倍數(shù)為 ,那么放大后的電壓值為又,選定材料,這里取,代入式(4.1.3)得.因為AD轉(zhuǎn)換器的最大輸入電壓為5v,所以該壓力傳感器的測量范圍為080N。 UO UO圖2.1.3放大電路2.2. A/D轉(zhuǎn)換模塊模擬量輸入通道的任務(wù)是將模擬量轉(zhuǎn)換成數(shù)字量。能夠完成這一任務(wù)的器件稱之為模數(shù)轉(zhuǎn)換器,簡稱A/D轉(zhuǎn)換器。本次設(shè)計的中A/D轉(zhuǎn)換器的任務(wù)是將放大器輸出的模擬信號轉(zhuǎn)換位數(shù)字量進行輸出。A/D轉(zhuǎn)換電路的核心元件是ADC0808芯片ADC0808是ADC0809的簡化版本,功能基本相同。一般在硬件仿真時采用ADC0808進行A/D轉(zhuǎn)換,實際使用時采用ADC0809進行A/D轉(zhuǎn)換。ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開關(guān)以及微處理機兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機直接接口。 2.2.1 ADC0809的內(nèi)部邏輯結(jié)構(gòu) 由下圖可知,ADC0809由一個8路模擬開關(guān)、一個地址鎖存與譯碼器、一個A/D轉(zhuǎn)換器和一個三態(tài)輸出鎖存器組成。多路開關(guān)可選通8個模擬通道,允許8路模擬量分時輸入,共用A/D轉(zhuǎn)換器進行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時,才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。圖2.2.12.2.2 ADC0809的引腳結(jié)構(gòu) ADC0809各腳功能如下: D7-D0:8位數(shù)字量輸出引腳 IN0-IN7:8位模擬量輸入引腳 VCC:+5V工作電壓 GND:地 REF(+):參考電壓正端 REF(-):參考電壓負端 START:A/D轉(zhuǎn)換啟動信號輸入端。當(dāng)ST上跳沿時,所有內(nèi)部寄存器清零;下跳沿時,開始進行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,ST應(yīng)保持低電平。ALE:地址鎖存允許信號輸入端,高電平有效。當(dāng)ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進行鎖存,經(jīng)譯碼后被選中的通道的模擬量進入轉(zhuǎn)換器進行轉(zhuǎn)換。EOC:轉(zhuǎn)換結(jié)束信號輸出引腳。當(dāng)EOC為高電平時,表明轉(zhuǎn)換結(jié)束;否則,表明正在進行A/D轉(zhuǎn)換。OE:輸出允許控制端,用以打開三態(tài)數(shù)據(jù)輸出鎖存器。CLK:時鐘信號輸入端(一般為500KHz)。A、B、C:地址輸入線,用于選通IN0IN7上的一路模擬量輸入。ADC0809對輸入模擬量要求:信號單極性,電壓范圍是05V,若信號太小,必須進行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。 2.2.3 ADC0809應(yīng)用說明 1) ADC0809內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機直接相連。 2) 初始化時,使ST和OE信號全為低電平。 3) 送要轉(zhuǎn)換的哪一通道的地址到A,B,C端口上。 4) 在ST端給出一個至少有100ns寬的正脈沖信號。 5) 是否轉(zhuǎn)換完畢,我們根據(jù)EOC信號來判斷。 6) 當(dāng)EOC變?yōu)楦唠娖綍r,這時給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機了。 (4) ADC0809工作時序圖在ALE=1期間,模擬開關(guān)的地址(ADDC、ADDB和ADDA)存入地址鎖存。輸入啟動信號START的上升沿復(fù)位ADC0809,下降沿啟動A/D轉(zhuǎn)換。EOC為輸出的轉(zhuǎn)換結(jié)束信號,正在轉(zhuǎn)換時為0,轉(zhuǎn)換結(jié)束時為1。OE為輸出允許控制端,在轉(zhuǎn)換完成后用來打開輸出三態(tài)門,以便從ADC0809輸出這次轉(zhuǎn)換的結(jié)果。ADC0809的時序圖如下圖2.2.4.接口電路的設(shè)計 實驗電路及接線如下圖示 :連線連接孔1連接孔21IN0壓力傳感器輸出2AD_CSCS2 圖2.2.3 接線框圖 圖2.2.4 實驗電路連線圖 A/D轉(zhuǎn)換器的結(jié)構(gòu)及連線圖如上圖所示,AD0809的工作過程如下:首先用指令選擇0809的一個模擬輸入通道,當(dāng)執(zhí)行MOVX DPTR,A時,產(chǎn)生一個啟動信號給START引腳送入脈沖,開始對選中通道轉(zhuǎn)換。當(dāng)轉(zhuǎn)換結(jié)束后發(fā)出結(jié)束信號,置EOC引腳信號為高電平,該信號可以作為中斷申請信號,當(dāng)讀允許信號到,OE端有高電平,則可以讀出轉(zhuǎn)換的數(shù)字量,利用MOVX A,DPTR把該通道轉(zhuǎn)換結(jié)果讀到累加器A中。轉(zhuǎn)換電壓為05V,調(diào)節(jié)橋路中的電位器,使其輸出電壓為05V,可以在較小范圍內(nèi)波動,當(dāng)滿量程輸出時對應(yīng)八個1的輸出,由于前邊計算的電壓變化和電阻變化成正比關(guān)系,而且電阻變化和應(yīng)變成正比,進而得出的壓力和電壓是成正比的。傳感器橋路輸出的電壓經(jīng)過比例變換后轉(zhuǎn)換成二進制碼的形式送入P0口。其程序框圖如下: 等待中斷初始化程序初始化LCD進入開機界面開始清屏啟動AD0809工程量代換轉(zhuǎn)換為壓力值將結(jié)果分位成十進制調(diào)用LCD顯示子程序(先顯示最高位)產(chǎn)生中斷 圖五 主程序流程圖圖六 中斷子程序 2.3控制器處理模塊本實驗采用8051單片機,其管腳圖如下: 圖4.4.1 8051管腳圖 其管腳功能如下: 1.電源 (1)VCC - 芯片電源,接+5V; (2)VSS - 接地端; 2.時鐘 XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 3.控制線(4根) (1)ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖。 ALE功能:用來鎖存P0口送出的低8位地址。 PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 (2)PSEN:外ROM讀選通信號。 (3)RST/VPD:復(fù)位/備用電源。 RST(Reset)功能:復(fù)位信號輸入端。 VPD功能:在Vcc掉電情況下,接備用電源。 (4)EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。 EA功能:內(nèi)外ROM選擇端。 Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 4.I/O線 80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。P3口還有 第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)。2.4顯示與報告模塊-LCD1602的顯示操作2.4.1四種基本操作LCD有四種基本操作,具體如表2.4.1所示。表2.4.1LCD與單片機之間有四種基本操作RSR/W操作00寫命令操作(初始化,光標(biāo)定位等)01讀狀態(tài)操作(讀忙標(biāo)志位)10寫數(shù)據(jù)操作(要顯示內(nèi)容)11讀數(shù)據(jù)操作(可以把顯示存儲區(qū)中的數(shù)據(jù)反讀出來)(1)讀狀態(tài)字執(zhí)行讀狀態(tài)字操作,如表2.4.2滿足RS=0,R/W=1。根據(jù)管腳功能,當(dāng)為有效電平時,狀態(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)的功能;控制代號是采用的十六進制的數(shù)值表示的。1)清零操作是指輸入某命令字后即能將整個屏幕顯示的內(nèi)容全部清除;2)歸home位:將光標(biāo)送到初始位;其中的號為任意,高低電平均可;3)輸入方式:設(shè)光標(biāo)移動方向并指定整體顯示,是否移動。I/D=0:減量方式,S=1:移位方式,S=0:不移位;4)顯示狀態(tài):D指設(shè)置整體顯示開關(guān);C指設(shè)置光標(biāo)顯示開關(guān);B指設(shè)置光標(biāo)的字符閃耀;5)光標(biāo)畫面滾動:R/L指右移或左移;S/C指移動總體或光標(biāo);6)功能設(shè)置:DL接口數(shù)位,L指顯示行數(shù),F(xiàn)顯示字型;如DL=1:8位=0,4位N=1:2行=0:1行,G=1:510=0:57(點陣)7)CGRAM地址設(shè)制:相當(dāng)于一個數(shù)據(jù)庫,可以在其中選擇所需要的符號;8)DDRAM地址設(shè)制:顯示定位;9)讀BF和AC:B為最高位忙的標(biāo)志,F(xiàn)為標(biāo)志位;10)寫數(shù)據(jù):將數(shù)據(jù)按要求寫入到對應(yīng)的單元;11)讀數(shù)據(jù):讀相應(yīng)單元內(nèi)的數(shù)據(jù);表2.4.2命令字指令名稱控制信號控制代碼RSRWD7D6D5D4D3D2D1D0清屏0000000001歸HOME位000000001*輸入方式設(shè)制00000001I/DS顯示狀態(tài)設(shè)制0000001DCB無標(biāo)畫面滾動000001S/CRL*功能設(shè)置00001DLNF*CGRAM地址設(shè)制0001A5A4A3A2A1A0DDRAM地址設(shè)制001A6A5A4A3A2A1A0讀BF和AC01BFAC6AC5AC4AC3AC2AC1AC0寫數(shù)據(jù)10數(shù) 據(jù)讀數(shù)據(jù)11數(shù) 據(jù)(3)寫命令字由表2.4.2可知當(dāng)RS=0,R/W=0時,才可以通過單片機或用戶指令把數(shù)據(jù)寫到LCD模塊,此時就對LCD進行調(diào)制??刹捎貌樵兎绞剑合茸x入狀態(tài)字,再判斷忙標(biāo)志位,最后寫命令字。圖2.4.2所示為寫命令字的流程圖。圖2.4.2寫命令字流程圖1)定義光標(biāo)位置顯示數(shù)據(jù)的某位,就是把顯示數(shù)據(jù)寫在相應(yīng)的DDRAM地址中,DDRAM地址占7位。SetDDRAMaddress命令如表2.4.3所示。光標(biāo)定位,寫入一個顯示字符后,DDRAM地址會自動加1或減1,加或減由輸入方式設(shè)置。表2.4.3Set DDRAM address命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4AC3AC2AC1AC0第1行DDRAM地址與第2行DDRAM地址并不連續(xù),如表2.4.4所示。表2.4.4DDRAM地址row12345141516line180H81H82H83H84H8dH8eH8fHline20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH2)1602LCD的一般初始化(復(fù)位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置寫指令0CH:顯示開及光標(biāo)設(shè)置2.4.2 LCD顯示程序設(shè)計LCD顯示程序的設(shè)計一般先要確定LCD的初始化、光標(biāo)定位、確定顯示字符后,顯示流程如圖2.4.4顯示。圖2.4.4LCD顯示程序流程圖2.4.3 AD0809接口電路及LCD接口電路第三章 壓力傳感器實驗數(shù)據(jù)采集、顯示及程序3.1數(shù)據(jù)采集及顯示數(shù)據(jù)處理子程序是整個程序的核心。主要用來調(diào)整輸入值系數(shù),使輸出滿足量程要求。另外完成A/D的采樣結(jié)果從十六進制數(shù)向十進制數(shù)形式轉(zhuǎn)化。系數(shù)轉(zhuǎn)換在IN0輸入的數(shù)最大為5V,要求壓力200pa對應(yīng)的是5V,將系數(shù)進行一定倍數(shù)的變換,并用小數(shù)點位置的變化體現(xiàn)這一過程。數(shù)制之間的轉(zhuǎn)換:在二進制數(shù)制中,每向左移一位表示數(shù)增加兩倍。要求壓力80N對應(yīng)的是5V,而壓力與電壓的變換是線性關(guān)系,對應(yīng)AD轉(zhuǎn)換器的輸出為八個1,當(dāng)有一定的壓力值輸入時,對應(yīng)這個關(guān)系轉(zhuǎn)化成相應(yīng)的二進制代碼送入P0口。然后再反過來應(yīng)用這個變化關(guān)系,經(jīng)最終得到的數(shù)值進行二進制到BCD碼轉(zhuǎn)化,然后逐位在LED數(shù)碼管上顯示。數(shù)據(jù)采集用A/D0809芯片來完成,主要分為啟動、讀取數(shù)據(jù)、延時等待轉(zhuǎn)換結(jié)束、讀出轉(zhuǎn)換結(jié)果、存入指定內(nèi)存單元、繼續(xù)轉(zhuǎn)換(退出)幾個步驟。ADC0809初始化后,就具有了將某一通道輸入的05模擬信號轉(zhuǎn)換成對應(yīng)的數(shù)字量00HFFH,然后再存入存儲器的指定單元中。在控制方面有所區(qū)別??梢圆捎贸绦虿樵兎绞?,延時等待方式和中斷方式。顯示子程序是字符顯示,首先調(diào)用事先編好數(shù)碼管顯示子程序。初始化命令,然后輸出顯示命令。在顯示過程中一定要調(diào)用延時子程序。當(dāng)輸入通道采集了一個新的過程參數(shù),當(dāng)有壓力信號輸入時,調(diào)用顯示子程序在數(shù)碼管上顯示。3.2程序設(shè)計; ADResult EQU 40H RS BIT P2.0;定義LCM的接腳RS、R/W、Enable為P2.0、P2.1、P2.2 R_W BIT P2.1 ENABLE BIT P2.2 DB0_DB7 DATA P1 ;DB0-DB7的接腳為P1來控制,以方便程式的撰寫與維護;*- ORG 0000H ;通知編譯器下面的程式由程式記憶體;地址1000H開始存放 AJMP START ;跳到標(biāo)記start處執(zhí)行程式 ORG 000BH ;跳到中斷服務(wù)程式 AJMP INSERS ORG 0013H AJMP INT ORG 30H ;通知編譯器下面的程式由程式記憶體地址0030H開始存入。START: NOP MOV TMOD,#0 ;初始化TO MOV TL0,#0 MOV TH0,#0 SETB EA SETB ET0 SETB TR0 SETB EX1 SETB IT1 MOV R5,#50 ;設(shè)定延時次數(shù)。 MOV SP,#60H ;設(shè)定MCS-51從內(nèi)容資料記憶體地址61H開始存放堆棧資料。 CALL Initial ;調(diào)用啟動LCM的子程式 CALL CLS ;調(diào)用清除顯示器的子程式 MOV A,#10000000B ;將二進制10000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為00H, ;即將光標(biāo)移到第一行第一個列的位置上。 CALL Write_instruction ;調(diào)用寫指令碼子程式 MOV DPTR,#LINE3 ;將第一行字串在程式記憶體中的起始地址存入DPTR CALL STRING ;調(diào)用STRING子程式,將字串顯示到LCM MOV A,#11000010B ;將二進制11000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為40H, ;即將光標(biāo)移到第二行第三個列的位置上 CALL Write_instruction ;調(diào)用寫指令碼子程式 MOV DPTR,#LINE4 ;將第二行字串在程式記憶體中的起始:地址存DPTR。 CALL STRING CALL DELAY0 CALL CLS ;調(diào)用清除顯示器的子程式 MOV A,#10000000B ;將二進制10000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為00H, ;即將光標(biāo)移到第一行第一個列的位置上。 CALL Write_instruction ;調(diào)用寫指令碼子程式。 MOV DPTR,#LINE1 ;將第一行字串在程式記憶體中的起始地址存入DPTR CALL STRING ;調(diào)用STRING子程式,將字串顯示到LCM MOV A,#11000010B ;將二進制11000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為40H, ;即將光標(biāo)移到第二行第三個列的位置上 CALL Write_instruction ;調(diào)用寫指令碼子程式。CALLAD0809Read;啟動AD0809 ;-LOOP: SJMP LOOP SJMP LOOP;JNB IE1, LOOP ;查詢等待 ;CLR IE1 ;SJMP INT ;-LINE1: DB " Pressure: ",00H ;在LCM第一行顯示字串"LCD Testing_"LINE2: DB "0123456789.",00H ;在LCM第二行顯示壓力數(shù)據(jù),保留三位小數(shù)LINE3: DB "Welcome To ",00HLINE4: DB "LiRen College!",00H;-;ADC0809啟動程序;-AD0809Read:MOV DPTR, #8000H MOV A, #00 MOVX DPTR,A ; 起動 A/D MOV A, #40h DJNZ ACC, $ ; 延時 > 100us;*;工程量代換:B存高八位,A存低八位;程序中除以256相當(dāng)于右移八位,即高八位變?yōu)檎麛?shù)位,低八位變?yōu)樾?shù)位;最后結(jié)果為: B存整數(shù)部分,A存小數(shù)部分;*DAIHUAN:MOV B,#200MOV A,ADResultMUL AB MOV 51H,A;小數(shù)部分MOV 50H,B;整數(shù)部分RET;-;INT1查詢服務(wù)子程式;-INT: MOV DPTR,#8000HMOVX A, DPTR ; 讀入結(jié)果CALL CLSMOV A,#10000000B ;將二進制10000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為00H, ;即將光標(biāo)移到第一行第一個列的位置上。 CALL Write_instruction ;調(diào)用寫指令碼子程式。 MOV DPTR,#LINE1 ;將第一行字串在程式記憶體中的起始地址存入DPTR CALL STRING ;調(diào)用STRING子程式,將字串顯示到LCMMOV A,#11000010B ;將二進制11000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為40H, ;即將光標(biāo)移到第二行第三個列的位置上 CALL Write_instruction ;調(diào)用寫指令碼子程式。 MOV A,#50H MOV ADResult, A CALL DAIHUAN MOV DPTR,#LINE2 ;將第二行字串在程式記憶體中的起始地址存DPTR。 CALL DATE ;調(diào)用DATE子程式,將數(shù)據(jù)顯示到LCM RETI;-;TO中斷服務(wù)子程式;-INSERS: MOV TH0,#0 MOV TL0,#0 DJNZ R5,NO MOV R5,#50 NO: RETI ;-;Initial子程序設(shè)定LCM使用8BITS匯流排,顯示兩行,;使用5*7字型,顯示器要顯示光標(biāo)要顯示但不閃爍;-Initial: MOV A,#00111000B ; CALL Write_instruction ;第一次設(shè)置顯示模式 MOV A,#00111000B ; CALL Write_instruction ;第二次設(shè)置顯示模式 MOV A,#00111000B ; CALL Write_instruction ;第三次設(shè)置顯示模式 MOV A,#00111000B ; CALL Write_instruction ;第四次設(shè)置顯示模式 MOV A,#00001110B ; CALL Write_instruction ;設(shè)置光標(biāo) MOV A,#00000110B ; CALL Write_instruction ;設(shè)置LCD數(shù)據(jù)指針自動加一 RET;-;CheckBusy子程序;等待LCM有空可以執(zhí)行下一行命令;-CheckBusy: PUSH ACC ;將累加器ACC的內(nèi)容放到堆棧內(nèi), ;以免破壞原來的ACC的資料CheckBusyLoop: CLR ENABLE ;設(shè)定E=0,禁能讀模式 SETB R_W ;設(shè)定R/W=1,選擇讀模式 CLR RS ;設(shè)定RS=0,選擇指令寄存器IR SETB ENABLE ;將P3.3腳設(shè)定為1,使能LCM MOV A,DB0_DB7 ;將存在ACC內(nèi)的資料經(jīng)由P1存入ACC中 ;以便查封第7位元及BF是否為0什么 CLR ENABLE ;將P3.3腳設(shè)定為0 MOV A,#00H JB ACC.7,CheckBusyLoop ; 判斷由LCM讀入資料的第7位及BF ;是否為1,若等于1表示LCM忙碌中,CPU ;跳到標(biāo)記CheckBusyLoop繼續(xù)執(zhí)行程序 POP ACC ;將累加器ACC內(nèi)容從堆棧區(qū)取出 CALL DELAY ;調(diào)用延遲子程序,延時約數(shù)個mS RET ;返回主程序;-;Write_instruction子程序;將ACC內(nèi)的資料輸入到LCM的IR寄存器;-Write_instruction: CALL CheckBusy ;調(diào)用CheckBusy子程序確定LCM可以執(zhí)行指令 CLR ENABLE ;設(shè)定E=0,禁能LCM CLR R_W ;設(shè)定R/W=0,選擇寫模式 CLR RS ;設(shè)定RS=0,選擇指令寄存器IR SETB ENABLE ;將P3.3腳設(shè)定為1,使能LCM MOV DB0_DB7,A ;將存在ACC內(nèi)的指令碼經(jīng)由P1輸出到LCM CLR ENABLE ;將P3.3設(shè)定為0,MCS-51向LCM存取資料后, ;必須將LCM的E腳輸出0,讓LCM禁能(Disable) ;不做介面的資料傳送或設(shè)定 RET ;返回主程序;-;WriteLCDData子程序;將ACC內(nèi)的資料輸入到LCM的DR寄存器;-WriteLCDData: CALL CheckBusy ;調(diào)用CheckBusy子程序,確定LCM可以執(zhí)行指令 CLR ENABLE ;設(shè)定E=0,禁能LCM CLR R_W ;設(shè)定R/W=0,選擇寫模式 SETB RS ;設(shè)定RS=1,選擇U寄資料存器DR SETB ENABLE ;將P3.3腳設(shè)定為1,使能LCM MOV DB0_DB7,A ;將存在ACC內(nèi)的指令碼經(jīng)由P0輸出到LCM CLR ENABLE RET ;返回主程序;-;CLS子程序清除LCM的顯示字幕;-CLS: MOV A,#01H CALL Write_instruction RET;-;DATE子程序;壓力數(shù)據(jù)的掃描顯示;-DATE:PUSH ACC;入棧累加器APUSH PSW;入棧PSW中的CYHIG:MOV R1,#50HMOV A,R1CJNE A,#64H,CJ1;判斷是否等于100,等于100則直接顯示100MOV A,#01HMOVC A,A+DPTRLCALL WriteLCDDataDEC ALCALL WriteLCDDataLCALL WriteLCDDataSJMP XSDCJ1:JC SHI;判斷是否大于100 大于100則繼續(xù)執(zhí)行分位操作MOV B,#64H;否則跳轉(zhuǎn)到十位分位程序DIV AB;除法做分位處理MOVC A,A+DPTRLCALL WriteLCDDataMOV A,BSHI:CLR CCJNE A,#0AH,CJ2;判斷是否等于10等于10則直接顯示10MOV A,#01HMOVC A,A+DPTRLCALL WriteLCDDataDEC ALCALL WriteLCDDataSJMP XSDCJ2:JC GEE;判斷是否大于10MOV A,B;否則跳轉(zhuǎn)到個位顯示程序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,BMOV B,#0AHDIV ABMOVC A,A+DPTRLCALL WriteLCDDataMOV A,BMOVC A,A+DPTRLCALL WriteLCDDataPO

注意事項

本文(基于MCS-51單片機的壓力傳感器實驗)為本站會員(jun****875)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!