版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、中南大學 本科生畢業(yè)論文(設計)題 目 基于單片機的數(shù)據(jù)采集系統(tǒng)設計學生 屠 超 指導教師 鄧聯(lián)文 副教授 學 院 物理科學與技術學院 專業(yè)班級 電子工程0701班 完成時間2009年4月28日58 / 59目 錄目錄1摘要2ABSTRACT31 緒論41.1 數(shù)據(jù)采集器概述41.2 數(shù)據(jù)采集的發(fā)展歷程41.3 數(shù)據(jù)采集的選擇與應用62 開發(fā)環(huán)境72.1 畫圖工具 Protel99軟件72.2 編程工具 KEIL C5182.3 燒寫器103設計過程113.1 系統(tǒng)功能與結構簡介113.2 硬件芯片選擇與功能簡介123.3 原理介紹183.4 軟件設計203.5 PC機上數(shù)據(jù)接收軟件制作213
2、.6 調試過程253.7 系統(tǒng)精度274 結論與展望284.1 結論284.2 展望28致29參考文獻30附錄一外文翻譯31附錄二程序48摘 要隨著信息領域各種技術的發(fā)展,在數(shù)據(jù)采集方面的技術也取得了長足的進步,采集數(shù)據(jù)的信息化是目前社會的發(fā)展主流方向。各種領域都用到了數(shù)據(jù)采集,在石油勘探、地震數(shù)據(jù)采集領域已經(jīng)得到應用。隨著測控技術的迅猛發(fā)展,以嵌入式計算機為核心的數(shù)據(jù)采集系統(tǒng)己經(jīng)在測控領域中占到了統(tǒng)治地位。數(shù)據(jù)采集系統(tǒng)是將現(xiàn)場采集到的數(shù)據(jù)進行處理、傳輸、顯示、存儲等操作。數(shù)據(jù)采集系統(tǒng)的主要功能是把模擬信號變成數(shù)字信號,并進行分析、處理、存儲和顯示。國大大小小很多公司多開發(fā)了數(shù)據(jù)采集器和卡之類
3、的產(chǎn)品,這使信息的數(shù)字化提供了極大的方便。本次畢業(yè)設計課題,數(shù)據(jù)采集器制作,是利用ATMEL公司的89C51單片機和AD0809芯片做一個采集模擬電壓信號,轉換為數(shù)字信號,再由單片機經(jīng)過串口發(fā)送給PC機處理,另外三個數(shù)碼管LED顯示采集的數(shù)字信息。關鍵詞:單片機;數(shù)據(jù)采集;信號處理;AD0809芯片ABSTRACTAlong with the development of information field various technologies, the technology in the aspect of data collection has also gotten rapid ad
4、vance, gather the informative process of data is now society develop the direction of main stream. Various fields have used data collection , in petroleum exploration and seismic data collection field have gotten application. As measuring to control technical swift development, with embedded compute
5、r for key data collection system Ji go through in measure to control field in have taken dominance position. Data collection system is to carry out the data that the collection on-the-spot goes to to handle , transmits and shows , stock etc. operation. The major function of data collection system is
6、 simulated signal become digital signal, and analyse handling , stock and show. Domestic size many companies have developed data collection ware and the product that blocks and so on , this makes the digitlization of information have offered maximum convenience. This graduated design program, data c
7、ollection ware produce is the only flat machine of 89 C51 that uses the company of ATMEL with AD0809 chip do a collection simulated voltage signal, conversion number word signal passes string mouth again by only flat machine to dispatch to the handling of personal computer, additionally, 3 number pi
8、pe LEDs show the digital information of collection. Keywords: Only flat machine;Data is gathered;Handle1緒 論1.1 數(shù)據(jù)采集器概述數(shù)據(jù)采集系統(tǒng),正如名字所暗示的,是一種用來采集信息成文件或分析一些現(xiàn)象的產(chǎn)品或過程。在最簡單的形式中,技術人員將烤箱的溫度記錄在一紙上就是數(shù)據(jù)采集。隨著技術的發(fā)展,通過電子設備,這個過程已經(jīng)得到簡化和變得比較精確、多用途和可靠。設備從簡單的存儲器發(fā)展到復雜的電腦系統(tǒng)。數(shù)據(jù)采集產(chǎn)品像聚焦點一樣為系統(tǒng)服務,和一系列產(chǎn)品一起,諸如傳感器顯示溫度、水流、程度或者過程。數(shù)
9、據(jù)采集技術在過去30到40年以來已經(jīng)取得了很大的飛躍。舉例來說,在 40 年以前,在一個著名的學院實驗室中,為追蹤用青銅做的坩堝中的溫度上升情況的裝置是由熱電偶、繼電器、查詢臺、一捆紙和一支鉛筆。今天的大學學生很可能在PC機上自動處理和分析數(shù)據(jù),有很多種可供你選擇的方法去采集數(shù)據(jù)。至于選擇哪一種方法取決于多種因素,包括任務的復雜度、你所需要的速度和精度、你想要的證據(jù)資料等等。無論是簡單的還是復雜的,數(shù)據(jù)采集系統(tǒng)都能夠運行并發(fā)揮它的作用。1.2 數(shù)據(jù)采集的發(fā)展歷程1.2.1 鉛筆和紙早期的鉛筆與紙的舊方式對于一些情形仍然是可行的,而且它便宜、易獲得、快速和容易開始。而你所需要的就是捕捉到多路數(shù)字
10、信息(DMM),然后開始用手記錄數(shù)據(jù)。不幸的是這種方法容易發(fā)生錯誤、采集數(shù)據(jù)變慢和需要太多的人工分析。此外,它只能單通道采集數(shù)據(jù);但是當你使用多通道DMM時,系統(tǒng)將很快變得非常龐大和笨拙。精度取決于謄寫器的水平,并且你可能需要自己動手依比例輸入。舉例來說, 如果DMM 沒有配備處理溫度的傳感器,舊需要動手找比例。考慮到這些限制,只有當你需要實行一個快速實驗時,它才是一個可接受的方法。1.2.2長條圖表記錄儀后來出現(xiàn)了多種版本的長條圖表記錄儀允許你從多個輸入取得數(shù)據(jù)。他們提供數(shù)據(jù)的長備紙記錄,因為數(shù)據(jù)是圖解的格式,他們易于現(xiàn)場采集數(shù)據(jù)。一旦建立了長條圖表記錄儀,在沒有操作員或計算機的情況下,大多
11、數(shù)記錄儀具有足夠的部智能運行。缺點是缺乏靈活性和相對的精度低,時常限制在百分點。你能很清楚地感覺到與筆只有小的改變。在多通道較長時間的監(jiān)控,記錄儀能發(fā)揮很好的作用,除此之外,它們的價值得到限制。舉例來說,他們不能夠與另外的裝置輪流作用。其他的顧慮就是筆和紙的維護,紙的供給和數(shù)據(jù)的存儲,最重要的是紙的濫用和浪費。然而,記錄儀相當容易建立和操作,為數(shù)據(jù)快速而簡單的分析提供永久的記錄。1.2.3 PC機插件卡片PC機插件卡片是單板測量系統(tǒng),它利用ISA或PCI總線在PC機擴大插槽。它們時常具有高達每秒1000的閱讀速率。8到16通道是普遍的,采集的數(shù)據(jù)直接存儲在電腦里,然后進行分析。因為卡片本質上是
12、計算機的一部分,建立測試是容易的。PC機卡也相對的便宜,一部分地,因為他們以來主機PC去提供能源、機械附件和使用界面。1.2.4 數(shù)據(jù)采集器與國外研究現(xiàn)狀數(shù)據(jù)采集器是典型的單機儀器,一旦配備它們,就能測量、記錄和顯示數(shù)據(jù)而不需要操作員或計算機參與。它們能夠處理多信號輸入,有時可達120通道。精度可與無與倫比的臺式 DMMs 匹敵,由于它在22字、 0.004個百分率的精度圍運轉。一些數(shù)據(jù)采集器有能力按比例測量,檢查結果不受使用者定義的限制,而且輸出為控制作信號。近十幾年來,隨著移動通信技術飛速發(fā)展,越來越多的信息采集和遠程控制系統(tǒng)采用了無線數(shù)據(jù)傳送技術,它與有線數(shù)傳相比主要有布線成本低、安裝簡
13、便、便于移動的優(yōu)點,而且隨著互聯(lián)網(wǎng)技術的迅猛發(fā)展和快速普與,越來越多的基于單片機為微控制器的的測控設備或智能儀器儀表都需要通過互聯(lián)網(wǎng)上進行數(shù)據(jù)交換或傳輸數(shù)據(jù)。1.3 數(shù)據(jù)采集的選擇與應用在缺點上,PC機插件卡片時常只有12字的容量,因此你不能察覺輸入信號的小變化。此外,PC機的電子環(huán)境經(jīng)常很容易發(fā)出噪聲、產(chǎn)生高速率的時鐘和總線噪聲,電子接觸面限制PC機插件卡片的精度。這些插件卡片也測量一定圍的電壓。為了測量其他輸入信號,如電壓、溫度和阻力,你也許需要一些外部信號監(jiān)測的器件。其它關心包括復雜的校正和全部的系統(tǒng)成本,尤其如果你需要購買額外信號監(jiān)測器件或用PC機適應插件卡片。把這些考慮進去,如果你的
14、需要在卡片的能力和限制圍變動,PC機插件卡片給數(shù)據(jù)采集提供吸引人的方法。使用數(shù)據(jù)采集器的一個好處就是他們的部監(jiān)測信號。大部分能夠直接地測量若干不同的輸入信號,而不需要額外的信號監(jiān)測器件。一個通道能夠監(jiān)測熱電偶、溫阻器(RTD)和電壓。熱電偶為準確的溫度測量提供具有參考價值的補償,是很典型的配備了多路插件卡片。設智能數(shù)據(jù)采集器幫助你設定測量周期和具體指定每個通道的參數(shù)。一旦你全部設定好,數(shù)據(jù)采集器就如同無與倫比的裝置運行。它們存儲的數(shù)據(jù)分布在存中,能夠容納500000或更多的閱讀量。與PC機連接容易將數(shù)據(jù)傳送到電腦進行進一步的分析。大多數(shù)數(shù)據(jù)采集器可設計為柔性和簡單的組態(tài)和操作, 而且經(jīng)由電池包
15、裹或其它方法,多數(shù)提供遠程位置的操作選項???A/ D 轉換技術,一定的數(shù)據(jù)采集器閱讀的速率比較低,尤其是跟PC機插件卡片比較。然而,每秒250的閱讀速率比較少見。要牢記正在測量的許多現(xiàn)象本質上是物理的,如溫度、壓力和流量,而且一般有較少的變動。此外,因為數(shù)據(jù)采集器的監(jiān)測精度,多量且平均閱讀沒有必要,就像它們經(jīng)常在PC記插件卡片一樣。在前面的分析基礎上,現(xiàn)在開始發(fā)展數(shù)據(jù)采集器,數(shù)據(jù)采集器是采集數(shù)據(jù)的理想選擇。2 開發(fā)環(huán)境2.1 Protel99軟件在這里我用了PROTEL99設計原理圖和畫PCB板。Protel99SE是Protel公司近10年來致力于Windows平臺開發(fā)的最新結晶,能實現(xiàn)從
16、電學概念設計到輸出物理生產(chǎn)數(shù)據(jù),以與這之間的所有分析、驗證和設計數(shù)據(jù)管理。因而今天的Protel最新產(chǎn)品已不是單純的PCB(印制電路板)設計工具,而是一個系統(tǒng)工具,覆蓋了以PCB為核心的整個物理設計。 最新版本的Protel軟件可以毫無障礙地讀Orcad、Pads、Accel(PCAD)等知名EDA公司設計文件,以便用戶順利過渡到新的EDA平臺。Protel99 SE共分5個模塊,分別是原理圖設計、PCB設計(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、PLD設計。 以下介紹一些Protel99SE的部分最新功能:1、可生成30多種格式的電氣連接網(wǎng)絡表;2、強大的全局編輯功能;3、在
17、原理圖中選擇一級器件,PCB中同樣的器件也將被選中; 4、同時運行原理圖和PCB,在打開的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡; 5、既可以進行正向注釋元器件標號(由原理圖到PCB),也可以進行反向注釋(由PCB到原理圖),以保持電氣原理圖和PCB在設計上的一致性; 6、滿足國際化設計要求(包括國標標題欄輸出,GB4728國標庫); * 方便易用的數(shù)模混合仿真(兼容SPICE 3f5);7、支持用CUPL語言和原理圖設計PLD,生成標準的JED下載文件; * PCB可設計32個信號層,16個電源-地層和16個機加工層;8、強大的“規(guī)則驅動”設計環(huán)境,符合在線的和批處理的設計規(guī)則
18、檢查; 9、智能覆銅功能,覆鈾可以自動重鋪; 10、提供大量的工業(yè)化標準電路板做為設計模版; 11、放置漢字功能; 12、可以輸入和輸出DXF、DWG格式文件,實現(xiàn)和AutoCAD等軟件的數(shù)據(jù)交換; 13、智能封裝導航(對于建立復雜的PGA、BGA封裝很有用); 14、方便的打印預覽功能,不用修改PCB文件就可以直接控制打印結果; 15、獨特的3D顯示可以在制板之前看到裝配事物的效果; 16、強大的CAM處理使您輕松實現(xiàn)輸出光繪文件、材料清單、鉆孔文件、貼片機文件、測試點報告等; 17、經(jīng)過充分驗證的傳輸線特性和仿真精確計算的算法,信號完整性分析直接從PCB啟動; 18、反射和串擾仿真的波形顯
19、示結果與便利的測量工具相結合; 19、專家導航幫您解決信號完整性問題。2.2 編程工具 KEIL C51在這里我用C語言編寫程序,用的編程工具就是廣受開發(fā)者喜愛的KEIL c51開發(fā)軟件,他支持的功能強,適合很多公司的芯片。KeilC51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil
20、C51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。C51工具包的整體結構,如圖(1)所示,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51與A51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標文件(.ABS)。ABS文件由O
21、H51轉換成標準的Hex文件,以供調試器dScope51或tScope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。圖1 C51工具包整體結構圖當設計一個小的嵌入式系統(tǒng)時,一般我們都用匯編語言在很多工程中,這是一個很好的方法因為代碼一般都不超過8K,而且都比較簡單。如果硬件工程師要同時設計軟件和硬件,經(jīng)常會采用匯編語言來做程序。我的經(jīng)驗告述我,硬件工程師一般不熟系像C一類的高級語言。使用匯編的麻煩在于它的可讀性和可維護性,特別當程序沒有很好的標注的時候,代碼的可重用性也比較低,如果使用C 的話可以很好的解決這些問題。用C 編寫的程序,因
22、為C 語言很好的結構性和模塊化,更容易閱讀和維護而且由于模塊化,用C 語言編寫的程序有很好的可移植性,功能化的代碼能夠很方便的從一個工程移植到另一個工程,從而減少了開發(fā)時間,用C 編寫程序比匯編更符合人們的思考習慣,開發(fā)者可以更專心的考慮算法而不是考慮一些細節(jié)問題,這樣就減少了開發(fā)和調試的時間。使用像C 這樣的語言程序員不必十分熟系處理器的運算過程,這意味著對新的處理器也能很快上手不必知道處理器的具體部結構。使得用C 編寫的程序比匯編程序有更好的可移植性,很多處理器支持C 編譯器,所有這些并不說明匯編語言就沒了立足之地。很多系統(tǒng)特別是實時時鐘系統(tǒng)都是用C 和匯編語言聯(lián)合編程,對時鐘要求很嚴格時
23、使用匯編語言成了唯一的方法,除此之外根據(jù)我的經(jīng)驗包括硬件接口的操作都應該用C 來編程,C 的特點就是可以使你盡量少地對硬件進行操作是一種功能性和結構性很強的語言。2.3 燒寫器在這次設計中我用了煒煌編程器的TOP851型編程器,它具有體積小巧,功耗低,可靠性高的特點,是專為開發(fā)51系列單片機和燒寫各類存儲器而設計的普與機型。TOP851采用RS232串口與PC機連接通信,自動檢測元件是否插好,如果插錯了位置有提示,避免無謂的損失。有過電流保護,超過限制的電流時,在0.1秒切斷電源,可以有效的保護編程器不受損害。電源效率高,靜態(tài)電流只有50MA,機器不會過熱。全中問操作界面軟件,可自動探測廠家和
24、型號。使用時包括硬件安裝和軟件安裝。3 設計過程3.1系統(tǒng)功能與結構簡介我設計的數(shù)據(jù)采集器主要是采集05V模擬電壓信號,現(xiàn)在大部分的模擬量多可以用各種器轉換成電壓模擬信號。系統(tǒng)把模擬的電壓信號轉換成數(shù)字數(shù)據(jù),由單片機串口經(jīng)過TTL電平轉換后,發(fā)送到PC機由PC機處理采集的信號,另外3個數(shù)碼管LED顯示數(shù)字電壓的大小,兩個發(fā)光二極管指示工作狀態(tài)??梢酝ㄟ^八個按鈕選擇八個采集通道,一個按鈕控制轉換開始或結束,系統(tǒng)可復位。系統(tǒng)結構圖:圖2 系統(tǒng)結構圖3.2 硬件芯片選擇與功能簡介主控制芯片使用AT89C51芯片,轉換模塊使用ADC0809模數(shù)轉換芯片,用雙D觸發(fā)器74LS74四分頻89C51的ALE
25、信號輸出腳2MHz為500KHz為ADC0809提供時鐘信號,串口轉換芯片MAX232,另外用74LS244驅動LED數(shù)碼管。3.2.1 AT89C51芯片AT89C51是美國ATMEL公司生產(chǎn)的底電壓,高性能CMOS 8位單片機,片含4K bytes的可反復擦寫的FLASH只讀程序存儲器和128 bytes 的隨機存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51 指令系統(tǒng),片置通用8位中央處理器(CPU)和FLASH存儲單元,功能強大AT89C51單片機可為您提供許多高性價比的應用場合,可靈活應用于各種控制領域。引腳圖:圖3 89C51引腳圖特性:
26、80C51 核心處理單元,4k 字節(jié)FLASH 89C51X2,128 字節(jié)RAM 89C51X2,布爾處理器。全靜態(tài)操作,12 時鐘操作可選6 個時鐘通過軟件或并行編程器,存儲器尋址圍,64K 字節(jié)ROM 和64K 字節(jié)RAM,電源控制模式:時鐘可停止和恢復、空閑模式、掉電模式。兩個工作頻率圍:6 時鐘模式時為0 到20MHz,12 時鐘模式時為0 到33MHz。復位:在振蕩器工作時,將RST 腳保持至少兩個機器周期高電平12 時鐘模式為24 個振蕩器周期,6 時鐘模式為12 振蕩器周期可實現(xiàn)復位。為了保證上電復位的可靠,RST 保持高電平的時間至少為振蕩器啟動時間通常為幾個毫秒再加上兩個機
27、器周期。復位后,振蕩器以12 時鐘模式運行當已通過并行編程器設置為6 時鐘模式時除外。低功耗模式:時鐘停止模式:靜態(tài)設計使時鐘頻率可以降至0MHz(停止)。當振蕩器停振時,RAM 和SFR 的值保持不變。該模式允許逐步應用并可將時鐘頻率降至任意值以實現(xiàn)系統(tǒng)功耗的降低。如要實現(xiàn)最低功耗則建議使用掉電模式??臻e模式:CPU 進入睡眠狀態(tài),但片的外圍電路仍然保持工作狀態(tài)。正常操作模式的最后一條指令執(zhí)行進入空閑模式??臻e模式下CPU 容片RAM 和所有SFR 保持原來的值。任何被使能的中斷(此時,程序從中斷服務程序處恢復并繼續(xù)執(zhí)行)或硬件復位(與上電復位使用一樣的方式啟動處理器)均可終止空閑模式。掉電
28、模式:為了進一步降低功耗,通過軟件可實現(xiàn)掉電模式。該模式中,振蕩器停振并且在最后一條指令執(zhí)行進入掉電模式。降到2.0V 時,片RAM 和SFR 保持原值,在退出掉電模式之前Vcc 必須升至規(guī)定的最低操作電壓。3.2.2 ADC0908 芯片AD0809 的邏輯結構:ADC0809 是8 位逐次逼近型A/D轉換器。它由一個8路模擬開關、一個地址鎖存譯碼器、一個A/D 轉換器和一個三態(tài)輸出鎖存器組成(見圖1)。多路開關可選通8個模擬通道,允許8 路模擬量分時輸入,共用A/D 轉換器進行轉換。三態(tài)輸出鎖器用于鎖存A/D 轉換完的數(shù)字量,當OE 端為高電平時,才可以從三態(tài)輸出鎖存器取走轉換完的數(shù)據(jù)。圖
29、4 ADC0809 部結構AD0809 的工作原理:IN0IN7:8 條模擬量輸入通道;ADC0809 對輸入模擬量要求:信號單極性,電壓圍是05V,若信號太小,必須進行放大;輸入的模擬量在轉換過程中應該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。地址輸入和控制線:4條;ALE 為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與譯碼器將A,B,C 三條地址線的地址信號進行鎖存,經(jīng)譯碼后被選中的通道的模擬量進轉換器進行轉換。A,B 和C 為地址輸入線,用于選通IN0IN7 上的一路模擬量輸入。通道選擇表如下表所示。CBA 選擇的通道:表一CBAINCBAIN000
30、IN0100IN4001IN1101IN5010IN2110IN6011IN3111IN7數(shù)字量輸出與控制線:11 條.ST 為轉換啟動信號。當ST 上跳沿時,所有部寄存器清零;下跳沿時,開始進行A/D 轉換;在轉換期間,ST 應保持低電平。EOC 為轉換結束信號。當EOC 為高電平時,表明轉換結束;否則,表明正在進行A/D 轉換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機輸出轉換得到的數(shù)據(jù)。OE1,輸出轉換得到的數(shù)據(jù);OE0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7D0 為數(shù)字量輸出線。CLK為時鐘輸入信號線。因ADC0809的部沒有時鐘電路,所需時鐘信號必須由外界提供,通常使用頻率為500KHZ
31、,VREF(),VREF()為參考電壓輸入。ADC0809 應用說明:(1)ADC0809 部帶有輸出鎖存器,可以與AT89S51 單片機直接相連。(2)初始化時,使ST 和OE信號全為低電平。(3)送要轉換的哪一通道的地址到A,B,C 端口上。(4)在ST端給出一個至少有100ns 寬的正脈沖信號。(5)是否轉換完畢,我們根據(jù)EOC 信號來判斷。(6)當EOC變?yōu)楦唠娖綍r,這時給OE 為高電平,轉換的數(shù)據(jù)就輸出給單片機了。3.2.3 74LS74 芯片74LS74為帶預置和清除端的兩組D 型觸發(fā)器,在這次的系統(tǒng)設計中,它為AD0809芯片提供500KHz的時鐘信號,這是利用了觸發(fā)器的工作。一
32、個觸發(fā)器可以2分頻,二個觸發(fā)器連接可提供4分頻。原理其主要電特性的典型值如下:表二引出端符號:邏輯圖:圖 5 74LS74邏輯圖3.2.4 MAX232芯片MAX232芯片為串口TTL電平轉換芯片。接口電路為:圖6 MAX232連接圖3.2.5 74LS244 芯片74LS74為八同相三態(tài)緩沖器/線驅動器。這里主要用于驅動共陰數(shù)碼管LED的顯示驅動。結構圖和功能圖為:圖7 74LS2443.3 原理介紹首先用PROTEL軟件設計的原理圖為:圖8 系統(tǒng)原理圖系統(tǒng)總的功能原理,系統(tǒng)開機,89C51芯片工作,由P2.1控制發(fā)光二極管1指示系統(tǒng)工作狀態(tài),亮表示工作,暗表示不工作由P3.5控制發(fā)光二極管
33、2指示AD0809工作狀態(tài),亮表示工作,暗表示不工作。P2.0控制轉換開始和結束,P1.0P1.7控制八個按鈕用來選擇模擬輸入轉換通道,另外一個復位按鈕。由P0口輸入AD0809芯片的轉換數(shù)據(jù)結果,P2.2、P2.3、P2.4口接AD0809芯片的ST、EOC、OE3個控制信號引腳,用于控制AD0809工作。P2.5、P2.6、P2.7接AD0809的A、B、C控制轉換通道選擇,另外89C51的LEA。數(shù)碼管方面,有P0口輸出數(shù)據(jù),P3.2、P3.3、P3.4控制位選。和微機接口方面,89C51的RX、TX接MAX232,MAX232的13和14引腳接DB9的3、2引腳組成串口通信接線。串口通
34、信原理,單片機和PC機通信要經(jīng)過TTL電平轉換。這里串行通信使用RS-232標準,它本是美國電子工業(yè)協(xié)會的推薦標準,現(xiàn)已在全世界的圍廣泛采用。RS-232實際上是串行通信的總線標準。它用-3V到-25V表示邏輯“1”,+3V到+25V表示邏輯“0”。這里只用3個引腳構成串口通信,2腳發(fā)送數(shù)據(jù)TXD,3腳接收數(shù)據(jù)RXD和5腳接地。單片機的串口通信,在單片機芯片中,UART已集成在其中,做為組成部分,構成一個串行口,這個串行口是全雙工的。單片機串口通信的波特率設置是有單片機的定時記數(shù)器1提供時鐘。串口通信用到串口發(fā)送緩沖寄存器SBUF和與串行通信控制寄存器SCON。串口有3種工作方式,這里采用工作
35、方式1。串口工作方式1的原理為:TxD 腳發(fā)送,RxD 腳接收,每次數(shù)據(jù)為10 位,一個起始位0 ,8 個數(shù)據(jù)位,LSB 在前與一個停止位1,當接收數(shù)據(jù)時停止位存于SCON 的RB8 波特率可變由定時器1 溢出速率決定。串行口工作于模式1時,傳輸?shù)氖?0位;1 位起始位0,8位數(shù)據(jù)低位在先與一位停止位1。由RxD接收,TxD發(fā)送。接收時,停止位存入SCON RB8。80C51 波特率取決于定時器1的溢出速率。發(fā)送過程是由執(zhí)行一條以SBUF 為目的寄存器的指令啟動的。寫SBUF 信號還把1 TB8 裝入發(fā)送移位寄存器的第9 位,同時通知發(fā)送控制器進行發(fā)送。實際上發(fā)送過程開始于16 分頻計數(shù)器下次
36、翻轉后的那個機器周期的S1P1 時刻。每位的發(fā)送時序與16 分頻計數(shù)器同步,而并不與寫SBUF 信號同步。發(fā)送以激活SEND 端開始,向TxD發(fā)送一起始位一位時間以后DATA端有效,使輸出移位寄存器中數(shù)據(jù)得以送至TxD。再過一位,產(chǎn)生第一個移位脈沖。數(shù)據(jù)向右移出,左邊不斷填以0,當數(shù)據(jù)字節(jié)的最高位移到移位寄存器的輸出位置時,其左邊是裝入1的第9位,再左的容均為0。此時通知TX 控制器作最后一次移位,然后禁止SEND端并置位TI。這都發(fā)生于寫SBUF后16分頻計時器的第10次翻轉時。接收在RxD端檢測到負跳變時啟動,為此MCU對RxD不斷采樣,采速率為波特率的16倍。當檢測到負跳變時,16分頻計
37、數(shù)器立即復位,同時將1FFH 寫入輸入移位寄存器。復位16分頻計時器確保計時器翻轉時位與輸入數(shù)據(jù)位時間同步。計數(shù)器的16個狀態(tài)將每個位時間分為16份。在第7、8、9狀態(tài)時,位檢測器對RxD 端的值采樣。取值為三個采樣值中取多數(shù)至少2個作為讀入值,這樣可以抑制噪聲。如果所接收的第一位不為0,說明它不是一幀數(shù)據(jù)的起始位,該位被摒棄,接收電路被復位,等待另一個負跳變的到來。這用來防止錯誤的起始位,如果起始位有效,則被移入輸入移位寄存器,并開始接收這一幀中的其它位。當數(shù)據(jù)位逐一由右邊移入時,1從左邊被移出。當起始位0移到最左邊時,通知接收控制器進行最后一次移位,將移位寄存器容9 位分別裝入SBUF與R
38、B8,并置RI=1。僅當最后一位移位脈沖產(chǎn)生時同時滿足下述2個條件:1、RI=0,SM2=0或接收到的停止位=1,才會裝載SBUF和RB8,并且置位RI。上述兩個條件任一不滿足,所接收到的數(shù)據(jù)幀就會丟失,不再恢復。兩者都滿足時,停止位就進入RB88,位數(shù)據(jù)進入SBUF,RI=1。這時無論上述條件滿足與否,接收控制單元都會重新等待RxD的負跳變。由于采樣八百多MHz,波特率要大于9600BPS,這里我設置為9600bps,由定時器1工作方式2提供。在80C51 中模式1 和模式3 的波特率由定時器1 的溢出速率決定。使用定時器1 作波特率發(fā)生器當定時器1 用作波特率發(fā)生器模式1 和3 中波特率由
39、定時器1 的溢出速率和SMOD1 的值決定。在此應用中定時器1 不能用作中斷,定時器1 可以工作在定時或計數(shù)方式和3 種工作模式中任何一個。在最典型應用中它用作定時器方式工作自動重裝載模式TMOD 的高半字節(jié)為0010B,它的波特率值由下式給出:可以定時器1 的中斷實現(xiàn)非常低的波特率將定時器配置為16 位定時器TMOD 的高半字節(jié)為0001B,并使用中斷進行16位軟件重裝。LED顯示原理,數(shù)碼管的發(fā)光和發(fā)光2極管的顯示原理一樣。這里采用靜態(tài)顯示原理,掃描顯示。3.4 軟件設計在這里我用C語言編寫系統(tǒng)程序,用C語言寫程序的好處前面已經(jīng)說過,KEILC51真的是很好的軟件,我寫的程序在KEIL上仿
40、真通過,程序見附錄。軟件結構圖:圖9 軟件流程圖可分為4個模塊:(1)、控制模塊(2)、AD轉換模塊(3)、LED顯示模塊(4)、串口發(fā)送模塊3.5PC機上數(shù)據(jù)接收軟件制作在這里我用VC+的MFC制作數(shù)據(jù)采集器的上位機數(shù)據(jù)接收軟件。下面講述主要制作過程:1.建立項目:打開VC6.0,建立一個基于對話框的MFC應用程序cg12.在項目中插入MSComm控件 選擇Project菜單下Add To Project子菜單中的 Components and Controls選項,在彈出的對話框中雙擊Registered&
41、#160;ActiveX Controls項,則所有注冊過的ActiveX控件出現(xiàn)在列表框中。 選擇Microsoft Communications Control, version 6.0,單擊Insert按鈕將它插入到我們的Project中來,接受缺省的選項。這時在ClassView視窗中就可以看到CMSComm類了,并且在控件工具欄Controls中出現(xiàn)了圖標現(xiàn)在要做的是用鼠標將此圖標拖到對話框中,程序運行后,這個圖標是看不到的。3.利用ClassWizard定義CMSComm類控制對象 打開ClassWi
42、zard>Member Viariables選項卡,選擇CGc1Dlg類,為IDC_MSCOMM1添加控制變量:m_ctrlComm,這時你可以看一看,在對話框頭文件中自動加入了/AFX_INCLUDES() #include "mscomm.h" /AFX_INCLUDES (這時運行程序,如果有錯,那就再從頭開始)。4.在對話框中添加控件 向主對話框中添加兩個編輯框,一個用于接收顯示數(shù)據(jù)ID為IDC_EDIT_RXDATA,另一個用于輸入發(fā)送數(shù)據(jù),ID為IDC_EDIT
43、_TXDATA,再添加一個按鈕,功能是按一次就把發(fā)送編輯框中的容發(fā)送一次,將其ID設為IDC_BUTTON_MANUALSEND。別忘記了將接收編輯框的Properties>Styles中把Miltiline和Vertical Scroll屬性選上,發(fā)送編輯框若你想輸入多行文字,也可選上Miltiline。再打開ClassWizard>Member Viariables選項卡,選擇CGc1g類, 為IDC_EDIT_RXDATA添加CString變量m_strRXData, 為IDC_EDIT_TXDATA添加CString變量m_strTX
44、Data。5.添加串口事件消息處理函數(shù)OnComm() 打開ClassWizard>Message Maps,選擇類CGc1Dlg,選擇IDC_MSCOMM1,雙擊消息OnComm,將彈出的對話框中將函數(shù)名改為OnComm。 這個函數(shù)是用來處理串口消息事件的,如每當串口接收到數(shù)據(jù),就會產(chǎn)生一個串口接收數(shù)據(jù)緩沖區(qū)中有字符的消息事件,我們剛才添加的函數(shù)就會執(zhí)行,我們在OnComm()函數(shù)加入相應的處理代碼就能實現(xiàn)自已想要的功能了。在函數(shù)中加入如下代碼:void CGc1Dlg:OnComm()
45、VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata1024; /設置BYTE An 8-bit integerthat is not signed. CString strtemp;
46、60; if(m_ctrlComm.GetCommEvent()=2) /事件值為2表示接收緩沖區(qū)有字符 variant_inp=m_ctrlComm.GetInput(); /讀緩沖區(qū) safearray_inp=variant_inp; /VARIANT型變量轉換為ColeSafeArray型變量
47、; len=safearray_inp.GetOneDimSize(); /得到有效數(shù)據(jù)長度 for(k=0;k<len;k+) safearray_inp.GetElement(&k,rxdata+k);/轉換為BYTE型數(shù)組 for(k=0;k<len;k+)&
48、#160;/將數(shù)組轉換為Cstring型變量 char bt=*(char*)(rxdata+k); /字符型 strtemp.Format("%02x",bt); /將16進制字符
49、送入臨時變量strtemp存放 m_strRXData+=strtemp; /加入接收編輯框對應字符串if (strtemp="ffffff80")m_strRXData+="0"if (strtemp="ffffff81")m_strRXData+="1"if (strtemp="ffffff82")m_strRXData+="2&q
50、uot;if (strtemp="ffffff83")m_strRXData+="3"if (strtemp="ffffff84")m_strRXData+="4"if (strtemp="ffffff85")m_strRXData+="5"if (strtemp="ffffff86")m_strRXData+="6"if (strtemp="ffffff87")m_strRXData+="7"i
51、f (strtemp="ffffff88")m_strRXData+="8"if (strtemp="ffffff89")m_strRXData+="9"if (strtemp="ffffff8a")m_strRXData+="." m_ctrlComm.SetInBufferCount(0); /清空接收緩沖區(qū)
52、 UpdateData(FALSE); /更新編輯框容6.打開串口和設置串口參數(shù) 。在程序中做一個開始按鈕,在該按鈕的處理函數(shù)中打開串口。CGc1Dlg:OnButton1()打開串口,加入如下代碼:if(m_ctrlComm.GetPortOpen()m_ctrlComm.SetPortOpen(FALSE);m_ctrlComm.SetCommPort(1); /選擇com1if( !m_ctrlComm.GetPortOpen()m_ctrlComm.SetPortOpen(TRUE);/打開串口elseAfxMessageBox(&
53、quot;cannot open serial port");m_ctrlComm.SetSettings("9600,n,8,1"); /波特率19200,無校驗,8個數(shù)據(jù)位,1個停止位 m_ctrlComm.SetInputMode(1); /1:表示以二進制方式檢取數(shù)據(jù)m_ctrlComm.SetRThreshold(1); /參數(shù)1表示每當串口接收緩沖區(qū)中有多于或等于1個字符時將引發(fā)一個接收數(shù)據(jù)的OnComm事件m_ctrlComm.SetInputLen(0); /設置當前接收區(qū)數(shù)據(jù)長度為0m_ctrlComm.GetInput();/先預讀緩沖區(qū)以清除
54、殘留數(shù)據(jù)7.發(fā)送數(shù)據(jù) 先為發(fā)送按鈕添加一個單擊消息即BN_CLICKED處理函數(shù),打開ClassWizard>Message Maps,選擇類CGc1Dlg,選擇IDC_BUTTON_MANUALSEND,雙擊BN_CLICKED添加OnButtonManualsend()函數(shù),并在函數(shù)中添加如下代碼:void CGc1Dlg:OnButtonManualsend() UpdateData(TRUE); /讀取編輯框容m_ctrlComm.SetOutput(COleVariant(m_strTXData);/發(fā)送數(shù)據(jù)最終我做
55、出的軟件界面為:3.6 調試過程由于各種原因,接好硬件后,燒入程序沒有預期的效果,這就要調試。我是按下面步驟調試的:(1)測單片機是否正常工作,上電后測電源是否通電,用萬用表測單片機各各口是否輸出正確的電平。用示波器測ALE腳是否輸出2MHz的波型。通過這一步測試,通過之后接著做下面的測試。通過寫入鍵盤測試程序測試鍵盤部分是否正常,以備下面測試工作。(2)測試LED顯示模塊,通過簡單的顯示程序測試LED是否正常工作,否則檢查這一模塊。LED測試程序:#include <reg51.H>sbit b1=P32;sbit b2=P33;sbit b3=P34;sbit p0_7=P07
56、;void main()int i;while(1)P0=0X66;p0_7=1;b1=0;b2=b3=1;i=100;while(i-);P0=0X6D;b2=0; b1=b3=1;i=100;while(i-);P0=0X7F;b1=b2=1;b3=0;i=100;while(i-);(3)測試串口發(fā)送模塊,寫串口發(fā)送程序到單片機,認單片機發(fā)送數(shù)據(jù)給PC機,測試程序見附錄,用示波器測單片機TX口波形,看是否有波形輸出,否則串口出錯,檢查串口部分,分插上MAX232芯片和拔出MAX232芯片檢查是否是MAX232芯片部分連接有問題,用串口調試精靈接收單片機發(fā)來的字符。測試通過后,接著做第4步
57、測試。串口測試程序:#include <reg51.H>void main() while(1) PCON=0x00; SCON=0x40; TMOD=0x20; TH1=0xfd;TL1=0xfd;EA=0; TR1=1; SBUF=0x33; while(!TI); TI=0; (4)測試AD轉換模塊,通過程序測試AD轉換模塊是否正常,否則檢查這一模塊連接。程序見附錄。我查出的錯誤是AD不工作,我通過測試AD轉換時鐘信號線查出了這一錯誤,測74LS74是否輸出500KHz信號,沒有表示時鐘不正常,通過檢查74LS74連接排除問題。(5)重新寫入全部程序,系統(tǒng)是否正常工作,不工作
58、很可能是程序有錯,通過檢查程序排除,原因是在LEIL上仿真通過的程序在實際硬件電路中不同,這也是要求要硬件仿真的目的。(6)調通硬件之后,就可以把自己做的軟件和硬件和起來調試了。3.7 系統(tǒng)精度最后做出的系統(tǒng)性能為:(1) 采集數(shù)據(jù)精度92%,5V是誤差-0.4V,0V準確;(2) 串口發(fā)送給PC機有點雜波,但還比較準確;(3) 采樣間隔100MS左右;(4) PC機軟件十進制顯示采集的數(shù)據(jù),提供處理;4結論與展望4.1結論本文構建了一套基于單片機的數(shù)據(jù)采集系統(tǒng),主要研究結論可概括如下:(1)基于單片機的數(shù)據(jù)采集思想,使用Protel 99SE和Keil C51實現(xiàn)原理圖繪制與軟件編譯,具有實
59、用性。(2)基于單片機數(shù)據(jù)采集理論,將數(shù)據(jù)采集過程和外圍電路結合在一起,擴展了系統(tǒng)的應用圍,并提高了系統(tǒng)的實用性。(3)使用模塊化理念,設計了一套與A/D轉換芯片驅動器,同時編寫了相關芯片的驅動,實現(xiàn)了數(shù)據(jù)采集的模塊化控制。(4)使用順序化的程序結構,結合模塊化的程序設計方法,實現(xiàn)數(shù)據(jù)采集系統(tǒng)的單步運行,方便用戶定位程序運行過程中的錯誤。4.2 展望總結本文的工作,基于單片機的數(shù)據(jù)采集系統(tǒng)與傳統(tǒng)數(shù)據(jù)采集系統(tǒng)相比,具有分布廣泛、采集迅速、顯示直觀、操作簡便、價格低廉等優(yōu)勢,但在數(shù)據(jù)傳輸圍與采集精度上仍存在不足。為了進一步研究數(shù)據(jù)采集技術,在今后的工作中,可以從以下幾個方面進行改進:(1) 數(shù)據(jù)傳
60、輸圍進一步擴大。通過更新無線傳輸設備,運用更高性能的功能模塊,提升數(shù)據(jù)傳輸圍。(2) 采集結果的精確標定。采用多次采集方式,并同國外相關采集系統(tǒng)進行比較,提高采集精度。(3) 采集對象的進一步拓展。將本采集系統(tǒng)進行相應的改進,可用于光強度、空氣濕度等其他數(shù)據(jù)的采集。致 在將近半年的畢業(yè)設計期中,我要感我的老師、同學,是他們的無私幫助才使我順利完成了畢業(yè)設計任務;是他們的無私幫助才使我在面對挫折與困難時毫不畏懼;更是他們的無私幫助才使我成功完成畢業(yè)設計。在畢業(yè)設計完成之際,我首先向我的指導老師鄧老師致以深切的意。感他在畢業(yè)設計過程中給我提供指導,幫助我解決困難,在這次畢業(yè)設計的整個過程中教誨我,在這里
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股份制企業(yè)創(chuàng)立人合同書格式
- 建筑工程勞務分包合同
- 工程合同范本在線查閱
- 2024新版簡單食堂承包合同書范本
- 簡單股權轉讓協(xié)議書范本
- 建筑維修保養(yǎng)服務補充協(xié)議
- 2023年高考地理重點難點考點通練-服務業(yè)(原卷版)
- 1.1堅持改革開放(導學案) 2024-2025學年統(tǒng)編版道德與法治九年級上冊
- 個人投資合同協(xié)議樣本
- 生物中圖版自主訓練:第一單元第二章第二節(jié)染色體結構變異對性狀的影響
- 小學英語人教新起點六年級上冊Unit5FamousPeopleunit5
- 工程結構通用規(guī)范(住建部2021年頒布)
- 混凝土監(jiān)理旁站記錄
- 臨床醫(yī)學老年性癡呆-課件
- 小學經(jīng)典誦讀社團活動計劃、安排、記錄匯編
- 咯血(課件幻燈)
- 《管理統(tǒng)計學》課程教學大綱
- C++語言基礎知識
- 全國人工智能應用技術技能大賽理論考試題庫大全-上(單選題匯總)
- 機關檔案管理工作培訓課件
- 工程施工階段全過程造價控制與管理工作方案 精品
評論
0/150
提交評論