久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3559|回復: 0
打印 上一主題 下一主題
收起左側

小動物動態電子秤嵌入式課程設計報告

[復制鏈接]
跳轉到指定樓層
樓主
ID:251910 發表于 2017-11-21 15:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
嵌入式系統課程設計報告


設計題目:小動物動態電子秤設計
學    號:140210322            
指導教師:謝瑋


信息與電氣工程學院
二零十一


1. 設計任務
2. 整體方案設計
3. 系統硬件電路設計

3.1 時鐘電路

3.2 復位電路

3.3 模數轉換電路

3.4 壓力傳感器與ADC之間運算放大電路

3.5 ……

4. 系統程序設計

4.1 主程序流程圖

4.2 PID調節子程序流程圖

4.3 控制子程序流程圖

4.4 ……

5. 系統調試

5.1 Proteus軟件仿真調試

5.2 硬件調試

6. 程序清單
7.小結

小動物動態電子秤設計

在電子稱重領域,微電子學和計算機等現代電子技術的成就給傳統電子測量與測量儀器帶來了巨大的沖擊和革命性的影響。常規的測試儀器儀表和控制裝置被更先進的智能儀器所取代,使得傳統的電子測量儀器在運作、功能、精度及自動化水平等方面發生了巨大變化,并相應的出現了各種各樣的智能儀器控制系統,使得科學實驗和應用工程的自動化程度得以顯著提高。

隨著社會的不斷進步,電子秤在各個領域都有所作用,因此如何能設計出既符合課題,又經濟實用的動態電子秤就很適應社會的需求。

1. 設計任務

本次設計的小動物動態電子秤主要是以89C52單片機為處理核心,可實現靜態測量和動態測量,并且通過LED顯示測量的質量,測量結果應符合以下標準:

(1) 質量測量范圍在1~3000g之間。

(2) 測量的精度:靜態是-1g~+1g之間;動態是-3g~+3g之間。

(3) 時測量和LED數碼顯示被測量的質量。

主要硬件設備:AT89C51單片機、ADC0809模數轉換芯片、CYG115型高壓力傳感器、 ……

2. 整體方案設計

小動物動態電子秤的整個設計中最重要的部分是對動態質量的處理,雖然家禽動態秤很早就開始研究應用,但對其快速和高準確度測量的實現至今仍是生產和科研的課題。隨著科學技術的發展和生物醫學工程技術的應用及家禽育種的需要,如今家禽等小動物的動態質量檢測已進人數字化,智能化時代。家禽動態數字化測量關鍵是必須考慮和解決在檢測過程中,家禽的活動引起的加速度對家禽本身質量測量的影響。它將檢測傳感器輸出信號上又疊加了一個交變脈沖分量,從而引起檢測值的誤差及讀數跳字不穩定。為了解決上述問題,在所研制小動物電子秤中采用軟硬件結合的方式,使研制成的家禽小動物動態電子秤具有很好的穩定性及抗干擾性,且能保持較高的精確度,很符合需要。

電子秤的最根本思想就是將物體重量通過一系列轉換顯示出來,要達到這一目的,就必須考慮到將重量這個非電量轉換成電量。由于電阻絲在外力作用下發生機械變形時,其電阻值發生變化,從而引起電壓發生變化,即電橋的輸出電壓反映了相應的受力狀態。但電阻應變式全橋傳感器的輸出是毫伏級的,必須通過一定倍數的放大,才能得到0-5V的電壓,之后通過ADC0809采集數據送入單片機進行處理。因此,硬件電路中必須包括傳感器(實現對非電量的數據采集)、電壓放大電路、模數轉換電路,通過單片機運行軟件程序進行計算,最后送交LED顯示器顯示。以下部分將對所選擇的硬件進行詳細介紹,其硬件總體方案設計框圖如圖2.1所示:

圖2.1 電子秤的結構框圖

1. 傳感器

傳感器是信號發生部分的主要構成,整個傳感器和實驗臺實現從非電量(質量)到電量(電壓)的轉換。在選擇傳感器的型號時,需考慮到其性能,測量時輸入輸出關系等。根據設計的要求,此處選擇電阻應變式全橋傳感器。

2. 電壓放大電路

全橋傳感器的輸出電壓比較小,只有幾個毫伏,而A/D轉換器要求的電壓在0-5V之間。因此,要將該信號輸入單片機中處理,需要有一個放大電路將此電信號放大到所需范圍之內。由于放大電路的增益是可調的,故運用運算放大電路能將電壓信號放大到所要求的范圍。

3. 模數轉換電路

