基于單片機(jī)的壓力傳感器實(shí)驗(yàn)

上傳人:jun****875 文檔編號(hào):17809019 上傳時(shí)間:2020-12-07 格式:DOC 頁(yè)數(shù):29 大?。?.06MB
收藏 版權(quán)申訴 舉報(bào) 下載
基于單片機(jī)的壓力傳感器實(shí)驗(yàn)_第1頁(yè)
第1頁(yè) / 共29頁(yè)
基于單片機(jī)的壓力傳感器實(shí)驗(yàn)_第2頁(yè)
第2頁(yè) / 共29頁(yè)
基于單片機(jī)的壓力傳感器實(shí)驗(yàn)_第3頁(yè)
第3頁(yè) / 共29頁(yè)

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《基于單片機(jī)的壓力傳感器實(shí)驗(yàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于單片機(jī)的壓力傳感器實(shí)驗(yàn)(29頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 課 程 設(shè) 計(jì) 說(shuō) 明 書(shū) 題目: 壓力傳感器設(shè)計(jì) 學(xué)院(系): 年級(jí)專業(yè): 電子信息科學(xué)與技術(shù) 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 目錄 摘要---------------------------- -------------------------------------------------------------------------2 關(guān)鍵字---------------- ----------------------

2、------------------------------------------------------------2 第一章 總體設(shè)計(jì)方案及模塊劃分---------------------------------------------------------------2 1.1總體設(shè)計(jì)方案--------------------------------------------------------------------------------3 1.2模塊劃分--------------------------------------------------

3、------------------------------------4 1.3設(shè)計(jì)框圖如下圖所示-----------------------------------------------------------------------5 第二章各模塊設(shè)計(jì)參數(shù)-------------------------------------------------------------------------------5 2.1傳感器元件模塊-------------------------------------------------------------------

4、-----------5 2.2 A/D轉(zhuǎn)換模塊---------------------------------------------------------------------------------8 2.3控制器處理模塊-----------------------------------------------------------------------------12 2.4 AD0809接口電路及LED接口電路------------------------------------------------------14 第三章 壓力傳感器

5、實(shí)驗(yàn)數(shù)據(jù)采集、顯示及程序---------------------------------------------14 3.1數(shù)據(jù)采集及顯示-----------------------------------------------------------------------------14 第四章 心得體會(huì)--------------------------------------------------------------------------------------15 附錄 ---------------------------------------

6、--------------------------------------------------------------16 程序設(shè)計(jì) --------------------------------------------------------------------------------------16 參考文獻(xiàn)資料 ---------------------------------------------------------------------------------25 實(shí)物圖 ------------------------------------

7、--------------------------------------------------25 摘要 此次設(shè)計(jì)是基于8051單片機(jī)的壓力檢測(cè)系統(tǒng),簡(jiǎn)要介紹了壓力傳感器電路的工作原理和弱信號(hào)傳感器電路以及A/D變換電路的工作原理,通過(guò)壓力傳感器將需要測(cè)量的位置的壓力信號(hào)轉(zhuǎn)化為電信號(hào),再經(jīng)過(guò)運(yùn)算放大器進(jìn)行信號(hào)放大,送至8位A/D轉(zhuǎn)換器ADC0808,然后將模擬信號(hào)轉(zhuǎn)換成單片機(jī)可以識(shí)別的數(shù)字信號(hào),再經(jīng)單片機(jī)轉(zhuǎn)換成LED顯示器可以識(shí)別的信息,最后顯示輸出。 關(guān)鍵詞: 單片機(jī) 壓力傳感器 A/D變換電路 LED顯示器 第一

8、章總體設(shè)計(jì)方案及模塊劃分 1.1 總體設(shè)計(jì)方案 本次設(shè)計(jì)是基于8051單片機(jī)的測(cè)量與顯示。電路采用ADC0809模數(shù)轉(zhuǎn)換電路,ADC0809是CMOS工藝,采用逐次逼近法的8位A/D轉(zhuǎn)換芯片,片內(nèi)有帶鎖存功能的8路模擬電子開(kāi)關(guān),先用ADC0809的轉(zhuǎn)換器對(duì)各路電壓值進(jìn)行采樣,然后將模擬信號(hào)轉(zhuǎn)換成單片機(jī)可以識(shí)別的數(shù)字信號(hào),再經(jīng)單片機(jī)轉(zhuǎn)換成LED顯示器可以識(shí)別的信息,最后顯示輸出。本次設(shè)計(jì)是以單片機(jī)組成的壓力測(cè)量,系統(tǒng)中必須有前向通道作為電信號(hào)的輸入通道,用來(lái)采集輸入信息。壓力的測(cè)量,需要傳感器,利用傳感器將壓力轉(zhuǎn)換成電信號(hào)后,再經(jīng)放大并經(jīng)A/D轉(zhuǎn)換為數(shù)字量后才能由計(jì)算機(jī)進(jìn)行有效處理。然后

9、用LED進(jìn)行顯示。本設(shè)計(jì)的最終結(jié)果是,將軟件下載到硬件上調(diào)試出來(lái)了需要顯示的數(shù)據(jù),當(dāng)輸入的模擬信號(hào)發(fā)生變化的時(shí)候,通過(guò)A/D轉(zhuǎn)換后,LED將顯示不同的數(shù)值。 1.2 模塊劃分 (1) 傳感器元件模塊 傳感器元件主要是對(duì)壓力這樣的物理量轉(zhuǎn)變成電信號(hào)。 (2) A/D轉(zhuǎn)換電路模塊 A/D轉(zhuǎn)換電路是將模擬量轉(zhuǎn)換為數(shù)字量,便于單片機(jī)的處理。 (3) 控制器處理模塊 控制器是通過(guò)51系列單片機(jī)對(duì)數(shù)字信號(hào),按照預(yù)定目的進(jìn)行處理。 (4) 顯示與報(bào)告模塊 顯示與報(bào)告是對(duì)于最終輸出結(jié)果進(jìn)行直觀的表達(dá)。 1.3設(shè)計(jì)框圖如下圖所示:

10、 圖1.3.1 設(shè)計(jì)框圖 第二章 各模塊設(shè)計(jì)參數(shù) 2.1傳感器元件模塊 壓力傳感器是壓力檢測(cè)系統(tǒng)中的重要組成部分,由各種壓力敏感元件將被測(cè)壓力信號(hào)轉(zhuǎn)換成容易測(cè)量的電信號(hào)作輸出,給顯示儀表顯示壓力值,或供控制和報(bào)警使用。力學(xué)傳感器的種類繁多,如電阻應(yīng)變片壓力傳感器、半導(dǎo)體應(yīng)變片壓力傳感器、壓阻式壓力傳感器、電感式壓力傳感器、電容式壓力傳感器諧振式壓力傳感器及電容式加速度傳感器等。 而電阻應(yīng)變式傳感器具有悠久的歷史。由于它具有結(jié)構(gòu)簡(jiǎn)單、體積小、使用方便、性能穩(wěn)定、可靠、靈敏度高動(dòng)態(tài)響應(yīng)快、適合靜態(tài)及動(dòng)態(tài)測(cè)量、測(cè)量精度高等諸多優(yōu)點(diǎn),因此是目前應(yīng)用最廣泛的傳感器之一,本實(shí)驗(yàn)采用電阻應(yīng)變

11、式傳感器作為壓力傳感器。 壓力傳感器構(gòu)成: 電阻應(yīng)變式傳感器由彈性元件和電阻應(yīng)變片構(gòu)成,當(dāng)彈性元件感受到物理量時(shí),其表面產(chǎn)生應(yīng)變,粘貼在彈性元件表面的電阻應(yīng)變片的電阻值將隨著彈性元件的應(yīng)變而相應(yīng)變化。通過(guò)測(cè)量電阻應(yīng)變片的電阻值變化,可以用來(lái)測(cè)量位移加速度、力、力矩、壓力等各種參數(shù)。 壓力傳感器的工作原理: 本質(zhì)上是惠斯通電橋,這里采用的是最常見(jiàn)的電阻應(yīng)變片式的壓力傳感器。它得到廣泛應(yīng)用的原因是溫度特性好,減小溫度變化帶來(lái)的誤差。膜片上的壓力使得電橋不平衡,從而產(chǎn)生一個(gè)差動(dòng)的輸出信號(hào),這種結(jié)構(gòu)的基本特性之一是它的差動(dòng)輸出電壓U與偏置電壓U成正比關(guān)系,這種關(guān)系隱含壓力測(cè)量精度直接決

12、定偏置電源的容限值,當(dāng)四個(gè)橋臂電阻達(dá)到相應(yīng)的關(guān)系時(shí),電橋輸出為零,或則就有電壓輸出同時(shí),它也能提供一種溫度補(bǔ)償最通用的方法。本實(shí)驗(yàn)研究壓力傳感器電路如圖2.1.1所示,為壓力傳感器的電路,其由三部分組成(1)電源電路部分;(2)電橋電路部分;(3)放大電路部分。 圖2.1.1壓力傳感器電路 如圖示,傳感器采用恒壓源供電,為+15V,經(jīng)過(guò)與分壓(電容起濾波作用),點(diǎn)5、6、7三點(diǎn)處有相同電壓: (2.1.1) 根據(jù)上式,帶入

13、數(shù)據(jù) , ,,求得。 經(jīng)過(guò)電路電橋部分,簡(jiǎn)化如下圖2.1.2 UO 圖2.1.2壓力傳感器電橋電路 設(shè)橋臂電阻分別為, ,,則當(dāng)壓力傳感器受力時(shí),電阻變化對(duì)應(yīng)的輸出電壓值為,由于<<1,則上式可化簡(jiǎn)為 (2.1.2) 帶入電阻、電壓值得 . (2.1.3) 最后經(jīng)過(guò)放大部分,如圖2.1.3,為壓力傳感器的微弱電壓輸出的放大電路。分析它是一

14、個(gè)差分放大電路,其放大倍數(shù)為 ,那么放大后的電壓值為 又,選定材料,這里取,代入式(4.1.3)得.因?yàn)锳∕D轉(zhuǎn)換器的最大輸入電壓為5v,所以該壓力傳感器的測(cè)量范圍為0~80N。 UO UO 圖2.1.3放大電路 2.2. A/D轉(zhuǎn)換模塊 模擬量輸入通道的任務(wù)是將模擬量轉(zhuǎn)換成數(shù)字量。能夠完成這一任務(wù)的器件稱之為模數(shù)轉(zhuǎn)換器,簡(jiǎn)稱A/D轉(zhuǎn)換器。本次設(shè)計(jì)的中A/D轉(zhuǎn)換器的任務(wù)是將放大器輸出的模擬信號(hào)轉(zhuǎn)換

15、位數(shù)字量進(jìn)行輸出。 A/D轉(zhuǎn)換電路的核心元件是ADC0808芯片 ADC0808是ADC0809的簡(jiǎn)化版本,功能基本相同。一般在硬件仿真時(shí)采用ADC0808進(jìn)行A/D轉(zhuǎn)換,實(shí)際使用時(shí)采用ADC0809進(jìn)行A/D轉(zhuǎn)換。ADC0809是帶有8位A/D轉(zhuǎn)換器、8路多路開(kāi)關(guān)以及微處理機(jī)兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉(zhuǎn)換器,可以和單片機(jī)直接接口。 2.2.1 ADC0809的內(nèi)部邏輯結(jié)構(gòu) 由下圖可知,ADC0809由一個(gè)8路模擬開(kāi)關(guān)、一個(gè)地址鎖存與譯碼器、一個(gè)A/D轉(zhuǎn)換器和一個(gè)三態(tài)輸出鎖存器組成。多路開(kāi)關(guān)可選通8個(gè)模擬通道,允許8路模擬量分時(shí)輸入,共用A/D轉(zhuǎn)換器進(jìn)行轉(zhuǎn)

16、換。三態(tài)輸出鎖器用于鎖存A/D轉(zhuǎn)換完的數(shù)字量,當(dāng)OE端為高電平時(shí),才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。 圖2.2.1 2.2.2 ADC0809的引腳結(jié)構(gòu) ADC0809各腳功能如下: D7-D0:8位數(shù)字量輸出引腳 IN0-IN7:8位模擬量輸入引腳 VCC:+5V工作電壓 GND:地 REF(+):參考電壓正端 REF(-):參考電壓負(fù)端 START:A/D轉(zhuǎn)換啟動(dòng)信號(hào)輸入端。當(dāng)ST上跳沿時(shí),所有內(nèi)部寄存器清零;下跳沿時(shí),開(kāi)始進(jìn)行A/D轉(zhuǎn)換;在轉(zhuǎn)換期間,ST應(yīng)保持低電平。 ALE:地址鎖存允許信號(hào)輸入端

17、,高電平有效。當(dāng)ALE線為高電平時(shí),地址鎖存與譯碼器將A,B,C三條地址線的地址信號(hào)進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)入轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。 EOC:轉(zhuǎn)換結(jié)束信號(hào)輸出引腳。當(dāng)EOC為高電平時(shí),表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D轉(zhuǎn)換。 OE:輸出允許控制端,用以打開(kāi)三態(tài)數(shù)據(jù)輸出鎖存器。 CLK:時(shí)鐘信號(hào)輸入端(一般為500KHz)。 A、B、C:地址輸入線,用于選通IN0-IN7上的一路模擬量輸入。 ADC0809對(duì)輸入模擬量要求:信號(hào)單極性,電壓范圍是0-5V,若信號(hào)太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過(guò)程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。

