本論文對智能電能表進(jìn)行了詳細(xì)的闡述_第1頁
本論文對智能電能表進(jìn)行了詳細(xì)的闡述_第2頁
本論文對智能電能表進(jìn)行了詳細(xì)的闡述_第3頁
本論文對智能電能表進(jìn)行了詳細(xì)的闡述_第4頁
本論文對智能電能表進(jìn)行了詳細(xì)的闡述_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本論文對智能電能表進(jìn)行了詳細(xì)的闡述。主要講述了一種對普通電能表進(jìn)行擴(kuò)展,從而實現(xiàn)分時計價功能的智能化電能表,并給出了軟件設(shè)計及調(diào)試問題。在論文完成過程中,主要進(jìn)行了以下工作: (1)對系統(tǒng)要求進(jìn)行分析,并設(shè)計系統(tǒng)的整體結(jié)構(gòu)(2)把整體細(xì)分化,對每個模塊進(jìn)行詳細(xì)設(shè)計(3)繪制原理圖和PCB板,并制成實驗板(4)按照硬件電路,編寫軟件程序 (5)調(diào)試階段,調(diào)試各軟、硬件模塊,編寫測試程序,驗證系統(tǒng)的可用性,最后制成系統(tǒng)樣機(jī)。 本論文主要對智能電能表的結(jié)構(gòu)進(jìn)行了較詳細(xì)的闡述,并簡要講述了近來電能表的發(fā)展及研究動態(tài)。具體分析了軟件的兩大模塊:鍵盤模塊程序設(shè)計、LCD顯示模塊程序設(shè)計,并對主要芯片的使用

2、做了說明。同時也對硬件總體設(shè)計做了一些簡要的闡述,并對編輯軟件所使用的函數(shù)寫了一些分析。 另外還介紹了繪制原理圖所出現(xiàn)的一些問題,比如各個芯片之間連線及接口問題。 關(guān)鍵詞:鍵盤模塊;LCD顯示模塊;時鐘芯片 ABSTRACT Thisstudywilldiscussabouttheintelligenceelectricenergymeterindetail.Itisanintelligentelectricenergymeterbyexpandingtothenormalelectricenergymeter,carriesoutthedividedchronometerprice,give

3、sthesoftwaredesignandadjuststheproblem.Wedothefollowingworkinthecompletionofthethesis. (1)Analyzetherequirementofthesystem,anddesignthewholestructureofthesystem.(2)Subdividethewhole,anddesigneachmoduleinparticular. (3)ProtractschematicplotandPCBplot,andcrankoutexperimentboard.(4)Writesoftwareprocedu

4、reaccordingtohardwarecircuit. (5)Indebuggingmoment,debugeachsoftwareandhardwaremodule,writetestingprocedure,validatetheusabilityofthesystem,andfinallycrankoutthesystemsample. Thisstudywilldiscussabouttheintelligenceelectricenergymeterindetail,andtelloftherecentdevelopmentofelectricenergymeterandther

5、esearchstatementinbrief.Thisstudyanalyzesmateriallythetwoparts:keyboardpartprogramdesignandLCDshowpartprogramdesign,anddoestheexplanationtotheuseofmainchip.Alsoitexplainsthehardwaretotaldesigninbrief,andwritessomeanalysisabouteditingthefunctionwhichisusedofsoftware. Moreoverthisstudyalsointroducedso

6、meproblemsaboutdrawingtheprinciplediagram.Forexample,theconnectedlineeachchipandinterfaceproblem. Keywords:keyboardpart;LCDshowpart;clockchip目錄摘要Abstract1概述.11.1本課題研究背景及意義.11.2國內(nèi)外研究的動態(tài).11.3本課題的可行性分析.21.4設(shè)計要求及預(yù)期研究成果.22系統(tǒng)簡介.42.1系統(tǒng)總體方案設(shè)計.42.2硬件各模塊的設(shè)計.52.2.1主機(jī).52.2.2電腦時鐘模塊.62.2.3LCD顯示模塊.62.2.4光電轉(zhuǎn)換模塊.62.

