電特性測量系統(tǒng)軟件設(shè)計(jì)畢業(yè)論文_第1頁
電特性測量系統(tǒng)軟件設(shè)計(jì)畢業(yè)論文_第2頁
電特性測量系統(tǒng)軟件設(shè)計(jì)畢業(yè)論文_第3頁
電特性測量系統(tǒng)軟件設(shè)計(jì)畢業(yè)論文_第4頁
電特性測量系統(tǒng)軟件設(shè)計(jì)畢業(yè)論文_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、本科畢業(yè)設(shè)計(jì)本科畢業(yè)設(shè)計(jì)(論文論文) 題目:電特性測量系統(tǒng)軟件設(shè)計(jì)題目:電特性測量系統(tǒng)軟件設(shè)計(jì) 院(系)院(系) 電子信息工程學(xué)院電子信息工程學(xué)院 專專 業(yè)業(yè) 自自 動(dòng)動(dòng) 化化 班班 級(jí)級(jí) 姓姓 名名 學(xué)學(xué) 號(hào)號(hào) 導(dǎo)導(dǎo) 師師 20122012 年年 6 6 月月 1 1 日日 三相電特性測試軟件設(shè)計(jì)三相電特性測試軟件設(shè)計(jì) 摘摘 要要 近年來隨著社會(huì)對電力需求量的不斷增長,電能緊缺問題日趨嚴(yán)重,極大 地制約著社會(huì)經(jīng)濟(jì)的發(fā)展。我國電力工業(yè)的迅速發(fā)展,電能質(zhì)量對于電網(wǎng)的安 全經(jīng)濟(jì)運(yùn)行,保證工業(yè)產(chǎn)品質(zhì)量和科學(xué)實(shí)驗(yàn)的正常進(jìn)行以及降低能耗等均有重 要意義。 為做到節(jié)約電能并合理高效地利用電能,這就需要對電

2、力參數(shù)進(jìn)行準(zhǔn)確、 實(shí)時(shí)地監(jiān)測;此外,對于電力參數(shù)進(jìn)行高精度、多參數(shù)的測量,又是充分了解 電網(wǎng)的運(yùn)行狀況,尋找并解決電力系統(tǒng)中出現(xiàn)問題的重要途徑。因此,對于電 力參數(shù)的測量,尤其是高精度、多參數(shù)、低價(jià)格、便攜、穩(wěn)定的實(shí)時(shí)測量就顯 得尤為重要,也一直是人們研究的一個(gè)重要的方向。 為解決以上問題,本設(shè)計(jì)選用 arm7 核的 lpc2124 芯片為測量系統(tǒng)的核 心,主要針對我國電力系統(tǒng)供配電的實(shí)際情況,通過 arm7 單片機(jī)為核心,配 以相應(yīng)的外圍電路和功能軟件,采用交流采樣技術(shù)實(shí)現(xiàn)多種電力參數(shù)的在線實(shí) 時(shí)測量和數(shù)據(jù)分析,為電網(wǎng)的安全經(jīng)濟(jì)運(yùn)行提供可靠保證。以提高三相電參數(shù) 的測量速度和精度。 關(guān)鍵字:

3、關(guān)鍵字:三相電;交流采樣;實(shí)時(shí)測量 three phase electric characteristic measurement software design abstract 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 economy.the rapid development of power in

4、dustry, power quality for power system safe and economic operation, ensure quality of industrial products and scientific experiment with normal and reduced energy consumption has important significance. in order to achieve energy saving and high efficient use of energy, which is needed for power par

5、ameters for accurate, real-time monitoring; in addition, the electric parameters 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 po

6、wer parameters, especially high accuracy, multi parameter, low price, portable, stable and real-time measurement is particularly important, people has always been an important direction in the study. in order to solve the problem above, this design uses arm7 nuclear lpc2124 chip measurement system f

7、or 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, adopting ac sampling technology to achieve a variety of electrical parameter on-line real-time m

8、easurement and data analysis, as the power system safe and economic operation to provide a reliable guarantee.in order to improve the electric parameter measuring speed and accuracy. keywords: three-phase;ac sampling;measurement 目目 錄錄 摘摘 要要.i i abstract.iiii 1 1 緒論緒論.1 1 1.1 前言 .1 1.2 本課題的研究背景、研究意義及

9、國內(nèi)外相關(guān)研究情況 .1 2 2 三項(xiàng)電特性測量軟件設(shè)計(jì)方案三項(xiàng)電特性測量軟件設(shè)計(jì)方案.1 1 2.1 基本功能要求 .1 2.2 總體方案設(shè)計(jì) .1 2.2.1 硬件平臺(tái).1 2.2.2 開發(fā)環(huán)境與仿真.1 2.2.3 開發(fā)語言.1 2.2.4 軟件總體結(jié)構(gòu).1 3 3 系統(tǒng)的初始化系統(tǒng)的初始化.1 1 3.1 系統(tǒng)的初始化的含義 .1 3.1.1 初始化的執(zhí)行順序.1 3.1.2 系統(tǒng)的啟動(dòng)代碼.1 4 4 數(shù)據(jù)采集程序和數(shù)據(jù)處理數(shù)據(jù)采集程序和數(shù)據(jù)處理.1 1 4.1 數(shù)據(jù)采集技術(shù)簡介 .1 4.2a/d 寄存器的描述 .1 4.2.1a/d 控制寄存器 adcr.1 4.2.2a/d 數(shù)

10、據(jù)寄存器 addr.2 4.3a/d 的基本操作 .3 4.4 數(shù)據(jù)處理 .3 4.5a/d 采集功能介紹及軟件編程 .7 5 5 鍵盤顯示模塊鍵盤顯示模塊.1212 5.1 關(guān)于鍵盤使用的簡單介紹 .12 5.2 鍵盤控制模塊的功能介紹及程序 .13 5.2.1 鍵盤掃描頭文件 keyboard.h.14 5.2.2 按鍵掃描去抖程序.14 6 6 液晶顯示模塊液晶顯示模塊.1717 6.1 液晶簡介 .17 6.1.1lcd 介紹.17 6.1.2lcd 顯示的原理.17 6.1.3lcd 的分類.18 6.2 液晶顯示模塊 .18 6.2.1 點(diǎn)陣式液晶顯示器 lm12864 簡介.18

