基于單片機的汽包液位檢測與顯示_第1頁
基于單片機的汽包液位檢測與顯示_第2頁
基于單片機的汽包液位檢測與顯示_第3頁
基于單片機的汽包液位檢測與顯示_第4頁
基于單片機的汽包液位檢測與顯示_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、基于單片機的汽包液位檢測與顯示摘 要本次設計是以煤氣發生爐中汽包為背景的,煤氣發生爐生成的水煤氣作為燃料,具有解決冒黑煙,二氧化硫超標和燃油,天然氣鍋爐運行成本高的優點,在生產中具有重要作用,汽包是煤氣發生爐的重要組成部分,汽包液位在正常范圍內是設備正常運行的一項重要的工作指標和安全性能指標,所以液位的準確檢測與顯示就尤為重要。本文介紹了以液位傳感器,A/D轉換芯片ADC0809,以及MCS51單片機作為主控元件的液位檢測系統的設計方法。本文分別從液位檢測,A/D轉換,LED顯示,超限報警等幾個方面對硬件電路進行了比較詳細的介紹,然后對A/D轉換程序,LED顯示程序,超限報警程序等做了比較詳細

2、的闡述,并用流程圖做進一步的解釋。通過軟件和硬件的聯合調試,實現了在一定范圍內對液位的調節,動態顯示出液位結果,完全實現了任務書上的要求。關鍵詞:液位檢測、A/D轉換、液位傳感器目錄第1章 緒論11.1應用環境簡介 11.2本次課程設計的意 11.3 本次課程設計的任務 2第2章 硬件電路設計32.1 硬件電路工作原理 32.2 硬件電路設計 32.2.1 系統總體設計框圖 32.2.2 核心部件的介紹 42.3 硬件電路各模塊設計102.3.1 電源電路設計102.3.2 單片機最小系統電路設計102.3.3 顯示電路設計112.3.4 液位傳感器的接口電路設計122.3.5 AT89C51

3、與ADC0809的接口電路設計132.3.6 報警電路設計142.4 硬件電路總結14第3章 軟件設計 153.1 AT89C51的I/O口應用 153.1.1 P0口的信號輸入 153.1.2 P1口的信號輸入 163.1.3 P2口的信號輸入 163.1.4 P3口的信號輸入 163.2 軟件模塊設計173.2.1 主程序的設計173.2.2 A/D轉換的設計183.2.3 顯示子程序的設計203.2.4 報警子程序的設計223.3 軟件設計總結24第4章 調試254.1 仿真電路調試 254.2軟件程序調試264.3軟件程序調試出現的問題及解決方法 27第5章 結論28參考文獻 28附錄

4、 29第1章 緒 論 1.1 應用環境簡介 此次課程設計是應用與煤氣發生爐中汽包的液位檢測與顯示。煤氣發生爐是為機械、冶金、建材、輕工、化工、耐材等行業熱加工車間提供混合發生爐煤氣的設備。煤氣發生爐工作原理是以煤為原料生產煤氣,供燃氣設備使用的裝置。固體原料煤從爐頂部加入,隨煤氣爐的運行向下移動,在與從爐底進入的氣化劑(空氣、蒸汽)逆流相遇的同時,受爐底燃料層高溫氣體加熱,發生物理、化學反應,產生粗煤氣。此粗煤氣(即熱煤氣)經粗除塵后可直接供燃燒設備使用。汽包的概念是指氣壓通過水循環導致氣壓下降或上升,也可以理解為汽包是氣體和水分融合后形成的氣壓變化,極限壓力中的空氣與水分子會提高氣體的壓力上

5、升,導致高壓達到一定數值后產生的壓力集分子。工業中汽包罐是能夠承受汽包產生的空氣壓力和水位壓力的一種工業設備。汽包的作用主要有:1:是工質加熱、蒸發、過熱三過程的連接樞紐,保證鍋爐正常的水循環;2:內部有汽水分離裝置和連續排污裝置,保證鍋爐蒸汽品質;3:有一定水量,具有一定蓄熱能力,緩和汽壓的變化速度;4:汽包上有壓力表、水位計、事故放水、安全閥等設備,保證鍋爐安全運行。1.2 本次課程設計的意義本次設計是以煤氣發生爐中汽包為背景的,煤氣發生爐生成的水煤氣作為燃料,具有解決冒黑煙,二氧化硫超標和燃油,天然氣鍋爐運行成本高的優點,在生產中具有重要作用,汽包是煤氣發生爐的重要組成部分,汽包液位在正