18、 2.2.3 ADC0809應(yīng)用說(shuō)明 1) ADC0809內(nèi)部帶有輸出鎖存器,可以與AT89S51單片機(jī)直接相連。 2) 初始化時(shí),使ST和OE信號(hào)全為低電平。 3) 送要轉(zhuǎn)換的哪一通道的地址到A,B,C端口上。 4) 在ST端給出一個(gè)至少有100ns寬的正脈沖信號(hào)。 5) 是否轉(zhuǎn)換完畢,我們根據(jù)EOC信號(hào)來(lái)判斷。 6) 當(dāng)EOC變?yōu)楦唠娖綍r(shí),這時(shí)給OE為高電平,轉(zhuǎn)換的數(shù)據(jù)就輸出給單片機(jī)了。 (4) ADC0809工作時(shí)序圖 在ALE=1期間,模擬開(kāi)關(guān)的地址(ADDC、ADDB和ADDA)存入地址鎖存。輸入啟動(dòng)信號(hào)START的上升沿復(fù)位AD

19、C0809,下降沿啟動(dòng)A/D轉(zhuǎn)換。EOC為輸出的轉(zhuǎn)換結(jié)束信號(hào),正在轉(zhuǎn)換時(shí)為0,轉(zhuǎn)換結(jié)束時(shí)為1。OE為輸出允許控制端,在轉(zhuǎn)換完成后用來(lái)打開(kāi)輸出三態(tài)門(mén),以便從ADC0809輸出這次轉(zhuǎn)換的結(jié)果。 ADC0809的時(shí)序圖如下圖 2.2.4.接口電路的設(shè)計(jì) 實(shí)驗(yàn)電路及接線如下圖示 : 連線 連接孔1 連接孔2 1 IN0 壓力傳感器輸出 2 AD_CS CS2 圖2.2.3 接線框圖 圖2.2.4 實(shí)

