




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、瓦斯傳感器數據處理及數顯子程序編程調試 摘 要 現階段煤礦安全問題已經成為全社會關注的焦點,成為關系到人民生命財產,甚至影響建立和諧社會的重大問題。研發出高質量、高性能、高可靠性、低成本的煤礦瓦斯檢測報警系統無疑對解決這一重大問題有很大幫助。采用煤礦瓦斯檢測報警系統,能有效地對瓦斯氣體狀態進行連續跟蹤檢測和報警。為我們調控瓦斯氣體濃度,保障工人在最安全的狀態下工作,提供及時準確的數據。本文根據總體設計的要求,在總體設計方案的基礎上,提出切實可行的瓦斯傳感器數據處理及數字顯示的方案。所設計的方案可以保證系統能高效,穩定地實現設計的所有要求。本文論述了該系統的硬件和軟件設計,并對數據處理及數顯子程
2、序編程調試進行了詳細的介紹。關鍵詞 瓦斯傳感器;stc單片機;ad轉換;數顯 intermediate injection mould designmachincal designing manufacturing and automation major wang shao-fengabstract:this topic is intermediate injection mould design. the topic of the problems involved in the following aspects: the parts of measurement, analysis,
3、drawing, plastic mold structure design, part of the mould parts processing procedures and after processing mould assembly. the main problem is plastic mould design.by surveying and intermediates for the plastic parts for linear structure analysis, design of a pair of the production of plastic mold t
4、wo cavities. the mould chose double parting surface, using a runner gating system, putting out feed-in institution, double guide column type institution, the mould structure column orientation, steering mechanism of forming parts structure form, and the size of molding is calculated, the injection m
5、achine tooling for the preliminary selection and checking.key words: plastic mold; process analysis ; double parting surface目 錄1.引言2.系統的功能和設計的要求2.1 該系統所要實現的主要功能2.2 系統設計要求2.3 系統的調試和試運行要求3.主要元器件的選擇3.1單片機的選型3.2 傳感元件的選擇3.3變壓芯片的選擇4.硬件電路設計4.1 硬件總體結構4.2 傳感器信號放大電路4.3 變壓電路4.4 時鐘電路4.5 led顯示電路 4.6 聲光報警電路4.7 紅外
6、遙控部分5.系統軟件設計5.1單片機程序設計的特點5.2系統初始化子程序5.3系統參數設定子程序5.4自檢子程序5.5數據處理子程序5.6 led顯示子程序5.7 紅外遙控子程序5.8 軟件抗干擾措施6.參考文獻7.附錄8.致謝1 引言當前,隨著采礦技術的不斷發展,井下作業的安全越來越有保障,但是仍然有許多采礦企業的機械化程度低,對現場采礦的工作人員的生命安全造成潛在的威脅,特別是針對瓦斯氣體的檢測和報警仍舊存在隱患,每年由于瓦斯泄露造成的特大事故依然很多,因此對瓦斯氣體的檢測和報警是一項必要的工作。我們可以利用氣體傳感器技術,將瓦斯氣體的濃度轉換成與之有關系的電信號,通過對電信號的數據處理及
7、數顯轉換成濃度信號,將檢測到的瓦斯氣體濃度和標準值進行比較,當高過一定濃度值時候進行相應的聲光報警,提醒正在作業的人員進行相應的處理,組織人員撤離并對礦井通風排氣,避免不安全事故的發生。隨著現代技術的發展,各種瓦斯傳感器的數據處理及數顯軟件發展的非常的迅速,可以運用軟件編程的方法對瓦斯傳感器的數據進行各種處理及數字顯示。通過各種算法(算術平均值法、移動式算術平均法、中值法、競賽評分法、超值濾波法等)對信號進行數字濾波處理,然后進行、量程轉換、報警等功能,并可以將處理后的數據轉換成bcd碼,通過調用相應的段碼送去顯示,從而實現其數字顯示功能。但現有程序大多沒有針對具體的問題采用合適的濾波算法,并
8、且不具備零位自校準和合適的線性化處理功能。另外,由于匯編語言針對不同的操作系統平臺,不同的微控制器,指令都是完全不同的,即使指令相似,也不具有可移植性,而采用c編程則能很好的解決上述問題所以我們采用c編程進行數據處理和數字顯示。2 系統的功能和設計的要求2.1該系統所要實現的主要功能2.1.1硬件功能(1)適用于煤礦井下采掘工作面、回風巷道、機電峒室等有瓦斯爆炸氣體環境中對瓦斯濃度進行連續測定和報警。(2)顯示功能:實時顯示瓦斯濃度和紅外遙控過程。(3)測量范圍:0-4%ch4(4)測量誤差:6m ,遙控控制傳感器系統的零點修正,測量范圍,報警上線。2.1.2 軟件功能要求(1)瓦斯傳感器的數
9、據采集控制。(2)軟件進行傳感器系統非線性補償。(3)軟件進行傳感器零點修正。(4)軟件進行傳感器頻率輸出信號精度修正。(5)控制單片機接收遙控器信號并譯碼。(6)完成系統的聲光報警功能。2.2 系統設計要求2.2.1系統總體設計要求進行總體設計時,首先要對用戶的要求,控制對象,硬件資源以及現場的情況作出調研,尤其是對用戶的要求要詳細詢問記錄,并做好備案,以免日后做大的修改,浪費人力物力。另外,還要明確各項指標的要求,例如被測對象的精度要求,量程范圍,信號類型等等。在此基礎上編制出完整的設計任務書。12.2.2系統硬件設計要求硬件設計要根據總體方案的要求確定合理,高可靠性,高精度,低功耗的硬件
10、系統。因為井下要求本安防爆,所以對傳感器提出了較為苛刻的功耗要求,因此,在設計系統硬件時要將降低功耗始終放在首位。另外,在設計時還要充分考慮軟硬件的分工和配合,軟件能實現的功能盡量由軟件實現,這樣可有效的降低硬件線路的復雜程度,降低功耗。但也要考慮軟件實現要占用單片機的時間,響應時間也較慢。最后,在硬件設計時還不得不考慮降低成本的問題,在滿足功能要求的情況下要盡量降低成本。22.2.3系統軟件設計要求軟件設計包括制定程序的總體方案,畫出程序流程圖,編制具體程序以及程序的檢查修改等。由于程序是有多人完成的,所以要注意大家的分工協作。要采用結構化編程的方法,可有效避免沖突。各個寄存器和變量的使用要
11、統一規劃,分配各人使用。2.3 系統的調試和試運行要求系統調試包括分塊調試和系統連調兩部分。例如系統要求既能進行數字顯示又能進行聲光報警,我們可以分別對每一塊進行調試,然后再連在一起對兩者功能進行調試。另外,系統調試完成后還要進行一段時間的試運行,不但可以檢驗系統的可靠性,各項功能的完善性,還可以讓用戶充分使用后提出改進意見,使系統更加完善。3 主要元器件的選擇3.1單片機的選型我們選用宏晶科技生產的stc12c5a60s2 系列單片機,外觀如圖1所示。與普通單片機比較stc12c5a60s2 系列單片機具有許多優點。3圖1 stc12c5a60s2單片機stc12c5a60s2 系列單片機是
12、宏晶科技生產的單時鐘/機器周期(1t)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統8051,但速度快8-12倍。內部集成max810專用復位電路,2路pwm,8路高速10位a/d轉換(250k/s,即25k/s),針對電機控制,強干擾場合。工作頻率范圍:035mhz;通用i/o口(40個),復位后為:準雙向口/弱上拉(普通8051傳統i/o口)可設置成四種模式:準雙向口/弱上拉,推挽/上拉,僅為輸入/高阻,開漏 推挽/上拉,僅為輸入/高阻,開漏推挽/上拉,僅為輸入/高阻,開漏每個i/o口驅動能力均可達到20ma;isp(在系統可編程)/ iap(在應用可編程
13、),無需專用編程器,無需專用仿真器可通過串口(p3.0/p3.1)直接下載用戶程序,數秒即可完成一片;內部集成max810專用復位電路(外部晶體12m以下時,復位腳可直接1k電阻到地);有外部掉電檢測電路;具有a/d轉換,8路10位精度adc,轉換速度可達250k/s(每秒鐘25萬次)3.2傳感元件的選擇傳感元件的性能對傳感器系統有著很大的影響,在選用傳感元件時一是測量精度要高,二是工作可靠,三是工作條件能適應惡劣環境的要求。最重要的是應具有防爆功能。通過慎重調研對比最后選用了鄭州煒盛電子科技有限公司生產的新型載體催化元件,外觀如圖2所示。.其優于傳統的催化元件,在響應特性,長期儲存特性,溫度
14、特性和長期穩定性方面都有了明顯的改進。圖2 mc113型催化元件3.3變壓芯片的選擇圖3 lm317芯片lm317 是美國國家半導體公司的三端可調正穩壓器集成電路,如圖3所示。lm317 的輸出電壓范圍是1.2v至37v,負載電流最大為1.5a。它能夠為傳感元件提供穩定的工作電壓和電流,使用非常簡單,僅需兩個外接電阻來設置輸出電壓。此外它的線性調整率和負載調整率也比標準的固定穩壓器好。lm317 內置有過載保護、安全區保護等多種保護電路。通常lm317 不需要外接電容,除非輸入濾波電容到lm317 輸入端的連線超過 6 英寸(約 15 厘米)。使用輸出電容能改變瞬態響應。調整端使用濾波電容能得
15、到比標準三端穩壓器高的多的紋波抑制比。可調整輸出電壓低到1.2v。保證1.5a 輸出電流。典型線性調整率0.01%。典型負載調整率0.1%。80db 紋波抑制比。輸出短路保護。過流、過熱保護。調整管安全工作區保護。標準三端晶體管封裝。本系統選用lm317做為變壓電路。4硬件電路設計4.1硬件總體結構本系統在硬件電路設計時主要從以下原則出發: 44.1.1硬件電路設計與軟件設計相結合優化硬件電路一些由硬件實現的功能可用軟件來實現,反過來一些由軟件實現的功能也可用硬件來完成。用軟件來實現硬件的功能時,其響應時間比用硬件實現長,還要占用cpu 時間。但是用軟件實現硬件的功能可以簡化硬件結構,提高硬件
16、電路的可靠性,還可降低成本。因此在本系統的設計過程中,在滿足可行性和實時性的前提下盡可能地將硬件功能用軟件來實現。4.1.2可靠性及抗干擾設計根據可靠性設計理論,系統所用芯片數量越少,系統的平均無故障時間越長,而且所用芯片數量越少,地址數據總線在電路板上受干擾的可能性就越少,因此單片機基本系統的設計思想是在滿足功能的情況下力爭使用較少數量的芯片。4.1.3靈活的功能擴展一次設計往往不能完全考慮到系統的各個方面,系統需要不斷完善,需要進行功能升級。功能擴展時系統應該在原有設計不需要很大改變的情況下,修改軟件和少量硬件甚至不修改硬件就能完成。功能擴展是否靈活是衡量一個系統優劣的重要指標。根據系統要
17、求及上面幾個硬件設計原則,系統以單片微機stc為中央處理單元,由傳感元件,測量電橋,放大電路,數字顯示,聲光報警,信號輸出,自校準電路等單元電路組成。下面對主要的電路設計做詳細介紹。4.2 傳感器信號放大電路由于傳感器輸出的信號比較微弱而且帶有很多的干擾信號,我們需要設計一個放大電路來放大傳感器輸出的信號并能消除干擾信號的影響。lm324系列器件為價格便宜的帶有真差動輸入的四運算放大器。與單電源應用場合的標準運算放大器相比,它們有一些顯著優點。因此我們選用lm324來設計放大電路。電路圖如圖4所示。圖4 傳感器信號放大電路4.3變壓電路lm317 是美國國家半導體公司的三端可調正穩壓器集成電路
18、。lm317 的輸出電壓范圍是1.2v至37v,負載電流最大為1.5a。它可以很好的滿足傳感器的工作要求。它的使用非常簡單,僅需兩個外接電阻來設置輸出電壓。此外它的線性調整率和負載調整率也比標準的固定穩壓器好。lm317 內置有過載保護、安全區保護等多種保護電路。所以我們選用lm317來設計變壓電路。電路圖如圖5所示。圖5 變壓電路4.4時鐘電路5 系統時鐘是一切微處理器,微控制器內部電路工作的基礎,振蕩周期和時鐘周期又決定了cpu 的時序。單片機內部有一個自激振蕩電路,可以通過內部自激振蕩或外部提供振蕩源這兩種方式,驅動內部時鐘電路產生系統時鐘信號。本系統選用外部振蕩源。為適應信號采集以及轉
19、換等功能的要求選擇24mhz的晶振。電路圖如圖6所示。圖6 時鐘電路4.5 led顯示電路6 本文所要求顯示接口電路完成四位十進制數字的顯示。由于stc12c5a60s2單片機不可以直接驅動數碼管,我們需要接外圍電路,可將stc12c5a60s2單片機的p0端口(并行從動端口)的p0.0-p0.7作為顯示器的數據bcd碼傳送端口。用p2.0端口的p2.0-p2.3作為的地址線,分別選中不同的led數碼管。數據顯示的過程是首先由p2.0, p2.1, p2.2,p2.3確定當前要選中的數碼管,然后p0將相應位要顯示的數字送入對應的數碼管顯示。電路圖如圖7所示。圖7 led顯示電路4.6 聲光報警
20、電路在單片機控制系統中,一般的工作狀態可以通過指示燈或數碼顯示來指示,以供操作員參考。但對于某些緊急狀態或反常狀態,為了使操作人員不致忽視,以便及時采取措施,往往還需要有某種更能引人注意提起警覺的報警信號。這種報警信號通常有三種類型:閃光報警,鳴音報警,語音報警。本系統的報警電路包括閃光報警和鳴音報警兩種方式所。電路圖如圖8所示圖8 聲光報警電路4.7 紅外遙控部分7 紅外遙控就是利用紅外遙控器產生的紅外線作為空間傳遞遙控信息的媒介,從而實現對被控設備的各種遙控操作。它是一種電能光能-電能的一種光控方式。在近距離遙控中,紅外遙控體現出許多優點。如抗干擾能力強、體積小、外形美、成本低等。隨著集成
21、電路的發展和新產品的不斷出現,特別是紅外專用集成電路及通用低功耗集成電路的廣泛應用,為紅外線遙控裝置性能的提高體積的減小成本的降低均創造了十分有利的條件,使紅外遙控技術得到了廣泛的應用。為了縮短開發周期,我們采用普通彩電遙控器來調節瓦斯傳感器,無需設計專用的遙控器。根據原遙控器按鍵布置和瓦斯傳感器的具體要求,重新設計面板即可實現對瓦斯傳感器的零點、量程、報警點、斷電點等參數的遙控操作。電路圖如圖9所示。圖9 紅外控制5 系統軟件設計8隨著現代技術的發展,智能傳感器正逐步走向成熟,它的主導思想是利用軟件代替和簡化硬件,利用基本的硬件電路和軟件技術達到系統多功能集成,容易修改的要求。本文在前文搭建
22、了一個較為簡單的硬件電路,系統功能的主要實現是依靠軟件的設計來完成的。本系統的軟件采用模塊化設計,將系統分為若干個模塊,分別實現各項功能,這樣在系統軟件的調試過程中,各個模塊的獨立調試有助于問題的發現和解決,在一定程度上節約了程序的調試時間。本系統的軟件設計是用stc12c5a60s2的c語言在keilc編程軟件里運行,調試,完成的。本文所述系統的軟件主要包括:初始化與自檢子程序,數據處理子程序, led 顯示子程序,紅外遙控譯碼子程序,。整個系統的功能分析如圖10所示。下面就將各主要程序逐一介紹。并對ad轉換子程序,數據處理子程序,led 顯示程序進行詳細的介紹。數據上傳濃度顯示開機自檢功能
23、設置斷電控制濃度獲得濃度報警掉電報警led顯示功能選擇參數設置a/d轉換換濃度計算遙控接收參數更改功能顯示斷電控制量程調整零點調整報警設置led顯示main 圖10 系統功能分析圖ma5.1 單片機程序設計的特點采用單片機c語言編程具有很多的優越性。就算不懂得單片機的指令集,也能夠編出完美的單片機程序,無須懂得單片機的具體硬件,也能夠編出符合硬件實際的專業水平的程序,不同函數的數據實行覆蓋,有效利用單片機上有限的ram 空間,程序具有堅固性,數據被破壞是程序運行異常的重要因素,c語言對數據進行了許多工業性的處理,避免了運行中間非異步的破壞,c語言提供復雜的數據類型(數組,結構體,聯合,枚舉,指
24、針等),極大地增強了程序處理能力和靈活性,提供了多種數據存儲類型和專門針對8051的data、idata、pdata、xdata、code等存儲類型,自動為變量合理分配地址,提供small,large等編譯模式,以適應芯片上存儲器的大小,中斷服務程序的現場保護和恢復,中斷向量的地址是直接跟單片機相關的都由c編譯器代辦:提供常用的標準函數庫,以供用戶直接使用,頭文件中定義的宏,說明復雜數據類型和函數原型,有利于程序的移植和支持單片機的系列化和產品的開發有嚴格的句法檢查,錯誤很少且很容易在高級語言的水平上迅速地被排掉,提高運行的安全性9。按照可靠性理論10,程序設計最主要任務是確保應用程序按照給定
25、的順序有序地運行。有序地運行的基礎是硬件的可靠性,可靠性高的硬件基礎可以保證不會出現硬件系統故障:但是,在工業現場使用時,大量的干擾源雖然不會造成單片機系統硬件的破壞,卻常常會破壞數字信號的時序,更改單片機寄存器內容,導致程序跑飛或進入死循環.因此在提高硬件可靠性的基礎上必須在程序設計中采取措施,提高軟件的可靠性,減少軟件錯誤的發生以及在發生軟件錯誤的情況下仍然能使系統恢復正常運行。可軟件的可靠性問題常常容易被人們忽視。隨著單片機測控系統越來越復雜,工作環境干擾越來越嚴重,軟件可靠性問題逐漸為人們所重視。軟件的可靠性問題雖然和硬件的可靠性問題不盡相同,在基于單片機的測控系統中軟件的重要性與硬件
26、是處于相同等重要的地位。單片機測控系統本身對程序設計的要求除了可靠,易理解,易維護,準確和可測試外,溫度采集系統在軟件設計時還提出了以下要求:(1)容錯性 :在工業控制中,由于單片機測控系統所處的環境比較惡劣,常存在于干擾源如環境溫度,電場,磁場等。使數據采集不可靠控制失靈或程序運行失常,當發生這些錯誤或故障時,測控軟件要能夠不受影響,從錯誤或故障中恢復,保證系統的正常工作。(2)實時性:實時性是測控系統的普遍要求,即要求系統及時響應外部事件的發生并及時給出處理結果。隨著電子技術的飛速發展,硬件的集成度與速度卻不斷提高。因此這就要編寫相應的測控軟件來滿足實時性要求.在工程應用程序設計中,采用匯
27、編語言比高級語言更具有實時性。(3)足夠的時序裕度:時序是程序設計中必須考慮的問題。系統在中心控制下,實現分時操作,在非握手控制下,程序運行完全依靠時序調度,切換控制,這就要求在編寫程序時,不僅要時序正確,而且要有足夠的時序裕度。5.2 系統初始化子程序系統初始化子程序主要有三個部分組成:控制端口的初始化,a/d轉換的初始化以及其他功能的初始化。控制端口的初始化:stc12c5a60s2的數字或模擬輸入/輸出模塊大多數是基本功能和一般i/o口復用。初始化的主要目的是劃分基本的功能和i/o口以及輸入輸出口的數據傳輸方向。a/d轉換的初始化:設置觸發方式,在什么情況下開始/結束轉換,轉換通道的設定
28、,轉換時鐘的預標定。5.3 系統參數設定子程序在首次開機時,需要對零點,量程,報警點,斷電點,等參數進行初始化設置。在對傳感器進行校準后,這些參數就要進行相應的修改,修改后的參數存入e2prom中,而在非首次開機則是讀取e2prom中的參數值。5.4 自檢子程序自檢子程序模塊主要為故障診斷功能所設計的,一般檢測電壓值,也就是短路和斷路以及單片機死機的狀態,自檢子程序模塊主要對如下進行檢測:電源、a/d轉換、單片機的工作狀態,如果在檢測的過程中故障,除了做應急的反應外還應該通過簡單的故障方式進行指示。對單片機運行情況的監測主要通過wdt看門狗來實現,在程序的開始部分將預分頻器劃歸wdt使用,同時
29、在主程序的主體部分增加了一條看門狗清零,(俗稱喂狗)指令,主程序執行一圈的時間遠遠小于看門狗的超時溢出周期,因此,能夠保證在單片機按照主程序規定的正常循環路線執行時,看門狗不發生超時溢出。當程序失控時,單片機跳出或偏離了安排有看門狗清零指令的正常循環路徑,無法對看門狗按時清零,致使看門狗產生溢出復位信號,進而迫使單片機復位。5.5 數據處理子程序數據處理子程序包括a/d轉換子程序,二級濾波子程序,零位漂移自校準子程序,非線性自校準子程序四部分。5.5.1 a/d轉換子程序(1) a/d轉換器的結構stc12c5a60ad/s2系列單片機帶a/d轉換,它的a/d轉換口在p1口 (p1.0-p1.
30、7),有8路10位 高速a/d轉換器,速度可達到250khz(25萬次/秒)。8路電壓輸入型a/d,可做溫度檢測、電池電壓檢測、按鍵掃描、頻譜檢測等。上電復位后p1口為弱上拉型i/o口,用戶可以通過軟件設置將8路中的任何一路設置為a/d轉換,不需作為a/d使用的口可繼續作為i/o口使用。stc12c5a60s2系列單片機adc(a/d轉換器)的結構如圖11所示 : 圖11 adc(a/d轉換器)的結構圖當auxr.1/adrj = 0時,a/d轉換結果寄存器格式如下: 當auxr.1/adrj = 1時,a/d轉換結果寄存器格式如下:stc12c5a60s2系列單片機adc由多路選擇開關、比較
31、器、逐次比較寄存器、10位dac、轉換結果寄存器(adc_res和adc_resl)以及adc_contr構成。stc12c5a60s2系列單片機的adc是逐次比較型adc。逐次比較型adc由一個比較器和d/a轉換器構成,通過逐次比較邏輯,從最高位(msb)開始,順序地對每一輸入電壓與內置d/a轉換器輸出進行比較,經過多次比較,使轉換所得的數字量逐次逼近輸入模擬量對應口。逐次比較型a/d轉換器具有速度高,功耗低等優點。從上圖可以看出,通過模擬多路開關,將通過adc07的模擬量輸入送給比較器。用數/模轉換器(dac)轉換的模擬量與本口輸入的模擬量通過比較器進行比較,將比較結果保存到逐次比較器,并
32、通過逐次比較寄存器輸出轉換結果。a/d轉換結束后,最終的轉換結果保存到adc轉換結果寄存器adc_res和adc_resl,同時,置位adc控制寄存器adc_contr中的a/d轉換結束標志位adc_flag,以供程序查詢或發出中斷申請。模擬通道的選擇控制由adc控制寄存器adc_contr中的chs2 chs0確定。adc的轉換速度由adc控制寄存器中的speed1和speed0確定。在使用adc之前,應先給adc上電,也就是置位adc控制寄存器中的adc_power位。當adrj=0時,如果取10位結果,則按下面公式計算:當adrj=0時,如果取8位結果,按下面公式計算:當adrj=1時,
33、如果取10位結果,則按下面公式計算:式中,vin為模擬輸入通道輸入電壓,vcc為單片機實際工作電壓,用單片機工作電壓作為模擬參考電壓。(2) 與a/d轉換相關的寄存器stc12c5a60s2系列單片機a/d轉換相關的寄存器列于下表所示。1) p1口模擬功能控制寄存器p1asfstc12c5a60s2系列單片機的a/d轉換通道與p1口(p1.7-p1.0)復用,上電復位后p1口為弱 a/d轉換通道與p1口(p1.7-p1.0)復用,上電復位后p1口為弱 通道與p1口(p1.7-p1.0)復用,上電復位后p1口為弱 p1口(p1.7-p1.0)復用,上電復位后p1口為弱 復用,上電復位后p1口為弱
34、 ,上電復位后p1口為弱上拉型i/o口,用戶可以通過軟件設置將8路中的任何一路設置為a/d轉換,不需作為a/d使用的p1口可繼續作為i/o口使用(建議只作為輸入)。需作為a/d使用的口需先將p1asf特殊功能寄存 (建議只作為輸入)。需作為a/d使用的口需先將p1asf特殊功能寄存 。需作為a/d使用的口需先將p1asf特殊功能寄存器中的相應位置為1,將相應的口設置為模擬功能。p1asf寄存器的格式如下: p1asf : p1口模擬功能控制寄存器(該寄存器是只寫寄存器,讀無效) )當p1口中的相應位作為a/d使用時,要將p1asf中的相應位置1.2)adc控制寄存器adc_contradc_c
35、ontr寄存器的格式如下:adc_contr : adc控制寄存器adc_power:adc電源控制位。 0:關閉a/d轉換器電源; 1:打開a/d轉換器電源.建議進入空閑模式前,將adc電源關閉,即adc_power=0。啟動a/d轉換前一定要確認a/d電源已打開,a/d轉換結束后關閉a/d電源可降低功耗,也可不關閉。初次打開內部a/d轉換模擬電源,需適當延時,等內部模擬電源穩定后,再啟動a/d轉換。建議啟動a/d轉換后,在a/d轉換結束之前,不改變任何i/o口的狀態,有利于高精度a/d轉換,若能將定時器/串行口/中斷系統關閉更好。speed1,speed0:模數轉換器轉換速度控制位stc1
36、2c5a60s2系列單片機的a/d轉換模塊說使用的時鐘是內部r/c振蕩器所產生的系統時鐘,不使用時鐘分頻寄存器clk_div對系統時鐘分頻后所產生的供給cpu工作所使用的時鐘.好處: 這樣可以讓adc用較高的頻率工作,高a/d的轉換速度 這樣可以讓cpu用較低的頻率工作,降低系統的功耗adc_flag:模數轉換器轉換結束標志位,不管是a/d轉換完成后由該位申請產生中斷,還是由軟件查詢該標志位a/d轉換是否結束,當a/d轉換完成后,adc_flag = 1,一定要軟件清0。 adc_start:模數轉換器(adc)轉換啟動控制位,設置為“1”時,開始轉換,轉換結束后為0。chs2/chs1/ch
37、s0:模擬輸入通道選擇,chs2/chs1/chs0程序中需要注意的事項:由于是2時鐘,所以,設置adc_contr控制寄存器后,要4個空作延時才可以正確讀到adc_contr寄存器的,原因是設置adc_contr控制寄存器的語句行后,要經過4個cpu時鐘的延時,其才能夠保證被設置進adc_contr控制寄存器. adc_contr = adc_power | adc_speedll | adc_start; _nop_(); /適當延時,使ad轉換電源完全打開 _nop_(); _nop_(); _nop_();3) a/d轉換結果寄存器adc_res、adc_resl特殊功能寄存器adc_
38、res和adc_resl寄存器用于保存a/d轉換結果,其格式如下:auxr1寄存器的adrj位是a/d轉換結果寄存器(adc_res,adc_resl)的數據格式調整控制位.當adrj=0時,10位a/d轉換結果的高8位存放在adc_res中,低2位存放在adc_resl的低2位中。 此時,如果用戶需取完整10位結果,按下面公式計算:如果用戶只需取8位結果,按下面公式計算:式中,vin為模擬輸入通道輸入電壓,vcc為單片機實際工作電壓,用單片機工作電壓作為模擬參考電壓。當adrj=1時,10位a/d轉換結果的高2位存放在adc_res的低2位中,低8位存放在adc_resl中。 此時,如果用戶
39、需取完整10位結果,按下面公式計算:式中,vin為模擬輸入通道輸入電壓,vcc為單片機實際工作電壓,用單片機工作電壓作為擬參考電壓。4)與a/d中斷有關的寄存器ie : 中斷允許寄存器(可位尋址)ea : cpu的中斷開放標志,ea=1,cpu開放中斷,ea=0,cpu屏蔽所有的中斷申請。ea的作用是使中斷允許形成多級控制。即各中斷源首先受ea控制;其次還受各中斷源自己的中斷允許控制位控制。eadc : a/d轉換中斷允許位。 eadc=1,允許a/d轉換中斷; eadc=0,禁止a/d轉換中斷。iph : 中斷優先級控制寄存器高(不可位尋址)如果要允許a/d轉換中斷則需要將相應的控制位置1:
40、將eadc置1,允許adc中斷,這是adc中斷的中斷控制位。將ea置1,打開單片機總中斷控制位,此位不打開,也是無法產生adc中斷的a/d中斷服務程序中要用軟件清a/d中斷請求標志位adc_flag(也是a/d轉換結束標志位)。iph : 中斷優先級控制寄存器高(不可位尋址)ip : 中斷優先級控制寄存器低(可位尋址)padch, padc: a/d轉換中斷優先級控制位。當padch=0且padc=0時,a/d轉換中斷為最低優先級中斷(優先級0) 當padch=0且padc=1時,a/d轉換中斷為較低優先級中斷(優先級1) 當padch=1且padc=0時,a/d轉換中斷為較高優先級中斷(優先
41、級2) 當padch=1且padc=1時,a/d轉換中斷為最高優先級中斷(優先級3)(3) a/d轉換模塊的參考電壓源stc12c5a60s2系列單片機的參考電壓源是輸入工作電壓vcc,所以一般不用外接參考電壓源。如7805的輸出電壓是5v,但實際電壓可能是4.88v到4.96v,用戶需要精度比較高的話,可在出廠時將實際測出的工作電壓記錄在單片機內部的eeprom里面,以供計算。如果有些用戶的vcc不固定,如電池供電,電池電壓在5.3v-4.2v之間漂移,則vcc不固定,就需要在8路a/d轉換的一個通道外接一個穩定的參考電壓源,來計算出此時的工作電壓vcc,再計算出其次幾路a/d轉換通道的電壓
42、。如可在adc轉換通道的第七通道外接一個1.25v(或1v,或)的基準參考電壓源,由此求出此時的工作電壓vcc,再計算出其它幾路a/d轉換通道的電壓(理論依據是短時間之內,vcc不變)。(4)由于本系統中只有一個模擬量需要進行a/d轉換,a/d轉換子程序依照以下步驟進行:1)設置adc模塊;2)開放a/d中斷功能,開放相應的中斷使能位;3)等待所需要的采樣時間;4)將控制位兼狀態位置1,啟動a/d轉換過程;5)等待a/d轉換完成;6)讀取相應的a/d轉換結果寄存器送入指定地址進行處理;詳細見圖3.11所示流程圖及程序。 開始打開a/d轉換電源開始a/d轉換a/d轉換設置為:360clocks,
43、一路a/d 通道設置輸入端口a/d轉換是否結束寫a/d轉換結果到指定的寄存器圖11 a/d轉換子程序流程圖a/d轉換子程序:#include#includeunsigned int d;void initadc();void getadcresult();/*定義與ad轉換有關的特殊功能寄存器 */ sfr adc_contr = 0xbc; /定義adc控制寄存器sfr adc_res = 0xbd; /定義adc高8位轉換結果寄存器sfr adc_resl = 0xbe; /定義adc低2為轉換結果寄存器sfr p1asf = 0x9d; /定義p1口模擬功能控制寄存器 /*定義 adc_
44、contr各位*/ #define adc_power 0x80 /定義adc電源控制位#define adc_flag 0x10 /定義adc轉換結束標志位#define adc_start 0x08 /定義adc轉換開始控制位#define adc_speedll 0x00 /定義adc轉換周期540 clocks #define adc_speedl 0x20 /定義adc轉換周期360 clocks#define adc_speedh 0x40 /定義adc轉換周期180 clocks#define adc_speedhh 0x60 /定義adc轉換周期90 clocks/*ad換初始
45、化函數*/ void initadc() unsigned int n; p1asf = 0xff;/打開模擬功能控制寄存器p1口為模擬量輸入口 adc_res = 0; /清空ad轉換結果寄存器(高8位) adc_resl = 0; /清空ad轉換結果寄存器(低2位) adc_contr = adc_power | adc_speedll;/打開ad轉換電源并選擇ad轉換的速度 for(n=10000;n0;n-);/適當延時,使ad轉換電源穩定/*取ad轉換的結果函數*/void getadcresult() adc_contr = adc_power | adc_speedll | ad
46、c_start; _nop_(); /適當延時,使ad轉換電源完全打開 _nop_(); _nop_(); _nop_(); while(!(adc_contr & adc_flag); /等待ad轉換結束 adc_contr &= adc_flag; /關閉ad轉換結束標志位 d=(adc_res*4+adc_resl); /取ad轉換結果 5.5.2 數字濾波a/d轉換之后的隨機誤差主要是由竄入單片機的隨機干擾引起的,雖然這種誤差不能在硬件予以根除,但在多次測量中符合統計規律。另外由于包括傳感器在內的各測量環節硬件本身的固有誤差,往往達不到測量的精度,在這種情況下,可以采取數字濾波的方法。
47、數字濾波就是按統計規律用軟件來消除隨機誤差的算法,具有成本低,可靠性高,濾波穩定的特點,而且通過修改濾波程序和運算參數,即可改變濾波特性。常采用的數字濾波方法主要有26:(1)算術平均值法算術平均值法是最簡單的數字濾波,只要選擇合理的采樣次數(一般20),就可以有效地濾除低頻紋波。其缺點是對于明顯的不合理數據(如在慢變化參數的采集中因干擾引起的突變信號)也被平均在結果中,使數據的準確性降低。彌補的辦法是提高n,但將加長采集數據的時間,影響系統實時處理的能力。(2)移動式算術平均法能有效地提高n次采樣求平均值的速度。這種方法要求n取2的冪,并在存儲器中設立一個放n個數據的緩沖區,采集的數據存儲緩
48、沖區以后,每采集一個新數據時,就淘汰掉原n個數據中最老的,然后求和及平均值。這樣就使濾波處理的速度提高了n-1倍。此法適合應用在采集緩慢變化的模擬量系統中。由于n為2的冪,所以求均值只需做右移操作。(3)中值法要求對同一點連續采樣3次,進行比較后取中間值作為該點的測量值。它能消除脈沖型的干擾。(4)競賽評分法類似于某些體育比賽中的評分方法,即去掉一個最高分和一個最低分,然后取其余評分的平均值。這種方法兼有中值法和算術平均值法的特點,但要求編一個對n個數的排序程序。(5)超值濾波法對于某些變化緩慢和較均勻的物理量,如溫度,加速度等,每次采樣值與前一次采樣值作比較,差值若遠超出可能的變化范圍,便可
49、認為是干擾引起的,則丟棄此值,用前一次采樣值代替。若干擾持續地作用在采樣回路則可發出故障信息,查找干擾或對數據作適當的處理。經過比較本系統軟件采用了移動式算術平均法,以克服隨機誤差對最終讀數的影響。將n設為32,即求32次的移動平均值,但仍然發現數據變化太快,隨后改為兩層移動算術平均法濾波,這樣才起到了很好的穩定讀數的作用。濾波子程序:#include#include#define n 32 unsigned char value_bufn;unsigned char i=0;/*濾波函數*/char filter() unsigned char count; unsigned int sum
50、=0; value_bufi+=d;/d為每次a/d轉換的結果 if (i = n) i=0;for ( count=0;count sum+ = value_bufcount;/32個轉換值相加return (char)(sum/n);/返回結果5.5.3 零位漂移自校準傳感器及外圍電路受外界環境影響會產生一定漂移, 長時間工作受老化等環境變化因素影響就可能產生較大的零點漂移。為了使系統在長時間工作后仍能夠精確讀數,在軟件中使用了零位漂移自校準方法。當系統工作穩定后我們可以通過紅外遙控把測得的濃度減去或加上一個數,使當濃度為零時顯示也為零,從而達到零位漂移校準的目的。5.6 led顯示子程序
51、5.6.1 led介紹led 即發光二極管,它是一種由某些特殊的半導體材料制作成的pn結,由于摻雜濃度很高,當正向偏置時,會產生大量的電子一空穴復和,把多余的能釋放變為光能。 led顯示器具有工作電壓低、體積小、壽命長(約十萬小時)、響應速度快,顏色豐富等特點。led的正向電壓降一般在1.2-2.6v,發光工作電流在5ma-20ma。七段led顯示器由數個led組成一個陣列,并封裝于一個標準的外殼中。為適用于不同的驅動電路,有共陽極和共陰極兩種結構。本文采用的是共陰極結構。為了顯示某個數或字符,就要點亮對應的段,這就需要譯碼。譯碼有硬件譯碼和軟件譯碼。硬件譯碼電路的優點是計算機時間開銷比較小,
52、但硬件開支大。軟件譯碼與硬件電路相比,省去了硬件譯碼器。其bcd碼轉換為對應的段碼這項工作由軟件來完成。表3.1顯示的就是共陽極情況下段碼與數字、字母的關系。字符共陽極段碼字符共陽極段碼字符共陽極段碼0c0h592ha88h1f9h682hb83h2a4h7f8hcc6h3b0h880hda1h499h990h滅ffh表3.1 led段碼與字符的關系5.6.2七段led的顯示按照顯示的方式,七段led數碼管顯示有靜態顯示和動態顯示之分。在靜態顯示系統中,每位顯示器都應有各自的鎖存器、譯碼器與驅動器。用以鎖存各自待顯示數字的bcd碼或反碼。因此靜態顯示系統在每一次顯示輸出后能夠保持顯示不變,僅在
53、待顯示數字需要改變時,才更新其數字顯示器中鎖存的內容。這種顯示占用機時少,顯示穩定可靠。缺點是,當顯示的位數較多時,占用的器件也較多。在采用動態顯示的系統中,微處理器或控制器應定時地對各個顯示器進行掃描,顯示器件分時輪流工作,每次只能使一個器件顯示,但由于人的視覺暫留現象,仍感覺所有的器件都在同時顯示。此種顯示的優點是使用硬件少,占用1/o口少。缺點是占用機時長,只要不執行顯示程序,就會立即停止顯示。本文采用了動態顯示模式。用p2口的p2.0,p2.1,p2.2,p2.3端口選擇相應的位,用p0口的p0.0,p0.1, p0.2, p0.3, p0.4 p0.5, p0.6, p0.7端口選擇相應的段。其流程圖和程序清單如圖3.12所示:led顯示子程序流程圖程序清單:#include#includeunsigned char duanxuan10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char weixuan4=0xfe,0xfd,0xfb,0xf7;void delay();void jisuan(unsigned int s);/*數顯延時函數*/void delay() unsigned char i,j; for(i=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論