計算機所能處理的是二進制的數字量,而傳感器經過放大器出來的信號是模擬量,計算機不能處理。且由于單片機接收信號范圍的限制,必須將由傳感器中傳出的模擬量轉換成數字量,所以,需用一個模數轉換電路來實現。模數轉換電路的設計可采用8路8位逐次逼近式的A/D轉換芯片ADC0809進行轉換,完成從模擬量到數字量的轉換。

4. 單片機

單片機作為一個接收、處理、輸出信號的儀器裝置,將傳感器與LED顯示連接成一個有機的整體。其主要是完成數據處理,并通過與之有關的軟件來實現軟件的編程使顯示值與稱重值對應。因此,此部分是整個設計最重要的組成部分

5. LED顯示電路

根據本次設計的要求,需要使設計的電子秤能夠實時顯示測量的數據。如果物體質量在設定范圍內(上限3000g),則通過4位LED來進行顯示。

6. 復位電路

89C52的復位輸入引腳RST(即RESET)為89C52提供了初始化的手段。有了它可以使程序從指定處開始執行,即從程序存儲器中的0000H地址單元開始執行程序。在89C52工作后,只要在RST引腳上出現兩個機器周期以上的高電平時,單片機內部則初始復位。只要RST保持高電平,則89C52循環復位。只有當RST由高電平變成低電平以后,89C52才從0000H地址開始執行程序。

3. 系統硬件電路設計
3.1應變式傳感器的測量原理及分類
應變式傳感器與其他類型的傳感器相比,具有測試范圍寬、輸出特性線性好、精度高、性能穩定、工作可靠并能在惡劣環境下工作的特點。它由彈性原件、電阻應變片及外殼等組裝而成的裝置,因此稱為應變式傳感器。電阻應變式傳感器的工作原理就是電阻的應變效應,即當導體或半導體受到外力作用時,會產生機械變形,電阻率及幾何尺寸的變化就會引起電阻的變化,因此導體與半導體的電阻與電阻率及其幾何尺寸有關。通過測量電阻值的大小,就可以反映外界力的大小,它的工作原理即導體隨著機械變形而發生變化的現象。描述電阻應變效應的關系式為:

(3.1)

式中 為電阻絲電阻相對比值,K為應變靈敏系數, 為電阻絲長度相對變化,金屬箔式應變片就是通過光刻、腐蝕等工藝制成的應變敏感元件,通過它轉換被測部位受力狀態變化、電橋的作用完成電阻到電壓的比例變化,電橋的輸出電壓反映了相應的受力狀態。對單臂電橋輸出電壓 、半橋輸出電壓 、全橋輸出電壓 。
電阻應變式傳感器的測量電路可采用橋式測量電路,橋式測量電路有四個電阻,其中任何一個電阻均可以是應變片,電路圖如圖3.1所示:
圖3.1  橋式測量電路圖


圖3.1 橋式測量電路圖
如能恰當選擇各橋臂的電阻,可消除電橋的恒定輸出,使輸出電壓只與應變片的電阻有關。
每當橋的變化遠小于本身阻值,即 時,可得輸出電壓為:

(3.2)

上述原理適用于所有的電阻應變式傳感器,若按其測量電路(橋式)可詳細的分為單臂式、半橋式、全橋式三種。所謂半橋,即將電橋的四臂接入四應變片。其中:一片受拉,一片受壓,另外兩應變片不受力。全橋是兩片受拉,兩片受壓,故靈敏度比半橋式的大一倍。根據本次設計的具體情況考慮,決定采用電阻應變式全橋傳感器。
3.2 放大電路的設計
由于從傳感器中傳出的信號是毫伏級的,而A/D轉換器所能處理的電壓是0-5V,所以必須在A/D轉換器前加入一個前置差動放大電路以實現電壓的放大,放大倍數為100-200倍,使輸出電壓為0-5V。處理后的電壓才能在單片機接收信號的范圍內,且僅放大兩個輸入信號的差值。因此,可采用一個運算放大器構成,但為了提高輸入阻抗,使用差動放大電路圖,硬件圖如圖3.2所示,在電路中,所有電阻均采用的是1%以下的電阻,當時,輸出式(3.3):
(3.3)
圖3.2  放大電路硬件原理圖
由于單運放在應用中要求外圍電路匹配精度高、增益調整不便、差動輸入阻抗低,故采用三運放結構。
三運放結構具有差動輸入阻抗高、共膜抑制比高、偏置電流低等優點,且有良好的溫度穩定性,低噪單端輸出和和增益調整方便,適于在傳感器電路中應用。
利用理想運放條件可列寫方程:
設流過的電流為:
(3.4)
再由的虛短可知:
(3.5)
所以:
(3.6)
又:
(3.7)
故:
(3.8)
因此:
(3.9)
3.3 數據采集電路的設計


      • 數據采集系統的組成