6、常范圍內是設備正常運行的一項重要的工作指標和安全性能指標,所以液位的準確檢測與顯示就尤為重要。1.3 本次課程設計的任務以煤氣發生爐汽包水位控制為背景,利用單片機技術實現對汽包水位的采集與顯示。具體要求如下:1. 掌握計算機控制系統中模擬量輸入通道的的設計方法,以及程序設計方法。2. 選擇合適的液位傳感器,量程為01.2m,要求測量精度不超過±1%。3. 掌握常用接口芯片的工作原理與接口設計。4. 選用MCS-51單片機,完成對汽包水位的定時采樣和處理,并通過LED電路顯示。5. 繪制硬件系統原理和軟件程序流程圖,并編寫用戶程序。6. 撰寫課程設計報告一份,要求字數3000-5000

7、字。第2章 硬件電路設計2.1 硬件電路工作原理該系統以AT89C51作為核心控制部件,外加傳感器,一片A/D轉換芯片和數碼管來完成系統的預期任務,即液位的檢測、顯示和超限報警。傳感器實現液位信號到電壓信號的轉換,再由8位A/D轉換芯片ADC0809將模擬信號轉換為數字信號,實現液位信息的輸入,AT89C51從ADC0809讀取液位信息后進行數據處理和超限判斷,隨后將處理過的數據輸出到數碼管顯示,設置最高液位和最低液位,若液位超限則由單片機報警。2.2 硬件電路設計2.2.1 系統總體設計框圖圖21 系統總體設計框圖各部分功能:1. 電源部分提供+5V電壓供系統各部分使用。2. 傳感器實現液位

8、信息到電壓信號的轉換。3. ADC0809將傳感器輸出的電壓信號經A/D轉換后送到單片機。4. MCS51為處理器,實現液位信息的接收、數據處理、和輸出到數碼管。5. 蜂鳴器部分在單片機檢測到液位超限是由單片機驅動LED燈亮滅報警。6. 單片機對液位數據處理后輸出,數碼管顯示。2.2.2 核心芯片的介紹(1)單片機AT89C51MCS-51單片機是在一塊芯片中集成了CPU,RAM,ROM、定時器/計數器和多種功能的I/O線等一臺計算機所需要的基本功能部件。MCS-51單片機內包含下列幾個部件: 一個8位CPU; 一個片內振蕩器及時鐘電路; 4K字節ROM程序存儲器; 128字節RAM數據存儲器

9、; 兩個16位定時器/計數器; 可尋址64K外部數據存儲器和64K外部程序存儲器空間的控制電路; 32條可編程的I/O線(四個8位并行I/O端口); 一個可編程全雙工串行口; 具有五個中斷源、兩個優先級嵌套中斷結構。振蕩器及定時電路8051CPU4K字節ROM128字節RAM2個16位定時器/計數器64K總線擴展控制可編程I/O可編程串行串行口頻率基準源 計數器 中斷 控制 并行 I/O 口 串行輸入 串行輸出 圖2-2 8051單片機框圖(2)A/D轉換器ADC0809A/D轉換芯片ADC0809為8路模擬信號的分時采集,片內有8路模擬選通開關,以及相應的通道抵制鎖存用譯碼電路,其轉換時間為

10、100s左右。1 ADC0809的內部結構:圖23 ADC0809的內部邏輯結構圖圖中多路開關可選通8個模擬通道,允許8路模擬量分時輸入,共用一個A/D轉換器進行轉換,這是一種經濟的多路數據采集方法。地址鎖存與譯碼電路完成對A、B、C 3個地址位進行鎖存和譯碼,其譯碼輸出用于通道選擇,其轉換結果通過三態輸出鎖存器存放、輸出,因此可以直接與系統數據總線相連,圖24 ADC0809的通道選擇表 圖25 ADC0809引腳圖2 ADC0809功能介紹:分辨率為8位;最大不可調誤差小于+_1LSB;單一+5V供電,模擬輸入范圍05V;具有鎖存控制的8路模擬開關;可鎖存三態輸出,輸出與TTL兼容;功耗為