11、 6.2.2 液晶顯示流程圖以及 lcd 驅(qū)動(dòng).19 6.3 lcd 顯示的應(yīng)用程序.29 6.3.1lcd 的簡單 gui 實(shí)現(xiàn).29 6.3.2lcd 實(shí)時(shí)時(shí)鐘顯示模塊.30 6.3.3lcd 的實(shí)時(shí)時(shí)鐘軟件編程.31 6.3.4 外部擴(kuò)展 i2c.35 6.3.5lcd 顯示電特性參數(shù).37 7 7 電特性參數(shù)的計(jì)算電特性參數(shù)的計(jì)算.4141 7.1 電特性參數(shù) .41 7.2 采用過零點(diǎn)檢測測量周期的軟件編程 guolindian.c.42 7.3 電特性參數(shù)軟件程序 .44 8 8 proteusproteus 仿真仿真 .4545 8.1proteus簡介 .45 8.2 電路仿真

12、 .45 8.3 分散加載文件 .46 8.4 系統(tǒng)的電路圖以及proteus中的仿真結(jié)果 .48 8.4.1 系統(tǒng)的電路圖.48 8.4.2proteus 中的仿真結(jié)果.48 結(jié)束語結(jié)束語.5151 致謝致謝.5252 參考文獻(xiàn)參考文獻(xiàn).5353 畢業(yè)設(shè)計(jì)(論文)知識(shí)產(chǎn)權(quán)聲明畢業(yè)設(shè)計(jì)(論文)知識(shí)產(chǎn)權(quán)聲明.5454 畢業(yè)設(shè)計(jì)(論文)獨(dú)創(chuàng)性聲明畢業(yè)設(shè)計(jì)(論文)獨(dú)創(chuàng)性聲明.5555 1 1 緒論緒論 1.11.1 前言前言 能源是人類社會(huì)賴于生存和發(fā)展的基礎(chǔ),電能作為能源的第二次形式,具 有簡單、方便、可靠等特點(diǎn),是現(xiàn)代社會(huì)運(yùn)行的主要能源之一。充足、可靠的 能源是提高經(jīng)濟(jì)高速發(fā)展、社會(huì)正常運(yùn)行的基

13、本前提。 上世紀(jì)六十年代以來,微電子、計(jì)算機(jī)、電力電子技術(shù)在各個(gè)領(lǐng)域 廣泛應(yīng) 用,位現(xiàn)代工業(yè)的自動(dòng)化、提高勞動(dòng)生產(chǎn)率開辟了廣闊的前景。近年來隨著大 功率電力電子技術(shù)的發(fā)展以及它們的廣泛應(yīng)用,使得非線性負(fù)載大量的增加, 給供電設(shè)備造成了很大的影響。 本文主要研究基于數(shù)字采樣測量的三相電參數(shù)測量系統(tǒng),主要包括電壓、 電流、頻率、相位、功率因數(shù)、有功功率、無功功率,視在功率,電能等的測 量。 1.21.2 本課題的研究背景、研究意義及國內(nèi)外相關(guān)研究情況本課題的研究背景、研究意義及國內(nèi)外相關(guān)研究情況 電力是國家經(jīng)濟(jì)發(fā)展的命脈,隨著社會(huì)對電力需求量的不斷增長,工業(yè)、 農(nóng)業(yè)、商業(yè)、居民用電的日益增長,供電

14、量日益增加,電能作為一種具有多種 參數(shù)指標(biāo)、直接反映電力企業(yè)經(jīng)濟(jì)效益的商品備受重視。隨著工業(yè)技術(shù)的不斷 進(jìn)步,對電力的需要越來越大,電能緊缺問題日趨嚴(yán)重,極大地制約著社會(huì)經(jīng) 濟(jì)的發(fā)展。 近年來,我國電力負(fù)荷急劇增大,各種非線性負(fù)載,特別是新型電力電子 器件在電力系統(tǒng)、工業(yè)各部門和家用電器產(chǎn)品中的日益廣泛應(yīng)用,給供電設(shè)備 的電能質(zhì)量造成了極大的影響。因此,在大多數(shù)情況下,電力信號(hào)己不是標(biāo)準(zhǔn) 的正弦信號(hào),而是一種復(fù)雜的周期信號(hào)。 國內(nèi)電力參數(shù)檢測技術(shù)的研究和開發(fā)起步較晚,目前對電力參數(shù)測量的方 式基本上可分為芯片轉(zhuǎn)化為有效值測量,直接離散時(shí)序測量和多諧波測量等。 相對國內(nèi)而言,國外對電能質(zhì)量的研究

15、起步就比較早,也已經(jīng)取得了很多關(guān)于 這方面的研究和應(yīng)用成果,世界對電能質(zhì)量的認(rèn)識(shí)程度也越來越高,每隔兩年 就召開一次電能質(zhì)量與電力諧波學(xué)術(shù)會(huì)議。在電能質(zhì)量檢測產(chǎn)品研究領(lǐng)域,尤 其是這些領(lǐng)域的高端產(chǎn)品在全球市場的份額,幾乎是被美國的 fluke 公司、 瑞士的 lem 公司、瑞典的 unipower 公司等國際知名公司占據(jù),這些公司的 技術(shù)水平為國際最先進(jìn),當(dāng)然價(jià)格也非常昂 電能質(zhì)量對于電網(wǎng)的安全經(jīng)濟(jì)運(yùn)行,保證工業(yè)產(chǎn)品的質(zhì)量和科學(xué)實(shí)驗(yàn)的正常 進(jìn)行以及降低能耗等均有重要意義。為了改善這一狀況,對電力系統(tǒng)進(jìn)行完整 分析和監(jiān)測是成功的關(guān)鍵。此外,對于電力參數(shù)進(jìn)行高精度、多參數(shù)的測量, 又是充分了解電網(wǎng)