數據采集的核心是計算機,它對整個系統進行控制和數據處理,其由采樣保持器、放大器、A/D轉換器、計算機等組成。






            • 數據采樣系統框圖
      • 數據采樣保持器
進行模數變換時,從啟動變換到變換結束的數字量輸出,需要一定的時間,即A/D轉換的孔徑時間。當輸入信號頻率較高,由于孔徑時間的存在,會造成較大的轉換誤差;為了防止誤差需在中間加一個功能器件采樣保持器,進行有效、正確的數據采集。
采樣保持器通常由保持電容器、模擬開關和運算放大器組成。其中對于低速場合可以采用繼電器作為開關以減小開關漏電流的影響,在高速場合也可以用晶體管、場效應管作為開關。
采樣保持器的原理:如圖3.4,當開關閉合時,通過限電流電阻向電容C充電,在電容值合理的情況下,變化;當K斷開時,由于電容C有一定的容量,此時輸出在斷開瞬間的電平值。










            • 采集保持原理圖

在模擬信號輸入通道中,是否需要加采樣保持器,取決于模擬信號的變化頻率和A/D轉換器的孔徑時間;對快速過程信號,當最大孔徑誤差超過允許值時,必須在A/D轉換器前加采樣保持器。但如果輸入模擬量是直流量或者被測信號模擬量隨時間變化非常緩慢,采樣保持(SH)電路可以省去。



      • A/D轉換器
數據采集系統一般直接用A/D模數接口電路進行數據的采集,A/D模數接口電路是由A/D轉換器承擔此任務。設計中A/D轉換器用的是ADC0809轉換器,它是8路8位逐次逼近式轉換器,能分時地對8路模擬量信號進行A/D轉換,結果為8位二進制數據,轉換時間短,滿足題目要求的“實時采樣”,并且它的轉換精度在0.1%上下,比較適中,適用于一般場合。
ADC0809由三部分組成:8路輸入模擬量選擇電路、逐次比較式A/D轉換器、三態輸出緩沖器。ADC0809完成一次轉換需要的100μs左右,輸出具有TTL三態鎖存緩沖器,因而可以不加I/O接口芯片,直接接到微型計算機系統總線上。ADC0809與單片機的硬件接口圖如圖3.5所示,由圖可見,單片機通過讀控制線RD和ADC0809片選線控制啟動A/D轉換及輸入通道地址鎖存,寫控制線WR與ADC0809片選線控制輸出允許。由于ADC0809具有通道地址鎖存功能,通道選擇ADD.A、ADD.B、ADD.C直接與單片機的數據口相連。模擬電壓由IN0通道輸入,A/D采樣電壓在0-5V之間變化,模擬通道IN0地址口為0AOOOH。







            • ADC0809與單片機的硬件接口電路