11、15mw;不必進行零點和滿度調整;轉換速度取決芯片的始終頻率,它的時鐘為10kHZ1.2MHZ.當時鐘為500KHZ,轉換速度為100us。3 ADC0809的原理ADC0809是一款8位AD轉換器,數據獲取的關鍵部分是它的8位模/數轉換器。這個部分主要由N位逐次逼近寄存器SAR,D/A轉換器,比較器,置數選擇電路組成。轉換過程如下:A選選置數電路置SAR的最高位為“1”,其余位為“0”,經D/A轉換器轉換成的模擬電壓Uo與輸入模擬電壓Ui在電壓比較器進行比較,若Ui大于等于Uo,則保留最高位“1”,若Ui小于Uo,則最高位為“0”。B置次高位為“1”,低位全為“0”,按上述步驟進行轉換,比較

12、,判斷。C重復此過程,直到確定SAR的最低位的值取“1”,還是“0”為止。此時,SAR內容就是對應的輸入模擬電壓轉換后的數字量。(3)液壓傳感器常用基本的液位傳感器原理,分為差壓式水位計,電極式水位計和電容式液壓傳感器1.差壓式水位計根據液體靜力學原理,通過測量變動水位和恒定水位之間的靜壓差,將差壓值轉換為水位值,再通過差壓變送器將汽包水位轉換為隨水位連續變化的電信號,作為自動給水控制系統中的重要參數。實際應用中差壓式水位計存在的問題是:測量鍋爐汽包水位時,汽包壓力變化使得“水位差壓”的關系也發生變化,因而給測量帶來很大的誤差。現在普遍采用具有汽包壓力補償作用的平衡容器測量方法,但其準確度仍受

13、到很大限制。因為設計計算的平衡容器補償裝置是按水位處于零水位情況下得出的,而運行中鍋爐水位偏離零水位時,就會引起測量誤差。當蒸汽壓力突然下降時,正壓容器內的凝結水被蒸發掉還會導致儀表指示失常。這些都給鍋爐運行操作造成很大困難,尤其投入自動給水調節時將產生錯誤動作,導致鍋爐事故發生。差壓式水位計比較適合于鍋爐穩定運行時的水位測量,當運行參數變化很大時誤差也就很大。因此在實際運行中盡量避免在差壓測量系統上工作( 例如排污、校驗時等) 。如必須工作時,須與鍋爐操作人員聯系好,盡量減少對差壓測量的影響,例如,在2號窯余熱鍋爐運行初期,曾因在差壓水位計的平衡容器上拆除保溫引起汽包水位指示錯誤產生了鍋爐事

14、故( 因未與鍋爐運行人員事先聯系,自動給水系統未解除) 。2.電極式水位計利用飽和蒸汽與飽和蒸汽凝結水的電導率的差異,將非電量的鍋爐水位變化轉換為電信號,并由二次儀表遠距離地顯示水位。電極式水位計基本上克服了汽包壓力變化的影響,可用于鍋爐啟停及變參數運行中。電極式水位計離汽包很近,電極至二次儀表全部是電氣信號傳遞,所以這種儀表不僅遲延小而且誤差小,不需要進行誤差計算與調整,使得儀表的檢修與校驗大為簡化。3.電容式液壓傳感器圖3-1-2 為傳感器部分的結構原理圖。它主要是由細長的不銹鋼管(半徑為R1 ) 、同軸絕緣導線(半徑為R0 ) 以及其被測液體共同構成的金屬圓柱形電容器構成。該傳感器主要利