7、2.5鍵盤控制模塊.72.2.6看門狗模塊.73軟件設(shè)計.83. 鍵盤模塊.103.1.1鍵盤的中斷處理函數(shù).143.1.2實時時鐘電路MC146818A.174調(diào)試中出現(xiàn)的問題.24參考文獻(xiàn).26致謝.27附錄 1概述1.1本課題研究背景及意義 近年來,隨著經(jīng)濟(jì)的快速發(fā)展,電力需求的不斷增長和能源價格的不斷提升,用電緊張已經(jīng)成為突出的問題擺在我們面前。而電力又不是可以儲存的特殊商品,某些時段用電多,其他時段用電少。用電高峰時電力供不應(yīng)求,用電低谷時又電力過剩。為了應(yīng)對這樣的難題,可以采用分時電價來緩解供需矛盾,提高電力利用效率。 分時電價是指在不同時段采用不同電價,根據(jù)用電需求和電網(wǎng)負(fù)荷將每

8、天的時間劃分為用電高峰時段(6:0022:00)和用電低谷時間段(22:006:00),高峰時段執(zhí)行較高電價(0.8元/度),低谷時段執(zhí)行較低電價(0.6元/度)。供電部門通過對不同時段的用電實行不同電價,用經(jīng)濟(jì)手段鼓勵用戶主動采取避峰填谷的措施,從而使電力負(fù)荷曲線變緩,以提高發(fā)電設(shè)備的利用率,同時減小由于負(fù)荷曲線變化太大而引起的不安全因素。20世紀(jì)30年代,國外就開展了電力負(fù)荷控制方面的研究,實行分時計費是一種經(jīng)濟(jì)有效地調(diào)節(jié)負(fù)荷曲線的方法。 因此,開發(fā)一種簡單實用的分時計量電能表變得尤為重要,本課題通過對一般電能表進(jìn)行擴(kuò)展,從而實現(xiàn)分時計量功能。1.2國內(nèi)外研究的動態(tài) 近幾年,隨著我國國民經(jīng)

9、濟(jì)穩(wěn)步發(fā)展,城市居民家庭用電不斷增加,用電管理方式也隨之改革,上海、武漢等國內(nèi)大中城市逐步推出分時優(yōu)惠電價政策,分時電價方式已在國內(nèi)各大城市得到迅速推廣。分時段計費的復(fù)費率電能表用戶逐漸由工業(yè)用戶逐漸由工業(yè)用戶為主轉(zhuǎn)向居民用戶為主,單相復(fù)費率電能表的市場需求量不斷增長。據(jù)全國電工儀器儀表標(biāo)準(zhǔn)化技術(shù)委員會秘書處統(tǒng)計,近一年來,辦理復(fù)費率電能表產(chǎn)品型號注冊的企業(yè)近300家,注冊頻率呈上升趨勢。 目前電子式分時電能表已進(jìn)入非常成熟的階段。它是一種靜止式無任何機(jī)械運動部件的固態(tài)電能表,由電壓互感器、電流互感器、高精度高速A/D變換器、電能計量專用集成電路、實時時鐘、數(shù)據(jù)存儲器、大屏幕液晶驅(qū)動及顯示器、

10、數(shù)據(jù)通信 智能電能表軟件設(shè)計 2 接口、開關(guān)電源等模塊構(gòu)成,精度通常在1.0級至0.5級,可靠性好,易于實時記錄,大部分型號均帶有預(yù)付費功能可供選用。采用帶有預(yù)付費功能時,電量有電鑰匙、IC卡等輸入,剩余電量不足時,可根據(jù)用戶負(fù)荷性質(zhì)選擇輸出音響及告警,顯示電量不足,啟動表內(nèi)繼電器跳閘等功能。具有失壓斷流記錄、RS232、RS422、RS485等標(biāo)準(zhǔn)通信接口,可遠(yuǎn)程定時抄錄計量數(shù)據(jù)、本月及上月最大需求量、峰、平、谷最大需求量、脈沖輸出,監(jiān)控通過密碼設(shè)定,方可讀出與修改數(shù)據(jù)等,時段設(shè)定通常有8個。目前常用的這一系列產(chǎn)品有DSSD331、D66、DTSD341等。1.3本課題的可行性分析 電在我們

