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

下載本文檔

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

文檔簡(jiǎn)介

本科畢業(yè)設(shè)計(jì)(論文)題目:電特性測(cè)量系統(tǒng)軟件設(shè)計(jì)院(系)電子信息工程學(xué)院專業(yè)自動(dòng)化班級(jí)姓名學(xué)號(hào)導(dǎo)師2012年6畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對(duì)本研究提供過幫助和做出過貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導(dǎo)教師簽名:日期:使用授權(quán)說明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝?、縮印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉?jī)?nèi)容。作者簽名:日期:

學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期:年月日學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。作者簽名: 日期:年月日導(dǎo)師簽名:日期:年月日

注意事項(xiàng)1.設(shè)計(jì)(論文)的內(nèi)容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關(guān)鍵詞4)外文摘要、關(guān)鍵詞5)目次頁(yè)(附件不統(tǒng)一編入)6)論文主體部分:引言(或緒論)、正文、結(jié)論7)參考文獻(xiàn)8)致謝9)附錄(對(duì)論文支持必要時(shí))2.論文字?jǐn)?shù)要求:理工類設(shè)計(jì)(論文)正文字?jǐn)?shù)不少于1萬字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于1.2萬字。3.附件包括:任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)。4.文字、圖表要求:1)文字通順,語言流暢,書寫字跡工整,打印字體及大小符合要求,無錯(cuò)別字,不準(zhǔn)請(qǐng)他人代寫2)工程設(shè)計(jì)類題目的圖紙,要求部分用尺規(guī)繪制,部分用計(jì)算機(jī)繪制,所有圖紙應(yīng)符合國(guó)家技術(shù)標(biāo)準(zhǔn)規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準(zhǔn)用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁(yè)以上的雙面打印4)圖表應(yīng)繪制于無格子的頁(yè)面上5)軟件工程類課題應(yīng)有程序清單,并提供電子文檔5.裝訂順序1)設(shè)計(jì)(論文)2)附件:按照任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)次序裝訂

指導(dǎo)教師評(píng)閱書指導(dǎo)教師評(píng)價(jià):一、撰寫(設(shè)計(jì))過程1、學(xué)生在論文(設(shè)計(jì))過程中的治學(xué)態(tài)度、工作精神□優(yōu)□良□中□及格□不及格2、學(xué)生掌握專業(yè)知識(shí)、技能的扎實(shí)程度□優(yōu)□良□中□及格□不及格3、學(xué)生綜合運(yùn)用所學(xué)知識(shí)和專業(yè)技能分析和解決問題的能力□優(yōu)□良□中□及格□不及格4、研究方法的科學(xué)性;技術(shù)線路的可行性;設(shè)計(jì)方案的合理性□優(yōu)□良□中□及格□不及格5、完成畢業(yè)論文(設(shè)計(jì))期間的出勤情況□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績(jī):□優(yōu)□良□中□及格□不及格(在所選等級(jí)前的□內(nèi)畫“√”)指導(dǎo)教師:(簽名)單位:(蓋章)年月日

評(píng)閱教師評(píng)閱書評(píng)閱教師評(píng)價(jià):一、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格建議成績(jī):□優(yōu)□良□中□及格□不及格(在所選等級(jí)前的□內(nèi)畫“√”)評(píng)閱教師:(簽名)單位:(蓋章)年月日教研室(或答辯小組)及教學(xué)系意見教研室(或答辯小組)評(píng)價(jià):一、答辯過程1、畢業(yè)論文(設(shè)計(jì))的基本要點(diǎn)和見解的敘述情況□優(yōu)□良□中□及格□不及格2、對(duì)答辯問題的反應(yīng)、理解、表達(dá)情況□優(yōu)□良□中□及格□不及格3、學(xué)生答辯過程中的精神狀態(tài)□優(yōu)□良□中□及格□不及格二、論文(設(shè)計(jì))質(zhì)量1、論文(設(shè)計(jì))的整體結(jié)構(gòu)是否符合撰寫規(guī)范?□優(yōu)□良□中□及格□不及格2、是否完成指定的論文(設(shè)計(jì))任務(wù)(包括裝訂及附件)?□優(yōu)□良□中□及格□不及格三、論文(設(shè)計(jì))水平1、論文(設(shè)計(jì))的理論意義或?qū)鉀Q實(shí)際問題的指導(dǎo)意義□優(yōu)□良□中□及格□不及格2、論文的觀念是否有新意?設(shè)計(jì)是否有創(chuàng)意?□優(yōu)□良□中□及格□不及格3、論文(設(shè)計(jì)說明書)所體現(xiàn)的整體水平□優(yōu)□良□中□及格□不及格評(píng)定成績(jī):□優(yōu)□良□中□及格□不及格教研室主任(或答辯小組組長(zhǎng)):(簽名)年月日教學(xué)系意見:系主任:(簽名)年月日