15、用其兩電極的覆蓋面積隨被測液體液位的變化而變化, 從而引起對應電容量變化的關系進行液位測量 圖2-6由圖2-6可知, 當可測量液位H = 0 時, 不銹鋼管與同軸絕緣導線構成的金屬圓柱形電容器之間存在電容C0 , 根據文獻得到電容量為: (1)(1)式中, C0 為電容量, 單位為F ; 0 為容器內氣體的等效介電常數,單位為F/ m; L 為液位最大高度; R1 為不銹鋼管半徑;R0 為絕緣導線半徑, 單位為m。當可測量液位為H 時, 不銹鋼管與同軸絕緣電線之間存在電容CH : (2)(2)式中, 為容器內液體的等效介電常數, 單位為F/ m。因此, 當傳感器內液位由零增加到H 時, 其電容

16、的變化量C 可由式(1) 和式(2) 得 (3)由式(3)式可知, 參數0 , , R1 , R0 都是定值。所以電容的變化量C 與液位變化量H 呈近似線性關系。因為參數0 , , R1 , R0 , L 都是定值, 由式(2) 變形可得:CH = a0 + b0 H ( a0 和b0 為常數) (4)。可見, 傳感器的電容量值CH 的大小與電容器浸入液體的深度H 成線性關系。由此, 只要測出電容值便能計算出水位。我們這次選擇電容式液壓傳感器為CR-603系列智能電容式鍋爐汽包液位計,是基于電容測量原理的液位計。它采用斷層掃描技術,通過測量分析桶內的液態,氣態介質的介電常數,補償溫度、壓力等變

17、化帶來的影響。經過微處理器運算處理后輸出符合工業標準的4-20mA電流信號,也可輸出RS485數字信號供給使用。液位計在運行過程中實時動態補償,將溫度、壓力變化等因素減少到最小,長期穩定性好,是一款全工況,高性價比的汽包液位計。技術特點:1、兩線制電流環; 2、具有全工況條件( 鍋爐啟、停、排污、工況等)下液位準確連續測控功能;3、采取斷層掃描技術,能夠對液態、汽態介質的介電常數變化連續測量補償;4、長期穩定性好;5、經C E 認證的良好的電磁兼容特性;6、耐高溫、高壓、長壽命;CR-6031技術指標工作電壓: 最大:28V     最小:20V輸出電壓

18、:05V(±0.5%)防爆參數:Ui=30V,Ii=100mA ,Pi=0.75W  Ci=100pF,Li=10uH   工作壓力:22MPa  max測量范圍:1500mm                              &#

19、160;  測量周期:0.5秒                            介質溫度:500 max.            防護等級: IP652.3 硬件電路各模塊設計2.3.1 電源電路設計圖27 電源電

20、路本系統供電為市電AC220v,經變壓器TR1降為交流6v,經整流橋堆BR1整流后得到脈動直流電壓6v,再經三端穩壓器LM7805得到VCC(+5v) ,其中電解電容C4、C6、起濾波作用,C5、C7是旁路電容,起抑制干擾的作用。2.3.2 單片機最小系統電路設計圖28 單片機最小系統電路RST:復位輸入。在單片機工作期間,當此引腳上出現連接2個機器周期的高電平時可實現復位操作。復位電路除了具有上電復位功能外,還可通過復位鍵迫使RESET為高電平。當系統通電時,RESET引腳獲得高電平,隨著電容的充電,RESET引腳的高電平將逐漸下降。RESET的高電平只有保持足夠的時間(2個機械周期),單片

21、機才可以進行復位操作 。時鐘電路采用12MHz的晶振,因為ADC0809的工作時鐘最高允許值為12MHz,單片機ALE管腳2分頻后為500KHz,可以作為ADC0809轉換器的時鐘信號CLK。XTAL1:反向放大振蕩器的輸入及內部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。XTAL1腳是內部反相放大器的輸入端,而XTAL2腳是該放大器的輸出端。在晶體振蕩中,晶體工作于基本響應模式,它作為一個感抗與外部電容形成并聯諧振,使正反饋放大器維持震蕩。所選電容為瓷片電容22PF,因為22PF對于工作于1MHZ以上的晶振都能獲得良好的效果。2.3.3 顯示電路設計圖29 顯示電路本設計由P1口控