11、的日常生活中已不足為奇,而電能與當(dāng)今社會的科學(xué)進(jìn)步、經(jīng)濟(jì)發(fā)展和人們的生活都密切相關(guān)。它廣泛應(yīng)用于農(nóng)業(yè)生產(chǎn),照明,信息通訊,交通運輸,自動控制,日常生活,科學(xué)實驗等各個方面,為現(xiàn)代社會的精神文明的發(fā)展提供物質(zhì)基礎(chǔ)。電能是繼蒸氣時代之后的又一類二次能源?;瘜W(xué)燃料(煤、石油、天然氣)、核烯料、太陽能、網(wǎng)通、水能、潮汐能、地?zé)崮艿纫淮文苻D(zhuǎn)換二次能源電能。 同時電的對整個人類的影響意義深遠(yuǎn),它不公從根本上改變了整個工業(yè)生產(chǎn)的面貌,而且還直接改變了人類的生活方式,使人類迅速跨進(jìn)了電氣時代。由于電是一種高效的便于工作于輸送的能源。電力出現(xiàn)后,很快就被應(yīng)到煉鋼、建筑、紡織等生產(chǎn)行業(yè)以及電車、地下鐵路等城市公共

12、交通部門,并且已成為家庭主要使用的能源之一。電能的廣泛使用注定了人們需要合理、高效的使用,因此,分時計費電能表就應(yīng)時而生。 本文介紹了一種簡單的分時計費電能表。該系統(tǒng)可以作為為外的模塊安裝到普通電能表上,從而實現(xiàn)分時計價功能。它是用TS150位移傳感器對普通電能表進(jìn)行光電采集,對脈沖進(jìn)行計數(shù)并將計數(shù)值轉(zhuǎn)化為電量,由MC146818提供相應(yīng)的時間來判斷用電的時段,并計算相應(yīng)時段的電量和電費從而實現(xiàn)分時計費的功能。1.4設(shè)計要求及預(yù)期研究成果 本設(shè)計利用單片機(jī)控制普通電能表,實現(xiàn)分時計費的功能。本系統(tǒng)可以作為額外的模塊安裝到普通電能表,這樣用戶已安裝的普通電能表不需要更換為新的電能表,僅僅另外安裝

13、了本系統(tǒng)后就可以作為一個標(biāo)準(zhǔn)的智能電能表使用。本系統(tǒng)實現(xiàn)以下功能:(1)記錄高峰用電量(2)記錄低谷用電量3) 記錄總用電量 (4)計算并記錄高峰時段用電電費(5)計算并記錄低谷時段用電電費(6)計算并記錄總電費(7)顯示高峰用電量(8)顯示低谷用電量(9)顯示總用電量 (10)顯示高峰時段用電電費(11)顯示低谷時段用電電費(12)顯示總用電電費(13)清除電量記錄和電費記錄 記錄和計算用電量、電費都由單片機(jī)編程完成,顯示功能由單片機(jī)控制LCD實現(xiàn)。相應(yīng)的顯示功能選項由鍵盤按鍵選擇。此外,斷電后所有存儲數(shù)據(jù)不丟失,電表絕對時間標(biāo)準(zhǔn)仍正常運轉(zhuǎn).2系統(tǒng)簡介2.1系統(tǒng)總體方案設(shè)計 本系統(tǒng)的設(shè)計將整

14、個系統(tǒng)劃分為多個模塊,簡化設(shè)計流程。本系統(tǒng)可以簡單的劃分為5個模塊:單片機(jī)控制模塊、電腦時鐘模塊、光電轉(zhuǎn)換模塊、LCD顯示模塊、鍵盤控制模塊。其中測試模塊是以AT89C51單片機(jī)為核心進(jìn)行設(shè)計的,這里充分利用了單片機(jī)的數(shù)據(jù)處理及實時檢測能力,利用單片機(jī)接受光電模塊送來的電脈沖,對脈沖進(jìn)行計數(shù),將計數(shù)值轉(zhuǎn)化為電量,根據(jù)由時鐘模塊中取得的小時,判斷用電的時段,計算相應(yīng)時段的電量和電費,并記入總電量和電費;接受鍵盤的中斷,根據(jù)不同的按鍵顯示不同的功能;控制LCD顯示模塊,將CPU內(nèi)部的數(shù)據(jù)送到LCD上顯示,并顯示必要的提示信息。而且此系統(tǒng)可以廣泛應(yīng)用于社會,通過分時計費來控制并約束用戶的用電量,從而