16、的運(yùn)行狀況,尋找并解決電力系統(tǒng)中出現(xiàn)的問題的重要途徑。 因此,對于電力參數(shù)的測量,尤其是高精度、多參數(shù)、低價(jià)格、便攜、穩(wěn)定的 實(shí)時(shí)測量就顯得尤為重要,也一直是人們研究的一個(gè)重要方向。在我國電力工 業(yè)領(lǐng)域,電網(wǎng)質(zhì)量的問題已經(jīng)成為關(guān)鍵,電力參數(shù)的分析和監(jiān)測已經(jīng)成為國際 上討論和研究的重點(diǎn)。 2 三項(xiàng)電特性測量軟件設(shè)計(jì)方案三項(xiàng)電特性測量軟件設(shè)計(jì)方案 2.1 基本功能要求基本功能要求 (1) 熟悉工廠供電技術(shù); (2) 熟悉測量系統(tǒng)硬件電路原理; (3) 設(shè)計(jì)軟件結(jié)構(gòu); (4) 掌握 ads1.2 開發(fā)工具; (5) 熟練運(yùn)用 proteus 仿真; (6) 編寫程序代碼及調(diào)試; (7) 軟、硬件系統(tǒng)

17、聯(lián)調(diào)。 2.2 總體方案設(shè)計(jì)總體方案設(shè)計(jì) 2.2.1 硬件平臺(tái)硬件平臺(tái) 課題主要研究電特性測量系統(tǒng)的軟件程序設(shè)計(jì)。選用的是 arm 為核的 lpc2000 系列的芯片,lpc2000 系列是 nxp 公司生產(chǎn)的以 arm7tdmi-s 核為 基礎(chǔ)的嵌入式處理器,在芯片內(nèi)部配置了大量的接口及功能模塊。本設(shè)計(jì)選用 的是 lpc2124 芯片,lpc2124 具有較小的 64 引腳封裝,低功耗的特點(diǎn),以及 多個(gè)片內(nèi)外設(shè)(如 32 位定時(shí)器、a/d 轉(zhuǎn)換器、外部中斷等) ,多個(gè) 32 位定時(shí)器, 4 路 10 位 adc,內(nèi)置多種串行通信接口以及多達(dá) 9 個(gè)外部中斷,因此特別適用 于工業(yè)控制、醫(yī)療系統(tǒng)

18、訪問控制、通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、嵌入式 modem 等 各種類型的應(yīng)用。 2.2.2 開發(fā)環(huán)境與仿真開發(fā)環(huán)境與仿真 本課題選用的是 ads1.2 開發(fā)工具,ads1.2 是 arm 公司推出的 arm 集 成開發(fā)工具,具有用戶多、編譯效率高、支持的 arm 內(nèi)核多的特點(diǎn)。arm ads 全稱為 arm developer suite,是 arm 公司推出的 arm 集成開發(fā)工具, 成熟版本為 ads1.2,他的前身是 sdt,sdt 是 arm 公司幾年前的開發(fā)環(huán)境軟 件。ads1.2 支持 arm10 之前的所有 arm 系列微控制器,支持軟件調(diào)試,支 持匯編、c 語言、c+源程序,具有編譯

19、效率高、系統(tǒng)庫功能強(qiáng)等特點(diǎn)。本課 題用 ads1.2 開發(fā)工具圍繞 lpc2124 片上的基本功能模塊實(shí)現(xiàn)三相電特性的測 試,最終通過了 proteus 的仿真驗(yàn)證。 proteus 是英國 labcenter 公司推出的適合嵌入式設(shè)計(jì)仿真與開發(fā)的仿真 軟件,使用 proteus 軟件可以完全脫離硬件平臺(tái)來學(xué)習(xí)嵌入式系統(tǒng),可以說 是嵌入式學(xué)習(xí)的一次革命。 2.2.3 開發(fā)語言開發(fā)語言 本課題軟件用的語言主要有 c 語言,還有啟動(dòng)代碼中所用到的匯編語言。 本文選用 c 語言主要是由于 c 語言有以下優(yōu)點(diǎn): (1) 寄存器分配,數(shù)據(jù)類型等由編譯器管理; (2) 編程及調(diào)試的時(shí)間減少,大大縮短開發(fā)周

20、期; (3) 明顯增加軟件可讀性,便于改進(jìn)和擴(kuò)展。 2.2.4 軟件總體結(jié)構(gòu)軟件總體結(jié)構(gòu) 本系統(tǒng)主要針對我國電力系統(tǒng)供配電的實(shí)際情況,通過 arm7 單片機(jī)為核 心,配以相應(yīng)的外圍電路和功能軟件,采用交流采樣技術(shù)實(shí)現(xiàn)多種電力參數(shù)的 在線實(shí)時(shí)測量和數(shù)據(jù)分析,為電網(wǎng)的安全經(jīng)濟(jì)運(yùn)行提供可靠保證。 本課題主要研究電特性測量系統(tǒng)的軟件程序設(shè)計(jì)。本課題的軟件部分主要 是通過實(shí)時(shí)采樣電流電壓的瞬時(shí)值,以及過零檢測,進(jìn)而計(jì)算出電流電壓的有 效值、頻率值、有用功率、無用功率、視在功率、功率因數(shù)等電力參數(shù)。本測 量系統(tǒng)的軟件設(shè)計(jì)主要分為以下幾個(gè)模塊: (1) 主程序模塊 (2) 電壓、電流采集程序 (3) 頻率采