22、制七段發光二極管亮或滅,使用共陰極8段數碼管,由圖2.9可知,要使七段顯示器的某一段亮,則應該是與該段相連的段選寄存器即P1口的某位線輸出為1。若使某段熄滅,則必須輸出0。例如要顯示數字4。則應使P1口的P1.7-P1.0輸出為11100110B,若用一個字節表示該輸出值,即字形代碼為66H,依此類推,可以得到09一共10個十進制數的字形代碼依次為3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH。本設計由P2.0,P2.1,P2.2,P2.3做位選,以控制哪一位七段數碼管顯示,例如,要求第一位數碼管顯示,則應設置P2.0為“1”,P2.1,P2.2,P2.3為“0

23、”。PNP型三極管9012起到增加驅動電流的目的。電阻R12R19控制通過數碼管的電流,R20R23控制通過三極管9012的電流,R4R11為單片機P1口的上拉電阻。2.3.4 液位傳感器的接口電路設計圖210 電位器RV1與ADC0809接口設計所選液位傳感器能夠根據不同的液位產生不同的電壓,電壓值大小范圍為0.54.5V,且能夠便于遠距離傳輸。由于芯片ADC0809的輸入為05V的電壓,仿真時需要將輸入信號轉換為電壓信號,為此外接一電位器R=1k,把電壓轉換成05V電壓。在設計中,把電位器的1,3腳接+5V電壓和地線,調節滑鈕2能夠很好的得到05V電壓,因此可以用電位器模擬液位傳感器。2.

24、3.5 AT89C51與ADC0809的接口電路設計圖211 AT89C51與ADC0809的接口電路ADC0809與AT89C51相連接,ADC0809中的START與ALE相連通,ALE地址鎖存允許信號,對應ALE上跳沿,A、B、C地址狀態送入地址鎖存器中。START轉換啟動信號。START上升沿時,復位ADC0809;START下降沿時啟動芯片,開始進行A/D轉換;在A/D轉換期間,START應保持 低電平。當ALE上升沿時,ALE鎖存數據,A/D轉換截止,當ALE下降沿時,START低電平,ALE低電平,不鎖存,A/D轉換開始。P2.4,P2.5,P2.6,P2.7分別控制CLK,ST

25、ART和ALE,EOC,OE信號,其控制A/D轉換的開始和截止。CLK使用AT89C51內部時鐘信號。ADDA,ADDB,ADDC相連通接地,信號輸入為000,表示輸入通道選擇為IN0口。8位數據信號線2-12-8與單片機的P1.0P1.7相連,實現ADC0809與AT89C51的數據傳輸。Vref參考電源參考電壓用來與輸入的模擬信號進行比較,作為逐次逼近的基準。其典型值為+5V(Vref(+)=+5V, Vref(-)=0V)。2.3.6 報警電路設計圖212 報警電路本電路的P3.0,P3.1作為高位和低位的報警控制線,通過設置高低液位報警線來實現報警功能。如果當前液位高于設置的高位報警線

26、時,P3.0置低電平,高位報警燈亮。如果當前液位低于于設置的低位報警線時,P3.1置低電平,低位報警燈亮。如果當前液位低于設置的高位液位且高于低位液位時,高位報警燈和低位報警燈滅。2.4 硬件電路總結在本章中主要講述了硬件電路的結構,電路原理和部分芯片的功能,根據電路組成情況分成六個電路模塊,分別介紹了各個電路模塊的工作原理和功能,通過本次設計掌握了更多的基本硬件電路設計原理及其工作特點。并自行繪制電路原理圖: 圖213 電路原理圖第3章 軟件設計3.1 AT89C51的I/O口應用AT89C51共有P0,P1,P2,P3,4個8位的并行雙向I/O口。各個I/O口實現不同的功能,詳細情況如下。

27、3.1.1 P0口的信號輸入在程序中將P0口做為段選口使用,顯示十位數字的段選信號,下例為顯示十位數字的指令:MOV DPTR,#TABLE ;取段碼表首址。MOV A,LED_2 ;取顯示的十位數字。MOVC A,A+DPTR ;取段碼。MOV P0,A ;輸出段碼的顯示。TABLE: DB 3FH,06H,5BH,4FH,66H ;共陰極數碼管表DB 6DH,7DH,07H,7FH,6FH3.1.2 P1口的信號輸入在程序中將P0口作為輸入口,用來讀A/D轉換值。設計中,要求選通通道0,并把轉化后得到數字量存入內部RAM的35H單元中,下例為把轉化后的數字量存入內部RAM中的指令:CLR