15、達(dá)到合理使用電能。 同時本系統(tǒng)也采用了四大關(guān)鍵輔助性算法:這里要說明的幾個算法都不參與硬件的驅(qū)動,完全是純軟件的算法。雖然很短小,但是簡練的完成了其目的。在整個系統(tǒng)控制程序中的地位,不亞于其他與硬件接觸的函數(shù)。是整個系統(tǒng)中介于外部硬件數(shù)據(jù)與CPU數(shù)據(jù)之間的核心。 (1)算法NumsToArray:這個算法的功能是,將作為第一參數(shù)傳遞的int型整數(shù)的各位分離,按照由高位到地位的順序依次放入作為第二參數(shù)傳遞的數(shù)組中。方便其他函數(shù)使用數(shù)組中的數(shù)字,利用字庫得到相應(yīng)的字型碼。此算法中其實包含2個子算法。如傳遞一個整數(shù)54321到函數(shù)中,第一個子算法將54321的各位分離放入數(shù)組,但是此時得到的序列為倒

16、序,即:數(shù)組下標(biāo)0,1,2,3,4分別存放數(shù)字1,2,3,4,5。第二個子算法將數(shù)組中的元素進(jìn)行倒序運算,得到需要的順序,即:數(shù)組下標(biāo)0,1,2,3,4分別存放5,4,3,2,1。 (2)算法:ArrayToCharacters:此算法的功能是,將作為第一參數(shù)傳遞的,存放1位數(shù)字的數(shù)組,通過查字庫,將得到的字型碼按順序放入作為第二參數(shù)傳遞的將要顯示的字符庫中。此算法運算后得到的字符庫就可以送入LCD的顯示緩存區(qū),顯示出相應(yīng)的圖形了。此算法利用NumsToArray算法得到的數(shù)組,查找字庫,產(chǎn)生字符庫。這兩個函數(shù)作為核心算法被顯示電量電費等函數(shù)使用。 (3)算法ArrayToDigitalI:此

17、算法的功能是將作為第一參數(shù)傳遞的存放一位數(shù)字的數(shù)組,轉(zhuǎn)化為一個整數(shù)返回。此算法一般用來將存放在鍵盤緩存區(qū)的一位數(shù)字序列轉(zhuǎn)化為一個整數(shù)。其他函數(shù)利用返回的整數(shù)設(shè)置相應(yīng)變量的值。此函數(shù)被設(shè)置高峰時段,電表轉(zhuǎn)數(shù)等函數(shù)使用作為核心算法 (4)算法ArrayToDigitalF:此算法的功能是將作為第一參數(shù)傳遞的存放一位數(shù)字的小數(shù)序列數(shù)組轉(zhuǎn)換為一個浮點數(shù)返回。此算法一般用來將存放在鍵盤緩沖區(qū)的一個小數(shù)序列轉(zhuǎn)化為浮點數(shù)返回給調(diào)用函數(shù)。此算法實現(xiàn)時將序列以小數(shù)點(系統(tǒng)中為D鍵)為軸心分成兩半,每半都是一個一位整數(shù)序列,將兩個序列傳遞給ArrayToDigitalI,ArrayToDigitalI返回兩個整數(shù)

18、。將小數(shù)點后面的整數(shù)轉(zhuǎn)換成小數(shù)加到小數(shù)點前面的整數(shù)上完成到浮點數(shù)的轉(zhuǎn)換。此函數(shù)被設(shè)置電費函數(shù)調(diào)用作為核心算法。2.2硬件各模塊的設(shè)計本系統(tǒng)的硬件部分主要由主機(jī)、LCD顯示模塊、光電轉(zhuǎn)換模塊、電腦時鐘模塊、鍵盤控制模塊、看門狗模塊六部分組成。系統(tǒng)原理框圖如圖2.1所示:2.2.1主機(jī)本課題通過單片機(jī)來實現(xiàn)對電脈沖的采集和計數(shù),因為單片機(jī)是按工業(yè)測控環(huán)境要求設(shè)計的,抗干擾能力強(qiáng),環(huán)境要求不高,可適應(yīng)的溫度范圍寬,靈活性好,體積輕,可以降低系統(tǒng)的成本獲得較好的性能。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFlashProgrammableandErasableReadO

