

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 學號:########</p><p><b> 畢 業(yè) 論 文</b></p><p><b> ?。?2013 屆)</b></p><p><b> 二○一三年印制</b></p><p> 年 級09級
2、 </p><p> 專 業(yè) 班 級</p><p> 學 生 姓 名###### </p><p> 指導教師姓名###### </p><p> 指導教師職稱副教授 </p><p>
3、; 論文完成時間</p><p> 本科生畢業(yè)論文(設計、創(chuàng)作)承諾書</p><p> 說明:學生畢業(yè)論文(設計、創(chuàng)作)如有保密等要求,請在備注中明確,承諾內容第2 條即以備注為準。</p><p> 2013 屆畢業(yè)論文(設計、創(chuàng)作)任務書</p><p> 指導教師簽名 年 月
4、日</p><p> 2013 屆畢業(yè)論文(設計、創(chuàng)作)中期檢查表</p><p><b> 目 錄</b></p><p><b> 摘 要11</b></p><p> ABSTRACT12</p><p> 第1章 緒 論1</p&
5、gt;<p> 1.1 課題來源1</p><p> 1.2 課題背景1</p><p> 1.3 國內外在該方向的研究現狀及分析2</p><p> 1.3.1 國內在該方向的研究現狀2</p><p> 1.3.2 國外在該方向的研究現狀3</p><p> 1.4 該
6、課題研究的主要內容3</p><p> 第2章 數據采集系統(tǒng)的設計5</p><p> 2.1 數據采集系統(tǒng)5</p><p> 2.2 數據采集的目的5</p><p> 2.3 數據采集系統(tǒng)框圖5</p><p> 2.3.1 主要芯片6</p><p>
7、2.3.2涉及到的軟件7</p><p> 2.4 基本功能要求7</p><p> 第3章 硬件設計8</p><p> 3.1 系統(tǒng)框圖8</p><p> 3.2 單片機最小系統(tǒng)8</p><p> 3.3 PCF8591芯片9</p><p> 3.3
8、.1 IIC串行總線9</p><p> 3.3.2 PCF8591 AD轉換的應用13</p><p> 3.4 LCD1602器件14</p><p> 3.4 單片機外圍電路圖15</p><p> 第4章 軟件設計16</p><p> 4.1 主程序16</p>
9、<p> 4.1.1 主程序流程圖16</p><p> 4.1.2 LCD1602與PCF8591程序流程圖17</p><p> 4.1.3 數據處理程序流程圖18</p><p> 4.1.4 按鍵檢測程序流程圖19</p><p> 4.2 上位機程序介紹20</p><p&
10、gt; 4.2.1 Visual C++ 6.020</p><p> 4.2.2 MSComm控件[9]20</p><p> 4.2 硬件與軟件調試21</p><p><b> 結 論22</b></p><p><b> 參考文獻23</b></p>
11、<p><b> 摘 要</b></p><p> 目前,數據采集系統(tǒng)廣泛應用在科研、教育、工業(yè)、水利等眾多領域。本系統(tǒng)基于89C52單片機,采用PCF8591串行AD芯片,完成對多路模擬信號的數據采集,并由LCD1602把數據顯示出來。本系統(tǒng)帶有按鍵輸入,可通過按鍵實現轉換通道的選擇。在windows桌面環(huán)境下,使用Visual C++可視化軟件開發(fā)工具,調用MSComm
12、控件,開發(fā)一個集存儲與顯示的上位機程序,以便用計算機對大量數據的處理。</p><p> 關鍵詞 89C52 ;PCF8591;LCD1602 ;Visual C++ ;MSComm控件</p><p><b> ABSTRACT</b></p><p> At present, the data acquisition system i
13、s widely used in scientific research, education, industry, water conservancy, and many other fields. This system based on 89C52, using serial AD chip PCF8591, complete the multi-channel analog signal data acquisition, an
14、d data by the LCD1602 display. With pressed key input, the system can be realized through key conversion channel choice. In Windows desktop environments, the use of Visual c + + visualization software development tools,
15、invoke the MSComm c</p><p> Keywords: 89C52; PCF8591; LCD1602; Visual C++; MSComm</p><p><b> 第1章 緒 論</b></p><p> 本章主要介紹數據采集系統(tǒng)歷史及發(fā)展,讓我們對數據采集系統(tǒng)有個初步了解。</p><
16、;p><b> 1.1 課題來源</b></p><p><b> 自定題目。</b></p><p><b> 1.2 課題背景</b></p><p> 近年來,數據采集及其應用受到了人們越來越廣泛的關注,數據采集系統(tǒng)也有了迅速的發(fā)展,它可以廣泛的應用于各種領域。</p&g
17、t;<p> 數據采集系統(tǒng)起始于20世紀50年代,1956年美國首先研究了用在軍事上的測試系統(tǒng),日標是測試中不依靠相關的測試文件,由非成熟人員進行操作,并且測試任務是由測試設備高速自動控制完成的。由于該種數據采集測試系統(tǒng)具有高速性和一定的靈活性,可以滿足眾多傳統(tǒng)方法不能完成的數據采集和測試任務,因而得到了初步的認可。大概在60年代后期,國內外就有成套的數據采集</p><p> 設備和系統(tǒng)多屬于
18、專用的系統(tǒng)。[1]</p><p> 20世紀70年代后期,隨著微型機的發(fā)展,誕生了采集器、儀表同計算機溶為一體的數據采集系統(tǒng)。由于這種數據采集系統(tǒng)的性能優(yōu)良,超過了傳統(tǒng)的自動檢測儀表和專用數據采集系統(tǒng),因而獲得了驚人的發(fā)展。從70年代起,數據采集系統(tǒng)發(fā)展過程中逐漸分為兩類,一類是實驗室數據采集系統(tǒng),一類是.工業(yè)現場數據采集系統(tǒng)。[1]</p><p> 20世紀80年代隨著計算機的普
19、及應用,數據采集系統(tǒng)得到了很大的發(fā)展,</p><p> 開始出現了通用的數據采集與自動測試系統(tǒng)。該階段的數據采集系統(tǒng)主要有兩類,一類以儀表儀器和采集器、通用接口總線和計算機組成。這類系統(tǒng)主要應用</p><p> 于實驗室,在工業(yè)生產現場也有一定的應用。第二類以數據采集卡、標準總線和</p><p> 計算機構成,這一類在工業(yè)現場應用較多。20世紀80年代后
20、期,數據采集發(fā)生</p><p> 了很大的變化,工業(yè)計算機、單片機和大規(guī)模集成電路的組合,用軟件管理,使系統(tǒng)的成本減低,體積變小,功能成倍增加,數據處理能力大大加強。[1]</p><p> 20世紀90年代至今,在國際上技術先進的國家,數據采集系統(tǒng)己成功的運用到軍事、航空電子設備及宇航技術、工業(yè)等領域。由于集成電路制造技術的不斷提高,出現了高性能、高可靠的單片機數據采集系統(tǒng)(DAS
21、)。數據采集技術已經成為一種專門的技術,在工業(yè)領域得到了廣泛的應用。該階段的數據采集系統(tǒng)采用模塊式結構,根據不同的應用要求,通過簡單的增加和更改模塊,井結合系統(tǒng)編程,就可擴展或修改系統(tǒng),迅速組成一個新的系統(tǒng)。[1]</p><p> 盡管現在以微機為核心的可編程數據采集與處理采集技術的發(fā)展方向得到了迅速的發(fā)展,而且組成一個數據采集系統(tǒng)只需要一塊數據采集卡,把它插在微機的擴展槽內并輔以應用軟件,就能實現數據采集功
22、能,但這井不會對基于單片機為核心的數據采集系統(tǒng)產生影響。相較于數據采集板卡成本和功能的限制,單片機其多功能、高效率、高性能、低電壓、低功耗、低價格等優(yōu)點,而單片機又其有精度較高、轉換速度快、能夠對多點同時進行采集,因此能夠開發(fā)出能滿足實際應用要求的、電路結構簡單的、可靠性高的數據采集系統(tǒng)。這就使得以單片機為核心的數據采集系統(tǒng)在許多領域得到了廣泛的應用。</p><p> 1.3 國內外在該方向的研究現狀及分析
23、</p><p> 數據采集系統(tǒng)是通過采集傳感器輸出的模擬信號并轉換成數字信號,并進行析、處理、傳輸、顯示、存儲和顯示。它起始于20世紀中期,在過去的幾十年里,隨著信息領域各種技術的發(fā)展,在數據采集方面的技術也取得了長足的進步,采集數據的信息化是日前社會的發(fā)展主流方向。各種領域都用到了數據采集,在石油勘探、科學實驗、飛機飛行、地震數據采集、衛(wèi)星遙感成像、無人機、艦載傳感器系統(tǒng)領域已經得到應用。[1]</p
24、><p> 1.3.1 國內在該方向的研究現狀</p><p> 早期,對于大部分制造業(yè)企業(yè),測量儀器的自動數據采集一直是個令人煩惱的事情,即使儀器已經具有RS232/485等接口,但仍然在使用一邊測量,一邊手工記錄到紙張,最后再輸入到PC中處理的方式,不但工作繁重,同時也無法保證數據的準確性,常常管理人員得到的數據已經是滯后了一兩天的數據;而對于現場的不良產品信息及相關的產量數據,如何
25、實現高效率、簡潔、實時的數據采集更是一大難題。由研究人員研發(fā)的生產現場實時數據采集系統(tǒng)解決了這一問題,整個系統(tǒng)采用分布式結構,軟、硬件均采用了模塊化設計。數據采集部分采用自行開發(fā)的帶光隔離的RS-485網,通信效率高,安全性好,結構簡單。后臺系統(tǒng)可根據實際被監(jiān)控系統(tǒng)規(guī)模大小及要求,構成485網、Novell網及Windows NT網等分布式網絡。由于軟、硬件均為分布式、模塊化結構,因而便于系統(tǒng)升級、維護,且根據需要組成不同的系統(tǒng)。.數據
26、處理在Windows NT平臺上采用Visual C++語言編程,處理能力強、速度快、界面友好,可實現網絡數據共享。[2]</p><p> 我國的數字地震觀測系統(tǒng)主要采用TDE-124C型地震數據采集系統(tǒng)。近年來,又成功研制了動態(tài)范圍更大、線性度更高,.兼容性更強、低功耗可靠性的TDE-3240型地震數據采集系統(tǒng)。該數據采集對地震計輸出的電信號模擬放大后送至A/D數字化,A/D采用同時采樣,采樣數據經DSP數
27、字濾波處理后,變成數字地震信號。該數據采集系統(tǒng)具備24位A/D轉換芯片,采樣率有5 0HZ,100HZ,200HZ。[1]</p><p> 1.3.2 國外在該方向的研究現狀</p><p> 由美國PASCO公司生產的“科學工作室”是將數據采集應用于物理實驗的嶄新系統(tǒng),它由3部分組成:(1)傳感器:利用先進的傳感技術可實時采集技術可實時采集物理實驗中各物理量的數據;(2)計算機接
28、口:將來自傳感器的數據信號輸入計算機,采樣速率最高為25萬次/S;(3)軟件:中文及英文的應用軟件。[1]</p><p> 受需求牽引,新一代機載數據采集系統(tǒng)為滿足飛行實驗應用也在快速地發(fā)展。如愛爾蘭ACRA公司2000年研發(fā)推出的新一代KAM500機載數據采集系統(tǒng)。到了2006年。本系統(tǒng)采用16位模數轉換芯片,總采樣率達500K/s,可以利用方式組成高達1000通道的大容量的分布式采集系統(tǒng)。[1]</
29、p><p> 1.4 該課題研究的主要內容</p><p> 數據采集技術是信息科學的重要分支之一,它研究信息數據的采集、存儲、</p><p> 處理以及控制等問題。它是對傳感器信一號的測量與處理,以微型計算機等高技術為基礎而形成的一門綜合應用技術。數據采集也是從一個或多個信號獲取對象信息的過程。隨著微型計算機技術的飛速發(fā)展和普及,數據采集監(jiān)測已成為日益重要的檢
30、測技術,廣泛應用上工農業(yè)等需要同時監(jiān)控溫度、濕度和壓力等場合。數據采集是工業(yè)控制等系統(tǒng)中的重要環(huán)節(jié),通常采用一些功能相對獨立的單片機系統(tǒng)來實現,作為測控系統(tǒng)不可缺少的部分,數據采集的性能特點直接影響到整個系統(tǒng)。</p><p> 盡管現在以微機為核心的可編程數據采集與處理技術作為數據采集技術的發(fā)展方向得到了迅速的發(fā)展,并且適于通用微機(IBM PC系列)使用的板卡級</p><p>
31、數據采集產品也已大量出現,組成一個數據采集系統(tǒng)簡單到只需要一塊數據采集</p><p> 卡,把它插在微機的擴展槽內,并輔以應用軟什,就能實現數據采集功能,但這并不會對基于單片機為核心的數據采集系統(tǒng)產生影響,因為單片機功能強大、抗干擾能力強、可靠性高、靈活性好、開發(fā)容易等優(yōu)點,使得基于單片機為核心的數據采集系統(tǒng)在許多領域得到了廣泛的應用。</p><p> 傳統(tǒng)的基于單片機的數據采集系
32、統(tǒng)由于沒有上位機的支持,不管采用什么樣的數據存儲器,它的存儲容量都是有限的,所以不得不對存儲的歷史數據進行覆蓋刷新,這樣不利于用戶對數據進行整體分析,因而也不能對生產過程的狀況進行準確的把握。</p><p> 本系統(tǒng)采用下位機負責模擬數據的采集,從單片機負責采集八路數據,并應答主機發(fā)送的命令,上位機即主機是負責處理接受過來的數字量的處理、存儲及顯示,主機和從機之間用RS-232進行通信。這樣用戶可以在上位機上
33、編寫各種程序對文件中的數據進行有效查詢和分析,有利于工業(yè)過程的長期正常運行和檢查。由于本人能力有限并未實現上位機功能,只利用現有硬件實現了下位機功能。</p><p> 第2章 數據采集系統(tǒng)的設計</p><p><b> 數據采集系統(tǒng)簡介。</b></p><p> 2.1 數據采集系統(tǒng)</p><p>
34、數據采集(DAQ),是指從轉感器和其它待測設備等模擬和數字被測一單元中自動采集非電量或者電量信一號,送到上位機中進行分析,處理。數據采集系統(tǒng)是結合基于計算機或者其他專用測試平臺的測量軟硬件產品來實現靈活的、用戶自定義的測量系統(tǒng)。數據采集技術廣泛引用在各個領域。</p><p> 通常,必須在數據采集設備采集之前調制傳感器信號,包括對其進行增益或衰減和隔離,放大,濾波等.對待某些傳感器,還需要提供激勵信號.數據采
35、集系統(tǒng)可以將多路模擬信號自動地進行采集并進行數字化測量,再送到計算機中進行處理、傳輸、顯示、存儲或打印,從而獲得有關被測對象的大量數據。數據采集系統(tǒng)具有廣泛的應用前景,如工廠為對生產過程進行自動控制,必須實時測量出反映工藝流程和產品質的各種參量。因此,在工農業(yè)、科研、國防、環(huán)保及日常</p><p> 生活等各個領域,為了實現過程控制、狀態(tài)監(jiān)測、故障診斷、質量檢測等任務,大多要應用數據采集系統(tǒng)。</p&g
36、t;<p> 70年代初,隨著計算機技術及大規(guī)模集成電路的發(fā)展,特別是微處理器及</p><p> 高速A/D轉換器的出現,數據采集系統(tǒng)結構發(fā)生了重大變革。原來由小規(guī)模集</p><p> 成的數字邏輯電路及硬件程序控制器組成的采集系統(tǒng)被微處理器控制的采集系統(tǒng)所代替。由微處理器去完成程序控制,數據處理及大部分邏輯操作,使系統(tǒng)的</p><p>
37、 靈活性和可靠性大大地提高,系統(tǒng)硬件成本和系統(tǒng)的重建費用大大地降低。</p><p> 2.2 數據采集的目的</p><p> 數據采集的目的是為了測量電壓、電流、溫度或聲音等物理現象。給予PC的數據采集,通過模塊化硬件、應用軟件和計算機的結合,進行測量。盡管數據采集系統(tǒng)根據不同的應用需求有不同的定義,但各個系統(tǒng)采集、分析和顯示信息的目的卻都相同。數據采集系統(tǒng)結合了信號、傳感器、激
38、勵器、信號調理、數據采集設備和應用軟件。</p><p> 數據采集技術是單片機應用技術的主要分支。外部現實對象(廣義的外部設備)通過接口和計算機交換信息,在現實對象中,.信息表現為不同的形式并有明確的物理意義,通過對數據采集系統(tǒng)的設計來掌握單片機對數據的采集及其處理的過程,并將學習到的理論知識聯(lián)系到實際應用當中。</p><p> 2.3 數據采集系統(tǒng)框圖</p>&
39、lt;p> 數據采集系統(tǒng)一般由信號調理電路,多路切換電路,采樣保持電路,A/D轉換芯片,單片機或ARM等組成。本系統(tǒng)只對0V-5V的電壓信號進行采集并轉換,所以只包含A/D轉換芯片,單片機/ARM等。</p><p> 數據采集系統(tǒng)框圖如圖2-1:</p><p> 圖2-1 多路采集系統(tǒng)系統(tǒng)框圖</p><p> 2.3.1 主要芯片</p&
40、gt;<p> (1)89C52是INTEL公司MCS-51系列單片機中基本的產品,它采用ATMEL公司可靠的CMOS工藝技術制造的高性能8位單片機,屬于標準的MCS-51的HCMOS產品。它結合了CMOS的高速和高密度技術及CMOS的低功耗特征,它基于標準的MCS-51單片機體系結構和指令系統(tǒng),屬于89C51增強型單片機版本,集成了時鐘輸出和向上或向下計數器等更多的功能,適合于類似馬達控制等應用場合。89C52內置8位
41、中央處理單元、256字節(jié)內部數據存儲器RAM、8k片內程序存儲器(ROM)32個雙向輸入/輸出(I/O)口、3個16位定時/計數器和5個兩級中斷結構,一個全雙工串行通信口,片內時鐘振蕩電路。此外,89C52還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數據,時鐘振蕩停止,同時停止芯片內其它功能。89C52有PDIP(40pin)和PLCC(
42、44pin)兩種封裝形式。[2]</p><p> (3)PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數據獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的3個地址引腳A0, A1和A2可用于硬件地址編程,允許在同一個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數據信號都是通過雙線雙向
43、I2C總線以串行的方式進行傳輸。[3] </p><p> (4)LCD1602 工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。(16列2行)1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能
44、很好地顯示圖形。[4]</p><p><b> 涉及到的軟件</b></p><p> (1)KEIL C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。KEIL提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)
45、方案,通過一個集成開發(fā)環(huán)境( uVision )將這些部分組合在一起。運行K e I l軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。[5]</p><p> (2)Visual C++ 6.0,簡稱VC或者VC6.0,是微軟推出的一款C++編譯器,將“高級語言”翻譯為“機器語言(低級語言)”的程序。Visual C++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出
46、Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實際中,更多的是以Visual C++6.0為平臺。[6]</p><p> 2.4 基本功能要求<
47、;/p><p> (1)利用兩片PCF8591實現八通道A/D轉換按鍵,S0、S1切換當前選中的通道,LCD1602把當前通道號和轉換后的電壓顯示出來。</p><p> (2)在windows桌面環(huán)境下,使用Visual C++可視化軟件開發(fā)工具,調用MSCOMM控件,開發(fā)一個集存儲與顯示的上位機程序,以便用計算機對大量數據的處理。(本次畢業(yè)設計未實現此功能)</p>&l
48、t;p><b> 第3章 硬件設計</b></p><p> 硬件系統(tǒng)由89C52單片機最小系統(tǒng)、LCD1602外圍電路、PCF8591外圍電路、獨立按鍵電路等組成。</p><p><b> 3.1 系統(tǒng)框圖</b></p><p> 單片機系統(tǒng)框圖如圖3-1所示。</p><p&g
49、t; 圖3-1 單片機系統(tǒng)框圖</p><p> 3.2 單片機最小系統(tǒng)</p><p> 單片機最小系統(tǒng)由復位電路、晶振電路、電源(VCC和GND)。</p><p> 復位電路包括上電復位和按鍵復位,由10uf電解電容、按鍵、1.2K電阻組成;晶振電路由12MHZ晶振、2個30pf陶瓷電容組成;VCC=5V,GND=0V。[7]</p>
50、<p> 單片機最小系統(tǒng)如圖3-1所示,</p><p> 圖3-2 單片機最小系統(tǒng)</p><p> 3.3 PCF8591芯片</p><p> PCF8591是一個單片集成、單獨供電、低功耗、8-bit CMOS數據獲取器件。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的3個地址引腳A0、A1和A2可
51、用于硬件地址編程,允許在同一個IIC總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數據信號都是通過雙線雙向I2C總線以串行的方式進行傳輸。</p><p> 3.3.1 IIC串行總線</p><p> I2C總線是PHLIPS公司推出的一種串行總線,是具備多主機系統(tǒng)所需的包括總線裁決和高低速器件同步功能的高性能串行總線。</p
52、><p> I2C總線只有兩根雙向信號線。一根是數據線SDA,另一根是時鐘線SCL。</p><p> 如圖3-3所示IIC總線工作原理圖。[8]</p><p> 圖3-3 IIC總線工作原理圖</p><p> I2C總線通過上拉電阻接VCC。當總線空閑時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即
53、各器件的SDA及SCL都是線“與”關系。如圖3-4所示,R p常取10K。[8]</p><p> 圖3-4 IIC總線硬件連接圖</p><p> 每個接到I2C總線上的器件都有唯一的地址。主機與其它器件間的數據傳送可以是由主機發(fā)送數據到其它器件,這時主機即為發(fā)送器。由總線上接收數據的器件則為接收器。[8]</p><p> 起始和終止信號都是由主機發(fā)出的
54、,在起始信號產生后,總線就處于被占用的狀態(tài);在終止信號產生后,總線就處于空閑狀態(tài)。[8]</p><p> 連接到I2C總線上的器件,若具有I2C總線的硬件接口,則很容易檢測到起始和終止信號。對于不具備I2C總線硬件接口的有些單片機來說,為了檢測起始和終止信號,必須保證在每個時鐘周期內對數據線SDA采樣兩次。[8] </p><p> 接收器件收到一個完整的數據字節(jié)后,有可能需要完成
55、一些其它工作,如處理內部中斷服務等,可能無法立刻接收下一個字節(jié),這時接收器件可以將SCL線拉成低電平,從而使主機處于等待狀態(tài)。直到接收器件準備好接收下一個字節(jié)時,再釋放SCL線使之為高電平,從而使數據傳送可以繼續(xù)進行。[8]</p><p> 想對IIC總線進行操作就要熟悉IIC常涉及的幾個信號,如起始信號 S,終止信號 P,應答信號和非應答信號。如圖3-5所示。[8]</p><p>
56、 圖3-5 信號工作圖</p><p> 以下是IIC總線涉及的信號在C語言上的實現。[8]</p><p><b> (1)起始信號 S</b></p><p> void iic_start() //i2c起始信號</p><p><b> {</b></p><p
57、><b> sda=1;</b></p><p><b> _nop_();</b></p><p><b> scl=1;</b></p><p><b> somenop;</b></p><p><b> sda=0;<
58、;/b></p><p><b> somenop;</b></p><p><b> scl=0;</b></p><p><b> }</b></p><p><b> (2)終止信號 P</b></p><p>
59、; void iic_stop()</p><p><b> {</b></p><p><b> sda=0;</b></p><p><b> _nop_();</b></p><p><b> scl=1;</b></p>&
60、lt;p><b> somenop;</b></p><p><b> sda=1;</b></p><p><b> }</b></p><p><b> (3)應答信號</b></p><p> void ack()</p>
61、;<p><b> {</b></p><p> unsigned char i=0;</p><p> scl=1;somenop;while((sda==1)&&(i<200))</p><p> i++;scl=0;</p><p><b> }</b&
62、gt;</p><p><b> (4)發(fā)送一個字</b></p><p> void iic_sendbyte(unsigned char byt)</p><p><b> {</b></p><p> unsigned char i;</p><p> for
63、(i=0;i<8;i++)</p><p><b> {</b></p><p> if(byt&0x80)</p><p><b> sda=1;</b></p><p><b> else</b></p><p><b&g
64、t; sda=0;</b></p><p><b> somenop;</b></p><p><b> scl=1;</b></p><p><b> byt<<=1;</b></p><p><b> somenop;</b
65、></p><p><b> scl=0;</b></p><p><b> }</b></p><p><b> ack();</b></p><p><b> }</b></p><p><b> (5
66、)接收一個字</b></p><p> unsigned char iic_recbyte()</p><p><b> {</b></p><p> uchar i,da;</p><p> for(i=0;i<8;i++)</p><p><b> {&l
67、t;/b></p><p><b> scl=1;</b></p><p><b> somenop;</b></p><p><b> da<<=1;</b></p><p><b> if(sda)</b></p>
68、<p><b> da|=0x01;</b></p><p><b> scl=0;</b></p><p><b> somenop;</b></p><p><b> }</b></p><p> return da;</
69、p><p><b> }</b></p><p> (6)以上程序中的somenop由以下兩條程序實現:</p><p> #include <intrins.h></p><p> #define somenop{_nop_();_nop_();_nop_();_nop_();_nop_();}<
70、/p><p> 3.3.2 PCF8591 AD轉換的應用</p><p> FCF8591引腳圖如圖3-6所示。</p><p> 圖3-6 PCF8591引腳圖</p><p> PCF8591芯片的datasheet知AIN0-AIN3為四通道模擬輸入端,A0-A2為編程端口,用于多片PCF8591的情形。當IIC總線系統(tǒng)中只有
71、一片PCF8591時,可以把A0-A2都接GND。本系統(tǒng)使用了兩個PCF8591,其中的一片A0-A2都接GND。另一片A2、A1接GND,A0接VCC。VDD接VCC,VREF接VCC,故模擬通道測量范圍是0V到5V。AGND和EXT都接GND,使用的是內部時鐘。SCL和SDA接單片機的P2^0、P2^1。</p><p> 進行AD轉換的操作順序。</p><p> (1)對于芯片
72、1是:</p><p><b> IIC起始信號 </b></p><p> 先寫0X90;//告訴芯片要進行寫操作</p><p> 再寫控制字;//常用的由0X00,0X01,0X02,0X03</p><p> //0X00選擇通道0,0X01選擇通道</p><p> //1,0
73、X02選擇通道2,0X03選擇</p><p><b> //通道3;</b></p><p><b> IIC停止信號</b></p><p><b> 延時5us</b></p><p><b> IIC起始信號</b></p>
74、<p><b> 寫0X91</b></p><p><b> 讀轉換結果 </b></p><p> (2)對于芯片2是:</p><p><b> IIC起始信號 </b></p><p> 先寫0X92;//告訴芯片要進行寫操作</p>
75、<p> 再寫控制字;//常用的由0X00,0X01,0X02,0X03</p><p> //0X00選擇通道0,0X01選擇通道</p><p> //1,0X02選擇通道2,0X03選擇</p><p><b> //通道3;</b></p><p><b> IIC停止信號</
76、b></p><p><b> 延時5us</b></p><p><b> IIC起始信號</b></p><p><b> 寫0X93</b></p><p><b> 讀轉換結果</b></p><p> 3.
77、4 LCD1602器件</p><p> 工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。(16列2列)</p><p> 1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所
78、以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。</p><p> (1)LCD1602的基本操作時序</p><p> 1)讀狀態(tài):輸入:RS=L,RW=H,E=H, 輸出:D0~D7=狀態(tài)字</p><p> 2)寫指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖 輸出:無</p>
79、;<p> 3)讀數據:輸入:RS=H,RW=H,E=H, 輸出:D0~D7=數據</p><p> 4)寫數據:輸入:RS=H,RW=L, D0~D7=指令碼,E=高脈沖 輸出:無</p><p> 5)狀態(tài)字最高位為1,表示LCD1602忙;狀態(tài)字最高位為0,表示LCD1602空閑</p><p> 6)
80、LCD1602的顯示地址 第一行為00H 01H ……27H</p><p> 第二行為40H 41H……67H</p><p> (2)LCD1602初始化過程</p><p><b> 延時15ms</b></p><p> 寫指令38H(不檢測忙信號)</p><p><b&
81、gt; 延時5ms</b></p><p> 寫指令38H(不檢測忙信號)</p><p><b> 延時5ms</b></p><p> 寫指令38H(不檢測忙信號)</p><p> (以后每次寫指令、讀/寫數據操作之前均需檢測忙信號)</p><p> 寫指令38H:
82、顯示模式設置</p><p> 寫指令01H:顯示清屏</p><p> 寫指令06H:顯示光標移動設置</p><p> 寫指令OCH:顯示開及光標設置</p><p> 寫顯示地址 第一行00H~27H 第二行40H~67H</p><p> 寫要顯示的字符或數字(數字必須是ASCII碼)</p&g
83、t;<p> (3)LCD1602的RS、RW、E引腳分別接單片機的P1^2、 P1^3、 P1^4,D0~D7接單片機的P0口。</p><p> 3.4 單片機外圍電路圖</p><p><b> 如圖3-7所示。</b></p><p> 圖3-7 單片機外圍電路(除去最小系統(tǒng))
84、 </p><p><b> 第4章 軟件設計</b></p><p> 軟件包括主程序和定時器0中斷程序,主程序由延時程序、LCD相關程序、鍵盤檢測程序、IIC程序、PCF8591程序等組成。</p><p><b> 4.1 主程序</b></p><p> 主程序由LCD相關程
85、序、鍵盤檢測程序、IIC程序、PCF8591、延時程序、數據處理程序等組成。</p><p> 4.1.1 主程序流程圖</p><p><b> 如圖4-1所示。</b></p><p> 圖4-1 主程序流程圖</p><p> 4.1.2 LCD1602與PCF8591程序流程圖</p>
86、<p><b> 如圖4-2所示。</b></p><p> 圖4-2 LCD1602與PCF8591程序流程圖</p><p> 4.1.3 數據處理程序流程圖</p><p><b> 如圖4-3所示。</b></p><p> 圖4-3 數據處理程序流程圖</p
87、><p> 4.1.4 按鍵檢測程序流程圖</p><p><b> 如圖4-4所示。</b></p><p> 圖4-4 按鍵檢測程序流程圖</p><p> LCD1602顯示程序、AD轉換程序、數據處理程序寫在定時器T0中斷函數中,T0定時200us。主程序中只有鍵盤檢測程序。</p><
88、;p> 4.2 上位機程序介紹</p><p> 使用visual C++ 6.0可視化軟件開發(fā)工具,調用MSCOMM控件,開發(fā)一個集存儲與顯示的上位機程序,用于大量數據的分析與處理。本設計并未實現上位機功能,只對上位機方面簡單介紹了一下,主要是下位機功能的實現。</p><p> 4.2.1 Visual C++ 6.0</p><p> Vi
89、sual C++6.0由Microsoft開發(fā), 它不僅是一個C++ 編譯器,而且是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated development environment,IDE)。Visual C++6.0由許多組件組成,包括編輯器、調試器以及程序向導AppWizard、類向導Class Wizard等開發(fā)工具。 這些組件通過一個名為Developer Studio的組件集成為和諧的開發(fā)環(huán)境。Micr
90、osoft的主力軟件產品。Visual C++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。雖然微軟公司推出了Visual C++.NET(Visual C++7.0),但它的應用的很大的局限性,只適用于Windows 2000,Windows XP和Windows NT4.0。所以實際中,更多的
91、是以Visual C++6.0為平臺。[5]</p><p> 4.2.2 MSComm控件[9] </p><p> MSComm 控件通過串行端口傳輸和接收數據,為應用程序提供串行通訊功能。MSComm控件在串口編程時非常方便,程序員不必去花時間去了解較為復雜的API函數,而且在VC、VB、Delphi等語言中均可使用。 Microsoft Communications Co
92、ntrol(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發(fā)數據的簡便方法。具體的來說,它提供了兩種處理通信問題的方法:一是事件驅動(Event-driven)方法,一是查詢法。</p><p> MSComm控件提供下列兩種處理通訊的方式:事件驅動方式和查詢方式。</p><p><b&g
93、t; 事件驅動方式</b></p><p> 事件驅動通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發(fā)生時需要得到通知,例如,在串口接收緩沖區(qū)中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 線上一個字符到達或一個變化發(fā)生時。在這些情況下,可以利用 MSComm 控件的 OnComm 事件捕獲并處理這些通訊事件。OnCom
94、m 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。在編程過程中,就可以在OnComm事件處理函數中加入自己的處理代碼。這種方法的優(yōu)點是程序響應及時,可靠性高。每個MSComm控件對應著一個串行端口。如果應用程序需要訪問多個串行端口,必須使用多個 MSComm 控件。</p><p><b> 查詢方式</b></p><p&
95、gt; 查詢方式實質上還是事件驅動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關鍵功能之后,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產生事件,因為唯一等待接收的字符是調制解調器的“確定”響應。</p><p> 4.2 硬件與軟件調試</p>&
96、lt;p> 系統(tǒng)調試以程序為主,硬件調試先檢測電路的焊接是否正確,然后用外用表檢測或通電檢測其是否有短路或斷路。軟件調試包括調試程序和對硬件準確性的調試。利用杜邦線把0V到5V的模擬電壓信號接到八路模擬輸入通道上,通過按鍵可以改變當檢測的通道。液晶實時顯示通道號和模擬電壓值。</p><p><b> 結 論</b></p><p> 我不會忘記這難忘的
97、幾個月的時間里,親手實現了自己想做的項目。以前總是在51單片機開發(fā)板上寫程序,然后看看效果,從沒有自己設計過硬件電路,哪怕單片機最小系統(tǒng)也沒硬件實現過。通過這次畢業(yè)設計,我學到了太多的東西,小到電焊鐵的使用,大到使用KEILC51編寫全部程序。我真正感覺到自己的能力得到了提升。</p><p><b> 參考文獻</b></p><p> [1] 王琳、商周、王學
98、偉,數據采集系統(tǒng)的發(fā)展及應用.電測與儀表.2004,No.464</p><p> [2] 89C52 百度百科</p><p> [3] PCF8591 百度百科</p><p> [4] LCD1602 百度百科</p><p> [5] KEIL C51 百度百科 </p><p> [6] Visua
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計(論文)多路數據采集系統(tǒng)設計
- 基于單片機的多路數據采集系統(tǒng)設計畢業(yè)論文
- 多路數據采集系統(tǒng)畢業(yè)設計
- 多路數據采集系統(tǒng)畢業(yè)設計
- 基于單片機的多路數據采集系統(tǒng)設計畢業(yè)論文
- 基于單片機的多路數據采集系統(tǒng)設計【畢業(yè)論文】
- 多路數據采集系統(tǒng)pcb
- 多路數據采集系統(tǒng).XLS
- 多路數據采集系統(tǒng).XLS
- 實用多路數據采集系統(tǒng)
- 畢業(yè)設計----多路數據采集系統(tǒng)設計
- 精品基于單片機的多路數據采集系統(tǒng)設計畢業(yè)論文-定
- 畢業(yè)論文范文——基于單片機的多路數據采集系統(tǒng)設計
- 多路數據采集系統(tǒng)設計方案
- 多路數據采集系統(tǒng)課程設計
- 基于單片機的多路數據采集系統(tǒng)設計畢業(yè)論文(含外文翻譯)
- 基于c51單片機的多路數據采集系統(tǒng)設計畢業(yè)論文
- 機械電子工程畢業(yè)論文-基于單片機的多路數據采集系統(tǒng)設計
- 基于c51單片機的多路數據采集系統(tǒng)設計畢業(yè)論文
- 畢業(yè)設計----多路數據采集系統(tǒng)(含外文翻譯)
評論
0/150
提交評論