20、驗(yàn)電路連線圖 A/D轉(zhuǎn)換器的結(jié)構(gòu)及連線圖如上圖所示,AD0809的工作過(guò)程如下:首先用指令選擇0809的一個(gè)模擬輸入通道,當(dāng)執(zhí)行MOVX @DPTR,A時(shí),產(chǎn)生一個(gè)啟動(dòng)信號(hào)給START引腳送入脈沖,開(kāi)始對(duì)選中通道轉(zhuǎn)換。當(dāng)轉(zhuǎn)換結(jié)束后發(fā)出結(jié)束信號(hào),置EOC引腳信號(hào)為高電平,該信號(hào)可以作為中斷申請(qǐng)信號(hào),當(dāng)讀允許信號(hào)到,OE端有高電平,則可以讀出轉(zhuǎn)換的數(shù)字量,利用MOVX A,@DPTR把該通道轉(zhuǎn)換結(jié)果讀到累加器A中。轉(zhuǎn)換電壓為0—5V,調(diào)節(jié)橋路中的電位器,使其輸出電壓為0—5V,可以在較小范圍內(nèi)波動(dòng),當(dāng)滿量程輸出時(shí)對(duì)應(yīng)八個(gè)1的輸出,由于前邊計(jì)算的電壓變化和電阻變化成正比關(guān)系,而且