三相電特性測(cè)試軟件設(shè)計(jì)摘要近年來隨著社會(huì)對(duì)電力需求量的不斷增長(zhǎng),電能緊缺問題日趨嚴(yán)重,極大地制約著社會(huì)經(jīng)濟(jì)的發(fā)展。我國(guó)電力工業(yè)的迅速發(fā)展,電能質(zhì)量對(duì)于電網(wǎng)的安全經(jīng)濟(jì)運(yùn)行,保證工業(yè)產(chǎn)品質(zhì)量和科學(xué)實(shí)驗(yàn)的正常進(jìn)行以及降低能耗等均有重要意義。為做到節(jié)約電能并合理高效地利用電能,這就需要對(duì)電力參數(shù)進(jìn)行準(zhǔn)確、實(shí)時(shí)地監(jiān)測(cè);此外,對(duì)于電力參數(shù)進(jìn)行高精度、多參數(shù)的測(cè)量,又是充分了解電網(wǎng)的運(yùn)行狀況,尋找并解決電力系統(tǒng)中出現(xiàn)問題的重要途徑。因此,對(duì)于電力參數(shù)的測(cè)量,尤其是高精度、多參數(shù)、低價(jià)格、便攜、穩(wěn)定的實(shí)時(shí)測(cè)量就顯得尤為重要,也一直是人們研究的一個(gè)重要的方向。為解決以上問題,本設(shè)計(jì)選用ARM7核的LPC2124芯片為測(cè)量系統(tǒng)的核心,主要針對(duì)我國(guó)電力系統(tǒng)供配電的實(shí)際情況,通過ARM7單片機(jī)為核心,配以相應(yīng)的外圍電路和功能軟件,采用交流采樣技術(shù)實(shí)現(xiàn)多種電力參數(shù)的在線實(shí)時(shí)測(cè)量和數(shù)據(jù)分析,為電網(wǎng)的安全經(jīng)濟(jì)運(yùn)行提供可靠保證。以提高三相電參數(shù)的測(cè)量速度和精度。關(guān)鍵字:三相電;交流采樣;實(shí)時(shí)測(cè)量ThreephaseelectriccharacteristicmeasurementsoftwaredesignAbstractInrecentyearsalongwiththesocialdemandofelectricpowerincreasing,energyshortageisbecomingmoreandmoreserious,whichrestrictsthedevelopmentofsocialeconomy.Therapiddevelopmentofpowerindustry,powerqualityforpowersystemsafeandeconomicoperation,ensurequalityofindustrialproductsandscientificexperimentwithnormalandreducedenergyconsumptionhasimportantsignificance.Inordertoachieveenergysavingandhighefficientuseofenergy,whichisneededforpowerparametersforaccurate,real-timemonitoring;inaddition,theelectricparameterswithhighaccuracy,multiparametermeasurement,andfullyunderstandtheoperationofpowersystem,findandsolveemerginginpowersystemtheimportantwayoftheproblem.Therefore,forthemeasurementofelectricpowerparameters,especiallyhighaccuracy,multiparameter,lowprice,portable,stableandreal-timemeasurementisparticularlyimportant,peoplehasalwaysbeenanimportantdirectioninthestudy.Inordertosolvetheproblemabove,thisdesignusesARM7nuclearLPC2124chipmeasurementsystemforthecore,mainlyforthepowersystemofourcountrydistributionoftheactualsituation,throughtheARM7single-chipmicrocomputerasthecore,withacorrespondingperipheralcircuitandsoftware,adoptingACsamplingtechnologytoachieveavarietyofelectricalparameteron-linereal-timemeasurementanddataanalysis,asthepowersystemsafeandeconomicoperationtoprovideareliableguarantee.Inordertoimprovetheelectricparametermeasuringspeedandaccuracy.Keywords:three-phase;ACsampling;measurement目錄摘要 iAbstract ii1緒論 11.1前言 11.2本課題的研究背景、研究意義及國(guó)內(nèi)外相關(guān)研究情況 12三項(xiàng)電特性測(cè)量軟件設(shè)計(jì)方案 12.1基本功能要求 12.2總體方案設(shè)計(jì) 12.2.1硬件平臺(tái) 12.2.2開發(fā)環(huán)境與仿真 12.2.3開發(fā)語言 12.2.4軟件總體結(jié)構(gòu) 13系統(tǒng)的初始化 13.1系統(tǒng)的初始化的含義 13.1.1初始化的執(zhí)行順序 13.1.2系統(tǒng)的啟動(dòng)代碼 14數(shù)據(jù)采集程序和數(shù)據(jù)處理 14.1數(shù)據(jù)采集技術(shù)簡(jiǎn)介 14.2A/D寄存器的描述 14.2.1A/D控制寄存器ADCR 14.2.2A/D數(shù)據(jù)寄存器ADDR 24.3A/D的基本操作 34.4數(shù)據(jù)處理 34.5A/D采集功能介紹及軟件編程 75鍵盤顯示模塊 125.1關(guān)于鍵盤使用的簡(jiǎn)單介紹 125.2鍵盤控制模塊的功能介紹及程序 135.2.1鍵盤掃描頭文件Keyboard.h 145.2.2按鍵掃描去抖程序 146液晶顯示模塊 176.1液晶簡(jiǎn)介 176.1.1LCD介紹 176.1.2LCD顯示的原理 176.1.3LCD的分類 186.2液晶顯示模塊 186.2.1點(diǎn)陣式液晶顯示器LM12864簡(jiǎn)介 186.2.2液晶顯示流程圖以及LCD驅(qū)動(dòng) 196.3LCD顯示的應(yīng)用程序 296.3.1LCD的簡(jiǎn)單GUI實(shí)現(xiàn) 296.3.2LCD實(shí)時(shí)時(shí)鐘顯示模塊 306.3.3LCD的實(shí)時(shí)時(shí)鐘軟件編程 316.3.4外部擴(kuò)展I2C 356.3.5LCD顯示電特性參數(shù) 377電特性參數(shù)的計(jì)算 417.1電特性參數(shù) 417.2采用過零點(diǎn)檢測(cè)測(cè)量周期的軟件編程Guolindian.C 427.3電特性參數(shù)軟件程序 448Proteus仿真 458.1proteus簡(jiǎn)介 458.2電路仿真 458.3分散加載文件 468.4系統(tǒng)的電路圖以及proteus中的仿真結(jié)果 488.4.1系統(tǒng)的電路圖 488.4.2proteus中的仿真結(jié)果 48結(jié)束語 51致謝 52參考文獻(xiàn) 53畢業(yè)設(shè)計(jì)(論文)知識(shí)產(chǎn)權(quán)聲明 54畢業(yè)設(shè)計(jì)(論文)獨(dú)創(chuàng)性聲明 551緒論1.1前言能源是人類社會(huì)賴于生存和發(fā)展的基礎(chǔ),電能作為能源的第二次形式,具有簡(jiǎn)單、方便、可靠等特點(diǎn),是現(xiàn)代社會(huì)運(yùn)行的主要能源之一。充足、可靠的能源是提高經(jīng)濟(jì)高速發(fā)展、社會(huì)正常運(yùn)行的基本前提。上世紀(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ù)字采樣測(cè)量的三相電參數(shù)測(cè)量系統(tǒng),主要包括電壓、電流、頻率、相位、功率因數(shù)、有功功率、無功功率,視在功率,電能等的測(cè)量。1.2本課題的研究背景、研究意義及國(guó)內(nèi)外相關(guān)研究情況電力是國(guó)家經(jīng)濟(jì)發(fā)展的命脈,隨著社會(huì)對(duì)電力需求量的不斷增長(zhǎng),工業(yè)、農(nóng)業(yè)、商業(yè)、居民用電的日益增長(zhǎng),供電量日益增加,電能作為一種具有多種參數(shù)指標(biāo)、直接反映電力企業(yè)經(jīng)濟(jì)效益的商品備受重視。隨著工業(yè)技術(shù)的不斷進(jìn)步,對(duì)電力的需要越來越大,電能緊缺問題日趨嚴(yán)重,極大地制約著社會(huì)經(jīng)濟(jì)的發(fā)展。近年來,我國(guó)電力負(fù)荷急劇增大,各種非線性負(fù)載,特別是新型電力電子器件在電力系統(tǒng)、工業(yè)各部門和家用電器產(chǎn)品中的日益廣泛應(yīng)用,給供電設(shè)備的電能質(zhì)量造成了極大的影響。因此,在大多數(shù)情況下,電力信號(hào)己不是標(biāo)準(zhǔn)的正弦信號(hào),而是一種復(fù)雜的周期信號(hào)。國(guó)內(nèi)電力參數(shù)檢測(cè)技術(shù)的研究和開發(fā)起步較晚,目前對(duì)電力參數(shù)測(cè)量的方式基本上可分為芯片轉(zhuǎn)化為有效值測(cè)量,直接離散時(shí)序測(cè)量和多諧波測(cè)量等。相對(duì)國(guó)內(nèi)而言,國(guó)外對(duì)電能質(zhì)量的研究起步就比較早,也已經(jīng)取得了很多關(guān)于這方面的研究和應(yīng)用成果,世界對(duì)電能質(zhì)量的認(rèn)識(shí)程度也越來越高,每隔兩年就召開一次電能質(zhì)量與電力諧波學(xué)術(shù)會(huì)議。在電能質(zhì)量檢測(cè)產(chǎn)品研究領(lǐng)域,尤其是這些領(lǐng)域的高端產(chǎn)品在全球市場(chǎng)的份額,幾乎是被美國(guó)的FLUKE公司、瑞士的LEM公司、瑞典的UNIPOWER公司等國(guó)際知名公司占據(jù),這些公司的技術(shù)水平為國(guó)際最先進(jìn),當(dāng)然價(jià)格也非常昂電能質(zhì)量對(duì)于電網(wǎng)的安全經(jīng)濟(jì)運(yùn)行,保證工業(yè)產(chǎn)品的質(zhì)量和科學(xué)實(shí)驗(yàn)的正常進(jìn)行以及降低能耗等均有重要意義。為了改善這一狀況,對(duì)電力系統(tǒng)進(jìn)行完整分析和監(jiān)測(cè)是成功的關(guān)鍵。此外,對(duì)于電力參數(shù)進(jìn)行高精度、多參數(shù)的測(cè)量,又是充分了解電網(wǎng)的運(yùn)行狀況,尋找并解決電力系統(tǒng)中出現(xiàn)的問題的重要途徑。因此,對(duì)于電力參數(shù)的測(cè)量,尤其是高精度、多參數(shù)、低價(jià)格、便攜、穩(wěn)定的實(shí)時(shí)測(cè)量就顯得尤為重要,也一直是人們研究的一個(gè)重要方向。在我國(guó)電力工業(yè)領(lǐng)域,電網(wǎng)質(zhì)量的問題已經(jīng)成為關(guān)鍵,電力參數(shù)的分析和監(jiān)測(cè)已經(jīng)成為國(guó)際上討論和研究的重點(diǎn)。2三項(xiàng)電特性測(cè)量軟件設(shè)計(jì)方案2.1基本功能要求(1)熟悉工廠供電技術(shù);(2)熟悉測(cè)量系統(tǒng)硬件電路原理;(3)設(shè)計(jì)軟件結(jié)構(gòu);(4)掌握ADS1.2開發(fā)工具;(5)熟練運(yùn)用PROTEUS仿真;(6)編寫程序代碼及調(diào)試;(7)軟、硬件系統(tǒng)聯(lián)調(diào)。2.2總體方案設(shè)計(jì)2.2.1硬件平臺(tái)課題主要研究電特性測(cè)量系統(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)訪問控制、通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、嵌入式MODEM等各種類型的應(yīng)用。2.2.2開發(fā)環(huán)境與仿真本課題選用的是ADS1.2開發(fā)工具,ADS1.2是ARM公司推出的ARM集成開發(fā)工具,具有用戶多、編譯效率高、支持的ARM內(nèi)核多的特點(diǎn)。ARMADS全稱為ARMdeveloperSuite,是ARM公司推出的ARM集成開發(fā)工具,成熟版本為ADS1.2,他的前身是SDT,SDT是ARM公司幾年前的開發(fā)環(huán)境軟件。ADS1.2支持ARM10之前的所有ARM系列微控制器,支持軟件調(diào)試,支持匯編、C語言、C++源程序,具有編譯效率高、系統(tǒng)庫(kù)功能強(qiáng)等特點(diǎn)。本課題用ADS1.2開發(fā)工具圍繞LPC2124片上的基本功能模塊實(shí)現(xiàn)三相電特性的測(cè)試,最終通過了PROTEUS的仿真驗(yàn)證。PROTEUS是英國(guó)Labcenter公司推出的適合嵌入式設(shè)計(jì)仿真與開發(fā)的仿真軟件,使用PROTEUS軟件可以完全脫離硬件平臺(tái)來學(xué)習(xí)嵌入式系統(tǒng),可以說是嵌入式學(xué)習(xí)的一次革命。2.2.3開發(fā)語言本課題軟件用的語言主要有C語言,還有啟動(dòng)代碼中所用到的匯編語言。本文選用C語言主要是由于C語言有以下優(yōu)點(diǎn):(1)寄存器分配,數(shù)據(jù)類型等由編譯器管理;(2)編程及調(diào)試的時(shí)間減少,大大縮短開發(fā)周期;(3)明顯增加軟件可讀性,便于改進(jìn)和擴(kuò)展。2.2.4軟件總體結(jié)構(gòu)本系統(tǒng)主要針對(duì)我國(guó)電力系統(tǒng)供配電的實(shí)際情況,通過ARM7單片機(jī)為核心,配以相應(yīng)的外圍電路和功能軟件,采用交流采樣技術(shù)實(shí)現(xiàn)多種電力參數(shù)的在線實(shí)時(shí)測(cè)量和數(shù)據(jù)分析,為電網(wǎng)的安全經(jīng)濟(jì)運(yùn)行提供可靠保證。本課題主要研究電特性測(cè)量系統(tǒng)的軟件程序設(shè)計(jì)。本課題的軟件部分主要是通過實(shí)時(shí)采樣電流電壓的瞬時(shí)值,以及過零檢測(cè),進(jìn)而計(jì)算出電流電壓的有效值、頻率值、有用功率、無用功率、視在功率、功率因數(shù)等電力參數(shù)。本測(cè)量系統(tǒng)的軟件設(shè)計(jì)主要分為以下幾個(gè)模塊:(1)主程序模塊(2)電壓、電流采集程序(3)頻率采集程序(4)數(shù)據(jù)處理程序(5)時(shí)鐘日歷程序(6)鍵盤服務(wù)程序(7)顯示服務(wù)程序本設(shè)計(jì)擬采用ADS1.2集成開發(fā)工具編寫C語言程序?qū)崿F(xiàn)測(cè)量系統(tǒng)的相關(guān)功能。數(shù)據(jù)的處理與計(jì)算是程序設(shè)計(jì)的主要部分。系統(tǒng)基本測(cè)量的參數(shù)主要包括:電流有效值、電壓有效值、有功功率、無功功率、視在功率、功率因數(shù)等。首要環(huán)節(jié)是對(duì)輸入的電氣信號(hào)進(jìn)行離散化,即采樣。根據(jù)被采集信號(hào)的不同,數(shù)據(jù)采集可分為直流采樣和交流采樣兩大類。對(duì)比分析后,系統(tǒng)選用交流采樣,數(shù)值的計(jì)算采用離散的電壓電流有效值計(jì)算公式來實(shí)現(xiàn)。為了提高ARM7核的LPC2124芯片程序編寫效率,系統(tǒng)軟件采用了分模塊編寫的方法,用C語言和匯編語言混合編寫。對(duì)于LPC2124和各模塊的初始化、數(shù)據(jù)采集程序采用匯編編程,對(duì)于主程序、鍵盤顯示等通用性較強(qiáng)程序,采用C語言編寫。本系統(tǒng)的主要功能模塊有數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、時(shí)鐘模塊,按鍵顯示模塊等。所有軟件模塊的功能都在主控模塊的調(diào)配下協(xié)調(diào)執(zhí)行,主控模塊首先對(duì)系統(tǒng)進(jìn)行初始化操作,包括CPU初始化、I/O初始化、A/D初始化、LCD初始化、時(shí)鐘初始化、異步通訊初始化等。隨即對(duì)數(shù)據(jù)進(jìn)行采集、處理、顯示。然后判斷是否有鍵按下,根據(jù)判斷結(jié)果,執(zhí)行相應(yīng)按鍵服務(wù)程序。系統(tǒng)的主要電特性參量介紹:(1)電壓有效值:讓恒定電壓和交變電壓分別加在阻值相等的電阻上,使它們?cè)谙嗤瑫r(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ò)端鈕電壓和電流有效值的乘積,稱為視在功率(apparentpower),記為S=UI。(6)功率因數(shù):在交流電路中,電壓與電流之間的相位差(Φ)的余弦叫做功率因數(shù),用符號(hào)cosΦ表示,在數(shù)值上,功率因數(shù)是有功功率和視在功率的比值,即cosΦ=P/S。系統(tǒng)主程序流程圖如2.1圖所示。3系統(tǒng)的初始化3.1系統(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)的初始化就是將你的系統(tǒng)還原到一開始做的備份的狀態(tài)。把設(shè)置等都還原至那個(gè)位置。如果是一個(gè)軟件的初始化,基本都是將一些功能的設(shè)置都還原為開始設(shè)置,意思就和恢復(fù)默認(rèn)設(shè)置差不多。3.1.1初始化的執(zhí)行順序每一個(gè)初始化部分里面的代碼在程序運(yùn)行后,或庫(kù)的begin-end塊運(yùn)行之前。delphi使用對(duì)單元相關(guān)樹的深度優(yōu)先遍歷來運(yùn)行初始化部分。換句話說,就只在一個(gè)單元的初始化代碼運(yùn)行前,delphi就運(yùn)行了特他使用的每一個(gè)單元的初始化部分。每一個(gè)單元僅初始化一次。程序代碼當(dāng)中可以有Initialization聲明部分。這部分里面的代碼的執(zhí)行,是在windows加載包含該單元(指Initialization所屬單元)的模塊(應(yīng)用程序,DLL或者包)時(shí)運(yùn)行的。一般來說是:先Initialization單元,然后interface單元,然后implementation單元。程序中Intialize過程??梢栽谶@里初始化字符串、動(dòng)態(tài)數(shù)組、接口和Variants系統(tǒng)為什么要初始化呢?第一,信息系統(tǒng)是以數(shù)據(jù)庫(kù)為主的軟件系統(tǒng),是數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),必須設(shè)定數(shù)據(jù)庫(kù)應(yīng)用的安全體系否則無法保證數(shù)據(jù)安全;第二,信息系統(tǒng)是組織的管理方法,必須具備組織使用的共享數(shù)據(jù)才能供組織使用;第三,初始化的核心是數(shù)據(jù)準(zhǔn)備,沒有歷史數(shù)據(jù)不能實(shí)現(xiàn)系統(tǒng)切換,無法使用;第四,數(shù)據(jù)必須定期存檔和更新才能使信息系統(tǒng)有較高的運(yùn)轉(zhuǎn)效率;3.1.2系統(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)向量表定義、堆棧初始化、系統(tǒng)變量初始化、中斷初始化、外圍初始化、地址重映射等操作。見圖2-2。圖2.2首先是應(yīng)該完成頭文件的編寫,下面就是系統(tǒng)初試化的頭文件(target.h)和系統(tǒng)的初始化軟件(target.c)、(Startup.s)。(1)系統(tǒng)初試化的頭文件(target.h)#ifndef__TARGET_H#define__TARGET_H#ifdef__cplusplusextern"C"{#endif#ifndefIN_TARGETexternvoidReset(void);externvoidTargetInit(void);#endif#ifdef__cplusplus}#endif#endi(2)系統(tǒng)的初始化軟件(Startup.s);definethestacksize;定義堆棧的大小SVC_STACK_LEGTHEQU0FIQ_STACK_LEGTHEQU0IRQ_STACK_LEGTHEQU256ABT_STACK_LEGTHEQU0UND_STACK_LEGTHEQU0NoIntEQU0x80NoFIQ EQU 0x40USR32ModeEQU0x10SVC32ModeEQU0x13SYS32ModeEQU0x1fIRQ32ModeEQU0x12FIQ32ModeEQU0x11;IMPORT__use_no_semihosting_swi;Theimportedlabels;引入的外部標(biāo)號(hào)在這聲明IMPORTFIQ_Exception;快速中斷異常處理程序IMPORT__main;C語言主程序入口IMPORTTargetResetInit;目標(biāo)板基本初始化 ;Theemportedlabels;給外部使用的標(biāo)號(hào)在這聲明EXPORTbottom_of_heapEXPORTStackUsrEXPORTResetEXPORT__user_initial_stackheapCODE32AREAvectors,CODE,READONLYENTRY;interruptvectors;中斷向量表ResetLDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddrDCD0xb9205f80LDRPC,[PC,#-0xff0]LDRPC,FIQ_AddrResetAddrDCDResetInitUndefinedAddrDCDUndefinedSWI_AddrDCDSoftwareInterruptPrefetchAddrDCDPrefetchAbortDataAbortAddrDCDDataAbortNouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler;未定義指令UndefinedBUndefined;軟中斷SoftwareInterrupt ;BSoftwareInterruptCMPR0,#4LDRLOPC,[PC,R0,LSL#2]MOVSPC,LRSwiFunctionDCDIRQDisable;0DCDIRQEnable;1DCD FIQDisable ;2DCD FIQEnable ;3IRQDisable;關(guān)IRQ中斷MRSR0,SPSRORRR0,R0,#NoIntMSRSPSR_c,R0MOVSPC,LRIRQEnable;開IRQ中斷MRSR0,SPSRBICR0,R0,#NoIntMSRSPSR_c,R0MOVSPC,LRFIQDisable;關(guān)FIQ中斷MRSR0,SPSRORRR0,R0,#NoFIQMSRSPSR_c,R0MOVSPC,LRFIQEnable;開FIQ中斷MRSR0,SPSRBICR0,R0,#NoFIQMSRSPSR_c,R0MOVSPC,LR;取指令中止PrefetchAbortBPrefetchAbort;取數(shù)據(jù)中止DataAbortBDataAbort;快速中斷FIQ_HandlerSTMFDSP!,{R0-R3,LR}BLFIQ_ExceptionLDMFDSP!,{R0-R3,LR}SUBSPC,LR,#4InitStackMOVR0,LR;BuildtheSVCstack;設(shè)置管理模式堆棧MSRCPSR_c,#0xd3 LDRSP,StackSvc ;BuildtheIRQstack ;設(shè)置中斷模式堆棧MSRCPSR_c,#0xd2LDRSP,StackIrq;BuildtheFIQstack;設(shè)置快速中斷模式堆棧MSRCPSR_c,#0xd1LDRSP,StackFiq;BuildtheDATAABORTstack;設(shè)置中止模式堆棧MSRCPSR_c,#0xd7LDRSP,StackAbt;BuildtheUDFstack;設(shè)置未定義模式堆棧MSRCPSR_c,#0xdbLDRSP,StackUnd;BuildtheSYSstack;設(shè)置系統(tǒng)模式堆棧MSRCPSR_c,#0xdfLDRSP,=StackUsrMOVPC,R0ResetInitBLInitStack;初始化堆棧BLTargetResetInit;目標(biāo)板基本初始化;跳轉(zhuǎn)到c語言入口B__main__user_initial_stackheapLDRr0,=bottom_of_heap;LDRr1,=StackUsrMOVpc,lrStackSvcDCDSvcStackSpace+(SVC_STACK_LEGTH-1)*4StackIrqDCDIrqStackSpace+(IRQ_STACK_LEGTH-1)*4StackFiqDCDFiqStackSpace+(FIQ_STACK_LEGTH-1)*4StackAbtDCDAbtStackSpace+(ABT_STACK_LEGTH-1)*4StackUndDCDUndtStackSpace+(UND_STACK_LEGTH-1)*4IF:DEF:EN_CRPIF.>=0x1fcINFO1,"\nThedataat0x000001fcmustbe0x87654321.\nPleasedeletesomesourcebeforethisline."ENDIFCrpDataWHILE.<0x1fcNOPWENDCrpData1DCD0x87654321;/*WhentheDatais為0x87654321,usercodebeprotected.當(dāng)此數(shù)為0x87654321時(shí),用戶程序被保護(hù)*/ENDIF;/*分配堆棧空間*/AREAMyStacks,DATA,NOINIT,ALIGN=2SvcStackSpaceSPACESVC_STACK_LEGTH*4;管理模式堆??臻gIrqStackSpaceSPACEIRQ_STACK_LEGTH*4;中斷模式堆棧空間FiqStackSpaceSPACEFIQ_STACK_LEGTH*4;快速中斷模式堆??臻gAbtStackSpaceSPACEABT_STACK_LEGTH*4;中止模式堆??臻gUndtStackSpaceSPACEUND_STACK_LEGTH*4;未定義模式堆棧AREAHeap,DATA,NOINITbottom_of_heapSPACE1AREAStacks,DATA,NOINITStackUsrEND(3)系統(tǒng)的初始化軟件(target.c)#defineIN_TARGET#include"config.h"#include"guolindian.h"voidTargetResetInit(void);voidIRQ_Exception(void){while(1);}voidFIQ_Exception(void){while(1);}voidTimer0_Exception(void){T0IR=0x01;VICVectAddr=0;//通知中斷控制器中斷結(jié)束}voidVICInit(void){}/*過零點(diǎn)檢測(cè)功能初試化函數(shù)*/voidGuoLinDianInit(void){ PINSEL1=0x00000001; EXTMODE=0x01;//邊沿觸發(fā) VICIntSelect=0x00000000; VICDefVectAddr=(int)IRQ_Eint1; EXTINT=0x01; VICIntEnable=0x00004000;}#defineTARGET_DEBUG_BY_LCMvoidTargetInit(void){#ifdefTARGET_DEBUG_BY_LCM TargetResetInit(); GuoLinDianInit();GUI_Initialize();//初始化LCM GUI_SetColor(1,0); //設(shè)置前景色和背景色#endif }voidInitialiseUART0(uint32bps){ }voidTargetResetInit(void){#ifdef__DEBUG_RAMMEMMAP=0x2;//remap#endif#ifdef__DEBUG_FLASHMEMMAP=0x1;//remap#endif#ifdef__IN_CHIPMEMMAP=0x1;//remap#endif/*設(shè)置系統(tǒng)各部分時(shí)鐘*//*Setsystemtimersforeachcomponent*/PLLCON=1;#if(Fpclk/(Fcclk/4))==1VPBDIV=0;#endif#if(Fpclk/(Fcclk/4))==2VPBDIV=2;#endif#if(Fpclk/(Fcclk/4))==4VPBDIV=1;#endif#if(Fcco/Fcclk)==2PLLCFG=((Fcclk/Fosc)-1)|(0<<5);#endif#if(Fcco/Fcclk)==4PLLCFG=((Fcclk/Fosc)-1)|(1<<5);#endif#if(Fcco/Fcclk)==8PLLCFG=((Fcclk/Fosc)-1)|(2<<5);#endif#if(Fcco/Fcclk)==16PLLCFG=((Fcclk/Fosc)-1)|(3<<5);#endifPLLFEED=0xaa;PLLFEED=0x55;while((PLLSTAT&(1<<10))==0);PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;/*設(shè)置存儲(chǔ)器加速模塊*//*Setmemoryacceleratermodule*/MAMCR=0;#ifFcclk<20000000MAMTIM=1;#else#ifFcclk<40000000MAMTIM=2;#elseMAMTIM=3;#endif#endifMAMCR=2;/*設(shè)置串行口*//*initializeUART*/CCR=1;PREINT=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ù)處理4.1數(shù)據(jù)采集技術(shù)簡(jiǎn)介從廣義上來講,數(shù)據(jù)采集(DAQ),是指從傳感器和其它待測(cè)設(shè)備等模擬和數(shù)字被測(cè)單元中自動(dòng)采非電量或者電量信號(hào),送到上位機(jī)中進(jìn)行分析,處理。數(shù)據(jù)采集系統(tǒng)是結(jié)合基于計(jì)算機(jī)或者其他專用測(cè)試平臺(tái)的測(cè)量軟硬件產(chǎn)品來實(shí)現(xiàn)靈活的、用戶自定義的測(cè)量系統(tǒng)。采集又稱取樣、抽樣,對(duì)模擬信號(hào)在時(shí)間上的離散化、幅值離散化,這樣用在電參量測(cè)量中可以克服模擬運(yùn)算準(zhǔn)確度較低且模擬器件易受各種干擾影響的缺點(diǎn),從同一批數(shù)據(jù)中可獲得許多電參量信息。本文所述的數(shù)字采樣技術(shù)主要應(yīng)用于電參量測(cè)量領(lǐng)域。就是對(duì)周期或非周期交流待測(cè)信號(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)換器,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)測(cè)量范圍:0~3.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.1A名稱描述訪問復(fù)位值地址ADCRA/D控制寄存器。A/D轉(zhuǎn)換開始前,必須寫入ADCR寄存器來選擇工作模式R/W0x000000010xE0034000ADDRA/D數(shù)據(jù)寄存器。該寄存器包含ADC的DONE標(biāo)志位和10位的轉(zhuǎn)換結(jié)果(當(dāng)前DONE位為1時(shí),轉(zhuǎn)換結(jié)果才是有效的)R/WNA0xE00340004.2.1A/D控制寄存器ADCRADCR寄存器描述如表4.2所列。表4.2A/D控制寄存器ADCR名稱功能復(fù)位值7:0SEL從AIN3~AIN0中選擇采樣引腳。SEL段中的bit0~bit3分別對(duì)應(yīng)AIN3~AIN0引腳,為1表示選中。在64腳封裝的LPC2124有bit0~bit3可置位。軟件控制模式下,只有一位可被置位;硬件掃描模式下,SEL可為1~0x0F中的任何一個(gè)值。SEL為0時(shí),等效于0x01。0x0115:8CLKDIV將VPB時(shí)鐘(PCLK)進(jìn)行(CLKDIV的值加1)分頻得到A/D轉(zhuǎn)換時(shí)鐘,該時(shí)鐘必須小于或等于45MHz。016BURST如果該位為0,轉(zhuǎn)換由軟件控制,需要11個(gè)時(shí)鐘方能完成。如果該位為1,A/D轉(zhuǎn)換器以CLKS字段選擇的速率重復(fù)執(zhí)行轉(zhuǎn)換,并從SEL字段為1的位對(duì)應(yīng)的引腳開始掃描。A/D轉(zhuǎn)換器啟動(dòng)后,第一次轉(zhuǎn)換的時(shí)SEL字段中為1的位中的最低有效位程度模擬輸入,然后時(shí)為1的更高有效為對(duì)應(yīng)的模擬輸入(如果可用)。重復(fù)轉(zhuǎn)換通過清零該位終止,但該位被清零時(shí)并不會(huì)中止正在進(jìn)行的轉(zhuǎn)換。019: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位。00021PDN1:A/D轉(zhuǎn)換器處于正常模式。0:A/D轉(zhuǎn)換器處于掉電模式。023:22TEST[1:0]這些位用于器件測(cè)試,00為正常測(cè)試,01為數(shù)字測(cè)試模式,10為DAC測(cè)試模式,11為一次轉(zhuǎn)換測(cè)試模式。026: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選擇100~111時(shí),MAT信號(hào)不必輸出到引腳上100:當(dāng)ADCR寄存器bit27選擇的邊沿在MAT0.1出現(xiàn)時(shí)啟動(dòng)轉(zhuǎn)換101:當(dāng)ADCR寄存器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)換00027EDGE該位只有在START字段為010~111時(shí)有效0:在所選CAP/MAT信號(hào)的下降沿啟動(dòng)轉(zhuǎn)換1:在所選CAP/MAT信號(hào)的上升沿啟動(dòng)轉(zhuǎn)換04.2.2A/D數(shù)據(jù)寄存器ADDRADDR寄存器描述見表4.3。其中ADDR[15:6]為10位的A/D轉(zhuǎn)換結(jié)果,bit5為最高位。表4.3數(shù)據(jù)寄存器ADDRADDR名稱功能復(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)換。030OVERUNBrust模式下,如果產(chǎn)生LS位結(jié)果前,一個(gè)或多個(gè)轉(zhuǎn)換結(jié)果被丟失和覆蓋,該位置位。讀位通過讀ADDR寄存器清零。029:27這些位讀出為0.他們用于未來CHN字段的擴(kuò)展,使之兼容包含更多通道的轉(zhuǎn)換器。026:24CHN這些位包含的是LS位的轉(zhuǎn)換通道X23:16這些位讀出時(shí)為0.他們?cè)试S連續(xù)A/D值的累加,而不需要使用與門屏蔽處理,使得至少有256個(gè)值不溢出到CHN字段015:6V/Vdda當(dāng)DONE為時(shí),該字段包含一個(gè)二進(jìn)制數(shù),用來代表SEL字段選中的Ain腳的電壓接近于、等于或大于VddaX5:0這些位讀出時(shí)為0.專門用于未來的擴(kuò)展和功能更強(qiáng)大的A/D轉(zhuǎn)換器。04.3A/D的基本操作ADC(模數(shù)轉(zhuǎn)換器)轉(zhuǎn)換時(shí)鐘分頻計(jì)算公式如下:CLKDIV=Fpclk/Fadclk-1其中Fpclk為所要設(shè)置的ADC時(shí)鐘,其值不能大于4.5MH值。ADC轉(zhuǎn)換的基本操作方法:(1)將測(cè)量通道引腳設(shè)置為AINx功能;(2)通過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ù)處理由于本課題用的是交流采樣,所以就要進(jìn)行數(shù)據(jù)處理,數(shù)據(jù)處理主要是進(jìn)行濾波,然而濾波的方法是多種多樣的,本文對(duì)常用的幾種方法進(jìn)行比較:(1)限幅濾波法(又稱程序判斷濾波法)a.方法:根據(jù)經(jīng)驗(yàn)判斷,確定兩次采樣允許的最大偏差值(設(shè)為A),每次檢測(cè)到新值時(shí)判斷:如果本次值與上次值之差<=A,則本次值有效;如果本次值與上次值之差>A,則本次值無效,放棄本次值,用上次值代替本次值。b.優(yōu)點(diǎn):能有效克服因偶然因素引起的脈沖干擾c.缺點(diǎn):無法抑制那種周期性的干擾;平滑度差。濾波方法:/*A值可根據(jù)實(shí)際情況調(diào)整value為有效值,new_value為當(dāng)前采樣值濾波程序返回有效的實(shí)際值*/#defineA10charvalue;charfilter(){charnew_value;new_value=get_ad();if((new_value-value>A)||(value-new_value>A)returnvalue;returnnew_value;}(2)中位值濾波法a.方法:連續(xù)采樣N次(N取奇數(shù)),把N次采樣值按大小排列,取中間值為本次有效值。b.優(yōu)點(diǎn):能有效克服因偶然因素引起的波動(dòng)干擾;對(duì)溫度、液位的變化緩慢的被測(cè)參數(shù)有良好的濾波效果。c.缺點(diǎn):對(duì)流量、速度等快速變化的參數(shù)不宜。濾波方法:/*N值可根據(jù)實(shí)際情況調(diào)整排序采用冒泡法*/#defineN11charfilter(){charvalue_buf[N];charcount,i,j,temp;for(count=0;count<N;count++){value_buf[count]=get_ad();delay();}for(j=0;j<N-1;j++){for(i=0;i<N-j;i++){if(value_buf>value_buf[i+1]){temp=value_buf;value_buf=value_buf[i+1];value_buf[i+1]=temp;}}}returnvalue_buf[(N-1)/2];}(3)算術(shù)平均濾波法a.方法:連續(xù)取N個(gè)采樣值進(jìn)行算術(shù)平均運(yùn)算,N值較大時(shí),信號(hào)平滑度較高,但靈敏度較低;N值較小時(shí),信號(hào)平滑度較低,但靈敏度較高。N值的選?。阂话懔髁浚琋=12;壓力:N=4。b.優(yōu)點(diǎn):適用于對(duì)一般具有隨機(jī)干擾的信號(hào)進(jìn)行濾波;這樣信號(hào)的特點(diǎn)是有一個(gè)平均值,信號(hào)在某一數(shù)值范圍附近上下波動(dòng)。c.缺點(diǎn):對(duì)于測(cè)量速度較慢或要求數(shù)據(jù)計(jì)算速度較快的實(shí)時(shí)控制不適用;比較浪費(fèi)RAM濾波方法:#defineN12charfilter(){intsum=0;for(count=0;count<N;count++){sum+=get_ad();delay();}return(char)(sum/N);}(4)遞推平均濾波法(又稱滑動(dòng)平均濾波法)a.方法:把連續(xù)取N個(gè)采樣值看成一個(gè)隊(duì)列,隊(duì)列的長(zhǎng)度固定為N,每次采樣到一個(gè)新數(shù)據(jù)放入隊(duì)尾,并扔掉原來隊(duì)首的一次數(shù)據(jù)(先進(jìn)先出原則)。把隊(duì)列中的N個(gè)數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,就可獲得新的濾波結(jié)果。N值的選取:流量,N=12;壓力:N=4;液面,N=4~12;溫度,N=1~4。b.優(yōu)點(diǎn):對(duì)周期性干擾有良好的抑制作用,平滑度高;適用于高頻振蕩的系統(tǒng)。c.缺點(diǎn):靈敏度低;對(duì)偶然出現(xiàn)的脈沖性干擾的抑制作用較差;不易消除由于脈沖干擾所引起的采樣值偏差;不適用于脈沖干擾比較嚴(yán)重的場(chǎng)合;比較浪費(fèi)RAM。濾波方法:#defineN12charvalue_buf[N];chari=0;charfilter(){charcount;intsum=0;value_buf[i++]=get_ad();if(i==N)i=0;for(count=0;count<N,count++)sum=value_buf[count];return(char)(sum/N);}(5)中位值平均濾波法(又稱防脈沖干擾平均濾波法)a.方法:此方法相當(dāng)于“中位值濾波法”+“算術(shù)平均濾波法”,連續(xù)采樣N個(gè)數(shù)據(jù),去掉一個(gè)最大值和一個(gè)最小值,然后計(jì)算N-2個(gè)數(shù)據(jù)的算術(shù)平均值。N值的選?。?~14。b.優(yōu)點(diǎn):融合了兩種濾波法的優(yōu)點(diǎn);對(duì)于偶然出現(xiàn)的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差。c.缺點(diǎn):測(cè)量速度較慢,和算術(shù)平均濾波法一樣;比較浪費(fèi)RAM。濾波方法:#defineN12charfilter(){charcount,i,j;charvalue_buf[N];intsum=0;for(count=0;count<N;count++){value_buf[count]=get_ad();delay();}for(j=0;j<N-1;j++){for(i=0;i<N-j;i++){if(value_buf>value_buf[i+1]){temp=value_buf;value_buf=value_buf[i+1];value_buf[i+1]=temp;}}}for(count=1;count<N-1;count++)sum+=value[count];return(char)(sum/(N-2));}經(jīng)過比較,所以選擇了一種比較簡(jiǎn)單容易實(shí)現(xiàn)的濾波方法—限幅濾波。4.5A/D采集功能介紹及軟件編程首先對(duì)A/D進(jìn)行初始化,初始化的詳細(xì)設(shè)置見表4.2-2。初始化后,A/D就開始選擇通道,選擇通道1,并進(jìn)行第一次轉(zhuǎn)換,等待轉(zhuǎn)換結(jié)束,再啟動(dòng),再轉(zhuǎn)換;讀取ADC結(jié)果,提取AD轉(zhuǎn)換值;最后進(jìn)行數(shù)值轉(zhuǎn)換。以此選擇2、3、4等通道,并重復(fù)上述操作。采集電流和電壓值各3路,進(jìn)行濾波,最后顯示。具體的實(shí)現(xiàn)見流程圖4.1。圖4.1A/D采集以及濾波處理的軟件編程:#include"config.h"#include"stdlib.h"#include<math.h>uint8F_flag;#defineA10uint32value_IA;uint32value_IB;uint32value_IC;uint32value_VA;uint32value_VB;uint32value_VC;uint32filer(uint32adVlaueNew,uint32adVlaueOld){uint32new_value;new_value=adVlaueNew;if((new_value-adVlaueOld>A)||(adVlaueOld-new_value>A))returnadVlaueNew;returnadVlaueOld;}VoidFunction_1_ADC(void){externuint8*title2[11];uint32ADC_Data;uint32i;charstr[14];if((F_flag&0x01)==0){PINSEL1=PINSEL1|0x01400000;ADCR=(1<<0)|//SEL=1,選擇通道0((Fpclk/1000000-1)<<8)|//CLKDIV=Fpclk/1000000-1,即轉(zhuǎn)換時(shí)鐘為1MHz(0<<16)|//BURST=0,軟件控制轉(zhuǎn)換操作(0<<17)|//CLKS=0,使用11clock轉(zhuǎn)換(1<<21)|//PDN=1,正常工作模式(非掉電轉(zhuǎn)換模式)(0<<22)|//TEST1:0=00,正常工作模式(非測(cè)試模式)(0<<24)|//START=1,直接啟動(dòng)ADC轉(zhuǎn)換Q(0<<27);//EDGE=0(CAP/MAT引腳下降沿觸發(fā)ADC轉(zhuǎn)換)}F_flag=0x01;ADC_Data=ADDR;ADCR=(ADCR&0x00FFFF00)|0x01|(1<<24);//設(shè)置通道1,并進(jìn)行第一次轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADCR=ADCR|(1<<24);//再次啟運(yùn)轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADC_Data=ADDR;//讀取ADC結(jié)果ADC_Data=(ADC_Data>>6)&0x3FF;//提取AD轉(zhuǎn)換值A(chǔ)DC_Data=filer(ADC_Data,value_IA);ADC_Data=ADC_Data*3300/1024;//數(shù)值轉(zhuǎn)換F_flag=0;ADC_Data=ADC_Data-200;sprintf(str,":%dA\r",ADC_Data//顯示GUI_PutString(60,16,str);ADC_Data=ADDR;ADCR=(ADCR&0x00FFFF00)|0x02|(1<<24);//設(shè)置通道2,并進(jìn)行第一次轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADCR=ADCR|(1<<24);//再次啟運(yùn)轉(zhuǎn)換while((ADDR&0x80000000)==0); //等待轉(zhuǎn)換結(jié)束ADC_Data=ADDR;//讀取ADC結(jié)果ADC_Data=(ADC_Data>>6)&0x3FF;//提取AD轉(zhuǎn)換值A(chǔ)DC_Data=ADC_Data*3300/1024;//數(shù)值轉(zhuǎn)換ADC_Data=filer(ADC_Data,value_IB);ADC_Data=ADC_Data-200;sprintf(str,":%dA\r",ADC_Data);//顯示GUI_PutString(60,32,str);ADC_Data=ADDR;ADCR=(ADCR&0x00FFFF00)|0x03|(1<<24);//設(shè)置通道3,并進(jìn)行第一次轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADCR=ADCR|(1<<24);//再次啟運(yùn)轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADC_Data=ADDR;//讀取ADC結(jié)果ADC_Data=(ADC_Data>>6)&0x3FF;//提取AD轉(zhuǎn)換值A(chǔ)DC_Data=ADC_Data*3300/1024;//數(shù)值轉(zhuǎn)換ADC_Data=filer(ADC_Data,value_IC);ADC_Data=ADC_Data-200;sprintf(str,":%dA\r",ADC_Data);//顯示GUI_PutString(60,48,str);ADC_Data=ADDR;ADCR=(ADCR&0x00FFFF00)|0x04|(1<<24);//設(shè)置通道4,并進(jìn)行第一次轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADCR=ADCR|(1<<24);//再次啟運(yùn)轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADC_Data=ADDR;//讀取ADC結(jié)果ADC_Data=(ADC_Data>>6)&0x3FF;//提取AD轉(zhuǎn)換值A(chǔ)DC_Data=ADC_Data*3300/1024;//數(shù)值轉(zhuǎn)換ADC_Data=filer(ADC_Data,value_VA);ADC_Data=ADC_Data-200;sprintf(str,":%dV\r",ADC_Data);//顯示GUI_PutString(60,82,str);ADC_Data=ADDR;ADCR=(ADCR&0x00FFFF00)|0x05|(1<<24);//設(shè)置通道5,并進(jìn)行第一次轉(zhuǎn)換while((ADDR&0x80000000)==0); //等待轉(zhuǎn)換結(jié)束ADCR=ADCR|(1<<24);//再次啟運(yùn)轉(zhuǎn)換while((ADDR&0x80000000)==0);//等待轉(zhuǎn)換結(jié)束ADC_Data=ADDR;//讀取ADC結(jié)果ADC_Data=(ADC_Data>>6)&0x3FF;//提取AD轉(zhuǎn)換值A(chǔ)DC_Data=ADC_Data*3300/1024;//數(shù)值轉(zhuǎn)換ADC_Data=filer(ADC_Data,value_VB);ADC_Data=ADC_Data-200;sprintf(str,":%dV\r",ADC_Data);//顯示GUI_PutString(60,98,str);ADC_Data=ADDR;ADCR=(ADCR&0x00FFFF00)|0x06|(1<<24);//設(shè)置通道6,并進(jìn)行第一次轉(zhuǎn)換while

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論