版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設計(論文)</p><p> 題目:電特性測量系統(tǒng)軟件設計</p><p> 院(系) 電子信息工程學院 </p><p> 專 業(yè) 自 動 化 </p><p> 班 級 </p><
2、;p> 姓 名 </p><p> 學 號 </p><p> 導 師 </p><p> 2012年 6月 1日</p><p> 三相電特性測試軟件設計</p>
3、;<p><b> 摘 要</b></p><p> 近年來隨著社會對電力需求量的不斷增長,電能緊缺問題日趨嚴重,極大地制約著社會經(jīng)濟的發(fā)展。我國電力工業(yè)的迅速發(fā)展,電能質(zhì)量對于電網(wǎng)的安全經(jīng)濟運行,保證工業(yè)產(chǎn)品質(zhì)量和科學實驗的正常進行以及降低能耗等均有重要意義。</p><p> 為做到節(jié)約電能并合理高效地利用電能,這就需要對電力參數(shù)進行準確、實時
4、地監(jiān)測;此外,對于電力參數(shù)進行高精度、多參數(shù)的測量,又是充分了解電網(wǎng)的運行狀況,尋找并解決電力系統(tǒng)中出現(xiàn)問題的重要途徑。因此,對于電力參數(shù)的測量,尤其是高精度、多參數(shù)、低價格、便攜、穩(wěn)定的實時測量就顯得尤為重要,也一直是人們研究的一個重要的方向。</p><p> 為解決以上問題,本設計選用ARM7核的LPC2124芯片為測量系統(tǒng)的核心,主要針對我國電力系統(tǒng)供配電的實際情況,通過ARM7單片機為核心,配以相應的
5、外圍電路和功能軟件,采用交流采樣技術(shù)實現(xiàn)多種電力參數(shù)的在線實時測量和數(shù)據(jù)分析,為電網(wǎng)的安全經(jīng)濟運行提供可靠保證。以提高三相電參數(shù)的測量速度和精度。</p><p> 關(guān)鍵字:三相電;交流采樣;實時測量</p><p> Three phase electric characteristic measurement software design</p><p>
6、<b> Abstract</b></p><p> In recent years along with the social demand of electric power increasing, energy shortage is becoming more and more serious, which restricts the development of social
7、economy.The rapid development of power industry, power quality for power system safe and economic operation, ensure quality of industrial products and scientific experiment with normal and reduced energy consumption has
8、important significance.</p><p> In order to achieve energy saving and high efficient use of energy, which is needed for power parameters for accurate, real-time monitoring; in addition, the electric paramet
9、ers with high accuracy, multi parameter measurement, and fully understand the operation of power system, find and solve emerging in power system the important way of the problem.Therefore, for the measurement of electric
10、 power parameters, especially high accuracy, multi parameter, low price, portable, stable and real-time me</p><p> In order to solve the problem above, this design uses ARM7 nuclear LPC2124 chip measurement
11、 system for the core, mainly for the power system of our country distribution of the actual situation, through the ARM7 single-chip microcomputer as the core, with a corresponding peripheral circuit and software, adoptin
12、g AC sampling technology to achieve a variety of electrical parameter on-line real-time measurement and data analysis, as the power system safe and economic operation to provide a reliable </p><p> Keywords
13、: three-phase;AC sampling;measurement</p><p><b> 目 錄</b></p><p><b> 摘 要i</b></p><p> Abstractii</p><p><b> 1 緒論1</b></p&
14、gt;<p><b> 1.1前言1</b></p><p> 1.2本課題的研究背景、研究意義及國內(nèi)外相關(guān)研究情況1</p><p> 2 三項電特性測量軟件設計方案1</p><p> 2.1基本功能要求1</p><p> 2.2總體方案設計1</p><p&
15、gt; 2.2.1 硬件平臺1</p><p> 2.2.2開發(fā)環(huán)境與仿真1</p><p> 2.2.3開發(fā)語言1</p><p> 2.2.4軟件總體結(jié)構(gòu)1</p><p> 3 系統(tǒng)的初始化1</p><p> 3.1系統(tǒng)的初始化的含義1</p><p> 3.
16、1.1初始化的執(zhí)行順序1</p><p> 3.1.2系統(tǒng)的啟動代碼1</p><p> 4 數(shù)據(jù)采集程序和數(shù)據(jù)處理1</p><p> 4.1數(shù)據(jù)采集技術(shù)簡介1</p><p> 4.2A/D寄存器的描述1</p><p> 4.2.1A/D控制寄存器ADCR1</p><
17、p> 4.2.2A/D數(shù)據(jù)寄存器ADDR2</p><p> 4.3A/D的基本操作3</p><p><b> 4.4數(shù)據(jù)處理3</b></p><p> 4.5A/D采集功能介紹及軟件編程7</p><p> 5 鍵盤顯示模塊12</p><p> 5.1關(guān)于鍵盤
18、使用的簡單介紹12</p><p> 5.2鍵盤控制模塊的功能介紹及程序13</p><p> 5.2.1鍵盤掃描頭文件Keyboard.h14</p><p> 5.2.2按鍵掃描去抖程序14</p><p> 6 液晶顯示模塊17</p><p> 6.1液晶簡介17</p>&
19、lt;p> 6.1.1LCD介紹17</p><p> 6.1.2LCD顯示的原理17</p><p> 6.1.3LCD的分類18</p><p> 6.2液晶顯示模塊18</p><p> 6.2.1點陣式液晶顯示器LM12864簡介18</p><p> 6.2.2液晶顯示流程圖以及L
20、CD驅(qū)動19</p><p> 6.3 LCD顯示的應用程序29</p><p> 6.3.1LCD的簡單GUI實現(xiàn)29</p><p> 6.3.2LCD實時時鐘顯示模塊30</p><p> 6.3.3LCD的實時時鐘軟件編程31</p><p> 6.3.4外部擴展I2C35</p&g
21、t;<p> 6.3.5LCD顯示電特性參數(shù)37</p><p> 7 電特性參數(shù)的計算41</p><p> 7.1電特性參數(shù)41</p><p> 7.2采用過零點檢測測量周期的軟件編程Guolindian.C42</p><p> 7.3電特性參數(shù)軟件程序44</p><p>
22、 8 Proteus仿真45</p><p> 8.1proteus簡介45</p><p> 8.2電路仿真45</p><p> 8.3分散加載文件46</p><p> 8.4系統(tǒng)的電路圖以及proteus中的仿真結(jié)果48</p><p> 8.4.1系統(tǒng)的電路圖48</p>
23、<p> 8.4.2proteus中的仿真結(jié)果48</p><p><b> 結(jié)束語51</b></p><p><b> 致謝52</b></p><p><b> 參考文獻53</b></p><p> 畢業(yè)設計(論文)知識產(chǎn)權(quán)聲明54&l
24、t;/p><p> 畢業(yè)設計(論文)獨創(chuàng)性聲明55</p><p><b> 1 緒論</b></p><p><b> 1.1前言</b></p><p> 能源是人類社會賴于生存和發(fā)展的基礎(chǔ),電能作為能源的第二次形式,具有簡單、方便、可靠等特點,是現(xiàn)代社會運行的主要能源之一。充足、可靠的
25、能源是提高經(jīng)濟高速發(fā)展、社會正常運行的基本前提。</p><p> 上世紀六十年代以來,微電子、計算機、電力電子技術(shù)在各個領(lǐng)域 廣泛應用,位現(xiàn)代工業(yè)的自動化、提高勞動生產(chǎn)率開辟了廣闊的前景。近年來隨著大功率電力電子技術(shù)的發(fā)展以及它們的廣泛應用,使得非線性負載大量的增加,給供電設備造成了很大的影響。</p><p> 本文主要研究基于數(shù)字采樣測量的三相電參數(shù)測量系統(tǒng),主要包括電壓、電流、
26、頻率、相位、功率因數(shù)、有功功率、無功功率,視在功率,電能等的測量。</p><p> 1.2本課題的研究背景、研究意義及國內(nèi)外相關(guān)研究情況</p><p> 電力是國家經(jīng)濟發(fā)展的命脈,隨著社會對電力需求量的不斷增長,工業(yè)、農(nóng)業(yè)、商業(yè)、居民用電的日益增長,供電量日益增加,電能作為一種具有多種參數(shù)指標、直接反映電力企業(yè)經(jīng)濟效益的商品備受重視。隨著工業(yè)技術(shù)的不斷進步,對電力的需要越來越大,電
27、能緊缺問題日趨嚴重,極大地制約著社會經(jīng)濟的發(fā)展。</p><p> 近年來,我國電力負荷急劇增大,各種非線性負載,特別是新型電力電子器件在電力系統(tǒng)、工業(yè)各部門和家用電器產(chǎn)品中的日益廣泛應用,給供電設備的電能質(zhì)量造成了極大的影響。因此,在大多數(shù)情況下,電力信號己不是標準的正弦信號,而是一種復雜的周期信號。</p><p> 國內(nèi)電力參數(shù)檢測技術(shù)的研究和開發(fā)起步較晚,目前對電力參數(shù)測量的方
28、式基本上可分為芯片轉(zhuǎn)化為有效值測量,直接離散時序測量和多諧波測量等。相對國內(nèi)而言,國外對電能質(zhì)量的研究起步就比較早,也已經(jīng)取得了很多關(guān)于這方面的研究和應用成果,世界對電能質(zhì)量的認識程度也越來越高,每隔兩年就召開一次電能質(zhì)量與電力諧波學術(shù)會議。在電能質(zhì)量檢測產(chǎn)品研究領(lǐng)域,尤其是這些領(lǐng)域的高端產(chǎn)品在全球市場的份額,幾乎是被美國的FLUKE公司、瑞士的LEM公司、瑞典的UNIPOWER公司等國際知名公司占據(jù),這些公司的技術(shù)水平為國際最先進,當
29、然價格也非常昂</p><p> 電能質(zhì)量對于電網(wǎng)的安全經(jīng)濟運行,保證工業(yè)產(chǎn)品的質(zhì)量和科學實驗的正常進行以及降低能耗等均有重要意義。為了改善這一狀況,對電力系統(tǒng)進行完整分析和監(jiān)測是成功的關(guān)鍵。此外,對于電力參數(shù)進行高精度、多參數(shù)的測量,又是充分了解電網(wǎng)的運行狀況,尋找并解決電力系統(tǒng)中出現(xiàn)的問題的重要途徑。因此,對于電力參數(shù)的測量,尤其是高精度、多參數(shù)、低價格、便攜、穩(wěn)定的實時測量就顯得尤為重要,也一直是人們研究
30、的一個重要方向。在我國電力工業(yè)領(lǐng)域,電網(wǎng)質(zhì)量的問題已經(jīng)成為關(guān)鍵,電力參數(shù)的分析和監(jiān)測已經(jīng)成為國際上討論和研究的重點。</p><p> 2 三項電特性測量軟件設計方案</p><p><b> 2.1基本功能要求</b></p><p> (1) 熟悉工廠供電技術(shù);</p><p> (2) 熟悉測量系統(tǒng)硬
31、件電路原理; </p><p> (3) 設計軟件結(jié)構(gòu);</p><p> (4) 掌握ADS1.2開發(fā)工具;</p><p> (5) 熟練運用PROTEUS仿真;</p><p> (6) 編寫程序代碼及調(diào)試;</p><p> (7) 軟、硬件系統(tǒng)聯(lián)調(diào)。</p><p>
32、;<b> 2.2總體方案設計</b></p><p> 2.2.1 硬件平臺</p><p> 課題主要研究電特性測量系統(tǒng)的軟件程序設計。選用的是ARM為核的LPC2000系列的芯片,LPC2000系列是NXP公司生產(chǎn)的以ARM7TDMI-S核為基礎(chǔ)的嵌入式處理器,在芯片內(nèi)部配置了大量的接口及功能模塊。本設計選用的是LPC2124芯片,LPC2124具有較小的
33、64引腳封裝,低功耗的特點,以及多個片內(nèi)外設(如32位定時器、A/D轉(zhuǎn)換器、外部中斷等),多個32位定時器,4路10位ADC,內(nèi)置多種串行通信接口以及多達9個外部中斷,因此特別適用于工業(yè)控制、醫(yī)療系統(tǒng)訪問控制、通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、嵌入式MODEM等各種類型的應用。</p><p> 2.2.2開發(fā)環(huán)境與仿真</p><p> 本課題選用的是ADS1.2開發(fā)工具,ADS1.2是ARM公
34、司推出的ARM集成開發(fā)工具,具有用戶多、編譯效率高、支持的ARM內(nèi)核多的特點。ARM ADS全稱為ARM developer Suite,是ARM公司推出的ARM集成開發(fā)工具,成熟版本為ADS1.2,他的前身是SDT,SDT是ARM公司幾年前的開發(fā)環(huán)境軟件。ADS1.2支持ARM10之前的所有ARM系列微控制器,支持軟件調(diào)試,支持匯編、C語言、C++源程序,具有編譯效率高、系統(tǒng)庫功能強等特點。本課題用ADS1.2開發(fā)工具圍繞LPC212
35、4片上的基本功能模塊實現(xiàn)三相電特性的測試,最終通過了</p><p> PROTEUS的仿真驗證。</p><p> PROTEUS是英國Labcenter公司推出的適合嵌入式設計仿真與開發(fā)的仿真軟件,使用PROTEUS軟件可以完全脫離硬件平臺來學習嵌入式系統(tǒng),可以說是嵌入式學習的一次革命。</p><p><b> 2.2.3開發(fā)語言</b&
36、gt;</p><p> 本課題軟件用的語言主要有C語言,還有啟動代碼中所用到的匯編語言。本文選用C語言主要是由于C語言有以下優(yōu)點:</p><p> (1) 寄存器分配,數(shù)據(jù)類型等由編譯器管理;</p><p> (2) 編程及調(diào)試的時間減少,大大縮短開發(fā)周期;</p><p> (3) 明顯增加軟件可讀性,便于改進和擴展。&
37、lt;/p><p> 2.2.4軟件總體結(jié)構(gòu)</p><p> 本系統(tǒng)主要針對我國電力系統(tǒng)供配電的實際情況,通過ARM7單片機為核心,配以相應的外圍電路和功能軟件,采用交流采樣技術(shù)實現(xiàn)多種電力參數(shù)的在線實時測量和數(shù)據(jù)分析,為電網(wǎng)的安全經(jīng)濟運行提供可靠保證。</p><p> 本課題主要研究電特性測量系統(tǒng)的軟件程序設計。本課題的軟件部分主要是通過實時采樣電流電壓的瞬
38、時值,以及過零檢測,進而計算出電流電壓的有效值、頻率值、有用功率、無用功率、視在功率、功率因數(shù)等電力參數(shù)。本測量系統(tǒng)的軟件設計主要分為以下幾個模塊:</p><p> (1) 主程序模塊</p><p> (2) 電壓、電流采集程序</p><p> (3) 頻率采集程序</p><p> (4) 數(shù)據(jù)處理程序</p&g
39、t;<p> (5) 時鐘日歷程序</p><p> (6) 鍵盤服務程序</p><p> (7) 顯示服務程序</p><p> 本設計擬采用ADS1.2集成開發(fā)工具編寫C語言程序?qū)崿F(xiàn)測量系統(tǒng)的相關(guān)功能。數(shù)據(jù)的處理與計算是程序設計的主要部分。系統(tǒng)基本測量的參數(shù)主要包括:電流有效值、電壓有效值、有功功率、無功功率、視在功率、功率因數(shù)等。
40、首要環(huán)節(jié)是對輸入的電氣信號進行離散化,即采樣。根據(jù)被采集信號的不同,數(shù)據(jù)采集可分為直流采樣和交流采樣兩大類。對比分析后,系統(tǒng)選用交流采樣,數(shù)值的計算采用離散的電壓電流有效值計算公式來實現(xiàn)。</p><p> 為了提高ARM7核的LPC2124芯片程序編寫效率,系統(tǒng)軟件采用了分模塊編寫的方法,用C語言和匯編語言混合編寫。對于LPC2124和各模塊的初始化、數(shù)據(jù)采集程序采用匯編編程,對于主程序、鍵盤顯示等通用性較強
41、程序,采用C語言編寫。本系統(tǒng)的主要功能模塊有數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、時鐘模塊,按鍵顯示模塊等。所有軟件模塊的功能都在主控模塊的調(diào)配下協(xié)調(diào)執(zhí)行,主控模塊首先對系統(tǒng)進行初始化操作,包括CPU初始化、I/O初始化、A/D初始化、LCD初始化、時鐘初始化、異步通訊初始化等。隨即對數(shù)據(jù)進行采集、處理、顯示。然后判斷是否有鍵按下,根據(jù)判斷結(jié)果,執(zhí)行相應按鍵服務程序。</p><p> 系統(tǒng)的主要電特性參量介紹:<
42、/p><p> (1) 電壓有效值:讓恒定電壓和交變電壓分別加在阻值相等的電阻上,使它們在相同時間內(nèi)產(chǎn)生的熱量相等,就可以把該恒定電壓的數(shù)值規(guī)定為這個交變電壓的有效值.</p><p> (2) 電流有效值:將一直流電與一交流電分別通過相同阻值的電阻,如果相同時間內(nèi)兩電流通過電阻產(chǎn)生的熱量相同,就說這一直流電的電流值是這一交流電的有效值。</p><p> (
43、3) 有功功率:在交流電路中,電源在一個周期內(nèi)發(fā)出瞬時功率的平均值(或負載電阻所消耗的功率),稱為"有功功率"。</p><p> (4) 無功功率:在正弦電流電路中,復功率的虛部: ,且供給電感的無功功率為正值。</p><p> (5) 視在功率:在電工技術(shù)中,將單口網(wǎng)絡端鈕電壓和電流有效值的乘積,稱為視在功率(apparent power),記為S=UI
44、。</p><p> (6) 功率因數(shù):在交流電路中,電壓與電流之間的相位差(Φ)的余弦叫做功率因數(shù),用符號cosΦ表示,在數(shù)值上,功率因數(shù)是有功功率和視在功率的比值,即cosΦ=P/S 。</p><p> 系統(tǒng)主程序流程圖如2.1圖所示。</p><p><b> 3 系統(tǒng)的初始化</b></p><p>
45、 3.1系統(tǒng)的初始化的含義</p><p> 首先來講講系統(tǒng)初始化,什么是系統(tǒng)初始化呢?</p><p> 初始化就是把變量(variable)賦為默認值,把控件設為默認狀態(tài),把沒準備的準備好。但是如果是整個系統(tǒng)初始化那就不一樣了。每個軟件,或是工具,系統(tǒng)等都有一個初始化。如系統(tǒng)的初始化就是將你的系統(tǒng)還原到一開始做的備份的狀態(tài)。</p><p> 把設置等都
46、還原至那個位置。如果是一個軟件的初始化,基本都是將一些功能的設置都還原為開始設置,意思就和恢復默認設置差不多。</p><p> 3.1.1初始化的執(zhí)行順序</p><p> 每一個初始化部分里面的代碼在程序運行后,或庫的begin-end塊運行之前。delphi使用對單元相關(guān)樹的深度優(yōu)先遍歷來運行初始化部分。換句話說,就只在一個單元的初始化代碼運行前,delphi就運行了特他使用的每
47、一個單元的初始化部分。每一個單元僅初始化一次 。 </p><p> 程序代碼當中可以有Initialization聲明部分。這部分里面的代碼的執(zhí)行,是在windows加載包含該單元(指Initialization所屬單元)的模塊(應用程序,DLL或者包)時運行的。一般來說是:先Initialization單元,然后interface單元,然后implementation單元。 </p><
48、p> 程序中Intialize過程。可以在這里初始化字符串、動態(tài)數(shù)組、接口和Variants</p><p> 系統(tǒng)為什么要初始化呢?</p><p> 第一,信息系統(tǒng)是以數(shù)據(jù)庫為主的軟件系統(tǒng),是數(shù)據(jù)庫應用系統(tǒng),必須設定數(shù)據(jù)庫應用的安全體系否則無法保證數(shù)據(jù)安全;</p><p> 第二,信息系統(tǒng)是組織的管理方法,必須具備組織使用的共享數(shù)據(jù)才能供組織使用
49、;</p><p> 第三,初始化的核心是數(shù)據(jù)準備,沒有歷史數(shù)據(jù)不能實現(xiàn)系統(tǒng)切換,無法使用;</p><p> 第四,數(shù)據(jù)必須定期存檔和更新才能使信息系統(tǒng)有較高的運轉(zhuǎn)效率;</p><p> 3.1.2系統(tǒng)的啟動代碼</p><p> 系統(tǒng)初始化主要是由軟件來完成的,一般在32位ARM應用系統(tǒng)中,大多數(shù)軟件采用C語言來進行編程,并且以
50、嵌入式操作系統(tǒng)作為平臺,這樣能大大提升開發(fā)效率及軟件性能。但是,由于C語言生成的代碼不能上電后立馬運行的,因為此時還不具備運行條件,比如全局變量還沒有初始化,系統(tǒng)堆棧還沒有設置等。因此從系統(tǒng)上電,到正式運行用戶的main函數(shù)之前,要運行一段代碼,這段代碼就稱為啟動代碼。</p><p> 啟動代碼大部分由匯編指令構(gòu)成,它可以實現(xiàn)向量表定義、堆棧初始化、系統(tǒng)變量初始化、中斷初始化、外圍初始化、地址重映射等操作。見
51、圖2-2。</p><p><b> 圖2.2</b></p><p> 首先是應該完成頭文件的編寫,下面就是系統(tǒng)初試化的頭文件(target.h)和系統(tǒng)的初始化軟件(target.c)、(Startup.s)。</p><p> (1) 系統(tǒng)初試化的頭文件(target.h)</p><p> #ifndef
52、 __TARGET_H </p><p> #define __TARGET_H</p><p> #ifdef __cplusplus</p><p> extern "C" {</p><p><b> #endif</b></p><p> #ifndef IN
53、_TARGET </p><p> extern void Reset(void);</p><p> extern void TargetInit(void);</p><p><b> #endif</b></p><p> #ifdef __cplusplus</p><p><
54、;b> }</b></p><p><b> #endif</b></p><p><b> #endi</b></p><p> (2) 系統(tǒng)的初始化軟件(Startup.s)</p><p> ;define the stack size</p>&l
55、t;p><b> ;定義堆棧的大小</b></p><p> SVC_STACK_LEGTH EQU 0</p><p> FIQ_STACK_LEGTH EQU 0</p><p> IRQ_STACK_LEGTH EQU 256&l
56、t;/p><p> ABT_STACK_LEGTH EQU 0</p><p> UND_STACK_LEGTH EQU 0</p><p> NoInt EQU 0x80</p><p> NoFIQEQU0x40</p><p>
57、 USR32Mode EQU 0x10</p><p> SVC32Mode EQU 0x13</p><p> SYS32Mode EQU 0x1f</p><p> IRQ32Mode EQU 0x12</p><p> FIQ32Mode EQU 0x11</p><p> ;
58、 IMPORT __use_no_semihosting_swi</p><p> ;The imported labels</p><p> ;引入的外部標號在這聲明</p><p> IMPORT FIQ_Exception ;快速中斷異常處理程序</p><p> IMPORT __main
59、 ;C語言主程序入口 </p><p> IMPORT TargetResetInit ; 目標板基本初始化</p><p> ;The emported labels</p><p> ;給外部使用的標號在這聲明</p><p> EXPORT botto
60、m_of_heap</p><p> EXPORT StackUsr</p><p> EXPORT Reset</p><p> EXPORT __user_initial_stackheap</p><p><b> CODE32</b></p><p> AREA vec
61、tors,CODE,READONLY</p><p><b> ENTRY</b></p><p> ;interrupt vectors</p><p><b> ;中斷向量表</b></p><p><b> Reset</b></p><p&g
62、t; LDR PC, ResetAddr</p><p> LDR PC, UndefinedAddr</p><p> LDR PC, SWI_Addr</p><p> LDR PC, PrefetchAddr</p><p> LDR PC, DataAbortAddr</p>
63、;<p> DCD 0xb9205f80</p><p> LDR PC, [PC, #-0xff0]</p><p> LDR PC, FIQ_Addr</p><p> ResetAddr DCD ResetInit</p><p> UndefinedAddr
64、 DCD Undefined</p><p> SWI_Addr DCD SoftwareInterrupt</p><p> PrefetchAddr DCD PrefetchAbort</p><p> DataAbortAddr DCD DataAbort</
65、p><p> Nouse DCD 0</p><p> IRQ_Addr DCD 0</p><p> FIQ_Addr DCD FIQ_Handler</p><p><b> ;未定義指令</b></p>
66、<p><b> Undefined</b></p><p> B Undefined</p><p><b> ;軟中斷</b></p><p> SoftwareInterrupt</p><p> ; B SoftwareInt
67、errupt</p><p> CMP R0, #4</p><p> LDRLO PC, [PC, R0, LSL #2]</p><p> MOVS PC, LR</p><p> SwiFunction</p><p> DCD IRQDisable ;0</
68、p><p> DCD IRQEnable ;1</p><p> DCDFIQDisable ;2</p><p> DCDFIQEnable ;3</p><p> IRQDisable</p><p><b> ;關(guān)IRQ中斷</b></p&g
69、t;<p> MRS R0, SPSR</p><p> ORR R0, R0, #NoInt</p><p> MSR SPSR_c, R0</p><p> MOVS PC, LR</p><p><b> IRQEnable</b></p><
70、;p><b> ;開IRQ中斷</b></p><p> MRS R0, SPSR</p><p> BIC R0, R0, #NoInt</p><p> MSR SPSR_c, R0</p><p> MOVS PC, LR</p><p> FIQDisa
71、ble</p><p><b> ;關(guān)FIQ中斷</b></p><p> MRS R0, SPSR</p><p> ORR R0, R0, #NoFIQ</p><p> MSR SPSR_c, R0</p><p> MOVS PC, LR</p
72、><p><b> FIQEnable</b></p><p><b> ;開FIQ中斷</b></p><p> MRS R0, SPSR</p><p> BIC R0, R0, #NoFIQ</p><p> MSR SPSR_c, R0</p&
73、gt;<p> MOVS PC, LR</p><p><b> ;取指令中止</b></p><p> PrefetchAbort</p><p> B PrefetchAbort</p><p><b> ;取數(shù)據(jù)中止</b></p>&l
74、t;p><b> DataAbort</b></p><p> B DataAbort</p><p><b> ;快速中斷</b></p><p> FIQ_Handler</p><p> STMFD SP!, {R0-R3, LR}</p><
75、;p> BL FIQ_Exception</p><p> LDMFD SP!, {R0-R3, LR}</p><p> SUBS PC, LR, #4</p><p> InitStack </p><p> MOV R0, LR</p><p> ;Buil
76、d the SVC stack</p><p><b> ;設置管理模式堆棧</b></p><p> MSR CPSR_c, #0xd3</p><p> LDR SP, StackSvc</p><p> ;Build the IRQ stack</p><p>
77、;<b> ;設置中斷模式堆棧</b></p><p> MSR CPSR_c, #0xd2</p><p> LDR SP, StackIrq</p><p> ;Build the FIQ stack</p><p> ;設置快速中斷模式堆棧</p><p> MS
78、R CPSR_c, #0xd1</p><p> LDR SP, StackFiq</p><p> ;Build the DATAABORT stack</p><p><b> ;設置中止模式堆棧</b></p><p> MSR CPSR_c, #0xd7</p>&l
79、t;p> LDR SP, StackAbt</p><p> ;Build the UDF stack</p><p> ;設置未定義模式堆棧</p><p> MSR CPSR_c, #0xdb</p><p> LDR SP, StackUnd</p><p> ;Buil
80、d the SYS stack</p><p><b> ;設置系統(tǒng)模式堆棧</b></p><p> MSR CPSR_c, #0xdf</p><p> LDR SP, =StackUsr</p><p> MOV PC, R0</p><p><b>
81、; ResetInit</b></p><p> BL InitStack ;初始化堆棧 </p><p> BL TargetResetInit ;目標板基本初始化</p><p> ;跳轉(zhuǎn)到c語言入口 </p><p> B __main&l
82、t;/p><p> __user_initial_stackheap </p><p> LDR r0,=bottom_of_heap</p><p> ; LDR r1,=StackUsr </p><p> MOV pc,lr</p><p> StackSvc DCD
83、 SvcStackSpace + (SVC_STACK_LEGTH - 1)* 4</p><p> StackIrq DCD IrqStackSpace + (IRQ_STACK_LEGTH - 1)* 4</p><p> StackFiq DCD FiqStackSpace + (FIQ_STACK_LEGTH - 1)* 4<
84、;/p><p> StackAbt DCD AbtStackSpace + (ABT_STACK_LEGTH - 1)* 4</p><p> StackUnd DCD UndtStackSpace + (UND_STACK_LEGTH - 1)* 4</p><p> IF :DEF: EN_CRP</p>
85、<p> IF . >= 0x1fc</p><p> INFO 1,"\nThe data at 0x000001fc must be 0x87654321.\nPlease delete some source before this line."</p><p><b> ENDIF</b></p>
86、<p><b> CrpData</b></p><p> WHILE . < 0x1fc</p><p><b> NOP</b></p><p><b> WEND</b></p><p><b> CrpData1</b>
87、;</p><p> DCD 0x87654321 ;/*When the Data is 為0x87654321,user code be protected. 當此數(shù)為0x87654321時,用戶程序被保護 */</p><p><b> ENDIF</b></p><p> ;/* 分配堆??臻g */<
88、;/p><p> AREA MyStacks, DATA, NOINIT, ALIGN=2</p><p> SvcStackSpace SPACE SVC_STACK_LEGTH * 4 ;管理模式堆棧空間</p><p> IrqStackSpace SPACE IRQ_STACK_LEGTH * 4 ;中斷模式堆??臻g</p
89、><p> FiqStackSpace SPACE FIQ_STACK_LEGTH * 4 ;快速中斷模式堆??臻g</p><p> AbtStackSpace SPACE ABT_STACK_LEGTH * 4 ;中止模式堆棧空間</p><p> UndtStackSpace SPACE UND_STACK_LEGTH * 4 ; 未
90、定義模式堆棧</p><p> AREA Heap, DATA, NOINIT</p><p> bottom_of_heap SPACE 1</p><p> AREA Stacks, DATA, NOINIT</p><p><b> StackUsr</b></p>&l
91、t;p><b> END</b></p><p> (3) 系統(tǒng)的初始化軟件(target.c)</p><p> #define IN_TARGET</p><p> #include "config.h"</p><p> #include "guolindian.h&
92、quot;</p><p> void TargetResetInit(void);</p><p> void IRQ_Exception(void)</p><p><b> {</b></p><p> while(1); </p><p> } &
93、lt;/p><p> void FIQ_Exception(void)</p><p><b> {</b></p><p> while(1); </p><p><b> }</b></p><p> void Timer0_Excep
94、tion(void)</p><p><b> {</b></p><p> T0IR = 0x01;</p><p> VICVectAddr = 0; //通知中斷控制器中斷結(jié)束</p><p><b> }</b></p><p> vo
95、id VICInit(void)</p><p><b> {</b></p><p><b> }</b></p><p> /*過零點檢測功能初試化函數(shù)*/</p><p> void GuoLinDianInit(void)</p><p><b>
96、 {</b></p><p> PINSEL1 = 0x00000001;</p><p> EXTMODE = 0x01;//邊沿觸發(fā)</p><p> VICIntSelect = 0x00000000;</p><p> VICDefVectAddr = (int) IRQ_Eint1;</p><
97、;p> EXTINT = 0x01;</p><p> VICIntEnable = 0x00004000;</p><p><b> }</b></p><p> #define TARGET_DEBUG_BY_LCM </p><p> void TargetInit(void)</p&g
98、t;<p><b> {</b></p><p> #ifdef TARGET_DEBUG_BY_LCM</p><p> TargetResetInit();</p><p> GuoLinDianInit();</p><p> GUI_Initialize(); // 初始化LC
99、M</p><p> GUI_SetColor(1,0);// 設置前景色和背景色</p><p> #endif </p><p><b> }</b></p><p> void InitialiseUART0(uint32 bps)</p><p><b&
100、gt; { </b></p><p><b> }</b></p><p> void TargetResetInit(void)</p><p><b> {</b></p><p> #ifdef __DEBUG_RAM </p><p>
101、 MEMMAP = 0x2; //remap</p><p><b> #endif</b></p><p> #ifdef __DEBUG_FLASH </p><p> MEMMAP = 0x1; //remap</p><p>&
102、lt;b> #endif</b></p><p> #ifdef __IN_CHIP </p><p> MEMMAP = 0x1; //remap</p><p><b> #endif</b></p><p> /* 設置系統(tǒng)各部分時鐘 */<
103、;/p><p> /* Set system timers for each component */</p><p> PLLCON = 1;</p><p> #if (Fpclk / (Fcclk / 4)) == 1</p><p> VPBDIV = 0;</p><p><b> #endi
104、f</b></p><p> #if (Fpclk / (Fcclk / 4)) == 2</p><p> VPBDIV = 2;</p><p><b> #endif</b></p><p> #if (Fpclk / (Fcclk / 4)) == 4</p><p>
105、 VPBDIV = 1;</p><p><b> #endif</b></p><p> #if (Fcco / Fcclk) == 2</p><p> PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);</p><p><b> #endif</
106、b></p><p> #if (Fcco / Fcclk) == 4</p><p> PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);</p><p><b> #endif</b></p><p> #if (Fcco / Fcclk) == 8</
107、p><p> PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);</p><p><b> #endif</b></p><p> #if (Fcco / Fcclk) == 16</p><p> PLLCFG = ((Fcclk / Fosc) - 1) | (3 &l
108、t;< 5);</p><p><b> #endif</b></p><p> PLLFEED = 0xaa;</p><p> PLLFEED = 0x55;</p><p> while((PLLSTAT & (1 << 10)) == 0);</p><p&g
109、t; PLLCON = 3;</p><p> PLLFEED = 0xaa;</p><p> PLLFEED = 0x55;</p><p> /* 設置存儲器加速模塊 */</p><p> /* Set memory accelerater module*/</p><p> MAMCR = 0;&
110、lt;/p><p> #if Fcclk < 20000000</p><p> MAMTIM = 1;</p><p><b> #else</b></p><p> #if Fcclk < 40000000</p><p> MAMTIM = 2;</p>&l
111、t;p><b> #else</b></p><p> MAMTIM = 3;</p><p><b> #endif</b></p><p><b> #endif</b></p><p> MAMCR = 2;</p><p> /
112、* 設置串行口 */</p><p> /* initialize UART*/</p><p><b> CCR = 1;</b></p><p> PREINT = Fpclk / 32768 - 1;</p><p> PREFRAC = Fpclk - (Fpclk / 32768) * 32768;&l
113、t;/p><p> YEAR = 2012;</p><p> MONTH = 4;</p><p><b> DOM = 26;</b></p><p> HOUR = 21;</p><p><b> MIN = 10;</b></p><p&g
114、t;<b> SEC =0;</b></p><p><b> }</b></p><p> #include "rt_sys.h"</p><p> #include "stdio.h"</p><p> 4 數(shù)據(jù)采集程序和數(shù)據(jù)處理</p&
115、gt;<p> 4.1數(shù)據(jù)采集技術(shù)簡介</p><p> 從廣義上來講,數(shù)據(jù)采集(DAQ),是指從傳感器和其它待測設備等模擬和數(shù)字被測單元中自動采非電量或者電量信號,送到上位機中進行分析,處理。數(shù)據(jù)采集系統(tǒng)是結(jié)合基于計算機或者其他專用測試平臺的測量軟硬件產(chǎn)品來實現(xiàn)靈活的、用戶自定義的測量系統(tǒng)。</p><p> 采集又稱取樣、抽樣,對模擬信號在時間上的離散化、幅值離散化
116、,這樣用在電參量測量中可以克服模擬運算準確度較低且模擬器件易受各種干擾影響的缺點,從同一批數(shù)據(jù)中可獲得許多電參量信息。</p><p> 本文所述的數(shù)字采樣技術(shù)主要應用于電參量測量領(lǐng)域。就是對周期或非周期交流待測信號,在CPU的控制下,由采樣保持器進行采樣和保持,再送給A/D轉(zhuǎn)換器進行模數(shù)轉(zhuǎn)換,量化處理,將模擬量變?yōu)閿?shù)字量,送存儲器存儲,最后由CPU進行一系列運算,處理,得到結(jié)果送到LCD顯示。</p&g
117、t;<p> 本文用的是LPC2124,LPC2124具有一個A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器的基本時鐘由VPB時鐘提供。可編程分頻器可將時鐘調(diào)整至4.5MHZ(逐步逼近最大時鐘)。10位精度要求的轉(zhuǎn)換需要11個A/D轉(zhuǎn)換時鐘。LPC2124具有一個A/D轉(zhuǎn)換器。A/D轉(zhuǎn)換具有如下特性:</p><p> (1) 10位逐次逼近模式轉(zhuǎn)換器;</p><p> (2) 測量
118、范圍:0~3.3V;</p><p> (3) 10位轉(zhuǎn)換時間≥2.4us;</p><p> (4) 轉(zhuǎn)換觸發(fā)信號可選擇:輸入引腳的跳變或定時器匹配;</p><p> (5) 具有掉電模式。</p><p> 4.2A/D寄存器的描述</p><p> A/D寄存器包含控制寄存器ADCR和數(shù)據(jù)寄存器
119、ADDR。A/D寄存器的使用情況詳見下表4.1。</p><p> 表4.1 A/D寄存器</p><p> 4.2.1A/D控制寄存器ADCR</p><p> ADCR寄存器描述如表4.2所列。</p><p> 表4.2 A/D控制寄存器</p><p> 4.2.2A/D數(shù)據(jù)寄存器ADDR<
120、/p><p> ADDR寄存器描述見表4.3。其中ADDR[15:6]為10位的A/D轉(zhuǎn)換結(jié)果,bit5為最高位。</p><p> 表4.3 數(shù)據(jù)寄存器ADDR</p><p> 4.3A/D的基本操作</p><p> ADC(模數(shù)轉(zhuǎn)換器)轉(zhuǎn)換時鐘分頻計算公式如下:</p><p> CLKDIV=Fpcl
121、k/Fadclk-1</p><p> 其中Fpclk為所要設置的ADC時鐘,其值不能大于4.5MH值。</p><p> ADC轉(zhuǎn)換的基本操作方法:</p><p> (1) 將測量通道引腳設置為AINx功能;</p><p> (2) 通過ADCR寄存器設置ADC的工作模式,ADC轉(zhuǎn)換通道,轉(zhuǎn)換時鐘(CLKDIV時鐘分頻值);
122、</p><p> (3) 啟動ADC轉(zhuǎn)換;</p><p> (4) 通過查詢或中斷方式等待ADC轉(zhuǎn)換完畢,轉(zhuǎn)換數(shù)據(jù)存在ADDR寄存器中。</p><p><b> 4.4數(shù)據(jù)處理</b></p><p> 由于本課題用的是交流采樣,所以就要進行數(shù)據(jù)處理,數(shù)據(jù)處理主要是進行濾波,然而濾波的方法是多種多樣的,
123、本文對常用的幾種方法進行比較:</p><p> (1) 限幅濾波法(又稱程序判斷濾波法)</p><p><b> a. 方法:</b></p><p> 根據(jù)經(jīng)驗判斷,確定兩次采樣允許的最大偏差值(設為A),每次檢測到新值時判斷:如果本次值與上次值之差<=A,則本次值有效;如果本次值與上次值之差>A,則本次值無效,放棄
124、本次值,用上次值代替本次值。</p><p> b. 優(yōu)點:能有效克服因偶然因素引起的脈沖干擾</p><p> c. 缺點:無法抑制那種周期性的干擾;平滑度差。</p><p><b> 濾波方法:</b></p><p> /* A值可根據(jù)實際情況調(diào)整</p><p> val
125、ue為有效值,new_value為當前采樣值 </p><p> 濾波程序返回有效的實際值 */</p><p> #define A 10</p><p> char value;</p><p> char filter()</p><p><b> {</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文--電特性測量系統(tǒng)軟件設計
- 考勤系統(tǒng)軟件設計 畢業(yè)論文
- 教室節(jié)能智能照明系統(tǒng)軟件設計畢業(yè)論文
- 計算機專業(yè)畢業(yè)論文(考勤系統(tǒng)軟件設計)
- 畢業(yè)論文-智能轉(zhuǎn)速測量系統(tǒng)的軟件設計
- 真空系統(tǒng)抽氣特性計算軟件設計-畢業(yè)論文
- 畢業(yè)論文--生活消防合用供水系統(tǒng)軟件設計
- 腦電采集系統(tǒng)軟件設計.pdf
- 固體界面?zhèn)鳠嶙詣訙y量系統(tǒng)軟件畢業(yè)論文
- 燃機葉片測量系統(tǒng)軟件設計.pdf
- 單線陣水聲測量系統(tǒng)軟件設計.pdf
- 機房計費系統(tǒng)軟件 ——畢業(yè)論文
- 軟件設計專業(yè)畢業(yè)論文
- 聲音導引系統(tǒng)軟件設計
- 海洋流速測量系統(tǒng)軟件設計與實現(xiàn).pdf
- 無線電頻譜管理監(jiān)測系統(tǒng)軟件設計.pdf
- 基于zigbee及gprs的小型風電場數(shù)據(jù)采集系統(tǒng)軟件設計畢業(yè)論文
- 視頻監(jiān)控系統(tǒng)軟件設計
- 直流電動機雙閉環(huán)系統(tǒng)軟件設計畢業(yè)論文
- 畢業(yè)設計---逆變并網(wǎng)模擬系統(tǒng)軟件設計
評論
0/150
提交評論