21、電阻變化和應(yīng)變成正比,進(jìn)而得出的壓力和電壓是成正比的。傳感器橋路輸出的電壓經(jīng)過(guò)比例變換后轉(zhuǎn)換成二進(jìn)制碼的形式送入P0口。 其程序框圖如下: 等待中斷 初始化程序 初始化LED 進(jìn)入開(kāi)機(jī)界面 開(kāi)始 清屏 啟動(dòng)AD0809 工程量代換轉(zhuǎn)換為壓力值 將結(jié)果分位成十進(jìn)制 調(diào)用LED顯示子程序(先顯示最高位) 產(chǎn)生中斷 圖五 主程序流程圖 圖六 中斷子程序

22、 2.3控制器處理模塊 本實(shí)驗(yàn)采用8051單片機(jī),其管腳圖如下: 圖4.4.1 8051管腳圖 其管腳功能如下: 1.電源 (1)VCC - 芯片電源,接+5V; (2)VSS - 接地端; 2.時(shí)鐘 XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 3.控制線(4根) (1)ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖。 ① ALE功能:用來(lái)鎖存P0口送出的低8位地址。 ② PROG功能:片內(nèi)

23、有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 (2)PSEN:外ROM讀選通信號(hào)。 (3)RST/VPD:復(fù)位/備用電源。 ① RST(Reset)功能:復(fù)位信號(hào)輸入端。 ② 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個(gè)8位并行I/O端口:P0、P1、P2