19、nlyMemory)的低電壓,主性能CMOS8位微處理器,俗稱單片機(jī)。該器件ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容,而且芯片上的EEPROM允許在線 (+5)電擦除、電寫入或采用通用的非易失存儲編程器對程序存儲器重復(fù)編程。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的At89C51是一種高效微控制器,能為很多嵌入式控制系統(tǒng)提供一種靈活性高且價廉的方案,所以我們選用AT89C511。2.2.2電腦時鐘模塊 實時時鐘電路是控制系統(tǒng)中常用的功能模塊。在本系統(tǒng)中我們采用了Motorola公司的MC146818可編程時鐘芯片。MC146

20、818是專用于穩(wěn)中有降類微處理器與單片機(jī)系統(tǒng)的時鐘集成電路。它帶有50字節(jié)的低功耗靜態(tài)RAM,可進(jìn)行時、分、秒和年、月、日及星期的計數(shù),并有自動的月結(jié)束識別和閏年處理功能,具有12/24小時和AM/PM的12小時計時功能,既可與Motorola系列的單片機(jī)接口,又可以與Intel的微處理器接口2。我們利用該芯片將計費段的時間存儲起來,在各時間段開始向單片機(jī)的INT0端口申請中斷,在不同的時段使系統(tǒng)執(zhí)行不同的計費程序。CPU在計數(shù)滿一度電的時候執(zhí)行中斷程序,此時CPU讀取外部RAM中存領(lǐng)教的鐘點,判斷不同的時段,執(zhí)行不同的任務(wù)。2.2.3LCD顯示模塊 由于液晶顯示器(LCD)具有工作電壓低、微

21、功耗、顯示信息量大和接口方便等優(yōu)點,所以本系統(tǒng)采用16*2液晶顯示器。LCD顯示模塊通過接口擴(kuò)展芯片連接到CPU,使用時只需要CPU通過芯片將顯示用的字碼存儲在LCD模塊的內(nèi)部存儲區(qū),LCD就可以顯示出相應(yīng)的字符3。2.2.4光電轉(zhuǎn)換模塊 光電轉(zhuǎn)換模塊用于獲取普通電能表記錄的用電量,在普通電能表的旋轉(zhuǎn)鋁盤上打一個很小的檢測孔提取光脈沖。鋁盤每旋轉(zhuǎn)一圈,模塊會檢測到一個光脈沖,經(jīng)光電耦合并加以整形放大后轉(zhuǎn)換成電脈沖,送到CPU的T1端用作計數(shù)觸發(fā)脈沖。普通電能表的銘牌上標(biāo)有每KWh多少轉(zhuǎn),其含義為電能表轉(zhuǎn)數(shù)每達(dá)這一數(shù)值就是用了一度電(即1KWh)4。將從電能表上提取轉(zhuǎn)換后的電脈沖信號送入單片機(jī)的

22、T1端并進(jìn)行計數(shù),編程時將T1計數(shù)器的計數(shù)模值設(shè)為電能表的轉(zhuǎn)數(shù),當(dāng)計數(shù)器計數(shù)溢出時就可以判斷電能表已經(jīng)用了一度電。測試時可以使用實驗室普通的信號發(fā)生器送出脈沖信號代替電能表的轉(zhuǎn)數(shù)脈沖,送入單片機(jī)的T1端。2.2.5鍵盤控制模塊 鍵盤模塊由普通的16鍵非編碼鍵盤與Intel8279可編程鍵盤/顯示接口芯片組成完整的編碼鍵盤電路。當(dāng)鍵盤上有鍵按下時Intel8279會將按鍵轉(zhuǎn)換為鍵碼存儲在一個FIFO(FirstInFirstOut,先入先出)隊列中,并向CPU申請中斷。CPU得知中斷以后,從Intel8279的存儲區(qū)讀出鍵碼,判斷相應(yīng)的按鍵,決定執(zhí)行相應(yīng)的功能 5 。2.2.6看門狗模塊 本系統(tǒng)