3.4 單片機的選擇
單片機自從問世以來就一直是工業檢測、控制應用的主角。市場上常用的單片機有Intel公司的MCS-51系列,日本松下公司的MN6800系列等。其中,MCS-51由于單片機應用系統具有體積小,可靠性高,功能強,價格低等特點,很容易作為產品進行生產而更受青睞。
然而作為本系統的核心元件,選擇哪一型號的MCS-51系列單片機顯得尤為關鍵,下面就逐個進行比較:
8031單片機片內不帶程序存儲器ROM,使用時需外接程序存儲器和一片邏輯電路74LS373,外接的程序存儲器多為EPROM的2764系列。用戶若想對寫入到EPROM中的程序進行修改,必須先用一種特殊的紫外線燈將其照射擦除,之后再可寫入。寫入到外接程序存儲器的程序代碼沒什么保密性可言。
8051單片機片內有4K ROM,無須外接存儲器和74LS373,更能體現“單片”的簡練。但是編的程序無法燒寫到其ROM中,只有將程序交芯片廠代為燒寫,并是一次性的,今后都不能改寫其內容。
8751單片機與8051單片機基本一樣,但8751單片機片內有4K的EPROM,用戶可以將自己編寫的程序寫入單片機的EPROM中進行現場實驗與應用,EPROM的改寫同樣需要用紫外線照射一定時間擦除后再燒寫。
89C51單片機為EPROM型,在實際電路中可以直接互換8051單片機或8751單片機,不但和8051單片機指令,管腳完全兼容,而且其片內的4K程序存儲器是FLASH工藝的。
89C52是一種低功耗高性能的具有8K字節可電氣燒錄及可擦除的程序ROM的八位CMOS單片機。該器件是用高密度、非易丟失存儲技術制造并且與國際工業標準89C51單片機指令系統和引腳完全兼容。
綜上所述,從使用方便與簡化電路以及其性價比等角度來考慮,89C52比較合適的。本系統采用CPU為89C52的單片微機,89C52本身帶有8K的內存儲器,可以在編程器上實現閃爍式的電擦寫達幾萬次以上,比以往慣用的8031CPU外加EPROM為核心的單片機系統在硬件上具有更加簡單、方便等優點,而且完全兼容MCS-51系列單片機的所有功能。89C52管腳圖如圖3.6所示,下面介紹89C52的主要管腳功能如下:
VCC(40):電源+5V;VSS(20):接地;P0口(32-39):雙向I/O口,既可作低8位地址和8位數據總線使用,也可作普通I/O口;P3口(10-17):多用途端口,既可作普通I/O口,也可按每位定義的第二功能操作;P2口(21-28):既可作高8位地址總線,也可作普通I/O口;P1口(1-8): 準雙向通用I/O口;RST(9):復位信號輸入端;ALE/PROG:地址鎖存信號輸出端;PSEN:內外程序存儲器選擇線;XTAL1(19)和XTAL2(18):外接石英晶體振蕩器。
MCS-51的CPU可包括運算部件,控制器,程序狀態字,B寄存器,累加器Acc(或A),位處理器等。
圖3.6 89C52管腳圖
3.5顯示電路的設計
              LED液晶顯示器是一種功耗極低的顯示器,它可以將處理得出的數據在顯示器上進行顯示,讓人們直觀的看到被測體的質量,一般采用的七段LED顯示器如圖3.7所示:






            • LED數碼管結構圖
它由4個LED組成一個陣列,并封裝于一個標準的外殼中。為使用于不同的驅動電路,有共陽極和共陰極兩種結構。根據本次設計任務書的要求和實際情況,此處采用的是共陰極結構,其結構如圖3.8所示:










            • 共陰極結構圖
    • 復位電路的設計
本系統的復位電路是采用按鍵復位的電路,如圖3.9所示,是常用復位電路之一。當89C52的ALE及PSEN兩引腳輸出高電平,RST引腳高電平到時,單片機復位。通過按動按鈕產生高電平復位稱手動復位,若運行過程中需要程序從頭執行時,只需按動按鈕即可,當按下按鈕后是直接把+5V加到了RST/VPD端從而復位。復位后,P0到P3并行I/O口全為高電平,其它寄存器全部清零,只有SBUF寄存器狀態不確定。










            • 按鍵復位的電路
4. 系統程序設計

    • 監控程序設計
整個設計既要滿足設定要求來完成如計算等功能的任務功能程序,也要有可以監控儀器儀表正工作,保證其可靠性方面的監控程序。整個儀器的測量都是自動完成的,所以設計一套功能完備的監控程序是必須的也是必要的。
監控程序的主要作用是實時的響應來自系統的各種信息,按信息的類別進行處理;當系統出現故障時,能自動的采取有效的措施,消除故障,保證系統能夠繼續進行正常工作。


    • 數據采集子程序設計
數據采集用ADC0809芯片來完成,主要分為啟動、讀取數據、延時等待轉換結束、讀出轉換結果、存入指定內存單元、繼續轉換(退出)幾個步驟。ADC0809初始化后,就具有了將某一通道輸入的0-5V模擬信號轉換成對應的數字量00H-FFH,然后再存入89C52內部RAM的指定單元中。在控制方面有所區別,可以采用程序查詢方式,延時等待方式和中斷方式。數據采集轉換子程序原理框圖如圖4.1所示:










            • 數據采集轉換子程序原理框圖
    • 據處理子程序設計

由于IN0通道允許輸入的模擬電壓值范圍為0-5V,又由于A/D的采樣結果為十六進制數,但由傳感器中傳出的數據不符合要求。因此數據處理主要完成對輸入值系數調整,使輸出滿足要求,數據處理子程序可以成為整個程序的核心。

根據試驗測得的數據和對數據的精確計算得出了A/D轉換器輸入最大(5V)時對應的輸出為:5/FFH*K=196,最大十進制結果為5位。R0-R7分別為8位存儲,BCD碼是兩位十進制數,所以需要三個寄存器來保存轉換結果。