24、、P3口,共32個(gè)引腳。P3口還有 第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)。 2.4 AD0809接口電路及LED接口電路 第三章 壓力傳感器實(shí)驗(yàn)數(shù)據(jù)采集及顯示 3.1數(shù)據(jù)采集及顯示 數(shù)據(jù)處理子程序是整個(gè)程序的核心。主要用來(lái)調(diào)整輸入值系數(shù),使輸出滿足量程要求。另外完成A/D的采樣結(jié)果從十六進(jìn)制數(shù)向十進(jìn)制數(shù)形式轉(zhuǎn)化。系數(shù)轉(zhuǎn)換在IN0輸入的數(shù)最大為5V,要求壓力200pa對(duì)應(yīng)的是5V,將系數(shù)進(jìn)行一定倍數(shù)的變換,并用小數(shù)點(diǎn)位置的變化體現(xiàn)這一過(guò)程。數(shù)制之間的轉(zhuǎn)換:在二進(jìn)制數(shù)制中,每向左移一位表示數(shù)增加兩倍。要求壓力80N對(duì)應(yīng)

25、的是5V,而壓力與電壓的變換是線性關(guān)系,對(duì)應(yīng)AD轉(zhuǎn)換器的輸出為八個(gè)1,當(dāng)有一定的壓力值輸入時(shí),對(duì)應(yīng)這個(gè)關(guān)系轉(zhuǎn)化成相應(yīng)的二進(jìn)制代碼送入P0口。然后再反過(guò)來(lái)應(yīng)用這個(gè)變化關(guān)系,經(jīng)最終得到的數(shù)值進(jìn)行二進(jìn)制到BCD碼轉(zhuǎn)化,然后逐位在LED數(shù)碼管上顯示。 數(shù)據(jù)采集用A/D0809芯片來(lái)完成,主要分為啟動(dòng)、讀取數(shù)據(jù)、延時(shí)等待轉(zhuǎn)換結(jié)束、讀出轉(zhuǎn)換結(jié)果、存入指定內(nèi)存單元、繼續(xù)轉(zhuǎn)換(退出)幾個(gè)步驟。ADC0809初始化后,就具有了將某一通道輸入的0~5模擬信號(hào)轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字量00H—FFH,然后再存入存儲(chǔ)器的指定單元中。在控制方面有所區(qū)別??梢圆捎贸绦虿樵兎绞?,延時(shí)等待方式和中斷方式。 顯示子程序是字符顯示,

26、首先調(diào)用事先編好數(shù)碼管顯示子程序。初始化命令,然后輸出顯示命令。在顯示過(guò)程中一定要調(diào)用延時(shí)子程序。當(dāng)輸入通道采集了一個(gè)新的過(guò)程參數(shù),當(dāng)有壓力信號(hào)輸入時(shí),調(diào)用顯示子程序在數(shù)碼管上顯示。 第四章 心得體會(huì) 傳感器課程設(shè)計(jì)結(jié)束了,我的收獲很多,我做的是基于AT89C51單片機(jī)的壓力檢測(cè)系統(tǒng)的設(shè)計(jì),用到的主要芯片是AT89C51和ADC0808,實(shí)現(xiàn)的功能是將傳感器采集到的模擬信號(hào)轉(zhuǎn)換成單片機(jī)可以識(shí)別的數(shù)字信號(hào),再經(jīng)單片機(jī)轉(zhuǎn)換成LED顯示器可以識(shí)別的信息,最后顯示輸出。在顯示的過(guò)程中通過(guò)鍵盤(pán),向計(jì)算機(jī)操作可以控制顯示需要的值。對(duì)于學(xué)習(xí)過(guò)單片機(jī),因此對(duì)AT89C51比較熟悉,對(duì)ADC08