23、的看門狗由一塊MAX813L芯片和一個開關(guān)組成,主要用于抗干擾和復(fù)位??撮T狗實際上是一個計數(shù)器,一般給看門狗一個大數(shù),程序開始運行后看門狗開始倒計數(shù)。如果程序運行正常,過一段時間CPU應(yīng)發(fā)出指令讓看門狗復(fù)位,重新開始倒計數(shù)。如果看門狗減到0就認(rèn)為程序沒有正常工作,強(qiáng)制整個系統(tǒng)復(fù)位。此外,WatchDog5還可以在程序陷入死循環(huán)時讓單片機(jī)復(fù)位而不用整個系統(tǒng)斷電,從而保護(hù)你的硬件電路。 此外,因為考慮可能遇到停電情況,此時電能表不轉(zhuǎn),無脈沖信號給出,但絕對時間標(biāo)準(zhǔn)仍須正常運轉(zhuǎn),否則整個系統(tǒng)將打亂,因此系統(tǒng)還配置了備用電源。3軟件設(shè)計 軟件設(shè)計的成功與否關(guān)系到整個系統(tǒng)能否具有使用靈活。操作簡便,可靠

24、性強(qiáng)等優(yōu)點,而設(shè)計良好胡軟件能夠做到在較少地改變硬件電路的情況下,方便地改進(jìn)系統(tǒng)的功能,這就對軟件的設(shè)計提供了較高的要求。 遵循“自頂向下,逐步求精“的結(jié)構(gòu)化設(shè)計原則,先將任務(wù)層次化,然后對每一層再逐步細(xì)化,每一層實現(xiàn)的功能盡量是獨立的,彼此之間互相影響應(yīng)該較少,然后按照與劃分相反的過程編寫,調(diào)試程序,待所有子程序都編寫設(shè)計通過后,依它們之間的邏輯順序組合起來,構(gòu)成完整的程序軟件。采用這種方法,不僅使軟件可讀性好,維護(hù)方便且易于修改移植。如用戶有特殊要求需要改動軟件時,則只需修改或替換某子任務(wù)所對應(yīng)的子程序即可,從而加快了系統(tǒng)研制進(jìn)度,縮短了軟件開發(fā)周期6。 本系統(tǒng)要完成的任務(wù)有兩大部分:鍵盤

25、模塊任務(wù)和LCD顯示模塊任務(wù)。鍵盤模塊任務(wù)通過對不同鍵的設(shè)置,實現(xiàn)分時計費,主要負(fù)責(zé)對高峰時段電價、低谷時段電價、高峰起始時間、高峰結(jié)束時間、低谷起始時間、低谷結(jié)束時間和普通電能表每度電的轉(zhuǎn)數(shù)的保存記錄,并以這些變量作電量計費的標(biāo)準(zhǔn)進(jìn)行運算,計算出不同時段的電費,每次鍵盤按鍵中斷,系統(tǒng)函數(shù)都會根據(jù)不同的鍵值調(diào)用不同的功能函數(shù)。而LCD顯示程序則是將CPU處理過后的數(shù)據(jù)相應(yīng)的顯示在液晶屏上。 本系統(tǒng)的軟件編程同樣是按照模塊設(shè)計的。首先解釋本系統(tǒng)軟件的部分全局變量。 initset結(jié)構(gòu)用于保存高峰時段電價、低谷時段電價、高峰起始時間、高峰結(jié)束時間、低谷起始時間、低谷結(jié)束時間和普通電能表每度電的轉(zhuǎn)數(shù)

26、。這些變量用作電量計費的標(biāo)準(zhǔn)。鍵盤模塊有修改這些變量的功能,以使智能電表系統(tǒng)可以適應(yīng)不同環(huán)境。initset結(jié)構(gòu)定義的全局變量為Set,Set將initset結(jié)構(gòu)中的變量實例化。 coulometer結(jié)構(gòu)定義電能表在高峰時段使用的電量、低谷時段使用的電量和使用的總電量。coulometer結(jié)構(gòu)定義的全局變量為Coulo。fee結(jié)構(gòu)記錄當(dāng)前使用的電費,包括高峰時段使用電量的電費,低谷時段使用電量的電費和使用的總電費。fee結(jié)構(gòu)定義的全局變量為Fee。 在程序中由于要用到外部存儲器或者IO端口的直接地址,所以利用KeilC51中絕對定址關(guān)鍵字_at_定義了各種外部端口和IO端口的地址。其中RAM6