28、P2.5, ;SRART置0,MOV A,P1 ;MOV R7,AMOV 35H,R73.1.3 P2口的信號輸入P2.0,P2.1,P2.2,P2.3做數碼管的位選信號用,要哪個數碼管亮,則置相應位高電平,就可將其選中。例如要求顯示第一個數碼管,端口設置指令為:CLR P2.0CLR P2.1CLR P2.2CLR P2.3P2.4,P2.5,P2.6,P2.7作為通用I/O口使用,與ADC0809連接。P2.4作為A/D轉換的CLK信號,P2.5作為開始A/D轉換的啟動信號,P2.6作為查詢A/D轉換是否完成的判斷信號,P2.7作為輸出A/D轉換的數字量允許信號。下例為P2.4,P2.5,

29、P2.6,P2.7作為通用I/O口使用的指令:CLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.73.1.4 P3口的信號輸入P3.0、P3.1、P3.7作為通用I/O口使用,與LED燈和蜂鳴器相連,輸出報警信號,如果當前液位高于設置的高位報警線時,P3.0置低電平,高位報警燈亮。如果當前液位低于于設置的低位報警線時,P3.1置低電平,低位報警燈亮。如果當前液位低于設置的高位液位且高于低位液位時,高位報警燈和低位報警燈滅。H_ALM BIT P3.0L_ALM BIT P3.1LALM: CLR L_ALM ;低位報警 SETB TR1 CLR FL

30、AG LJMP PROCHALM: CLR H_ALM ;高位報警 SETB TR1 SETB FLAG LJMP PROC3.2 軟件模塊設計3.2.1 主程序的設計系統分為初始化,A/D轉換,十進制轉換,LED顯示,電機控制和報警電路。因此整個程序需要包含上述六個子程序。其中,LED_0 定義地址30H,以存放顯示十進制的小數點后十位數字。LED_1 定義地址31H,以存放顯示十進制的小數點后個位數字。LED_2 定義地址32H,以存放顯示十進制的個位數字。ADC 定義地址35H,以存放經A/D轉換后的數字。流程圖如下:圖31 主程序流程圖3.2.2 A/D轉換的設計ADC0809芯片實現

31、A/D轉換的時間為0.1ms左右,A/D轉換后得到的數字量應及時傳送到單片機進行處理。OE輸出允許信號。用于控制三態輸出鎖存器向單片機輸出轉換得到的數據。OE=0,輸出數據線呈高阻;OE=1,輸出轉換得到的數據。ALE地址鎖存允許信號。對應ALE上跳沿,A、B、C地址狀態送入地址鎖存器中。START轉換啟動信號。START上升沿時,復位ADC0809;START下降沿時啟動芯片,開始進行A/D轉換;在A/D轉換期間,START應保持 低電平。本信號有時簡寫為ST。CLK時鐘信號。ADC0809的內部沒有時鐘電路,所需時鐘信號由外界提供,因此有時鐘信號引腳。通常使用頻率為500KHz的時鐘信號。

32、EOC轉換結束信號。EOC=0,正在進行轉換;EOC=1,轉換結束。使用中該狀態信號即可作為查詢的狀態標志,又可作為中斷請求信號使用。CLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7CLR STSETB STCLR ST ;啟動轉換JNB EOC,$ ;等待輸出結果SETB OE ;允許輸出MOV ADC,P1 ;讀取A/D轉換結果CLR OE ;關閉輸出MOV A,ADC ;將A/D轉換結果轉換成BCD碼圖32 A/D轉換程序流程圖3.2.3 顯示子程序的設計設計中采用動態掃描法,實現四位數碼管的數值顯示,并顯示小數點。數碼管動態顯示接口是單片

33、機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,只要將需要顯示的數碼管的選通控制打開,該位就顯示出字形,沒有選通的數碼管就不會亮。通過分時輪流控制各個數碼管的的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為12ms,由于人的視覺暫留現象及發光二極