21、集程序 (4) 數(shù)據(jù)處理程序 (5) 時(shí)鐘日歷程序 (6) 鍵盤服務(wù)程序 (7) 顯示服務(wù)程序 本設(shè)計(jì)擬采用 ads1.2 集成開發(fā)工具編寫 c 語言程序?qū)崿F(xiàn)測量系統(tǒng)的相關(guān) 功能。數(shù)據(jù)的處理與計(jì)算是程序設(shè)計(jì)的主要部分。系統(tǒng)基本測量的參數(shù)主要包 括:電流有效值、電壓有效值、有功功率、無功功率、視在功率、功率因數(shù)等。 首要環(huán)節(jié)是對輸入的電氣信號(hào)進(jìn)行離散化,即采樣。根據(jù)被采集信號(hào)的不同, 數(shù)據(jù)采集可分為直流采樣和交流采樣兩大類。對比分析后,系統(tǒng)選用交流采樣, 數(shù)值的計(jì)算采用離散的電壓電流有效值計(jì)算公式來實(shí)現(xiàn)。 為了提高 arm7 核的 lpc2124 芯片程序編寫效率,系統(tǒng)軟件采用了分模 塊編寫的方

22、法,用 c 語言和匯編語言混合編寫。對于 lpc2124 和各模塊的初始 化、數(shù)據(jù)采集程序采用匯編編程,對于主程序、鍵盤顯示等通用性較強(qiáng)程序, 采用 c 語言編寫。本系統(tǒng)的主要功能模塊有數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、時(shí) 鐘模塊,按鍵顯示模塊等。所有軟件模塊的功能都在主控模塊的調(diào)配下協(xié)調(diào)執(zhí) 行,主控模塊首先對系統(tǒng)進(jìn)行初始化操作,包括 cpu 初始化、i/o 初始化、 a/d 初始化、lcd 初始化、時(shí)鐘初始化、異步通訊初始化等。隨即對數(shù)據(jù)進(jìn)行 采集、處理、顯示。然后判斷是否有鍵按下,根據(jù)判斷結(jié)果,執(zhí)行相應(yīng)按鍵服 務(wù)程序。 系統(tǒng)的主要電特性參量介紹: (1) 電壓有效值:讓恒定電壓和交變電壓分別加在

23、阻值相等的電阻上,使它 們在相同時(shí)間內(nèi)產(chǎn)生的熱量相等,就可以把該恒定電壓的數(shù)值規(guī)定為這個(gè)交變電 壓的有效值. (2) 電流有效值:將一直流電與一交流電分別通過相同阻值的電阻,如果 相同時(shí)間內(nèi)兩電流通過電阻產(chǎn)生的熱量相同,就說這一直流電的電流值是這一 交流電的有效值。 (3) 有功功率:在交流電路中,電源在一個(gè)周期內(nèi)發(fā)出瞬時(shí)功率的平均值 (或負(fù)載電阻所消耗的功率),稱為有功功率。 (4) 無功功率:在正弦電流電路中,復(fù)功率的虛部: ,且供給電感的無 功功率為正值。 (5) 視在功率:在電工技術(shù)中,將單口網(wǎng)絡(luò)端鈕電壓和電流有效值的乘積, 稱為視在功率(apparent power) ,記為 s=u

24、i。 (6) 功率因數(shù):在交流電路中,電壓與電流之間的相位差()的余弦叫做功 率因數(shù),用符號(hào) cos 表示,在數(shù)值上,功率因數(shù)是有功功率和視在功率的比值, 即 cos=p/s 。 系統(tǒng)主程序流程圖如 2.1 圖所示。 一 一 一 一 一 一 一 一 一 一 一 一 a/ d一 一 一 一 a/ d一 一 一 一 一 一 一 一 一 一 一 a/ d一 一 一 一 一 一 一 一 一 一 一 一 a/ d一 一 一 一 n n 一 一 a/ d一 一 y y keya一 一 一 y y keyc一 一 一keyb一 一 一n nn n y yy y 一 kyea一 一 一一 kyec一 一 一一

25、 kyeb一 一 一 一 一 0一 一 一 一 一 一 一 一 一 一 1 一 一 ei nt0一 一 一 一 一 一 一 1一 一 一 一 一 一 一 一 一 一 1 一 一 ei nt1一 一 一 一 一 一 一 2一 一 一 一 一 一 一 一 一 一 1 一 一 ei nt2一 一 一 一 一 3 系統(tǒng)的初始化系統(tǒng)的初始化 3.1 系統(tǒng)的初始化的含義系統(tǒng)的初始化的含義 首先來講講系統(tǒng)初始化,什么是系統(tǒng)初始化呢? 初始化就是把變量(variable)賦為默認(rèn)值,把控件設(shè)為默認(rèn)狀態(tài),把沒準(zhǔn)備 的準(zhǔn)備好。但是如果是整個(gè)系統(tǒng)初始化那就不一樣了。每個(gè)軟件,或是工具, 系統(tǒng)等都有一個(gè)初始化。如系統(tǒng)

26、的初始化就是將你的系統(tǒng)還原到一開始做的備 份的狀態(tài)。 把設(shè)置等都還原至那個(gè)位置。如果是一個(gè)軟件的初始化,基本都是將一些 功能的設(shè)置都還原為開始設(shè)置,意思就和恢復(fù)默認(rèn)設(shè)置差不多。 3.1.1 初始化的執(zhí)行順序初始化的執(zhí)行順序 每一個(gè)初始化部分里面的代碼在程序運(yùn)行后,或庫的 begin-end 塊運(yùn)行之前。 delphi 使用對單元相關(guān)樹的深度優(yōu)先遍歷來運(yùn)行初始化部分。換句話說,就只 在一個(gè)單元的初始化代碼運(yùn)行前,delphi 就運(yùn)行了特他使用的每一個(gè)單元的初 始化部分。每一個(gè)單元僅初始化一次 。 程序代碼當(dāng)中可以有 initialization 聲明部分。這部分里面的代碼的執(zhí)行, 是在 wind

