基于單片機的智能電能表的設(shè)計_第1頁
基于單片機的智能電能表的設(shè)計_第2頁
基于單片機的智能電能表的設(shè)計_第3頁
基于單片機的智能電能表的設(shè)計_第4頁
基于單片機的智能電能表的設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

word..第一章智能電能表概述1.1智能電能表的概念智能電能表是以微處理器或微控制器芯片(如單片機)為核心的可以存儲大量的測量信息并具有對測量結(jié)果進行實時分析、綜合和做出各種判斷能力的儀器。智能電能表一般具有自動測量功能,強大的數(shù)據(jù)處理能力,進行自動調(diào)零和單位換算功能,能進行簡單的故障提示,具有操作面板和顯示器,有簡單的報警功能。1.2智能電能表的典型結(jié)構(gòu)從結(jié)構(gòu)上來說,智能電能表是一個專用的微型計算機系統(tǒng),它主要由硬件和軟件兩局部組成。硬件局部主要包括信號的輸入通道,微控制器或微控制器及其外圍電路、標(biāo)準(zhǔn)通信接口、人機交換通道,輸出通道。輸入通道和輸出通道用來輸入輸出模擬量信號和數(shù)字量信號,它們通常由傳感器元件、信號調(diào)理電路、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器等組成。微控制器及其外圍電路用來存儲程序、數(shù)據(jù)并進行一系列的運算和處理,通常包括程序存儲器、數(shù)據(jù)存儲器、輸入輸出接口電路等組成。人機交換通道是人與儀器相互溝通的主要渠道,它主要由鍵盤、數(shù)碼撥盤、打印機、顯示器等組成。標(biāo)準(zhǔn)通信接口電路用于實現(xiàn)儀器與計算機的聯(lián)系,以使儀器可以接受計算機的程控指令,目前用于智能電能表的通信接口主要有GPIB、RS-232C等。智能電能表的軟件局部主要包括監(jiān)控程序和接口管理程序兩局部。其中監(jiān)控程序面向儀器面板鍵盤和顯示器,通過鍵盤操作輸入并存儲所設(shè)置的功能、操作方式與工作參數(shù);通過控制工/0接口電路進行數(shù)據(jù)采集,對數(shù)據(jù)進行預(yù)定的設(shè)置;對數(shù)據(jù)存儲器所記錄的數(shù)據(jù)和狀態(tài)進行各種處理;以數(shù)字、字符、圖形等形式顯示各種狀態(tài)信息以及測量數(shù)據(jù)的處理結(jié)果。接口管理程序主要面向通信接口,其內(nèi)容是接受并分析來自通信接口總線的各種有關(guān)功能、操作方式與工作參數(shù)的程控操作碼,并通過通信接口輸出儀器的現(xiàn)行工作狀態(tài)及測量數(shù)據(jù)的處理結(jié)果,以響應(yīng)計算機的遠控命令。1.3智能電能表的主要特點與傳統(tǒng)電能表相比,智能電能表具有以下幾個主要特點:①測量精度高,可以利用微處理器執(zhí)行指令的快速性和A/D轉(zhuǎn)換的時間短等特點對被測量進行屢次測量,然后求其平均值,就可以排除一些偶然的誤差與干擾,還可以通過數(shù)字濾波,剔除粗大誤差和隨機誤差的方法提高測量精度;②能夠進行間接測量,智能電能表可以利用內(nèi)含的微處理器通過測量幾種容易測量的參數(shù),間接地求出某種難以測量的參數(shù);③能夠自動校準(zhǔn),智能電能表在使用前進行自動校準(zhǔn),在測量過程中進行校準(zhǔn),從而減少誤差;④具有自動修正誤差的能力;⑤具有自診斷的能力,智能電能表假設(shè)發(fā)生了故障,可以自檢出來,儀器本身還能協(xié)助診斷發(fā)生故障的根源;⑥能夠?qū)崿F(xiàn)復(fù)雜的控制功能;⑦允許靈活地改變儀器的功能;⑧智能電能表一般都配有GPIB或RS232等接口,使智能電能表具有可程控操作的能力。從而可以很方便地與計算機和其他儀器組成用戶需要的多種功能的自動測量系統(tǒng),來完成更復(fù)雜的測試任務(wù)。第二章智能電能表的設(shè)計方法2.1智能電能表的硬件設(shè)計方法智能電能表中均含有微處理器或微控制器,在微處理器或微控制器的外圍進行設(shè)備的擴展如程序存儲器ROM、數(shù)據(jù)存儲器RAM、鍵盤、顯示器、報警裝置和通信口。作為一個完整的智能電能表還應(yīng)包括輸入通道和輸出通道。圖2.1表述了智能電能表的硬件結(jié)構(gòu)組成原理圖。智能電能表實際上是一個微型計算機系統(tǒng),它是具有微處理器或微控制器的,并有標(biāo)準(zhǔn)總線接口的新型儀器。不同功能的智能電能表由不同部件組合而成。智能電能表的監(jiān)控程序固化在程序存貯器EPROM、ROM、EEPROM等中,被測參量通過傳感器將非電量變換成電量,然后經(jīng)過信號處理和模數(shù)轉(zhuǎn)換后變?yōu)槲⑻幚砥髂苤苯幼R別的數(shù)字信號。所采集的數(shù)據(jù)或從鍵盤上輸入的數(shù)據(jù)以及經(jīng)過一定的算法運算后的數(shù)據(jù)均暫存于片內(nèi)數(shù)據(jù)存儲器RAM中。智能電能表的控制局部一般分兩種情況,一是微處理器接受鍵盤輸入的命令后,不需經(jīng)過數(shù)模轉(zhuǎn)換器,直接由接口輸出控制信息和數(shù)據(jù)信息,去控制一些執(zhí)行機構(gòu)。微處理器鍵盤LCD/LEDA/D微處理器鍵盤LCD/LEDA/D轉(zhuǎn)換信號調(diào)理傳感器被測量參量報警裝置ROM或EPROM或EEPROMSRAM或DRAM或NVSRAM或FLASHMemoryD/A驅(qū)動器模擬執(zhí)行裝置RS232〔接口〕圖2.1智能電能表硬件原理圖2.1.1微處理器或微控制器微處理器和微控制器在智能電能表中都是智能電能表的心臟,它們的結(jié)構(gòu)、特性對智能電能表的性能影響很大。微處理器也是一種通用器件,如果給予足夠的外部支持電路和處理時間,它幾乎可以完成任何任務(wù),數(shù)據(jù)處理和控制是微處理器的兩個主要用途。根據(jù)智能電能表控制功能和測量功能的不同選用適宜的單片機作為智能電能表的核心,從而提高智能電能表的整體性能。2.1.2傳感器傳感器是將外界輸入的被測量信號變換成電信號的元器件或裝置。它作為信息獲取的工具和手段,在測量控制型智能電能表中占據(jù)了極其重要的地位。傳感器能轉(zhuǎn)換信息存在的能量形式,通常是將其他能量形式轉(zhuǎn)換成電量形式,以便進一步加工處理,傳感器的輸出往往總是電信號。這主要是電信號較容易地進行放大、反應(yīng)、濾波、積分、微分、存儲及遠距離傳送等操作。2.1.3信號調(diào)理信號調(diào)理裝置是通過電子線路來實現(xiàn)模擬信號處理,一般包括放大、濾波、整形、檢波、信號轉(zhuǎn)換等功能環(huán)節(jié)。信號調(diào)理的目的是對傳感器輸出的電信號進行必要的處理以滿足信號處理后繼環(huán)節(jié)的需要,使其輸出信號適應(yīng)A/D轉(zhuǎn)換等環(huán)節(jié)的工作。信號調(diào)理可以改善信號質(zhì)量,還可以補償傳感器的非線性,提高信噪比,增強信號的環(huán)境抗干擾能力等。2.1.4A/D轉(zhuǎn)換器微處理器能處理的信號應(yīng)是數(shù)字信號,因此,在智能電能表的輸入通道中參加能把模擬信號轉(zhuǎn)換成數(shù)字信號的芯片即A/D轉(zhuǎn)換器。但并不是所有的輸入通道都要參加A/D轉(zhuǎn)換器,而是只有模擬量輸入通道,而且輸入微處理器的信號不是頻率量而是數(shù)字碼時,才用到A/D轉(zhuǎn)換器。使用A/D轉(zhuǎn)換器時應(yīng)先根據(jù)輸入通道的總誤差,選擇A/D轉(zhuǎn)換器的精度及分辨率。根據(jù)信號對象的變化率及轉(zhuǎn)換精度要求,確定A/D轉(zhuǎn)換速度,以保證智能電能表的實時性要求,對快速信號必須考慮采樣/保持電路。在選用A/D時還應(yīng)考慮智能電能表所處的環(huán)境選擇A/D轉(zhuǎn)換器的環(huán)境參數(shù)。不同A/D轉(zhuǎn)換器有不同的輸出狀態(tài),應(yīng)根據(jù)計算機的接口特性選擇輸出狀態(tài)。2.1.5D/A轉(zhuǎn)換器微處理器輸出的數(shù)字控制信號通過D/A轉(zhuǎn)換,將離散時刻輸出的控制信號轉(zhuǎn)換成為離散模擬信號,為實現(xiàn)智能控制創(chuàng)造了必要條件。在D/A轉(zhuǎn)換接口設(shè)計中主要考慮的問題是D/A轉(zhuǎn)換芯片的選擇、數(shù)字量的碼輸入及模擬量的極性輸出、參考電壓電流源、模擬電量輸出的調(diào)整與分配等。選擇D/A芯片時,主要考慮芯片的性能、結(jié)構(gòu)及應(yīng)用特性。在性能上必須滿足D/A轉(zhuǎn)換的技術(shù)要求:在結(jié)構(gòu)和應(yīng)用特性上應(yīng)滿足接口方便,外圍電路簡單,價格低廉等要求。2.1.6智能電能表的通信接口智能電能表一般都設(shè)置有通信接口,以便能夠?qū)崿F(xiàn)程控、方便地構(gòu)成自動測試系統(tǒng)。目前國際上采用的智能電能表的標(biāo)準(zhǔn)接口有GPIB,RS232等,本設(shè)計采用RS232接口。2.1.6.1RS-232C標(biāo)準(zhǔn)通信接口RS-232C總線標(biāo)準(zhǔn)接口是目前最常用的串行通信總線接口,其邏輯電平是對地對稱的,與TTL、MOS邏輯電平完全不同。邏輯0電平規(guī)定為+5~+15V之間,邏輯1電平是-5V~-15v之間。因此,RS-232C驅(qū)動器與TTL電路連接必須經(jīng)過電平轉(zhuǎn)換。轉(zhuǎn)換芯片有MC1488,75188(從TTL到RS-232C的電平轉(zhuǎn)換);MC1489,75189(從RS-232C到TTL的電平轉(zhuǎn)換)。還有MAXIM的MAXZOZ、MAX232等等。在當(dāng)今的信息化時代,用于其他信息裝置的通信技術(shù)也同樣可用于嵌入式智能電能表。它主要有這樣一些通信技術(shù):2.1.6.2PCI總線PCI總線技術(shù)為CPU和板上外設(shè)之間提供方便的高速通信連接,工作頻率為33MHz(rev2.1支持66MHz)。PCI對于連接到它上面的器件是具有即插即用的高速總線。從理論上來說,可以有多達256個PCI功能器件同時掛到一個PCI總線上。但由于總線負載問題,同一個PCI總線上只能掛4到8個器件。價廉的PCI芯片組和廣泛應(yīng)用的PCI外設(shè)可以促使PCI總線成為嵌入式領(lǐng)域的事實上的總線標(biāo)準(zhǔn)。2.1.6.3USB總線通用串行總線(USB)是一種外設(shè)總線標(biāo)準(zhǔn)。它為所有的USB外設(shè)提供一種通用的連接,其數(shù)據(jù)率為12Mbits/S。USB特別適合于需要高數(shù)據(jù)率和易于即插即用的應(yīng)用。需要保證帶寬和有限執(zhí)行時間的應(yīng)用包括PC和其他語音及視頻通信應(yīng)用。除了這些新的多媒體設(shè)備外,USB也用于傳統(tǒng)的I/O設(shè)備。2.1.6.4IEEE1394高速串行總線IEEE1394是高速串行總線,其數(shù)據(jù)率為25-400Mbits/s,它是作為通用外設(shè)串行總線而設(shè)計的。纜線型1394總線可支持63個器件。纜線越長它所能夠處理的數(shù)據(jù)率就越低。一般長度為幾米,IEEE1394和USB都是串行協(xié)議,然而USB和IEEE1394比其競爭技術(shù)由更大的技術(shù)互補性,USB屬于低帶寬到中帶寬,而IEEE1394屬于中到高帶寬。2.2智能電能表的軟件設(shè)計方法智能電能表硬件電路確定之后,儀器的主要功能由軟件實現(xiàn)。相應(yīng)的軟件有采集、采集控制、數(shù)據(jù)處理、顯示、結(jié)果打印等。智能電能表的軟件設(shè)計需要有一個細致全面的過程。一般先是清楚的列出智能電能表系統(tǒng)各系統(tǒng)部件與軟件設(shè)計的有關(guān)特點,并進行定義和說明,以作為軟件設(shè)計的根據(jù)。在此根底上寫出軟件的功能流程圖,程序流程圖。再將程序流程圖的一列操作用機器碼或匯編語言或高級語言譯成處理器能處理的機器代碼。查錯和調(diào)試是智能電能表軟件設(shè)計中找出并改正邏輯錯誤或與硬件有關(guān)的程序錯誤的關(guān)鍵。在所有的工作完成之后還要進行文件編制。置置A轉(zhuǎn)移···上電復(fù)位初始化系統(tǒng)測試正常?提示符顯示鍵掃描鍵按下?散轉(zhuǎn)#01鍵功能程序········#N鍵功能程序#02鍵功能程序鍵功能程序準(zhǔn)備程序命令狀態(tài)查詢條件控制轉(zhuǎn)移系統(tǒng)控制程序循環(huán)轉(zhuǎn)移等待轉(zhuǎn)移復(fù)位轉(zhuǎn)移圖2.2智能電能表的典型結(jié)構(gòu)如圖2.2所示智能電能表的軟件結(jié)構(gòu)按功能可分為準(zhǔn)備程序、鍵功能程序和系統(tǒng)控制程序。同時,為了與軟件結(jié)構(gòu)相配合,還必須將程序存儲器(ROM)和數(shù)據(jù)存儲器(RAM)實現(xiàn)規(guī)劃。2.3智能電能表的抗干擾方法智能電能表是以微處理器為核心的微機測量控制系統(tǒng),因此智能電能表在許多場合都是與計算機控制系統(tǒng)或DCS(集散控制系統(tǒng))聯(lián)系在一起的。智能電能表在不同的應(yīng)用場合所受到干擾也各不相同,當(dāng)儀器在運行時所受到的干擾超過一定限度時就會嚴重影響智能電能表的可靠性,甚至嚴重影響工業(yè)生產(chǎn)現(xiàn)場,因此在設(shè)計智能電能表時要注意智能電能表的抗干擾設(shè)計。微機測控系統(tǒng)的抗干擾技術(shù)在智能電能表的抗干擾技術(shù)中是同樣適用的,主要分為硬件抗干擾技術(shù)和軟件抗干擾技術(shù)。硬件抗干擾技術(shù)主要包括濾波技術(shù)(無源濾波和有源濾波)、去耦技術(shù)、屏蔽技術(shù)、隔離技術(shù)、接地技術(shù)等。竄入智能電能表的干擾,其頻譜往往很寬,且具有隨機性,采用硬件抗干擾方法,只能抑制某個頻率段的干擾,仍有一些干擾會侵入系統(tǒng)。因此,除了采取硬件抗干擾方法外,還要采取軟件抗干擾措施。為確保CPU中的程序正常運行,常常采用如下抗干擾措施:軟件濾波(數(shù)字濾波技術(shù))可以剔除模擬輸入信號中的虛假信號,求取真值;除了可以使用硬件看門狗電路強制單片機從死機狀態(tài)回復(fù)到正常運行外,還可以采用軟件看門狗電路或軟硬結(jié)合的看門狗技術(shù)。軟件看門狗技術(shù)的根本思路是:在主程序中對T0中斷效勞程序進行監(jiān)視;在T1中斷效勞程序中對主程序進行監(jiān)視;T0中斷監(jiān)視T1中斷。第三章智能電能表的硬件設(shè)計3.1電能表概述電能表是一種計量某一段時間內(nèi)通過的電能的累積值的表計。電子式電能表,也稱為靜止式電能表,它也就是“電流和電壓在固態(tài)(電子)器件中作用而產(chǎn)生與瓦時數(shù)成比率輸出的儀表〞。這里主要介紹根據(jù)智能小區(qū)家庭型用戶電能計量系統(tǒng)的要求設(shè)計的一種智能型多功能復(fù)費率電能表。復(fù)費率電能表是一種根據(jù)用電的峰時、平時、谷時各時段的設(shè)定值計算用戶總的用電量和峰時、平時、谷時的用電量的電能表,使供電局能實施峰時、平時、谷時各時段不同的計費標(biāo)準(zhǔn)。用經(jīng)濟手段鼓勵用戶在低谷時段用電。這也正好符合電力計費系統(tǒng)提出的分時段計費的要求。電子式的復(fù)費率電能表一般使用單片機對電能脈沖進行分時段計算處理,同時具有有效的參數(shù)設(shè)定。3.2電能表的總體方案設(shè)計此多功能復(fù)費率電能表具有如下功能:(1)通過單片機擴展的數(shù)據(jù)存儲器可以存儲本月、上月、上上月的各月電量,能存儲各月峰時、平時、谷時各時段的用電量,并能通過液晶顯示器顯示各自的數(shù)值;(2)具有欠壓斷電保護、欠費停電保護功能;(3)具有在過電壓、過電流和欠壓斷電保護后用戶自己送電的功能;本次設(shè)計中所設(shè)計的整個電能計量系統(tǒng)主要由電能表構(gòu)成。電能表局部應(yīng)包括電流傳感器、電壓傳感器、電能計量芯片、顯示器件、按鍵開關(guān)時鐘/日歷芯片、看門狗電路、擴展數(shù)據(jù)存儲器以及用于通斷電控制用的小功率交流開關(guān)。微控制器微控制器液晶顯示器按鍵組日歷/時鐘芯片電力線電力線電力線電力線電能計量芯片三態(tài)門供電線路電流互感器電壓互感器晶閘管保護回路圖3.1電能表硬件整體框圖上圖3.1說明了電能表的硬件設(shè)計方案。其中,電能表局部需要電流互感器、電壓互感器把照明電路中的22OV電壓和大電流(10A)變換成電能計量芯片所要求的輸入電壓和輸入電流范圍之內(nèi)。電能計量芯片根據(jù)其內(nèi)部的瞬時電壓和瞬時電流計算瞬時功率,再輸出脈沖驅(qū)動機械式計數(shù)器或者步進電機計算用電電量。根據(jù)此方案設(shè)計的復(fù)費率電能表系統(tǒng)的硬件原理在以下幾節(jié)詳細說明。3.3電能表的控制芯片AT89C51是一種帶4K字節(jié)閃存可編程可擦除只讀存儲器的低電壓、高性能CMOS8位微處理器,俗稱單片機,很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案,其引腳排列如圖3.2所示:3.3.1AT89C51主要特性為:·4K字節(jié)可編程閃爍存儲器·壽命:1000寫/擦循環(huán)·數(shù)據(jù)保存時間:10年·全靜態(tài)工作:0Hz-24MHz·三級程序存儲器鎖定·128×8位內(nèi)部RAM·32可編程I/O線·兩個16位定時器/計數(shù)器·5個中斷源·可編程串行通道·低功耗的閑置和掉電模式·片內(nèi)振蕩器和時鐘電路圖3.2AT89C51引腳結(jié)構(gòu)圖3.3.2AT89C51各主要引腳功能:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1〞時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1〞時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能存放器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1〞后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流〔ILL〕這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下所示:P3口管腳備選功能P30RXD〔串行輸入口〕P31TXD〔串行輸出口〕P32/INT0〔外部中斷0〕P33/INT1〔外部中斷1〕P34T0〔記時器0外部輸入〕P35T1〔記時器1外部輸入〕P36/WR〔外部數(shù)據(jù)存儲器寫選通〕P37/RD〔外部數(shù)據(jù)存儲器讀選通〕P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。EA/VP:當(dāng)/EA保持低電平時,那么在此期間外部程序存儲器〔0000H-FFFFH〕,不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP〕。X1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。X2:來自反向振蕩器的輸出。3.4電能計量專用芯片在電子式電能表中使用得比擬多的電能計量專用芯片有:CS546OA以及AD7755等等。從性能上來比擬CS546OA比AD7755增加了如下功能:具有片內(nèi)看門狗定時器與內(nèi)部電源監(jiān)視器;具有瞬時電流、瞬時電壓、瞬時功率、電流有效值、電壓有效值、功率有效值測量及電能計量功能;提供了外部復(fù)位引腳;雙向串行接口與內(nèi)部存放器陣列可以方便地與微處理器相連接;外部時鐘最高頻率可達20MHz;具有功率方向輸出指示。這些增加的功能更加便于與微控制器接口,并能方便地實現(xiàn)電壓、電流、功率的測量和用電量累積等功能。據(jù)此選擇CS5460A作為電能計量芯片更能實現(xiàn)各種電參數(shù)的測量。3.4.1CS5460A的性能(1)能量數(shù)據(jù)精確度:在1000:1動態(tài)范圍內(nèi)精確度為0.1%;(2)芯片功能:可以測量電能,I·U,QUOTE、和QUOTE,具有電能與脈沖轉(zhuǎn)換功能;(3)通過串行EEPROM實現(xiàn)智能“自引導(dǎo)〞,不需要微控制器;(4)AC或DC系統(tǒng)校準(zhǔn);(5)可驅(qū)動機計度器/步進馬達;(6)能量消耗小于12mw;(7)為分流傳感器提供優(yōu)化的接口;(8)具有相補償功能;(9)為單電源提供地參考信號;(10)芯片上帶有2.5V基準(zhǔn)電壓(最大溫漂60Ppm/QUOTE);(11)具有簡單的三線數(shù)字串行接口;(12)具有看門狗定時器,電源監(jiān)視器和電源配置功能。3.4.2CS5460A管腳說明CS546OA芯片有24個引腳。它的管腳分布如圖3.3所示。各管腳功能說明如下:圖3.3CS5460A的引腳圖XOUT、XIN:系統(tǒng)時鐘輸出引腳和系統(tǒng)時鐘輸入引腳。這兩個引腳接2.5-20MHZ的晶振CS5460A提供系統(tǒng)時鐘,并通過片內(nèi)的分頻單元的分頻得到相應(yīng)的時鐘頻率。另外也可通過XIN引腳使用外部的CMOS時鐘為CS5460A提供系統(tǒng)時鐘。CPUCLK:片內(nèi)振蕩器輸出引腳。輸出的時鐘頻率可以驅(qū)動一個標(biāo)準(zhǔn)的CMOS負載。SCLK:串行時鐘輸入引腳。在這個引腳上輸入的時鐘信號確定SDI和SDO引腳上的數(shù)據(jù)輸入輸出速率。在片內(nèi)與此引腳相連的是一個施密特觸發(fā)器,其允許通過具有慢上升時間的信號通過。僅在QUOTE有效時才識別時鐘信號。SDO:串行數(shù)據(jù)輸出引腳。QUOTE:片選引腳。MODE:模式選擇引腳。當(dāng)為邏輯高電平時,CS5460A可在一個外部串行EEPROM的幫助下執(zhí)行自引導(dǎo)功能接收命令和設(shè)置;當(dāng)為邏輯低電平時,CS546OA可與微處理器或微控制器進行數(shù)據(jù)交換。此引腳懸空時為低電平。QUOTE:中斷輸出引腳。QUOTE:電能輸出引腳。QUOTE:電能方向指示引腳。當(dāng)電能輸出為負時此引腳輸出一脈沖。SDI:串行數(shù)據(jù)輸入引腳。VIN+、VIN-:電壓通道的差分模擬輸入引腳。VREFOUT:參考電壓輸出引腳。此引腳的電壓相對于VA-為2.5V。VREFIN:參考電壓輸入引腳。輸入此引腳的電壓作為調(diào)節(jié)器的參考電壓。IIN+、IIN-:電流通道的差分模擬輸入引腳。VD+:正數(shù)字電源。DGND:數(shù)字地。VA+、VA-:正模擬電源和負模擬電源。PFMON:電源故障監(jiān)測引腳。用于監(jiān)控模擬電源。QUOTE:復(fù)位引腳。當(dāng)此引腳電平為低時,CS5460A的所有內(nèi)部存放器都被設(shè)置為缺省值。3.4.3CS5460A外圍電路及供電電路設(shè)計圖3.4CS5460A外圍電路、供電電路及與AT89C51的接口電路在電路圖3.4中,參考電壓輸入端(VREFIN)和參考電壓輸出端(VREFOUT)直接相連并通過0.1pF電容接地,模擬電源負引腳(VA-)也直接接地。這使得片上模/數(shù)轉(zhuǎn)換器的參考電壓為O伏,并且使用變換器內(nèi)部2.5V的基準(zhǔn)電壓,0.1pF的電容起作電源抗干擾的作用。根據(jù)單相電子式電能表使用的具體情況在系統(tǒng)時鐘輸出引腳(XOUT)和系統(tǒng)時鐘輸入引腳(XIN)之間選擇4.096MHz的晶振和K=1的分頻系數(shù)為CS546OA提供系統(tǒng)時鐘。3.4.4微控制器AT89C51與CS5460A的接口微控制器AT89C51與Intel系列的80C51微控制器的指令集和管腳兼容,微控制器內(nèi)有4K字節(jié)的可擦寫閃爍只讀程序存儲器和256字節(jié)的數(shù)據(jù)存儲器。它具有掉電模式和閑置狀態(tài)兩種工作方式。其工作原理同8031微控制器。由于CS546OA提供了SPI串行接口,減少了單片機的總線使用數(shù),為微控制器的外圍電路的擴展提供了更多的總線。在SPI總線上傳送的數(shù)據(jù)和命令字都是高位在先的方式傳送。由圖3.4可知使用AT89C51的P10、P11、P12引腳分別與CS546OA的SDI、SDO、SCLK引腳交換數(shù)據(jù)。CS546OA的片選引腳QUOTE接地,使其始終保持有效狀態(tài)。另外,使用AT89C51的外部中斷12(INTO)接收CS546OA的電能輸出引腳(QUOTE)輸出的表示電能的脈沖信號,當(dāng)AT89C51接收到一個脈沖時發(fā)生中斷使存放累計電能值的存儲單元的值按一個脈沖所代表的電能數(shù)增加。AT89C51的P10、P11、P12引腳分別與CS5460A的SDI、SDO、SCLK引腳交換數(shù)據(jù)。CS5460A的QUOTE輸出的低電平信號說明CS5460A發(fā)生了一個激活的事件,單片機AT89C51接收到這個信號就發(fā)生中斷向CS5460A寫入正確地命令字并使CS5460A的QUOTE變?yōu)檫壿嫺唠娖?。CS5460A的復(fù)位引腳接AT89C51的P14,CS5460A的復(fù)位信號由AT89C51提供。3.4.5電源模塊由于電能表屬于不間斷工作的電力計量產(chǎn)品,因而其電源電路是其設(shè)計的關(guān)鍵局部之一。電源電路負責(zé)給各個硬件模塊供電,以保證整個電能表的正常運行。CS5460A的電源電壓提供方式可以采用外接直流穩(wěn)壓電源供電,或通過變壓器Tl變壓成12V直流電壓后再用分壓的方式供電也可使用鋰電池供電三種方式,從可靠性和實用性來說選擇通過變壓器降壓的方式為CS5460A供電,變壓器Tl變比選擇220V/12V,因此在變壓器的次級可得到12v的交流電壓。變壓器次級接二極管的作用是為后繼電路提供直流電壓(即起全波整流作用)。電源電路中設(shè)計由兩個一階無源RC濾波網(wǎng)絡(luò)組成的二階濾波電路濾掉直流電壓中的噪聲信號,再通過一個0.1μF的電容提高抗干擾能力。電源失效監(jiān)控引腳(PFMON)監(jiān)控模擬電源,相對VA-引腳電平其典型閥值電壓為2.45V。當(dāng)達不到閥值電壓時,在電源監(jiān)控單元就會使CS5460A復(fù)位。3.4.6電壓電流采樣模塊在能量測量中使用電壓互感器和電流互感器與電力線隔離,減小電力線上交流信號中竄入CS5460A電壓、電流輸入通道的各種干擾信號。電壓互感器具有高精度、低阻抗特性,并且即使在高次諧波情況下具有很小的相延遲。在采用互感器隔離措施后,CS5460A的數(shù)字接口不必再采用隔離技術(shù)。在照明電力干線中,相電壓有效值為22Ov,線電流可以選擇10A的有效值,在這種條件下,假定電力線上的最大額定電壓為30OV,最大額定電流為30A。對于正弦曲線的交流信號,電壓/電流有效值以最大直流輸入電平的0.7071倍進行準(zhǔn)確測量。但是在實際使用中,交流信號的波形通常不是以準(zhǔn)確的正弦曲線形式出現(xiàn),為了在兩個輸入通道允許有一些超范圍的信號進入,常用最大電壓有效值和最大電流有效值的0.6倍作為兩個通道的輸入電壓范圍。因此輸入通道的輸入電壓最大值就應(yīng)為0.6×25OmV=150mV,其在規(guī)定的25OmV范圍內(nèi)。由此計算電壓Kv=15OmV/300V=0.0005,此時電壓互感器T2的變比為2000/1;計算電流增益Ki=15OmV/30A=0.005Ohms。Rs=50歐時,電流互感器T3的變比為1/1000。如圖3.4,在電流輸入通道中,電阻QUOTE有兩個作用:一是和配合與C1構(gòu)成一階低通濾波器,這個濾波器除了濾除遠遠超過有用頻率的寬帶噪聲還作為抗混疊濾波器以阻止A/D轉(zhuǎn)換器接收高于其采樣頻率一半的輸入信號;二是為IIN+輸入引腳提供限流保護。QUOTE和的典型值取47O歐,C1放入典型值取2.2uF。在電壓通道中的電阻、電容所起的作用與電流通道中的電阻、電容所起的作用相同,其典型取值也是相同的。3.5液晶顯示芯片與AT89C51的接口液晶顯示器選用SMSO6O1,該液晶顯示器可直接與AT89C51單片機采用兩個總線實現(xiàn)數(shù)據(jù)的串行傳送而不需要單獨的顯示器驅(qū)動芯片,從而減少了整個電能表的空間。SMSO601一體化顯示器具有6位數(shù)字顯示功能,并提供兩個時間分隔符(如圖3.5)。3.5.1SMS0601的接口信號說明圖3.5SMSO601外形圖圖3.5中的SMS0601有四根接口信號線,它們分別是:1DI:串行數(shù)據(jù)輸入引腳。顯示數(shù)據(jù)和命令字從此引腳串行輸入。2CLK:串行移位脈沖輸入引腳。此引腳輸入脈沖為在D1引腳上的數(shù)據(jù)和命令輸入提供時序。另:VDD:電源正極,模塊工作電壓位。VSS:電源地。3.5.2SMS0601與AT89C51的接口圖3.6SMS0601與AT89C51的接口電路利用AT89C51的P23、P24分別與SMS06O1的串行數(shù)據(jù)輸入引腳(DI)、串行移位脈沖輸入引腳(CLK)連接。3.6按鍵組功能及與AT89C51總線口的連接電能表上的所有按鍵可提供用戶按鍵查詢本月的峰時、平時、谷時各時段的用電量以及本月用電總量,上月的峰時、平時、谷時各時段的用電量以及上月用電總量,上上月的峰時、平時、谷時各時段的用電量以及上上月用電總量。可以查詢瞬時電流值,瞬時電壓值,電壓有效值,電流有效值,各時段值的設(shè)置值。因此鍵盤組中包括峰時鍵(7EH),平時鍵(OB7H),谷時鍵(OBBH),本月鍵(77H),上月鍵(7BH),上上月鍵(7DH),總電量鍵(OBDH),瞬時電流鍵(OBEH),瞬時電壓鍵(OD7H),電壓有效鍵(ODBH),電流有效鍵(ODDH),起始時刻鍵(OEBH),終止時刻鍵(OEDH),送電鍵(ODEH)、時段查詢鍵(OE7H),取消鍵(OEEH)。圖3.7按鍵組與AT89C51的接口電路如圖3.7所示所設(shè)計的按鍵組采用由P00、P01、P02、P03口四根數(shù)據(jù)線提供行線,P04、P05、P06、P07提供列線組成的行列式鍵盤。按鍵設(shè)置在行、列線交點,行、列線分別連接到按鍵開關(guān)的兩端。當(dāng)行線通過上拉電阻接+5V時,被鉗位在高電平狀態(tài)。鍵盤有無鍵按下是由列線送入全掃描字、行線讀入列線狀態(tài)來判斷的。其方法是:給P04、P05、P06、P07列線均置成低電平,然后將行線電平狀態(tài)讀入累加器中。如果有鍵按下,總會有一根行線電平被拉至低電平,從而使行輸入不全為零。鍵盤中哪一個鍵被按下是列線逐行置低電平后,檢查行線輸入狀態(tài)。如果全為l,那么所按下的鍵不在此行,如果不全為1,那么所按下的鍵必在此行。3.7SPI接口型EEPROM與AT89C51的接口3.7.1X5045管腳分布X5045的管腳圖如圖3.8所示。QUOTE/WDI:片選引腳/看門狗輸入引腳。SO、SI:串行數(shù)據(jù)輸出引腳和輸入引腳。QUOTE:寫保護輸入引腳。當(dāng)其為低電平時,寫操作被禁止;在寫操作過程中,除QUOTE必須保持低電平外,QUOTE必須保持高電平。圖3.8X5045管腳分布圖RESET:復(fù)位輸出引腳。只要Vcc低于Vcc檢測電平,RESET即變?yōu)楦唠娖?,并保持高電平直至Vcc高于Vcc最小檢測電平200ms為止??撮T狗定時器超過時也會引起RESET變?yōu)楦唠娖?。SCK:串行時鐘輸入引腳。輸入數(shù)據(jù)在時鐘的上升沿被鎖存,輸出數(shù)據(jù)在時鐘的下降沿被同步輸出。Vcc、Vss:電源正極和電源負極。3.7.2X5045功能描述X5045把上電復(fù)位控制、看門狗定時器、電源監(jiān)控和塊鎖存保護的串行的EEPROM四種功能集成在單個封裝內(nèi),從而提高了自身可靠性,降低了系統(tǒng)本錢,并減少了對電路板空間的要求。上電復(fù)位控制的功能是在電源穩(wěn)定和振蕩器可靠振蕩條件下允許處理器執(zhí)行代碼。看門狗定時器對CPU(或MCU)提供了獨立的保護機制。當(dāng)在可選的超時周期之內(nèi)控制器不能重啟定時器時,X5045看門狗激活RESET信號,使系統(tǒng)重新復(fù)位,退出故障??蛇x的三個超時周期有三個預(yù)置值(l.4s、600ms、200ms),其預(yù)置方法是給狀態(tài)存放器的看門狗位賦值的方式完成,賦值為00那么看門狗定時周期為1.4s,賦值為01那么看門狗定時周期為600ms,賦值為10那么看門狗定時周期為2OOms,賦值為11那么禁止看門狗功能。一旦通過編程預(yù)置,這個超時值將保持不變。X5045的電源監(jiān)控電路提供在VCC低于限值時,響應(yīng)RESET信號的功能,可使系統(tǒng)在開機、關(guān)機過程中穩(wěn)定可靠,不出意外。X5045的存貯器局部是CMOS的4K位串行EEPROM,結(jié)構(gòu)為512*8的十六字節(jié)頁寫方式,串口協(xié)議為SPI,簡單易行,數(shù)據(jù)可保存100年。3.7.3X5045硬件連接圖3.9X5045的硬件連接電路圖X5045的復(fù)位引腳RESET與AT89C51的復(fù)位引腳相連為AT89C51提供復(fù)位信號,從而起AT89C51單片機的看門狗電路的作用。AT89C51的Pl3、PI5、PI6、P17引腳分別與X5045的QUOTE、SO、SI、SCLK引腳交換數(shù)據(jù)。寫保護引腳(QUOTE)與電源相連。3.8時鐘模塊對電能表來說,它需要根據(jù)時間段的劃分來計量各時段的電能值,因此在電能表中需要一個時鐘芯片計時。DS1302是一種高性能、低功耗、帶RAM的實時時鐘芯片,它工作電壓寬達2.5一5.5V,采用三線接口與單片機進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個31×8的用于臨時性存放數(shù)據(jù)的RAM存放器。3.8.1DS13O2的引腳分布見圖3.10。X1X2:32.768KHz晶振輸入引腳。GND:接地引腳。SCLK:串行時鐘輸入引腳。I/O:數(shù)據(jù)輸入輸出引腳。QUOTE:復(fù)位引腳。QUOTE\QUOTE:電源引腳。3.8.2DS1302與AT89C51的硬件連接圖3.10DS13O2的管腳分布圖DS1302與AT89C51的連接只需三條線,SCLKI/O、QUOTE、分別與AT89C51的TO、P27、P26連接。QUOTE在雙電源系統(tǒng)中提供主電源,在這種運行方式下QUOTE連接到備份電源,以便在沒有主電源的情況下能保存時間信息以及數(shù)據(jù)。DS1302由QUOTE\QUOTE兩者中的較大者供電。當(dāng)QUOTE大于QUOTE+0.2V時,QUOTE給DS13O2供電;當(dāng)QUOTE大于QUOTE+0.2V時,QUOTE給DS13O2供電。圖3.11DS1302與AT89C51的硬件連接3.9通斷電控制電路圖3.12通斷控制電路對由過電壓、過電流和欠電壓造成的斷電保護可以由用戶自己通過電能表上的送電鍵恢復(fù)自家的通電狀態(tài);對由于用戶欠交電費而停電的情況,用戶不能給自家送電,而需要由電力管理部門的管理人員控制。為了實現(xiàn)這個功能,在電路設(shè)計過程中使用了三態(tài)門74LS125再經(jīng)一個反相器74LS04進行控制(如圖3.12)。如果是由于過電壓、過電流和欠電壓造成的停電,AT89C51的P20置低電平,P21置高電平,因此在用戶按下電能表上的送電鍵后只需改變P20的狀態(tài)并且只能改變P20的電平狀態(tài);如果是由于欠費造成的停電,AT89C51的P20置低電平,P21同時也被置成低電平,因此在電力管理員通過手持抄錄器發(fā)送響應(yīng)命令時才能改變P20的電平狀態(tài)和P21的電平狀態(tài)。通過這樣的措施到達催繳電費的目的。在電路中QUOTE,QUOTE用以減少干擾,并可改善器件的臨界斷態(tài)電壓上升率。但QUOTE,QUOTE的接入會降低觸發(fā)靈敏度,通常QUOTE可取20K歐。QUOTE為0.01QUOTE。Rs,Cs為阻容保護電路,對光控晶閘管起保護作用。第4章電能表的軟件設(shè)計4.1電能表的軟件實現(xiàn)根據(jù)電能表的硬件電路設(shè)計,電能表運行的過程可以表述為:〔1〕當(dāng)CS5460A未輸出電能脈沖和方向脈沖以及中斷脈沖時,單片機AT89C51循環(huán)執(zhí)行清看門狗程序、執(zhí)行顯示本月累計電量值的顯示程序、判斷是否更新時段值、判斷是否有紅外線通信發(fā)生、讀CS5460A的電流瞬時存放器和電壓瞬時存放器的值以判斷是否該過電流或過電壓或欠壓斷電保護。完成以上功能后程序隨時準(zhǔn)備接收外部中斷QUOTE和QUOTE,每循環(huán)一次程序就查詢一次按鍵開關(guān)的狀態(tài),根據(jù)所按的開關(guān)執(zhí)行相應(yīng)的程序。〔2〕當(dāng)CS5460A的電能輸出引腳〔QUOTE〕和電能方向指示器引腳〔QUOTE〕輸出脈沖時,中斷效勞程序根據(jù)記憶在時鐘芯片DS1302中的時段參數(shù)以及實時時鐘的值來判斷當(dāng)前的時段類型,單片機響應(yīng)外部中斷進行電量的累加。將結(jié)果存放到擴展的數(shù)據(jù)存儲器內(nèi),然后退出中斷效勞程序進入過程〔1〕。電能表的運行過程用匯編程序主程序的流程圖表述為圖4.1。根據(jù)圖4.1編制的程序可以完成所設(shè)計的電能表的全部功能。每一個功能單元的程序?qū)崿F(xiàn)方法可以分以下幾局部說明:4.1.1CS5460A與單片機的數(shù)據(jù)交換實現(xiàn)方法CS5460A芯片內(nèi)部包括16個24位存放器:配置存放器、直流電流偏移存放器、交流電壓存放器、AC/DC電流增益存放器、AC/DC電壓增益存放器、周期計數(shù)存放器、脈沖速率存放器、有符號存放器、無符號存放器、時基校準(zhǔn)存放器、功率偏移存放器、交流電流偏移存放器、交流電壓偏移存放器、狀態(tài)存放器、屏蔽存放器、控制存放器。這些存放器用來完成對CS5460A的設(shè)置、采集數(shù)據(jù)的存儲以及串行輸入輸出的控制。CS5460A的串行口有一個包括接收緩沖區(qū)、發(fā)送緩沖區(qū)的命令解釋狀態(tài)機。狀態(tài)機在串行時鐘的上升沿解釋8位的命令字,狀態(tài)機在解釋完命令字之后立即執(zhí)行外部微控制器請求的命令,或者為存放器的數(shù)據(jù)傳輸做準(zhǔn)備。當(dāng)一個寫操作到執(zhí)行一個發(fā)送之前的24個串行時鐘完成時,需要一個內(nèi)部存放器把讀數(shù)據(jù)請求傳送到發(fā)送緩沖區(qū)。NNNNN復(fù)位清看門狗送數(shù)顯示是否停電?讀DS1302時鐘整數(shù)分鐘?讀瞬時電流存放器判斷是否過流?讀瞬時電壓存放器判斷電壓是否過欠壓?有鍵按下嗎?是否有電能脈沖?上電低功耗待命需要更新時段?更新時段值送停電命令是否有上電命令?處理按鍵命令執(zhí)行電能累加程序YYYYYYYN圖4.1電能表主程序流程圖系統(tǒng)一旦上電,CS5460A就被初始化并處于有效操作狀態(tài)。系統(tǒng)上電之后,設(shè)備就等待接收有效的命令。狀態(tài)機接收并解碼一個有效命令字之后就立即命令轉(zhuǎn)換器執(zhí)行一個系統(tǒng)操作或與內(nèi)部存放器之間傳送數(shù)據(jù)。CS5460A的所有命令字都是一個字節(jié)。寫到存放器的命令必須緊跟1、2或3字節(jié)的數(shù)據(jù)。其主要包括起動轉(zhuǎn)換命令,SYNC0命令,SYNC1命令,上電命令、掉電命令、校準(zhǔn)命令,存放器讀/寫命令。對CS5460A的存放器的訪問都是通過SPI串行口進行的??梢钥闯觯瑪?shù)據(jù)傳送的初始化是通過在數(shù)據(jù)傳輸之間向串行口〔SDI引腳〕按高位在先的方式發(fā)送一個8位的命令字實現(xiàn)的。當(dāng)命令字包括了一個寫操作時,串行口將在SDI引腳繼續(xù)為緊接的24個串行時鐘周期記錄數(shù)據(jù)位,其順序也是高位在先。通知一個存放器寫操作的命令字必須緊跟24位數(shù)據(jù)。當(dāng)以讀命令字初始化數(shù)據(jù)傳輸時,串行口將在SD0引腳為緊接的8、16或24個串行時鐘周期按高位在先的原那么傳送存放器的各位數(shù)字。通知存放器寫的命令字必須緊跟8、16或24位數(shù)據(jù)。在讀存放器的數(shù)據(jù)時AT89C51可以發(fā)送一個新的命令。串行口一旦接收到新的命令,它就立即執(zhí)行并可能結(jié)束前一個存放器讀。根據(jù)串行口數(shù)據(jù)傳送的時序?qū)懗龅腃S5460A的命令字寫入子程序、讀存放器子程序、寫存放器子程序如下:SDIEQUP10SDOEQUP11SCLKEQUP12;命令字寫入程序WR_COM:MOVA,R1;在主程序中將命令字送到R1中MOVR7,#8H;將命令字傳送的位數(shù)8送R7COMWORDSEND:RLCAMOVSDI,CSETBSCLKCLRSCLK;在此形成一個脈沖下降沿,數(shù)據(jù)寫入DJNZR7,COMWORDSND;判斷8個數(shù)據(jù)位是否傳送完WR_COM_END:RET;數(shù)據(jù)寫入子程序,將寫入數(shù)據(jù)的高、中、低字節(jié)存放到42H、41H、40H中WR_DATA:LCALLWR_COM;調(diào)用命令字寫入子程序MOVR2,#42HMOVR3,#03HWR_LP2:MOVR7,#08HMOVA,@R2WR_LP1:RLCAMOV5DI,CSETBSCLRCLRSCLRDJNER7,WR_LP1DECR3DJNER2,WR_LP2RET;數(shù)據(jù)讀取子程序,將讀出的數(shù)據(jù)的高、中、低字節(jié)存放到42H、41H、40H中RD_DATA;LCALLWR_COMMOVR2,#42HMOVR3,#03HRD_LP2:MOVR7,#08HMOVR0,#0FEHRD_LP1:CLRSCLKMOVC,SD0RLCAMOVR1,AMOVA,R0RLCAMOVR0,AMOVSDI,CSTEBSCLKMOVA,R1DJNER4,RD_LP1MOV@R2,ADECR2DJNER3,RD_LP2RET在電能表中當(dāng)單片機AT89C51需要讀取CS5460A的存放器獲取瞬時電流、瞬時電壓、瞬時功率,設(shè)置CS5460A的存放器的值時,都是通過調(diào)用這兩個程序來實現(xiàn)的。4.1.2對日歷/時鐘DS1302的讀寫操作的軟件實現(xiàn)在電能表中與時間有關(guān)的判斷和時間讀取都是通過DS1302與AT89C51的接口完成的。在電能表接到時鐘校正信號時,電能表的AT89C51就會向DS1302寫命令字;在判斷時段時,需要讀取DS1302的時間存放器以及片內(nèi)數(shù)據(jù)存儲器完成時間段的比擬;用戶進行時段設(shè)置查詢時,需要讀取DS1302片內(nèi)的數(shù)據(jù)存儲器。DS1302所有數(shù)據(jù)的讀寫都是通過向DS1302寫入命令字的方式告訴其讀寫地址單元以及將進行的是讀操作還是寫操作。每一數(shù)據(jù)傳送由命令字節(jié)初始化。最高有效位MSB(位7)必須為邏輯1,如果它是0,禁止寫DS1302。位6為邏輯0指定時鐘/日歷數(shù)據(jù);邏輯1指定RAM數(shù)據(jù)。位1至5指定進行輸入或輸出的特定存放器。最低有效位LSB(位0)為邏輯0指定進行寫操作(輸入);邏輯1指定讀操作(輸出)。DS1302的命令字格式:765432101RAMA4A3A2A1A0RD在電能表中對串行EEPROM的讀寫X5045片內(nèi)包括一個指令存放器、寫使能存放器、狀態(tài)存放器。送往指令存放器的命令集如表4.1所示。AT89C51對指令存放器的訪問是通過串行輸入線〔SI〕進行的。在片選信號〔QUOTE〕為低電平并且寫保護信號〔QUOTE〕為高電平時,數(shù)據(jù)在串行時鐘信號SCK的上升沿由時鐘同步輸入。所有數(shù)據(jù)的傳輸都是以高位在前的方式進行傳送。在用WREN指令置位寫使能鎖存器之后進行寫操作、再用WRDI指令復(fù)位鎖存器。狀態(tài)存放器中可以設(shè)置看門狗定時器的定時時間,在電能表的程序設(shè)計中,選擇了看門狗定時周期位600ms。指令名指令格式操作WREN00000110設(shè)置寫使能鎖存器(允許寫操作)WRDI00000100復(fù)位寫使能鎖存器(禁止寫操作)RDSR00000101讀狀態(tài)存放器WRSR00000001寫狀態(tài)存放器(塊鎖定位)READ0000A011從所選地址的存儲器陣列開始讀出數(shù)據(jù)WRITE0000A010把數(shù)據(jù)寫入所選的存儲器陣列(1—4字節(jié))表4.1X5045命令集串行輸入線(51)上輸入的數(shù)據(jù)在SCK的上升沿被鎖存,數(shù)據(jù)在SCK的下降沿輸出到串行輸出線(50)上。AT89C51與X5045的接口軟件包括設(shè)置寫使能鎖存器子程序(COMMSUB),讀狀態(tài)存放器子程序X_RDSR,字節(jié)讀子程序X_RDBYTE,字節(jié)寫子程序X_WRBYTE,復(fù)位看門狗子程序WATCHDOG。對設(shè)置寫使能鎖存器子程序、復(fù)位寫使能鎖存器子程序、寫狀態(tài)存放器子程序來說,可以通過給數(shù)據(jù)緩沖區(qū)寫入不同的命令字調(diào)用同一子程序,根據(jù)X5045的讀寫操作時序編寫的在電能表主程序中調(diào)用的子程序。COMMSUB:CLRP17;P17接X5045的串行時鐘引腳SCKCLRP13;P13接X5045的片選引腳MOVA,R1;R1用于存放命令字CALLOUTDATACLRP17SETBP13RETX_RDSR:CLRP17;P17接X5045的串行時鐘引腳SCKCLRP13;P13接X5045的片選引腳MOVA,R1;R1用于存放命令字CALLOUTDATACALLINDATACLRP17SETBP13RETX_WRBYTE:CLRP17CLRP13MOVA,R1MOVB,R2MOVC,B.0MOVACC.3,CCALLOUTDATA;發(fā)送寫指令CALLA,R3;R3用于存放地址的低位字節(jié)CALLOUTDATA;發(fā)送地址MOVA,R2CALLOUTDATACLRP17SETBP13RETX_RDSR:CLRP17;P17接X5045的串行時鐘引腳SCKCLRP13;P13接X5045的片選引腳MOVA,R1;R1用于存放命令字MOVB,R2;R2用于存放地址的高位字節(jié)MOVC,B.0MOVACC.3,CCALLOUTDATACALLA,R3CALLOUTDATAMOVA,R2CALLINDATACLRP17SETBP13RETOUTDATA:MOVR4,#08HOUT1:CLRP17RLCAMOVP16,C;P16接X5045的串行輸入引腳SETBP17DJNZR4,OUT1CLRP16RETINDATA:MOVR4,#08HOUT2:SETBP17CLRP17MOVC,P15;P15接X5045的串行輸出引腳RLCADJNZR4,OUT2CLRP16RETWATCHDOG:CLRP13SETBP13RET矩陣鍵盤鍵功能處理程序電能表的鍵盤處理程序采用編程掃描工作方式進行處理。在主程序中每循環(huán)一次主程序就判斷一次“是否有按鍵按下〞的事件。當(dāng)查詢有鍵被按下時,程序按以下方法進行處理:軟件延時一段時間再判斷鍵盤狀態(tài),如果仍為有鍵按下狀態(tài),那么認為有一個確認的鍵按下,否那么按鍵抖動處理;在確認有鍵按下的條件下,通過掃描的方式求取鍵值;鍵閉合一次僅進行一次鍵功能操作。對于需要多個組合鍵才能完成的功能來說,把屢次所得的鍵值相加后送存放器A,然后完成相應(yīng)功能。鍵掃描程序流程圖如圖4.9。鍵掃描程序流程圖中的12ms軟件延時用來消除鍵抖動現(xiàn)象的。當(dāng)有多個鍵被依次按下時,把每次按下的鍵值存于緩沖區(qū)中,當(dāng)沒有鍵按下時再把鍵值總和送存放器A中,根據(jù)A中的鍵值和執(zhí)行相應(yīng)功能。圖4.圖4.2鍵掃描程序流程圖YNN開始調(diào)用子程序延時12ms有鍵閉合否?判斷閉合鍵值—>棧閉合鍵釋放?有無鍵按下?鍵值和—>A進行相應(yīng)功能處理返回YYN液晶顯示器SMS0601在電能表中顯示功能實現(xiàn)液晶顯示器SMS0601的程序由生產(chǎn)公司隨帶產(chǎn)品提供,只需用戶根據(jù)需要填寫用戶程序。在電能表局部需要顯示的內(nèi)容包括時間、電量、單位為伏特的電壓、單位為安培的電流。在程序設(shè)計過程中在主程序中根據(jù)需要顯示二進制數(shù)字查表得到相應(yīng)的十進制數(shù)字的顯示代碼,然后把相應(yīng)的顯示代碼送顯示器緩沖區(qū),最后調(diào)用顯示程序顯示電量或時間。在程序設(shè)計中顯示器緩沖區(qū)被定義在從單片機片內(nèi)的數(shù)據(jù)存儲器空間的50H—56H單元。對于兩個時間間隔

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論