27、08則比較陌生,從網(wǎng)上搜索的資料對(duì)我?guī)椭艽?,遇到不懂的?wèn)題自己解決不了,就和大家一起討論。此次課程設(shè)計(jì)使我更加了解C51程序的強(qiáng)大功能,以前學(xué)習(xí)單片機(jī)過(guò)程中得漏洞也得到了很好的修補(bǔ),Keil和proteus的使用加深了我對(duì)著兩種軟件的理解程度,單片機(jī)控制數(shù)碼管的顯示時(shí),尤其是多個(gè)時(shí),要使用驅(qū)動(dòng)電路。 課程設(shè)計(jì)暴露了我在平時(shí)學(xué)習(xí)中的不足,以及對(duì)知識(shí)缺乏融會(huì)貫通的能力,課程設(shè)計(jì)過(guò)程中,我們不斷發(fā)現(xiàn)錯(cuò)誤,不斷修改,不斷領(lǐng)悟,不斷獲取。實(shí)踐出真知,自己親自動(dòng)手去做,才知道知識(shí)的匱乏! 附錄: 程序設(shè)計(jì) ; ADResu

28、lt 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來(lái)控制,以方便程式的撰寫(xiě)與維護(hù) ;*----------------------------------------------------------------

29、-------- ORG 0000H ;通知編譯器下面的程式由程式記憶體  ;地址1000H開(kāi)始存放 AJMP START ;跳到標(biāo)記start處執(zhí)行程式 ORG 000BH ;跳到中斷服務(wù)程式 AJMP INSERS ORG 0013H AJMP INT

30、 ORG 30H ;通知編譯器下面的程式由程式記憶體地址0030H開(kāi)始存入。 START: NOP MOV TMOD,#0 ;初始化TO MOV TL0,#0 MOV TH0,#0 SETB EA SE

31、TB ET0 SETB TR0   SETB EX1   SETB IT1 MOV R5,#50 ;設(shè)定延時(shí)次數(shù)。 MOV SP,#60H ;設(shè)定MCS-51從內(nèi)容資料記憶體地址61H開(kāi)始存放堆棧資料。   CALL Initial ;調(diào)用啟動(dòng)LCM的子程式   

32、CALL CLS ;調(diào)用清除顯示器的子程式 MOV A,#10000000B ;將二進(jìn)制10000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為00H, ;即將光標(biāo)移到第一行第一個(gè)列的位置上。 CALL Write_instruction ;   調(diào)用寫(xiě)指令碼子程式 MOV DPTR,#LINE3 ;將第一行字

33、串在程式記憶體中的起始地址存入DPTR CALL STRING ;調(diào)用STRING子程式,將字串顯示到LCM MOV A,#11000010B ;將二進(jìn)制11000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為40H, ;即將光標(biāo)移到第二行第三個(gè)列的位置上 CALL Write_instruction ;調(diào)用寫(xiě)指令碼子程式

34、 MOV DPTR,#LINE4 ;將第二行字串在程式記憶體中的起始 :地址存DPTR。 CALL STRING CALL DELAY0 CALL CLS ;調(diào)用清除顯示器的子程式 MOV A,#10000000B ;將二進(jìn)制10000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為00H,

35、 ;即將光標(biāo)移到第一行第一個(gè)列的位置上。 CALL Write_instruction ;調(diào)用寫(xiě)指令碼子程式。 MOV DPTR,#LINE1 ;將第一行字串在程式記憶體中的起始地址存入DPTR CALL STRING ;調(diào)用STRING子程式,將字串顯示到LCM MOV A,#11000010B

36、 ;將二進(jìn)制11000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為40H, ;即將光標(biāo)移到第二行第三個(gè)列的位置上 CALL Write_instruction ;調(diào)用寫(xiě)指令碼子程式。 CALL  AD0809Read ;啟動(dòng)AD0809 ;--------------------------------------------- LOOP: SJMP LOOP SJMP LOOP;JNB

37、 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 ",00H LI

38、NE4: DB "LiRen College!",00H ;------------------------------------------------------------------ ;ADC0809啟動(dòng)程序 ;------------------------------------------------------------------ AD0809Read: MOV DPTR, #8000H MOV A, #00 MOVX @DPTR,A ; 起動(dòng) A/D MOV A, #40h