27、264定義為外部RAM中存儲的時刻的地址。CommandPortOf8279為鍵盤控制芯片8279的命令口地址,DataOf8279定義為8279數(shù)據(jù)口的地址。CommandPortOf89C51定義為LCD接口芯片89C51的控制口地址,APortOf89C51定義為89C51的P0口地址,CPortOf89C51定義為89C51的P2口地址,但是在程序中沒有直接使用P2口地址,而是通過89C51的命令口使P2口的各位分別置位來控制P2口的。 全局函數(shù)Init_CPU()和Init_89C51andLCD()用來對CPU和液晶顯示模塊進(jìn)行初始化。Init_CPU()用于開放必要的中斷允許,將

28、T1口配置為計數(shù)器,用來檢測電脈沖信號。Init_89C51andLCD()將89C51的P0、P1、P2口配置成方式0輸出模式。打開LCD顯示并清屏。 面是系統(tǒng)總體程序框圖,由主程序和中斷服務(wù)程序組成,如圖3.1和圖3.2。電能表上電后執(zhí)行初始化,包括將各時段、時間、日期、表號、用電數(shù)據(jù)等讀入內(nèi)部數(shù)據(jù)緩沖區(qū),接著清WDT,然后檢查時段是否需要更新,若需要,則轉(zhuǎn)入中斷處理部分。執(zhí)行一系列操作后轉(zhuǎn)到LCD顯示程序,根據(jù)顯示緩沖區(qū)的內(nèi)容按要求循環(huán)顯示各種電能參數(shù),并根據(jù)相關(guān)數(shù)據(jù)處理達(dá)到從那時起計量電能的目的。當(dāng)CPU對T1端的脈沖不斷計數(shù),直至計數(shù)到滿一度電的時候,T1產(chǎn)生一個中斷。CPU執(zhí)行中斷

29、,首先讀取MC146818的RAM的鐘點值,判斷不同的時段。根據(jù)不同的時段將不同時段的用電量加1,計算出相應(yīng)時段的電費,并計算出總用電量和總電費。3.1鍵盤模塊 本系統(tǒng)的編碼鍵盤每按下一個鍵,就中斷一次。假如設(shè)置某個功能時需要按功能鍵B和輸入數(shù)字24,就需要按鍵3次,鍵盤模塊會發(fā)出3次中斷申請。這樣就帶來一個問題:由于每次中斷都是調(diào)用同一個中斷函數(shù),這樣,在按下功能鍵B后,如何將接下來按下的2和4識別為一個整數(shù)24并放入相應(yīng)變量中,而不是認(rèn)為按下2鍵是顯示總電量,按下4鍵是顯示低谷時段電費?智能識別技術(shù)的原理是在B鍵別按下時系統(tǒng)將標(biāo)記一個標(biāo)志位,表明B鍵已經(jīng)被按下,然后2鍵被按下時,系統(tǒng)首先查

30、看標(biāo)志位有沒有被設(shè)置,當(dāng)它發(fā)現(xiàn)標(biāo)志位已經(jīng)被標(biāo)記為B時,它即了解到這是一個功能設(shè)置,將2放入一個輸入緩沖區(qū),而不是顯示總電量。并等待下次按鍵。接著4鍵被按下后,系統(tǒng)發(fā)現(xiàn)標(biāo)志位被標(biāo)記為B,它將4放入2后面的緩沖區(qū),等待下次按鍵。然后結(jié)束鍵(本系統(tǒng)中為E)被按下,系統(tǒng)發(fā)現(xiàn)標(biāo)志位被標(biāo)記為B,又發(fā)現(xiàn)E為結(jié)束鍵,系統(tǒng)利用算法將緩沖區(qū)中的2和4轉(zhuǎn)換為一個整數(shù)送入到相應(yīng)的變量中完成設(shè)置。然后系統(tǒng)中的標(biāo)志位被清除,以后的按鍵回歸到正常狀態(tài)。系統(tǒng)利用智能識別技術(shù),接受鍵盤輸入,對內(nèi)部的計費標(biāo)準(zhǔn),如高峰電費、電表轉(zhuǎn)數(shù)/KWh等進(jìn)行設(shè)置7。鍵盤程序框圖如圖3.3所示:鍵盤模塊包含兩個中斷函數(shù),KeyBoard和Dog