34、管的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示數據,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O端口,而且功耗更低通過逐次選通P2.0,P2.1 ,P2.2,P2.3依次送十進制的相應字段碼給P1口,并延時5ms完成顯示。顯示程序:MOV LED_0,#00HMOV LED_1,#00HMOV LED_2,#00HMOV LED_3,#00HMOV DPTR,#TABLE ;送段碼表首地址DISP: MOV A,LED_2 MOVC A,A+DPTRORL A,#80H ;顯示小數點 MOV BUFFER+2,A ;

35、送顯示緩存 CLR P2.1 MOV P0,A LCALL DELAY SETB P2.1SETB P2.0 MOV A,LED_1 MOVC A,A+DPTR CLR P2.0 MOV P0,A LCALL DELAY RETDELAY: MOV R6,#10 ;延時5ms圖33 顯示子程序流程圖3.2.4 報警子程序的設計本電路的P3.0,P3.1作為高位和低位的報警控制線,通過設置高低液位報警線來實現報警功能。本設計要求為:液位在小于1.5米時低位報警燈亮進行低位報警,液位在1.54米時燈都不亮,液位在大于4米時高位報警燈亮進行高位報警。報警程序:MOV H_TEMP,#153 ;204

36、/255=0.6 高于80%報警MOV L_TEMP,#77 ;77/255=0.3 低于30%報警MOV A,ADC ;將A/D轉換結果轉換成BCD碼 SUBB A,L_TEMP ;判斷是否低于下限 JC LALM MOV A,H_TEMP MOV R0,ADC SUBB A,R0 ;判斷是否高于上限 JC HALM CLR TR1 LJMP PROCLALM: CLR L_ALM ;低位報警 SETB TR1 CLR FLAG LJMP PROCHALM: CLR H_ALM ;高位報警 SETB TR1 SETB FLAG LJMP PROC圖34 報警子程序流程圖3.3 軟件設計總結在

37、本章中主要講述了軟件設計的一些情況,對軟件的一些功能進行了解釋,根據程序組成情況分成六個程序模塊,分別介紹了各個程序模塊的工作原理和功能,對部分程序進行了簡單的注釋,通過流程圖直觀的表現出各個模塊的作用及程序運行過程。在本次的軟件設計中,運用Keil進行編程,將編輯好的程序進行編譯,查看是否語法錯誤,如果沒有錯誤,設置晶振頻率,編譯生成.Hex文件,進行仿真。在此過程中,我收益良多,熟悉了單片機匯編語言的使用,對單片機的編程有了進一步的理解,通過和同學的交流,學會了很多以前自己不能解決的問題。第4章 調 試4.1 仿真電路調試在仿真程序中通過模塊編程,用Proteus軟件與Keil軟件相結合進

38、行調試,(調試程序見附錄I)1建立工程文件1)點擊菜單project,選擇new project:2)然后選擇要保存的路徑,輸入工程文件的名字,比如保存到論文目錄里,工程文件的名字為yang.uv2.3)這時會彈出一個對話框,選擇單片機的型號,你可以根據你使用的單片機來選擇,keil c51幾乎支持所有要求你的51核的單片機,這里選AT89S51。這時要新建一個源程序文件,建立一個匯編文件,輸入編寫好的程序。保存。選擇要保存的路徑,在文件名里輸入文件名,注意一定要輸入擴展名,這里有匯編語言,文件名為:yang.asm。2. 調試程序(1)點擊Target 1前面的+號,展開里面的內容sourc

39、e Group1:(2)用右鍵點擊Sourece Group 1(注意用鼠標的右鍵,而不是左鍵),將彈出一個菜單,選擇Add Files to Guoup'Source Group 1'.(3)選擇剛才的文件yang.asm.這時在source group 1 里就有yang.asm文件(4)單擊“Project”菜單,再在下拉菜單中單擊“Built Target”選項(或者使用快捷鍵F7),編譯成功后,再單擊“Project”菜單,在下拉菜單中單擊“Start/Stop Debug Session”(或者使用快捷鍵Ctrl+F5)。硬件仿真原理圖如下圖圖41 仿真原理圖3.