數據處理子程序是整個程序的核心。主要用來調整輸入值系數,使輸出滿足量程要求外還須使得A/D的采樣結果從十六進制數向十進制數形式轉化。





      • 系統調整
在IN0輸入的數最大為5V,要求的質量3000g對應的是5V,為十六進制向十進制轉換方便,將系數放大100倍。并用小數點位置的變化體現這一過程。3000/256=11.8,76H=118,因而能夠確定76H即為所需要的系數。




      • 數制轉換
數制之間的轉換:在二進制數制中,每向左移一位表示數乘二倍。以每四位作為一組對數分組,當第四位向第五位進位時,數由8變到16,若按十進制數制規則讀數,則丟失6,所以應進行加六調整,DA指令可完成這一調整。可見數制之間的轉換可以通過移位的方法實現,其中,移出數據的保存可以通過自乘再加進位的方法實現,因為乘二表示左移一位,左移后,低位進一,則需加一,否則加零。而通過移位已將要移入的尾數保存在了進位位中,所以能實現。




      • 防脈沖干擾平均值濾波
在工業控制等應用場合中,經常會遇到尖脈沖干擾的現象。干擾通常只會影響個別采樣點的數據,此數據與其他采樣點的數據相差比較大。如果采用一般的平均值法,則干擾將“平均”到計算結果上去,故平均值法不易消除由于脈沖干擾而引起的采樣值的偏差。為此,可采取先對N個數據進行比較,去掉其中最大值和最小值,然后計算余下的N-2個數據的算術平均值。這個方法既可以濾去脈沖干擾又可濾去小的隨機干擾。
在實際應用中,N可取任何值,但為了加快測量計算速度,一般N不能太大,一般取值為4,進行4次采樣,即為四取二再取平均值。它具有計算方便速度快,存儲量小等特點,故得到了廣泛的應用。整個程序的框圖如圖4.2所示:










            • 防脈沖干擾平均值濾波程序框圖
    • LED顯示子程序設計
顯示子程序是字符顯示,調用8155初始化命令,然后輸出寫顯示命令。在顯示過程中一定要調用延時子程序,其任務是將測量結果送顯示器顯示。通過對LED顯示子程序的編寫、鏈接、調試等操作實現對測得的物品質量進行4位LED實數顯示,上限是3000g。
8段LED共陰極常用字型碼及其對應的顯示字符見下表4.1所示:








          • 8LED共陰極常用字型碼
[td]
顯示字符
段碼
顯示字符
段碼
0
3FH
9
6FH
1
06H
A
77FH
2
5BH
b
7CH
3
4FH
c
39H
4
66H
d
5EH
5
6DH
E
79H
6
7DH
F
71H
7
07H
P
73H
8
7FH
-----
-----


5. 系統調試

這一部分分為Proteus軟件仿真調試和硬件調試兩部分,分別給出調試過程、調試時應注意的問題,分析遇到的問題及問題的解決方法,Proteus調試可截屏運行結果圖形并加以分析。

5.1 Proteus軟件仿真調試

……

5.2 硬件調試

7.小結

本文設計的小動物動態電子秤是在各種儀器連接使用的基礎上設計而成的,只有充分了解有關智能儀器、單片機、傳感器以及各部分之間的關系才能達到要求,如傳感器的精密度,它直接影響電子秤的稱重準確度。
整個課題的開發過程主要包括了硬件電路設計和軟件程序的編寫兩個部分,主要任務是開發一個以89C52單片機為核心的小動物動態電子秤,可實現物品動靜態質量的測量,并用LED顯示。通過整機聯調驗證了系統的可行性,能滿足設計要求,達到設計的指標。硬件部分使用的是電阻應變式全橋傳感器,精度較高,但輸出部分不是特別穩定,對整個電路有一定影響。其次是數據采集處理階段,此階段是對傳感器發出的信號進行量化、采集,主要分為信號放大、采集,然后進行A/D轉換,ADC0809雖然符合設計要求,但其轉換精度不高,對顯示存在影響。
通過以上論述可以發現,整個設計的實用性較高,使用的硬件都是比較能夠方便取得的,但還是有很多缺陷,如傳感器輸出部分的穩定問題,A/D轉換部分硬件的選擇,動態部分其他更完善處理的方法等,希望以后還能有所改進,能夠趨于完美。