31、Sniffer,KeyBoard函數(shù)用于處理鍵盤按鍵事件,每次鍵盤按鍵中斷,KeyBoad函數(shù)會檢查按鍵的鍵值,根據(jù)不同的鍵值調(diào)用不同的功能函數(shù)。 DogSniffer函數(shù)為偵探狗技術(shù)的實現(xiàn)函數(shù),當(dāng)在鍵盤上按下功能鍵時KeyBoard函數(shù)調(diào)用WakeupDog函數(shù),喚醒偵探狗,其實質(zhì)是向T0定時器送入定時初值,并使T0開始計時。當(dāng)T0每65ms定時中斷一次。每次中斷后系統(tǒng)調(diào)用中斷處理函數(shù)DogSniffer,DogSniffer函數(shù)判斷功能鍵標(biāo)志是否被標(biāo)記,如果功能鍵標(biāo)志被標(biāo)記,而且按鍵時間超過T0的100次計數(shù),即6.5S。則DogSniffer使功能鍵標(biāo)志復(fù)位。如果功能鍵標(biāo)志沒有被標(biāo)記,則

32、DogSniffer使T0中斷計數(shù)復(fù)位。并且不在向T0送入定時初值。如果功能鍵標(biāo)志被標(biāo)記,但是T0中斷計數(shù)未達(dá)100次,則將T0中斷計數(shù)加1,并向T0送入定時初值,開始下次定時。下是鍵盤模塊程序中使用的函數(shù)列表,其中NumsToArray等四個輔助算法函數(shù)在第二部分,系統(tǒng)整體設(shè)計中已經(jīng)詳細(xì)描述,這里不在說明。voidDogSniffer(void)interrupt1using0;voidKeyBoard(void)interrupt2using0;voidShowHighCoulometer(void);voidShowLowCoulometer(void);voidShowAllCoulo

33、meter(void);voidShowHighFee(void);voidShowLowFee(void);voidShowAllFee(void);voidClear(void);voidWakeupDog(void);voidSetHighFee(ucharkey);voidSetLowFee(ucharkey);voidSetHighStart(ucharkey);voidSetHighEnd(ucharkey);voidSetLowStart(ucharkey);voidSetLowEnd(ucharkey); ucharNumsToArray(intnumber,ucharArra

34、y8);voidArrayToCharacters(ucharmessage8;uchardisplay832;ucharlength); intArrayToDigitalI(ucharArray8,ucharlength);floatArrayToDigitalF(ucharArray8,ucharlength);KeyBoard中斷處理函數(shù)首先將按鍵的鍵碼讀入一個變量中,然后判斷功能鍵標(biāo)志W(wǎng)hichFunctionKey是否被作標(biāo)記,如果已做標(biāo)記,則進(jìn)入一個switch語句,根據(jù)不同的鍵碼,調(diào)用不同設(shè)置函數(shù)。如果WhichFunctionKey未被標(biāo)記,則進(jìn)入標(biāo)準(zhǔn)狀態(tài)的按鍵處理過程,此過程通過一個switch語句決定不同的執(zhí)行方式。按下05鍵時,為顯示相關(guān)信息的操作,則直接調(diào)用相關(guān)函數(shù)。按下C鍵時為復(fù)位語句,直接調(diào)用Clear()函數(shù)。當(dāng)按下功能鍵6b時,首先將功能鍵標(biāo)志W(wǎng)hichFunctionKey設(shè)置為相同的鍵碼,然后喚醒偵探狗,進(jìn)行設(shè)置超時探測。當(dāng)下次按下按鍵時,由于WhichFunctionKey已被標(biāo)記,會轉(zhuǎn)到相應(yīng)的設(shè)置函數(shù)執(zhí)行。如果長時間未按下任何鍵,當(dāng)超過偵探狗的超時時間后,偵探狗會將WhichFunctionKey標(biāo)志的標(biāo)記取消。 ShowHighCoulometer,ShowLowCoulometer,ShowAllCoulometer

溫馨提示

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

評論

0/150

提交評論