27、ows 加載包含該單元(指 initialization 所屬單元)的模塊(應(yīng)用程序, dll 或者包)時(shí)運(yùn)行的。一般來說是:先 initialization 單元,然后 interface 單 元,然后 implementation 單元。 程序中 intialize 過程??梢栽谶@里初始化字符串、動(dòng)態(tài)數(shù)組、接口和 variants 系統(tǒng)為什么要初始化呢? 第一,信息系統(tǒng)是以數(shù)據(jù)庫為主的軟件系統(tǒng),是數(shù)據(jù)庫應(yīng)用系統(tǒng),必須設(shè) 定數(shù)據(jù)庫應(yīng)用的安全體系否則無法保證數(shù)據(jù)安全; 第二,信息系統(tǒng)是組織的管理方法,必須具備組織使用的共享數(shù)據(jù)才能供 組織使用; 第三,初始化的核心是數(shù)據(jù)準(zhǔn)備,沒有歷史數(shù)據(jù)不能實(shí)

28、現(xiàn)系統(tǒng)切換,無法 使用; 第四,數(shù)據(jù)必須定期存檔和更新才能使信息系統(tǒng)有較高的運(yùn)轉(zhuǎn)效率; 3.1.2 系統(tǒng)的啟動(dòng)代碼系統(tǒng)的啟動(dòng)代碼 系統(tǒng)初始化主要是由軟件來完成的,一般在 32 位 arm 應(yīng)用系統(tǒng)中,大多 數(shù)軟件采用 c 語言來進(jìn)行編程,并且以嵌入式操作系統(tǒng)作為平臺(tái),這樣能大大 提升開發(fā)效率及軟件性能。但是,由于 c 語言生成的代碼不能上電后立馬運(yùn)行 的,因?yàn)榇藭r(shí)還不具備運(yùn)行條件,比如全局變量還沒有初始化,系統(tǒng)堆棧還沒 有設(shè)置等。因此從系統(tǒng)上電,到正式運(yùn)行用戶的 main 函數(shù)之前,要運(yùn)行一段代 碼,這段代碼就稱為啟動(dòng)代碼。 啟動(dòng)代碼大部分由匯編指令構(gòu)成,它可以實(shí)現(xiàn)向量表定義、堆棧初始化、 系