40、仿真結果通過改變電位器阻值的變化來模擬液位的變化,液位數值在數碼管上顯示,液位在小于1.5米時低位報警燈報警,液位在1.5米到4.0米時不報警,液位大于4.0米時高位報警燈報警。芯片ADC0809的轉換精度為1/256,所以本電路的最小分辨率為0.05V。4.2 軟件程序調試本設計調試程序使用的是Keil編譯軟件和Proteus仿真軟件。先將編輯好的程序進行編譯,檢查程序是否有語法上的錯誤。在編譯、連接無錯誤和警告后,把程序進行分塊調試。然后用單步調試的方法進行檢查寄存器中的內容是否與預期結果一致。例如:顯示部分,在調試中,可以用相關窗口查看相應寄存器的內容,35H單元存放采樣值,30H,31

41、H,32H,33H單元內容則為其轉換值,再對比顯示的數據就可以知道是否正確。運行編譯生成.hex文件,然后在Proteus中加入.hex文件,進行仿真,查看顯示是否正確,能否達到要求。進行單步調試,查看硬件電路的電平是否和預期結果一致。用STC_ISP_V3.1軟件將.hex文件燒寫進單片機中,與硬件相連接。通電后,用萬用表檢查電路的電壓是否與仿真圖中的電壓一致,用仿真結果驗證硬件電路是否正確。4.3 軟件程序調試出現的問題及解決方法1在仿真時,ADC0809不能進行仿真。解決方法:在仿真時使用Proteus軟件,芯片ADC0809不能進行仿真,系統提示是沒有模型,于是仿真時采用ADC0808

42、芯片進行。由于ADC0809與ADC0808的區別在于:ADC0808的輸出數據線D0D7是從高位依次到低位,ADC0809的輸出數據線D0D7是從低位依次到高位。于是采用ADC0808進行仿真,ADC0809用在實物電路上。2在Keil中編輯程序時,程序出現有錯誤,其不能運行。解決方法:在Keil中運行后雙擊出現的錯誤,錯誤行被指出來,根據程序的上下文,改正出現的錯誤。由于在程序中START后少添加了“:”,使得程序不能運行,改正后程序運行正常。第5章 結 論在本次畢業設計中完成了電路原理圖設計,PCB板設計,電路焊接,程序的設計,軟、硬件的聯機調試。硬件電路的各個模塊,包括單片機最小系統電

43、路,A/D轉換電路,數碼管顯示電路,報警電路等都能夠正常工作。在與軟件進行聯機調試時,通過改變電位器阻值的變化來模擬液位的變化,液位數值在數碼管上顯示,液位在小于1.5米時低位報警燈報警,液位在1.5米到4.0米時不報警,液位大于4.0米時高位報警燈報警。芯片ADC0809的轉換精度為1/256,所以本電路的最小分辨率為1/256V。本次畢業設計完成了任務書下達的所有任務,實現了液位的檢測及液位的顯示,并實現了超限報警。顯示液位范圍為05m,顯示的最小分辨率為1/256V。它是一個可以應用于一般工業的液位檢測及顯示系統的設計方案,測量范圍和測量精度滿足課程設計需要。 參考文獻【1】 王再英等,

44、過程控制與儀表,機械工業出版社,2006【2】 潘新民,王燕芳,微型計算機控制技術,高等教育出版社,2001【3】 李建忠,單片機原理及應用,西安電子科技大學出版社,2008【4】 楊居義,單片機課程設計指導,清華大學出版社,2009【5】 王錦標,方崇智,過程計算機控制,清華大學出版社,1992附錄2:參考程序LED_0 EQU 30HLED_1 EQU 31HLED_2 EQU 32HLED_3 EQU 33HBUFFER EQU 34H ;顯示緩存ADC EQU 35HTCNTA EQU 36HTCNTB EQU 37HH_TEMP EQU 38H ;液位上限L_TEMP EQU 39H ;液位下限FLAG BIT 00HH_ALM BIT P3.0L_ALM BIT P3.1SOUND BIT P3.7CLOCK BIT P2.4ST BIT P2.5EOC BIT P2.6OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 1BH LJMP INT_

溫馨提示

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

評論

0/150

提交評論