39、 DJNZ ACC, $ ; 延時(shí) > 100us ;********************************************************************** ;工程量代換:B存高八位,A存低八位 ;程序中除以256相當(dāng)于右移八位,即高八位變?yōu)檎麛?shù)位,低八位變?yōu)樾?shù)位 ;最后結(jié)果為: B存整數(shù)部分,A存小數(shù)部分 ;********************************************************************** DAIHUAN: MOV B,#200 MOV A,ADResul

40、t MUL AB MOV 51H,A ;小數(shù)部分 MOV 50H,B ;整數(shù)部分 RET ;------------------------------------------------------------------ ;INT1查詢服務(wù)子程式 ;------------------------------------------------------------------ INT: MOV DPTR,#8000H MOVX A, @DPTR ; 讀入結(jié)果 CALL CLS M

41、OV A,#10000000B ;將二進(jìn)制10000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為00H, ;即將光標(biāo)移到第一行第一個(gè)列的位置上。 CALL Write_instruction ;調(diào)用寫(xiě)指令碼子程式。 MOV DPTR,#LINE1 ;將第一行字串在程式記憶體中的起始地址存入DPTR CALL STRING ;

42、調(diào)用STRING子程式,將字串顯示到LCM MOV A,#11000010B ;將二進(jìn)制11000000的值放入累加器內(nèi),代表設(shè)定DDRAM的地址為40H, ;即將光標(biāo)移到第二行第三個(gè)列的位置上 CALL Write_instruction ;調(diào)用寫(xiě)指令碼子程式。 MOV A,#50H MOV ADResult, A CALL DAIHUAN MOV DPTR,#LINE

43、2 ;將第二行字串在程式記憶體中的起始地址存DPTR。 CALL DATE ;調(diào)用DATE子程式,將數(shù)據(jù)顯示到LCM RETI ;------------------------------------------------------------------ ;TO中斷服務(wù)子程式 ;------------------------------------------------------------------ INSERS: MOV TH0,#0

44、 MOV TL0,#0 DJNZ R5,NO MOV R5,#50 NO: RETI ;------------------------------------------------------------------ ;Initial子程序 設(shè)定LCM使用8BITS匯流排,顯示兩行, ;使用5*

45、7字型,顯示器要顯示 光標(biāo)要顯示但不閃爍 ;------------------------------------------------------------------ Initial: MOV A,#00111000B ; CALL Write_instruction ; 第一次設(shè)置顯示模式 MOV A,#00111000B ; CALL Write_instruction ; 第二次設(shè)置顯示模式

46、 MOV A,#00111000B ; CALL Write_instruction ; 第三次設(shè)置顯示模式 MOV A,#00111000B ; CALL Write_instruction ; 第四次設(shè)置顯示模式 MOV A,#00001110B ; CALL Write_instruction ; 設(shè)置光標(biāo)

47、 MOV A,#00000110B ; CALL Write_instruction ; 設(shè)置LCD數(shù)據(jù)指針自動(dòng)加一 RET ;----------------------------------------------------------------- ;CheckBusy子程序 ;等待LCM有空可以執(zhí)行下一行命令 ;--------------------------------------------------------------

48、--- CheckBusy: PUSH ACC ;將累加器ACC的內(nèi)容放到堆棧內(nèi), ;以免破壞原來(lái)的ACC的資料 CheckBusyLoop: CLR ENABLE ;設(shè)定E=0,禁能讀模式 SETB R_W ;設(shè)定R/W=1,選擇讀模式 CLR RS