單片機源程序如下:
  1. ML8155    EQU   0DF00H        ;8155控制字寄存器的地址
  2. K8155A    EQU   0DF01H        ;8155A口地址
  3. K8155B    EQU   0DF02H        ;8155B口地址
  4. DTIMER0   EQU   30H           ;存放延時時間的初值
  5. DTIMER1   EQU   31H           ;存放調用延時子程序的次數
  6. ADVAL     EQU   3FH           ;存放A/D轉換結果
  7. ADVAL1    EQU   3EH           ;存放中間結果
  8. TEMP      EQU   32H;
  9. TEMP1     EQU   33H;
  10. TEMP2     EQU   34H;
  11. TEMP3     EQU   35H;
  12. TEMP4     EQU   36H           ;存放中間結果
  13.           ORG   0000H
  14.           LJMP  MAIN
  15.           ORG   0100H
  16. ;*******************************************************
  17. ;* 主程序開始
  18. ;*******************************************************
  19. MAIN:     MOV    SP,#60H      ;設置堆棧區
  20.           LCALL  INIT_8155
  21. START1:   LCALL  AD_LED
  22.           SJMP   START1
  23. ;*******************************************************
  24. AD_LED:   LCALL  START
  25.           LCALL  ZHH         ;采樣值轉換為十進制
  26.           MOV    A,40H       ;把40H單元的值即千位和百位進行顯示
  27.           CALL   HEX_LED
  28.           MOV    5FH,TEMP
  29.           MOV    5EH,TEMP1
  30.           MOV    A,41H      ;把41H即十位和個位進行顯示
  31.           CALL   HEX_LED1
  32.           MOV    5DH,TEMP2
  33.           MOV    5CH,TEMP3
  34.           LCALL  WRITE_LED
  35.           RET
  36. ;******************************************************************
  37. ;*動態部分處理-防脈沖干擾算術平均值濾波,連續4次采樣,去掉最大值和最小值,把剩余的數據求平均值作為本采樣周期采樣值。R2R3中存放最大值,R4R5存放最小值,R6R7存放累加和及最后結果。
  38. ;******************************************************************
  39. START:    CLR    A          ;清"0"R2,R6,R7
  40.           MOV    R2,A       ;最大值初態
  41.           MOV    R6,A       ;累加和初態
  42.           MOV    R7,A
  43.           MOV    R5,#0FFH   ;最小值初態
  44.           MOV    R0,#04H    ;N=4
  45. DAV1:     LCALL  ADC0809    ;調用0809采樣子程序
  46.           MOV    A,ADVAL
  47.           MOV    R1,A       ;保存輸入值
  48.           ADD    A,R7
  49.           MOV    R7,A
  50.           MOV    A,R6
  51.           ADDC   A,#00H
  52.           MOV    R6,A
  53.           CLR    C          ;輸入值與最大值作比較
  54.           MOV    A,R2
  55.             SUBB   A,R1
  56.             JNC    DAV2       ;輸入值<(R2)?
  57.             MOV    A,R1       ;輸入值大于最大值
  58.             MOV    R2,A
  59. DAV2:       CLR    C          ;輸入值與最小值比較
  60.             MOV    A,R1
  61.             SUBB   A,R5
  62.             JNC    DAV3       ;輸入值<(R5)?
  63.             MOV    A,R1       ;輸入值小于最小值
  64.             MOV    R5,A
  65. DAV3:       DJNZ   R0,DAV1    ;N-1=0?
  66.             CLR    C
  67.             MOV    A,R7       ;累加和中減去最大值
  68.             SUBB   A,R2     
  69.             MOV    R7,A
  70.             MOV    A,R6
  71.             SUBB   A,#00H
  72.             MOV    R6,A
  73.             MOV    A,R7       ;累加和減去最小值
  74.           SUBB   A,R5
  75.             MOV    R7,A
  76.             MOV    A,R6
  77.             SUBB   A,#00H
  78.             MOV    R6,A
  79.             MOV    A,R6
  80.           CLR    C
  81.             RRC    A
  82.             MOV    A,R7       ;平均值
  83.             RRC    A
  84.             MOV    R7,A       ;R7中存放平均值
  85.             MOV    ADVAL1,R7
  86.             RET
  87. ;*******************************************************
  88. ;0809采樣子程序
  89. ADC0809:    PUSH   DPL
  90.             PUSH   DPH
  91.             PUSH   ACC
  92.             MOV    P2,#7FH    ;選通0809,
  93.             MOV    R1,#78H   
  94. L1:         MOVX   @R1,A      ;78H用來存放轉換結果
  95.             MOV    R2,#10H
  96. L4:         DJNZ   R2,L4      ;延時32微秒
  97. L2:         JNB    P3.3,L2    ;當EOC為1時表示轉換結束
  98.             MOVX   A,@R1      ;讀出A/D轉換的結果
  99.             MOV    ADVAL,A    ;把采樣結果放入3FH中暫存
  100.             POP    ACC
  101.             POP    DPH
  102.             POP    DPL
  103.             RET
  104. ;******************************************************************
  105. ;轉換子程序 : 3FH的內容(A/D采樣的結果)*(5V/256(FFH))=十進制結果;40H,41H.例如:3FH=0FFH, 那么程序執行后:40H=04H , 41H=99H 即4.99V
  106. ;******************************************************************
  107. ZHH:        PUSH   PSW
  108.             PUSH   ACC
  109.             SETB   RS0
  110.             MOV    A,#076H    ;3000/256= 11.8,76H=118
  111.             MOV    B,ADVAL1   ;ADVAL中存放的是經過處理之后的采樣值
  112.           MUL    AB
  113.           MOV    R4,B
  114.           MOV    R5,A
  115.           MOV    R3,#00H
  116.           MOV    R7,#0AH
  117. ;******************************************************************
  118. 十六進制數縮小10倍;
  119. ;******************************************************************
  120. DV31:     CLR    C
  121.           MOV    A,R3
  122.           SUBB   A,R7
  123.           JC     DV30
  124.           SETB   OV         ;商溢出
  125.           RET
  126. DV30:     MOV    R2,#10H    ;求R3R4R5/R7-→R4R5
  127. DM23:     CLR    C
  128.           MOV    A,R5
  129.           RLC    A
  130.           MOV    R5,A
  131.           MOV    A,R4
  132.           RLC    A
  133.           MOV    R4,A
  134.           MOV    A,R3
  135.           RLC    A
  136.           MOV    R3,A
  137.           MOV    F0,C
  138.           CLR    C
  139.           SUBB   A,R7
  140.           ANL    C,/F0
  141.             JC     DM24
  142.             MOV    R3,A
  143.             INC    R5
  144. DM24:       DJNZ   R2,DM23
  145.             MOV    A,R3       ;四舍五入
  146.             ADD    A,R3
  147.             JC     DM25
  148.             SUBB   A,R7
  149.             JC     DM26
  150. DM25:       INC    R5
  151.             MOV    A,R5
  152.             JNZ    DM26
  153.             INC    R4
  154. DM26:       CLR    OV         ;商在R4R5中
  155. ;******************************************************************
  156. 把十六進制轉換為BCD碼
  157. ;******************************************************************
  158. MAIN2:      MOV    A,R4
  159.             MOV    R2,A
  160.             MOV    A,R5
  161.             MOV    R3,A
  162. HB2:        CLR    A
  163.             MOV    R4,A
  164.             MOV    R5,A
  165.             MOV    R6,A
  166.             MOV    R7,#10H
  167. LOOP:       CLR    C
  168.             MOV    A,R3
  169.             RLC    A
  170.           MOV    R3,A
  171.           MOV    A,R2
  172.           RLC    A
  173.           MOV    R2,A
  174.           MOV    A,R6
  175.           ADDC   A,R6
  176.           DA     A
  177.           MOV    R6,A
  178.           MOV    A,R5
  179.           ADDC   A,R5
  180.           DA     A
  181.           MOV    R5,A
  182.           MOV    A,R4
  183.           ADDC   A,R4
  184.           DA     A
  185.           MOV    R4,A
  186.           DJNZ   R7,LOOP
  187.           MOV    40H,R5     ;存放高八位
  188.           MOV    41H,R6     ;存放底八位
  189.           POP    ACC
  190.           POP    PSW
  191.           RET
  192. ;******************************************************************
  193. ;將 ACC 內容,即千位和百位以十進制值顯示
  194. ;******************************************************************
  195. HEX_LED: PUSH   DPH
  196.           PUSH   DPL
  197.           PUSH   ACC
  198.           PUSH   ACC
  199.             ANL    A,#0FH     ;留下低四位
  200.             MOV    DPTR ,#BCD_CODED ;DPTR指到段碼表BCD__CODED
  201.             MOVC   A,@A+DPTR  ;取得BCD碼
  202.             MOV    TEMP1,A    ;寫到LED
  203.             POP    ACC
  204.             SWAP   A
  205.             ANL    A,#0FH     ;留下高四位
  206.             MOV    DPTR ,#BCD_CODED ;DPTR指到段碼表BCD__CODED
  207.             MOVC   A,@A+DPTR  ;取得BCD碼
  208.             MOV    TEMP,A     ;寫到LED
  209.             POP    ACC
  210.             POP    DPL
  211.             POP    DPH
  212.             RET
  213. BCD_CODED:
  214.             DB     3FH,06H,5BH,4FH,66H,6DH
  215.             DB     07DH,07H,7FH,6FH,77H
  216. ;******************************************************************
  217. ;將A中內容即十位和個位以十進制顯示
  218. ;******************************************************************
  219. HEX_LED1:   PUSH   DPH
  220.             PUSH   DPL
  221.             PUSH   ACC
  222.             PUSH   ACC
  223.             SWAP   A
  224.             ANL    A,#0FH
  225.             MOV    DPTR ,#BCD_CODEA
  226.             MOVC   A,@A+DPTR
  227.             MOV    TEMP2,A
  228.           POP    ACC
  229.           ANL    A,#0FH
  230.           MOV    DPTR,#BCD_CODEA
  231.           MOVC   A,@A+DPTR
  232.           MOV    TEMP3,A
  233.           POP    ACC
  234.           POP    DPL
  235.           POP    DPH
  236.           RET
  237. BCD_CODEA:
  238.           DB     3FH,06H,5BH,4FH,66H
  239.           DB     6DH,7DH,07H,7FH,6FH
  240. ;******************************************************************
  241. ;  顯示5FH-5CH的內容
  242. ;******************************************************************
  243. WRITE_LED:PUSH   DPL
  244.           PUSH   DPH
  245.           PUSH   ACC
  246.           MOV    R0,#5CH
  247.           MOV    R3,#0F7H
  248.           MOV    A,R3
  249. AGAIN:    MOV    DPTR,#K8155A
  250.           MOVX   @DPTR,A
  251.           MOV    A,@R0
  252.           MOV    DPTR,#K8155B
  253.           MOVX   @DPTR,A
  254.           LCALL  DELAY01
  255.           INC    R0
  256.           MOV    A,R3
  257.             JNB    ACC.0,OUT1
  258.             RR     A
  259.             MOV    R3,A
  260.             AJMP   AGAIN
  261. OUT1:       POP    ACC
  262.             POP    DPH
  263.             POP    DPL
  264.             RET
  265. ;******************************************************************
  266. INIT_8155:  PUSH   DPL
  267.             PUSH   DPH
  268.             PUSH   ACC
  269.             MOV    DPTR,#ML8155
  270.             MOV    A,#03H    ;對8155寫入控制字,A,B口作為基本輸出,C口輸入
  271.             MOVX   @DPTR,A
  272.             POP    ACC
  273.             POP    DPH
  274.             POP    DPL
  275.             RET
  276. ;******************************************************************
  277. ;延時子程序
  278. ;******************************************************************
  279. DELAY:      PUSH   DTIMER1   ;延時TIMER1*1 ms for 12MHz
  280.             PUSH   DTIMER0
  281. DELAY1:     MOV    DTIMER0,#125 ;時間為4*1μS
  282. DELAY2:     NOP              ;1個周期
  283.             NOP              ;1個周期
  284.             DJNZ   DTIMER0,DELAY2 ;2個周期
  285.           DJNZ   DTIMER1,DELAY1
  286.           POP    DTIMER0
  287.           POP    DTIMER1
  288.           RET
  289. ;****************************************
  290. ;延時 1 ms
  291. ……………………

  292. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