29、統(tǒng)變量初始化、中斷初始化、外圍初始化、地址重映射等操作。見圖 2-2。 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 l pc2124一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 m ai n一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 st ar up. s tar get . c 圖 2.2 首先是應(yīng)該完成頭文件的編寫,下面就是系統(tǒng)初試化的頭文件(target.h) 和系統(tǒng)的初始化軟件(target.c) 、 (startup

30、.s) 。 (1) 系統(tǒng)初試化的頭文件(系統(tǒng)初試化的頭文件(target.h) #ifndef _target_h #define _target_h #ifdef _cplusplus extern c #endif #ifndef in_target extern void reset(void); extern void targetinit(void); #endif #ifdef _cplusplus #endif #endi (2) 系統(tǒng)的初始化軟件(系統(tǒng)的初始化軟件(startup.s) ;define the stack size ;定義堆棧的大小 svc_stack_legt

31、h equ 0 fiq_stack_legth equ 0 irq_stack_legth equ 256 abt_stack_legth equ 0 und_stack_legth equ 0 noint equ 0 x80 nofiqequ0 x40 usr32mode equ 0 x10 svc32mode equ 0 x13 sys32mode equ 0 x1f irq32mode equ 0 x12 fiq32mode equ 0 x11 ; import _use_no_semihosting_swi ;the imported labels ;引入的外部標(biāo)號(hào)在這聲明 impor

32、t fiq_exception ;快速中斷異常處理程序 import _main ;c 語言主程序入口 import targetresetinit ; 目標(biāo)板基本初始化 ;the emported labels ;給外部使用的標(biāo)號(hào)在這聲明 export bottom_of_heap export stackusr export reset export _user_initial_stackheap code32 area vectors,code,readonly entry ;interrupt vectors ;中斷向量表 reset ldr pc, resetaddr ldr pc,

33、 undefinedaddr ldr pc, swi_addr ldr pc, prefetchaddr ldr pc, dataabortaddr dcd 0 xb9205f80 ldr pc, pc, #-0 xff0 ldr pc, fiq_addr resetaddr dcd resetinit undefinedaddr dcd undefined swi_addr dcd softwareinterrupt prefetchaddr dcd prefetchabort dataabortaddr dcd dataabort nouse dcd 0 irq_addr dcd 0 fi

34、q_addr dcd fiq_handler ;未定義指令 undefined b undefined ;軟中斷 softwareinterrupt ; b softwareinterrupt cmp r0, #4 ldrlo pc, pc, r0, lsl #2 movs pc, lr swifunction dcd irqdisable ;0 dcd irqenable ;1 dcdfiqdisable ;2 dcdfiqenable ;3 irqdisable ;關(guān) irq 中斷 mrs r0, spsr orr r0, r0, #noint msr spsr_c, r0 movs pc

35、, lr irqenable ;開 irq 中斷 mrs r0, spsr bic r0, r0, #noint msr spsr_c, r0 movs pc, lr fiqdisable ;關(guān) fiq 中斷 mrs r0, spsr orr r0, r0, #nofiq msr spsr_c, r0 movs pc, lr fiqenable ;開 fiq 中斷 mrs r0, spsr bic r0, r0, #nofiq msr spsr_c, r0 movs pc, lr ;取指令中止 prefetchabort b prefetchabort ;取數(shù)據(jù)中止 dataabort b d

36、ataabort ;快速中斷 fiq_handler stmfd sp!, r0-r3, lr bl fiq_exception ldmfd sp!, r0-r3, lr subs pc, lr, #4 initstack mov r0, lr ;build the svc stack ;設(shè)置管理模式堆棧 msr cpsr_c, #0 xd3 ldr sp, stacksvc ;build the irq stack ;設(shè)置中斷模式堆棧 msr cpsr_c, #0 xd2 ldr sp, stackirq ;build the fiq stack ;設(shè)置快速中斷模式堆棧 msr cpsr_c

37、, #0 xd1 ldr sp, stackfiq ;build the dataabort stack ;設(shè)置中止模式堆棧 msr cpsr_c, #0 xd7 ldr sp, stackabt ;build the udf stack ;設(shè)置未定義模式堆棧 msr cpsr_c, #0 xdb ldr sp, stackund ;build the sys stack ;設(shè)置系統(tǒng)模式堆棧 msr cpsr_c, #0 xdf ldr sp, =stackusr mov pc, r0 resetinit bl initstack ;初始化堆棧 bl targetresetinit ;目標(biāo)板基

38、本初始化 ;跳轉(zhuǎn)到 c 語言入口 b _main _user_initial_stackheap ldr r0,=bottom_of_heap ; ldr r1,=stackusr mov pc,lr stacksvc dcd svcstackspace + (svc_stack_legth - 1)* 4 stackirq dcd irqstackspace + (irq_stack_legth - 1)* 4 stackfiq dcd fiqstackspace + (fiq_stack_legth - 1)* 4 stackabt dcd abtstackspace + (abt_sta

39、ck_legth - 1)* 4 stackund dcd undtstackspace + (und_stack_legth - 1)* 4 if :def: en_crp if . = 0 x1fc info 1,nthe data at 0 x000001fc must be 0 x87654321.nplease delete some source before this line. endif crpdata while . 0 x1fc nop wend crpdata1 dcd 0 x87654321 ;/*when the data is 為 0 x87654321,user

40、 code be protected. 當(dāng)此數(shù)為 0 x87654321 時(shí),用戶程序被保護(hù) */ endif ;/* 分配堆??臻g */ area mystacks, data, noinit, align=2 svcstackspace space svc_stack_legth * 4 ;管理模式堆??臻g irqstackspace space irq_stack_legth * 4 ;中斷模式堆??臻g fiqstackspace space fiq_stack_legth * 4 ;快速中斷模式堆???間 abtstackspace space abt_stack_legth * 4

41、;中止模式堆??臻g undtstackspace space und_stack_legth * 4 ; 未定義模式堆 棧 area heap, data, noinit bottom_of_heap space 1 area stacks, data, noinit stackusr end (3) 系統(tǒng)的初始化軟件(系統(tǒng)的初始化軟件(target.c) #define in_target #include config.h #include guolindian.h void targetresetinit(void); void irq_exception(void) while(1);

42、 void fiq_exception(void) while(1); void timer0_exception(void) t0ir = 0 x01; vicvectaddr = 0; /通知中斷控制器中斷結(jié)束 void vicinit(void) /*過零點(diǎn)檢測功能初試化函數(shù)*/ void guolindianinit(void) pinsel1 = 0 x00000001; extmode = 0 x01;/邊沿觸發(fā) vicintselect = 0 x00000000; vicdefvectaddr = (int) irq_eint1; extint = 0 x01; vicinte

43、nable = 0 x00004000; #define target_debug_by_lcm void targetinit(void) #ifdef target_debug_by_lcm targetresetinit(); guolindianinit(); gui_initialize(); / 初始化 lcm gui_setcolor(1,0);/ 設(shè)置前景色和背景色 #endif void initialiseuart0(uint32 bps) void targetresetinit(void) #ifdef _debug_ram memmap = 0 x2; /remap

44、#endif #ifdef _debug_flash memmap = 0 x1; /remap #endif #ifdef _in_chip memmap = 0 x1; /remap #endif /* 設(shè)置系統(tǒng)各部分時(shí)鐘 */ /* set system timers for each component */ pllcon = 1; #if (fpclk / (fcclk / 4) = 1 vpbdiv = 0; #endif #if (fpclk / (fcclk / 4) = 2 vpbdiv = 2; #endif #if (fpclk / (fcclk / 4) = 4 vpb

45、div = 1; #endif #if (fcco / fcclk) = 2 pllcfg = (fcclk / fosc) - 1) | (0 5); #endif #if (fcco / fcclk) = 4 pllcfg = (fcclk / fosc) - 1) | (1 5); #endif #if (fcco / fcclk) = 8 pllcfg = (fcclk / fosc) - 1) | (2 5); #endif #if (fcco / fcclk) = 16 pllcfg = (fcclk / fosc) - 1) | (3 5); #endif pllfeed = 0

46、 xaa; pllfeed = 0 x55; while(pllstat pllcon = 3; pllfeed = 0 xaa; pllfeed = 0 x55; /* 設(shè)置存儲(chǔ)器加速模塊 */ /* set memory accelerater module*/ mamcr = 0; #if fcclk 20000000 mamtim = 1; #else #if fcclk 40000000 mamtim = 2; #else mamtim = 3; #endif #endif mamcr = 2; /* 設(shè)置串行口 */ /* initialize uart*/ ccr = 1; pr

47、eint = fpclk / 32768 - 1; prefrac = fpclk - (fpclk / 32768) * 32768; year = 2012; month = 4; dom = 26; hour = 21; min = 10; sec =0; #include rt_sys.h #include stdio.h 4 數(shù)據(jù)采集程序和數(shù)據(jù)處理數(shù)據(jù)采集程序和數(shù)據(jù)處理 4.1 數(shù)據(jù)采集技術(shù)簡介數(shù)據(jù)采集技術(shù)簡介 從廣義上來講,數(shù)據(jù)采集(daq),是指從傳感器和其它待測設(shè)備等模擬和 數(shù)字被測單元中自動(dòng)采非電量或者電量信號(hào),送到上位機(jī)中進(jìn)行分析,處理。數(shù)據(jù) 采集系統(tǒng)是結(jié)合基于計(jì)算機(jī)或者其

48、他專用測試平臺(tái)的測量軟硬件產(chǎn)品來實(shí)現(xiàn)靈 活的、用戶自定義的測量系統(tǒng)。 采集又稱取樣、抽樣,對模擬信號(hào)在時(shí)間上的離散化、幅值離散化,這樣 用在電參量測量中可以克服模擬運(yùn)算準(zhǔn)確度較低且模擬器件易受各種干擾影響 的缺點(diǎn),從同一批數(shù)據(jù)中可獲得許多電參量信息。 本文所述的數(shù)字采樣技術(shù)主要應(yīng)用于電參量測量領(lǐng)域。就是對周期或非周 期交流待測信號(hào),在 cpu 的控制下,由采樣保持器進(jìn)行采樣和保持,再送給 a/d 轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換,量化處理,將模擬量變?yōu)閿?shù)字量,送存儲(chǔ)器存儲(chǔ), 最后由 cpu 進(jìn)行一系列運(yùn)算,處理,得到結(jié)果送到 lcd 顯示。 本文用的是 lpc2124,lpc2124 具有一個(gè) a/d 轉(zhuǎn)換

49、器,a/d 轉(zhuǎn)換器的基本 時(shí)鐘由 vpb 時(shí)鐘提供??删幊谭诸l器可將時(shí)鐘調(diào)整至 4.5mhz(逐步逼近最大 時(shí)鐘) 。10 位精度要求的轉(zhuǎn)換需要 11 個(gè) a/d 轉(zhuǎn)換時(shí)鐘。lpc2124 具有一個(gè) a/d 轉(zhuǎn)換器。a/d 轉(zhuǎn)換具有如下特性: (1) 10 位逐次逼近模式轉(zhuǎn)換器; (2) 測量范圍:03.3v; (3) 10 位轉(zhuǎn)換時(shí)間2.4us; (4) 轉(zhuǎn)換觸發(fā)信號(hào)可選擇:輸入引腳的跳變或定時(shí)器匹配; (5) 具有掉電模式。 4.2a/d 寄存器的描述寄存器的描述 a/d 寄存器包含控制寄存器 adcr 和數(shù)據(jù)寄存器 addr。a/d 寄存器的使用情 況詳見下表 4.1。 表 4.1 a/

50、d 寄存器 名稱描述訪 問 復(fù)位值地址 adcra/d 控制寄存器。a/d 轉(zhuǎn)換開始前,必須寫入 adcr 寄 存器來選擇工作模式 r/w0 x00000001 0 xe0034000 addra/d 數(shù)據(jù)寄存器。該寄存器包含 adc 的 done 標(biāo)志位 和 10 位的轉(zhuǎn)換結(jié)果(當(dāng)前 done 位為 1 時(shí),轉(zhuǎn)換結(jié)果 才是有效的) r/wna0 xe0034000 4.2.1a/d 控制寄存器控制寄存器 adcr adcr 寄存器描述如表 4.2 所列。 表 4.2 a/d 控制寄存器 adcr名稱功能復(fù)位值 7:0sel從 ain3ain0 中選擇采樣引腳。sel 段中的 bit0bit3

51、 分 別對應(yīng) ain3ain0 引腳,為 1 表示選中。在 64 腳封裝的 lpc2124 有 bit0bit3 可置位。軟件控制模式下,只有一位 可被置位;硬件掃描模式下,sel 可為 10 x0f 中的任何一 個(gè)值。sel 為 0 時(shí),等效于 0 x01。 0 x01 15:8clkdiv將 vpb 時(shí)鐘(pclk)進(jìn)行(clkdiv 的值加 1)分頻得到 a/d 轉(zhuǎn)換 時(shí)鐘,該時(shí)鐘必須小于或等于 45mhz。 0 16burst如果該位為 0,轉(zhuǎn)換由軟件控制,需要 11 個(gè)時(shí)鐘方能完成。 如果該位為 1,a/d 轉(zhuǎn)換器以 clks 字段選擇的速率重復(fù)執(zhí)行 轉(zhuǎn)換,并從 sel 字段為 1

52、的位對應(yīng)的引腳開始掃描。a/d 轉(zhuǎn) 換器啟動(dòng)后,第一次轉(zhuǎn)換的時(shí) sel 字段中為 1 的位中的最低 有效位程度模擬輸入,然后時(shí)為 1 的更高有效為對應(yīng)的模擬 輸入(如果可用)。重復(fù)轉(zhuǎn)換通過清零該位終止,但該位被 清零時(shí)并不會(huì)中止正在進(jìn)行的轉(zhuǎn)換。 0 19:7clks該字段用來選擇 burst 模式下每次轉(zhuǎn)換使用的時(shí)鐘數(shù)和所得 addr 轉(zhuǎn)換結(jié)果放入 ls 位中可確保精度的位的數(shù)目,clks 可 在 11 個(gè)時(shí)鐘(10 位)4 個(gè)時(shí)鐘(3 位)之間選擇:000=11 個(gè)時(shí)鐘/10 位,111=4 個(gè)時(shí)鐘/3 位。 000 21pdn1:a/d 轉(zhuǎn)換器處于正常模式。0 0:a/d 轉(zhuǎn)換器處于掉電模

53、式。 23:22test1:0這些位用于器件測試,00 為正常測試,01 為數(shù)字測試模式, 10 為 dac 測試模式,11 為一次轉(zhuǎn)換測試模式。 0 26:24start當(dāng) burst 為 0 時(shí),這些位控制著 a/d 轉(zhuǎn)換是否啟動(dòng)和何時(shí)啟 動(dòng); 000:不啟動(dòng) 001:立即啟動(dòng)轉(zhuǎn)換 010:當(dāng) adcr 寄存器 bit27 選擇的邊沿出現(xiàn) p0.1/ent0/mat0.2/cap0.2 腳時(shí)啟動(dòng)轉(zhuǎn)換 注意:start 選擇 100111 時(shí),mat 信號(hào)不必輸出到引腳 上 100:當(dāng) adcr 寄存器 bit27 選擇的邊沿在 mat0.1 出現(xiàn)時(shí)啟 動(dòng)轉(zhuǎn)換 101:當(dāng) adcr 寄存器

54、bit27 選擇的邊沿在 mat0.3 出現(xiàn)時(shí)啟 動(dòng)轉(zhuǎn)換 110:當(dāng) adcr 寄存器 bit27 選擇的邊沿在 mat1.0 出現(xiàn)時(shí)啟 動(dòng)轉(zhuǎn)換 111:當(dāng) adcr 寄存器 bit27 選擇的邊沿在 mat1.1 出現(xiàn)時(shí)啟 動(dòng)轉(zhuǎn)換 000 27edge該位只有在 start 字段為 010111 時(shí)有效 0:在所選 cap/mat 信號(hào)的下降沿啟動(dòng)轉(zhuǎn)換 1:在所選 cap/mat 信號(hào)的上升沿啟動(dòng)轉(zhuǎn)換 0 4.2.2a/d 數(shù)據(jù)寄存器數(shù)據(jù)寄存器 addr addr 寄存器描述見表 4.3。其中 addr15:6為 10 位的 a/d 轉(zhuǎn)換結(jié)果, bit5 為最高位。 表 4.3 數(shù)據(jù)寄存器

55、addr addr名稱功能復(fù)位值 31donea/d 轉(zhuǎn)換完成標(biāo)志位,當(dāng) a/d 轉(zhuǎn)換結(jié)束時(shí)該位 置位。該位在 addr 被讀出和 adcr 被寫入時(shí) 清零。如果 adcr 在轉(zhuǎn)換過程中被寫入,并啟 動(dòng)一次新的轉(zhuǎn)換。 0 30overunbrust 模式下,如果產(chǎn)生 ls 位結(jié)果前,一個(gè)或 多個(gè)轉(zhuǎn)換結(jié)果被丟失和覆蓋,該位置位。讀位 通過讀 addr 寄存器清零。 0 29:2 7 這些位讀出為 0.他們用于未來 chn 字段的擴(kuò)展, 使之兼容包含更多通道的轉(zhuǎn)換器。 0 26:2 4 chn這些位包含的是 ls 位的轉(zhuǎn)換通道x 23:1 6 這些位讀出時(shí)為 0.他們允許連續(xù) a/d 值的累加,

56、而不需要使用與門屏蔽處理,使得至少有 256 個(gè)值不溢出到 chn 字段 0 15:6v/vdda當(dāng) done 為時(shí),該字段包含一個(gè)二進(jìn)制數(shù),用 來代表 sel 字段選中的 ain 腳的電壓接近于、 等于或大于 vdda x 5:0這些位讀出時(shí)為 0.專門用于未來的擴(kuò)展和功能 更強(qiáng)大的 a/d 轉(zhuǎn)換器。 0 4.3a/d 的基本操作的基本操作 adc(模數(shù)轉(zhuǎn)換器)轉(zhuǎn)換時(shí)鐘分頻計(jì)算公式如下: clkdiv=fpclk/fadclk-1 其中 fpclk 為所要設(shè)置的 adc 時(shí)鐘,其值不能大于 4.5mh 值。 adc 轉(zhuǎn)換的基本操作方法: (1) 將測量通道引腳設(shè)置為 ainx 功能; (2)

57、 通過 adcr 寄存器設(shè)置 adc 的工作模式,adc 轉(zhuǎn)換通道,轉(zhuǎn)換時(shí)鐘 (clkdiv 時(shí)鐘分頻值); (3) 啟動(dòng) adc 轉(zhuǎn)換; (4) 通過查詢或中斷方式等待 adc 轉(zhuǎn)換完畢,轉(zhuǎn)換數(shù)據(jù)存在 addr 寄存 器中。 4.4 數(shù)據(jù)處理數(shù)據(jù)處理 由于本課題用的是交流采樣,所以就要進(jìn)行數(shù)據(jù)處理,數(shù)據(jù)處理主要是進(jìn) 行濾波,然而濾波的方法是多種多樣的,本文對常用的幾種方法進(jìn)行比較: (1) 限幅濾波法(又稱程序判斷濾波法)限幅濾波法(又稱程序判斷濾波法) a. 方法: 根據(jù)經(jīng)驗(yàn)判斷,確定兩次采樣允許的最大偏差值(設(shè)為 a) ,每次檢測到新 值時(shí)判斷:如果本次值與上次值之差a,則本次值無效,放

58、棄本次值,用上次值代替本次值。 b. 優(yōu)點(diǎn):能有效克服因偶然因素引起的脈沖干擾 c. 缺點(diǎn):無法抑制那種周期性的干擾;平滑度差。 濾波方法: /* a 值可根據(jù)實(shí)際情況調(diào)整 value 為有效值,new_value 為當(dāng)前采樣值 濾波程序返回有效的實(shí)際值 */ #define a 10 char value; char filter() char new_value; new_value = get_ad(); if ( ( new_value - value a ) | ( value - new_value a ) return value; return new_value; (2) 中

59、位值濾波法中位值濾波法 a. 方法: 連續(xù)采樣 n 次(n 取奇數(shù)) ,把 n 次采樣值按大小排列,取中間值為本次 有效值。 b. 優(yōu)點(diǎn):能有效克服因偶然因素引起的波動(dòng)干擾;對溫度、液位的變化 緩慢的被測參數(shù)有良好的濾波效果。 c. 缺點(diǎn):對流量、速度等快速變化的參數(shù)不宜。 濾波方法: /* n 值可根據(jù)實(shí)際情況調(diào)整 排序采用冒泡法*/ #define n 11 char filter() char value_bufn; char count,i,j,temp; for ( count=0;countn;count+) value_bufcount = get_ad(); delay();

60、for (j=0;jn-1;j+) for (i=0;ivalue_bufi+1 ) temp = value_buf; value_buf = value_bufi+1; value_bufi+1 = temp; return value_buf(n-1)/2; (3) 算術(shù)平均濾波法算術(shù)平均濾波法 a. 方法: 連續(xù)取 n 個(gè)采樣值進(jìn)行算術(shù)平均運(yùn)算,n 值較大時(shí),信號(hào)平滑度較高,但 靈敏度較低;n 值較小時(shí),信號(hào)平滑度較低,但靈敏度較高。n 值的選?。阂?般流量,n=12;壓力:n=4。 b. 優(yōu)點(diǎn):適用于對一般具有隨機(jī)干擾的信號(hào)進(jìn)行濾波;這樣信號(hào)的特點(diǎn) 是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍

溫馨提示

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

評論

0/150

提交評論