49、 ;設(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

50、 A,#00H JB ACC.7,CheckBusyLoop ; 判斷由LCM讀入資料的第7位及BF ;是否為1,若等于1表示LCM忙碌中,CPU ;跳到標(biāo)記CheckBusyLoop繼續(xù)執(zhí)行程序 POP ACC ;將累加器ACC內(nèi)容從堆棧區(qū)取出

51、 CALL DELAY ;調(diào)用延遲子程序,延時(shí)約數(shù)個(gè)mS RET ;返回主程序 ;----------------------------------------------------------------- ;Write_instruction子程序 ;將ACC內(nèi)的資料輸入到LCM的IR寄存器 ;----------------------------------------------------------------- Write_inst

52、ruction: CALL CheckBusy ;調(diào)用CheckBusy子程序確定LCM可以執(zhí)行指令 CLR ENABLE ;設(shè)定E=0,禁能LCM CLR R_W ;設(shè)定R/W=0,選擇寫(xiě)模式 CLR RS ;設(shè)定RS=0,選擇指令寄存器IR SETB ENABLE ;將P3.3腳設(shè)定為1,使能LCM

53、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 ;返回主程序 ;------------------------------

54、----------------------------------- ;WriteLCDData子程序 ;將ACC內(nèi)的資料輸入到LCM的DR寄存器 ;----------------------------------------------------------------- WriteLCDData: CALL CheckBusy ;調(diào)用CheckBusy子程序,確定LCM可以執(zhí)行指令 CLR ENABLE ;設(shè)定E=0,禁能LCM C

55、LR R_W ;設(shè)定R/W=0,選擇寫(xiě)模式 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

56、 ;返回主程序 ;----------------------------------------------------------------- ;CLS子程序 清除LCM的顯示字幕 ;----------------------------------------------------------------- CLS: MOV A,#01H CALL Write_instruction RET ;----------

57、------------------------------------------------------- ;DATE子程序 ;壓力數(shù)據(jù)的掃描顯示 ;----------------------------------------------------------------- DATE: PUSH ACC ;入棧累加器A PUSH PSW ;入棧PSW中的CY HIG:MOV R1,#50H MOV A,@R1 CJNE A,#64H,CJ1 ;判斷是否等于100,等于100則直接顯示100 MOV A,#01H MOVC A

58、,@A+DPTR LCALL WriteLCDData DEC A LCALL WriteLCDData LCALL WriteLCDData SJMP XSD CJ1: JC SHI ;判斷是否大于100 大于100則繼續(xù)執(zhí)行分位操作 MOV B,#64H ;否則跳轉(zhuǎn)到十位分位程序 DIV AB ;除法做分位處理 MOVC A,@A+DPTR LCALL WriteLCDData MOV A,B SHI: CLR C CJNE A,#0AH,CJ2 ;判斷是否等于10等于10則直接顯示10 MOV A,#0

59、1H MOVC A,@A+DPTR LCALL WriteLCDData DEC A LCALL WriteLCDData SJMP XSD CJ2: JC GEE ;判斷是否大于10 MOV A,B ;否則跳轉(zhuǎn)到個(gè)位顯示程序 GEE: MOV B,#0AH DIV AB MOVC A,@A+DPTR LCALL WriteLCDData MOV A,B MOVC A,@A+DPTR LCALL WriteLCDData XSD: MOV A,#0AH ;小數(shù)點(diǎn)顯示程序 MOVC A,@A+DPTR

60、LCALL WriteLCDData LOWER: INC R1 ;小數(shù)位顯示程序 分位原理同上 MOV A,@R1 MOV B,#64H DIV AB MOVC A,@A+DPTR LCALL WriteLCDData MOV A,B MOV B,#0AH DIV AB MOVC A,@A+DPTR LCALL WriteLCDData MOV A,B MOVC A,@A+DPTR LCALL WriteLCDData POP PSW POP ACC RET ;--------------------------

61、--------------------------------------- ;STRING子程序 ;將一個(gè)字幕顯示在LCM,字串的起地址要存入DPTR,字串必須以00H結(jié)束 ;----------------------------------------------------------------- STRING: PUSH ACC LOOP1: CLR A MOVC A,@A+D

62、PTR JZ END_PR CALL WriteLCDData INC DPTR JMP LOOP1 END_PR: POP ACC RET

63、 ;----------------------------------------------------------------- ;DELAY子程所延遲的時(shí)間約為2.5mS ;延時(shí)時(shí)間約為R6*(500uS) ;----------------------------------------------------------------- DELAY: MOV R6,#5 D1: MOV R7,#248

64、 DJNZ R7,$ DJNZ R6,D1 RET DELAY0: MOV R3,#20 D2: MOV R4,#248 D3:   MOV R2,#200 DJNZ R2,$ DJNZ R4,D3 DJNZ R3,D2 RET END 參考文獻(xiàn)資料: 1、單片微型計(jì)算機(jī)接口技術(shù)及其應(yīng)用 張淑清 國(guó)防工業(yè)出版社 單片機(jī)原理及應(yīng)用技術(shù) 張淑清 單片機(jī)應(yīng)用技術(shù)匯編 實(shí)物圖:

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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