嵌入式系統設計報告王.doc (991.5 KB, 下載次數: 29)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区三区在线观看 | 日本欧美视频 | 天天射影院 | 91久久国产综合久久 | 国产成人jvid在线播放 | 99精品欧美一区二区三区综合在线 | 亚洲欧美一区二区三区在线 | 国产精品久久精品 | 亚洲成人网在线 | 成人免费一区二区三区视频网站 | 久久美女视频 | 亚洲精品日韩综合观看成人91 | 亚洲福利一区 | 午夜影晥 | 亚洲自拍一区在线观看 | 男插女下体视频 | 国产精品99久久久久久久vr | 美女国内精品自产拍在线播放 | 亚洲视频中文字幕 | 日本五月婷婷 | 999久久久久久久久6666 | 男人天堂99 | 精品一区二区三区av | 黄色国产在线视频 | 久久精品国产一区二区电影 | 国产一区二区影院 | 成人免费在线观看视频 | 伊人精品在线 | 欧美一区二区三区国产 | 国内精品一区二区三区 | 欧美精品久久 | 91麻豆精品国产91久久久久久 | 欧美精品在线视频 | av黄色免费在线观看 | 日韩精品免费看 | 可以免费观看的av片 | 国产二区精品视频 | 91在线精品一区二区 | 中文字幕99| 国产一区二区激情视频 | 国产一区二区三区四区三区四 |