智能電表;51單片機;V9881D;精確測量_第1頁
智能電表;51單片機;V9881D;精確測量_第2頁
智能電表;51單片機;V9881D;精確測量_第3頁
智能電表;51單片機;V9881D;精確測量_第4頁
智能電表;51單片機;V9881D;精確測量_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

緒論設計背景伴隨我國經(jīng)濟的飛速發(fā)展,電力已經(jīng)成為國家的不可或缺的能源。然而目前的用電管理方式太過落后,始終采用先裝表用電然后抄表付費的傳統(tǒng)作業(yè)模式,并且絕大部分的電表都是分散的。但是這種管理方式對用戶和管理人員來說,十分不方便,而且有一定的弊端。為了適應現(xiàn)代智能電網(wǎng)的發(fā)展要求,保證用戶安全、方便、合理的用電,必須改進傳統(tǒng)的電表和用電方式,使之符合現(xiàn)代智能電網(wǎng)的發(fā)展。很長一段時間來,我國主要生產(chǎn)感應式機械交流電表,雖然近幾年開始生產(chǎn)使用簡單的數(shù)字式電能表,但抄表絕大部分仍采用人工的方式。我們的社會正在逐漸步入信息化,網(wǎng)絡化時代,電力系統(tǒng)也逐漸變得更加智能化,人工抄表對電力系統(tǒng)智能化管理的阻礙逐漸顯現(xiàn)。對電力系統(tǒng)而言,除了用電終端還沒實現(xiàn)與網(wǎng)絡對接外,發(fā)電、輸電、配電等。此次設計的電能表,減少了電表功耗,計量更加準確,十分簡便快捷,工作效率大大提高,最大程度上滿足現(xiàn)代智能電網(wǎng)的要求。傳統(tǒng)電能表電能表的背景電能表在我國電工儀表行業(yè)中占很大比重。伴隨電力系統(tǒng)的發(fā)展,電能表經(jīng)歷了很多階段:從感應電能表到脈沖電能表再到純電子式電能表。感應電能表:電能表的金屬圓盤在磁場中會感應出電流,與磁場相互作用就會產(chǎn)生力,正是這個力驅動電表工作。感應電能表:工作元件與感應電能表的很相似,不過其電能脈沖轉換是由光電傳感器達成,脈沖轉換后通過電子電路處理,最終可以得到電能數(shù)據(jù)。純電子式電能表:電能計量全部由電子電路完成,所以電子式電能表的共同特點是都使用到乘法器。管理智能化要求訪問電能表的電參數(shù)逐漸增多,還需要與電能表實現(xiàn)雙向實時通訊,數(shù)字乘法器型電能表的核心是微處理器,因此其功能擴展容易,和配電自動化系統(tǒng)集成也就容易。在本世紀初,工商業(yè)用表的主流逐漸成為電子式電能表,不再是感應式電表。智能電表加強了用電管理智能化的能力。目前復費率表技術發(fā)展迅速,預付費技術也日漸完善,尤其是IC卡和非接觸式卡等技術的使用,大大提高了預付費表的安全性和可靠性。電能表的發(fā)展方向隨著國家城鄉(xiāng)電網(wǎng)改造,電工儀表行業(yè)有了一個飛速的發(fā)展,但是改造完成后,電工儀器儀表行業(yè)發(fā)展逐漸平穩(wěn),進入發(fā)展低潮,但發(fā)展沒有停止。在高新技術尤其是電子信息技術快速發(fā)展下,要求電表不僅僅能完成電量的簡單計量,還能實現(xiàn)管理、自動抄表等若干功能。電能表發(fā)展的主流將會是純電子式,測量精度高、功能多樣化、費率多樣化、網(wǎng)絡化、抄表自動化等,而且在未來,這種發(fā)展趨勢會越來越明顯。智能電能表智能電表的概念智能電表,顧名思義就是把傳統(tǒng)電表智能化,除了能夠實現(xiàn)簡單的計量外,還能實現(xiàn)電功率、電能等電參數(shù)的準確實時計量,與上位機實時通訊,用電管理等功能。智能電表技術主要應用微機技術、通訊技術等技術,把智能芯片作為核心。智能電能表的一般結構硬件部分主要由數(shù)據(jù)采集電路,電能計量芯及相關電路,單片機及相關電路,通信接口電路。數(shù)據(jù)采集電路實現(xiàn)模擬信號和數(shù)字信號的轉換。單片機及其外圍電路實現(xiàn)程序和數(shù)據(jù)的存儲并完成相關的程序、數(shù)據(jù)運算和處理。人與儀表的相互“交流”,主要通過液晶顯示屏,上位機等。通信接口電路將儀表和計算機聯(lián)系在一起,實現(xiàn)儀表和計算機信息的實時交換。軟件部分主要分為兩部分,一部分主要針對鍵盤、單片機I/O接口、存儲器和顯示器等,控制協(xié)調他們正常工作,另一部分主要針對通信接口,控制協(xié)調儀表和計算機通信。比如操作鍵盤可以輸入并存儲電表的相關功能、操作方式以及工作參數(shù);控制單片機I/O接口電路完成數(shù)據(jù)采集;控制存儲器可以把電表的各種狀態(tài),測量的電能數(shù)據(jù)分時實時地存儲;控制液晶顯示器可以把電表的各種狀態(tài),測量的電能數(shù)據(jù)通過圖形、字符、數(shù)字等形式顯示給用戶。控制通信接口接收和分析來自通信總線的各種程序操作碼,并根據(jù)計算機的遠程命令,通過通信接口將電表的工作狀態(tài)和測量的電能數(shù)據(jù)等輸出到上位機,或者完成計算機要求的相應的動作。智能電表的主要特點1.測量精度高,2.可以間接測量難以測量的參數(shù),如無功功率、功率因數(shù)等。3.具有簡單的控制功能,如過負荷控制。4.具有按鍵查詢功能,通過按鍵可以查詢顯示電量參數(shù),設定儀表的處置參數(shù)。5.具有通信接口,可以對智能電表遠程控制,使其具有自動抄表功能,還可以與計算機或其他儀表組合使用,構成功能多樣的測量系統(tǒng)。系統(tǒng)方案設計系統(tǒng)設計的基本思路通過電壓、電流采樣電路,將模擬信號輸入計量芯片V9881D,電能計量芯片V9881D經(jīng)過一系列的操作,輸出相應的脈沖。單片機STC89C51可以測量瞬時有功功率,完成對功率、電能及其他電參量的精確測量,設定時間參數(shù)后,還可以實現(xiàn)分時計量和存儲等功能。單片機STC89C51還可以上位機實時通訊,完成電量信息和控制指令的交互。具體設計任務測量相關的電參量,即采集電壓信號和電流信號輸入到計量芯片V9811D中。設計出系統(tǒng)結構框圖,完成系統(tǒng)硬件電路的設計,具體包括電壓、電流采樣等計量電路的設計,計量芯片和單片機的接口電路設計,單片機外圍電路的設計以及數(shù)據(jù)存儲模塊、時鐘模塊、顯示模塊、電源模塊和通信接口電路的設計。電能測量原理在物理上,電能就是電源流向負載的能量流。通過在一定時間內用戶消耗的電能的速度可以被稱為瞬時功率,在數(shù)學上也可以被看作是瞬時電壓和電流瞬時值的乘積,所有這些“即時”的電能消耗全部加在一起就是電能消耗的總數(shù)。因此,該產(chǎn)品的有功功率的電壓和電流的瞬時值的積分時間的表達式如下:設在t時刻I的表達式為:得平均有功功率P為一個T內的電能W為總能量就是三個分相能量相加的和值:在現(xiàn)實電網(wǎng)中,電壓電流信號是由50Hz頻率分量的正弦信號荷很多諧波信號組成的。事實上,我們可以清楚地察覺到直流分量和高頻分量的信號被包含在瞬時功率信號之內,從長遠的角度來看,但凡頻率不為0的頻率分量和時間積分沒有任何的聯(lián)系,它們互不干擾。為了獲得直流分量,需要對瞬時功率信號進行檢測。系統(tǒng)結構框圖系統(tǒng)結構圖是系統(tǒng)硬件電路設計的基礎系統(tǒng)結構框圖本次設計的單相電能表核心芯片是V9881D計量芯片和STC89C52單片機,利用單片機定時/計數(shù)器T0端對V9881D輸出的脈沖計數(shù),再根據(jù)計量芯片V9881D的計量原理,就可以測得有功、無功等電參量。單片機利用AT24C02芯片對電參量的定時存儲,利用按鍵進行電參量的查詢,利用1602液晶顯示器進行電參量的顯示,利用RS232總線把電參量進行遠程傳送,傳送到電腦上位機。DS1302時鐘芯片可以為電表計量存儲提供時間參數(shù),同時可以作為數(shù)字時鐘。電源模塊可以采用電源插座直接供電。本章小結本章首先介紹了系統(tǒng)設計的基本思路,通過電壓、電流采樣電路,將模擬信號輸入計量芯片,輸出相應的脈沖。單片機可以完成對功率、電能及其他電參量的精確測量,設定時間參數(shù)后,還可以實現(xiàn)分時計量和存儲等功能。其次分析了具體的設計任務,最后研究了系統(tǒng)結構框圖。硬件設計系統(tǒng)硬件電路設計本章節(jié)主要是對硬件電路進行說明,通過劃分各個功能模塊,選擇相關的芯片。設計了V9881D外圍電路,包括電壓、電流采樣電路的設計,計量芯片V9881D與單片機接口電路的設計,同時闡述了電能計量的一般原理和相關電路參數(shù)計算;設計了STC89C52外圍電路,包括單片機最小系統(tǒng)以及外圍相關模塊的電路設計。計量芯片V9881DV9811D的特點是高性能、低功耗,他由集成模擬前端、電能計量模塊、增強型內核、WDT、Flash、RTC、SRAM和LCD驅動等功能模塊組成。V9881D的主要特點5V電源供電,電壓輸入范圍:2.5V~5.5V。低功耗設計:全速工作時,芯片典型工作電流:5.5mA。休眠時,芯片典型工作電流:10μA?;鶞孰妷海?.185V(10ppm/°C),外部電容漏電時產(chǎn)生中斷支持靈活的防竊電應用支持LQFP-100/64、TQFP-48和SSOP-24封裝工作溫度:-40~+85°C儲存溫度:-40~+125°C引腳分布圖電壓采集通道設計在電路理論方面上說,電壓采集通道電路要首先保證輸入計量芯片ADE7757電壓通道中的電壓信號處于芯片的工作范圍內,所以電壓采集通道可以采用電阻分壓電路來實現(xiàn)。通常電能表工作的環(huán)境是不定的,而且電能表元件參數(shù)也會存在一定的誤差,因此在分壓電路中,設計一個電阻調整網(wǎng)絡,這樣便可以使電壓信號大小在一定范圍內改變,從而可以校驗計量芯片ADE7757輸出脈沖的頻率,調整電能表的精確度,所以分壓電路又有校驗的作用。如圖,改變跳線J就可以短接R,從而調整整個電阻網(wǎng)絡的總電阻,有調整和校驗的作用。電壓采集通道電流采集通道設計電流采集通道電路相當于一個PGA可編程差動放大電路,外圍電路的目的是抗混頻濾波,圖中的R3C5和R4C7組成了兩個一階低通濾波器,把電流通道中的高頻成分濾除。因此為了減少誤差,抗混頻濾波器選取的電容器和電阻器必須為精密的。電流通道單片機外圍電路設計及器件選擇單片機STC89C52概述STC89C52是生產(chǎn)于宏晶科技公司,它運行的速度快,抗干擾的能力強,功耗低,和傳統(tǒng)單片機相比較,是新一代的單片機。而且在多了很多新功能與特性的同時,他的指令代碼等也可以和傳統(tǒng)的8051單片機完全兼容。不僅如此,它的兩種工作機器周期,包括12時鐘/機器周期和6時鐘/機器周期,并且使用者可以任選以上兩周中期其一來配合自己的實際使用。該單片機提供的應用程序的存儲空間足足有8K字節(jié),同時還具有512字節(jié)的RAM。I/O口多為通用的,一共有32個。該型號的單片機可以編程的環(huán)境也很廣泛,包括在系統(tǒng)中完成編程的,也還可以在應用中完成編程。因此對它編程通過串口RxD和TxD即P3.0和P3.1端口即可完成,也就省去了專門編程使用的編程器,當然也是不需要特別的專業(yè)的仿真器,這樣就加快了下載用戶程序的速度,只需短短幾秒便可以完成。他的一個16位定時器\計數(shù)器,便是他與傳統(tǒng)的單片機的差距了,傳統(tǒng)8051單片機并沒有16位的定時計數(shù)器,所以STC89C52一共存在3個16位定時器\計數(shù)器,即定時器T0、T1、T2。它外部有4路可以由下降沿或低電平觸發(fā)的外部中斷,它還具有通用的異步串行口(UART),如果使用定時器軟件,就可實現(xiàn)多個通用的異步串行口。STC89C52RC單片機的正常工作模式加上掉電模式還有空閑模式。這就是該單片機的三種工作模式。其中正常工作模式的功耗是很低的,掉電模式的功耗更低,功耗通常小于0.1μA,單片機在這種模式下工作,如果一旦出現(xiàn)了外部中斷,就會被立即喚醒,當中斷返回之后,就會繼續(xù)執(zhí)行原程序,因此這種模式通常在水表、電表、氣表等由電池供電的系統(tǒng)及便攜設備中使用??臻e模式的功耗通常為2mA。下圖即是STC89C52單片機的引腳配置,STC89C52的引腳配置圖STC89C52RC主要引腳功能說明如下表所示,STC89C52RC主要引腳功能說明

引腳號名稱功能40引腳VCC電源電壓20引腳VSS接地39~32引腳P0端口(P0.0~P0.7)通用I/O口1~8引腳P1端口(P1.0~P1.7)21~28引腳P2端口(P2.0~P2.7)21~28引腳P3端口(P3.0~P3.7)9引腳RST復位輸入30引腳ALE地址鎖存控制信號19引腳XTAL1振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端18引腳XTAL2振蕩器反相放大器的輸入端P1.0和P1.1端口除了作為一般的準雙向I/O口使用外,還可以作為外部計數(shù)輸入端口,從而為定時器/計數(shù)器服務。下表便是其引腳的復用功能。

引腳號功能特性P1.0T2(定時器/計數(shù)器2外部計數(shù)輸入),時鐘輸出

P1.1T2EX(定時器/計數(shù)器2捕獲/重裝觸發(fā)和方向控制)

P3口除作為一般I/O口外,還有許多復用功能,其引腳復用功能具體參見下表,

引腳號復用功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0)P3.3(外部中斷1)P3.4T0(定時器0的外部輸入)P3.5T1(定時器1的外部輸入)P3.6(外部數(shù)據(jù)存儲器寫選通)P3.7(外部數(shù)據(jù)存儲器讀選通)單片機控制電路最小系統(tǒng)單片機控制電路最小系統(tǒng)如圖所示,單片機控制電路最小系統(tǒng)復位電路單片機具有系統(tǒng)上電復位和在系統(tǒng)運行過程中,通過人工按鈕復位,這兩種復位的方式。由于系統(tǒng)在實際運行過程中,人工按鈕復位是最通用的,這就是本設計中采用該上電按鈕復位的原因。晶振電路單片機晶振電路單片機內部存在這一個反相放大器,其輸入端為XTAL1,輸出端為XTAL2,該反相放大器可以用作構成內部振蕩器。本次設計中,內部時鐘接法是本次單片機的晶振電路的接法,具體接線如上圖所示。LCD顯示器模塊設計LCD顯示器工作原理簡介LCD液晶顯示器是一種應用非常廣泛的顯示器,分為字段顯示和字符顯示兩種。因此在便攜式儀表和低功耗的高檔儀器儀表廣泛采用LCD液晶顯示器。其字段顯示與LED顯示相似,只要送對應的信號到相應的管腳就能顯示。字符顯示是根據(jù)需要顯示基本字符。本設計采用的是字符型顯示。系統(tǒng)中采用LCD1602作為顯示器件輸出信息。與傳統(tǒng)的LED數(shù)碼管顯示器件相比,液晶顯示模塊具有體積小、功耗低、顯示內容豐富等優(yōu)點,而且不需要外加驅動電路,現(xiàn)在液晶顯示模塊已經(jīng)是單片機應用設計中最常用的顯示器件了。LCD1602可以顯示2行16個漢字。芯片1602簡介芯片1602的引腳圖如下圖所示芯片1602管腳圖芯片1602引腳功能說明引腳號名稱功能1腳VSS地電源2腳VDD5V正電源3腳VL液晶顯示器對比度調整端4腳RS寄存器選擇端5腳R/W讀寫信號線6腳E端使能端7~14腳D0~D78位雙向數(shù)據(jù)線15腳背光源正極16腳背光源負極當RS和R/W接不同電平時,芯片會有不同的操作,具體操作如表所示,RSR/W功能低電平低電平寫入指令或者顯示地址低電平高電平讀忙信號高電平低電平寫入數(shù)據(jù)數(shù)據(jù)存儲模塊設計芯片24C02簡介24C02芯片由CATALYST公司生產(chǎn)的,他的內部含有8位字節(jié)多達256個,同時24C02芯片操作簡單,他在實際使用中的優(yōu)點還是非常明顯的,比如與400KHzI2C總線完美兼容,工作電壓范圍大,從1.8到6.0伏都可以,由于CMOS技術,其功耗很低,具有寫保護功能,芯片的管腳圖如下圖所示,芯片24C02的管腳圖各管腳功能存儲模塊電路設計圖存儲模塊電路圖如下圖所示,存儲模塊電路圖

時鐘模塊設計DS1302簡介DS1302的管腳配置如下圖所示,DS1302管腳配置圖DS1302引腳功能引腳號名稱功能1腳VCC2主電源8腳VCC1后備電源2/3腳X1、X2振蕩源,外接32.768kHz晶振4腳GND地端5腳RST復位/片選線6腳I/O串行數(shù)據(jù)輸入輸出端7腳SCLK時鐘輸入端時鐘電路設計下圖為時鐘電路圖設計圖,時鐘電路圖通信模塊設計單片機通信方式并行數(shù)據(jù)傳送,顧名思義,就是同一時間內多個數(shù)據(jù)位并行同時傳送,因此提高了傳輸效率,傳送的速度也就比較快,但是快速的傳輸速度是以高成本為代價,因為并行數(shù)據(jù)傳送有多少數(shù)據(jù)位就需要多少根線,只有這樣才能實現(xiàn)同一時間內多個數(shù)據(jù)位并行同時傳送。并行數(shù)據(jù)傳送對于長距離的數(shù)據(jù)傳送來說,成本較高,它通常適用于短距離的數(shù)據(jù)傳送。串行數(shù)據(jù)傳送,顧名思義,數(shù)據(jù)傳送按位的順序依次進行,前一數(shù)據(jù)位傳送完畢后一數(shù)據(jù)位才可以傳送,因此他的傳輸速度比較慢,但是傳輸成本低,因為串行數(shù)據(jù)傳送最少只需要一根傳輸線。串行數(shù)據(jù)傳送比較適用于傳輸距離從幾米到幾千米的長距離的數(shù)據(jù)傳送。綜上所述,結合電表的實際使用,本次設計的智能電表的數(shù)據(jù)傳送采用串行數(shù)據(jù)傳送。通常,串行數(shù)據(jù)傳送又稱為串行通信。8051單片機的串行通信,具有四種工作方式,這些四種工作方式可以在實際使用中通過設置單片機的相應端口根據(jù)實際使用情況,任意選擇。RS232串行口標準簡介RS232是由美國電子工業(yè)協(xié)會于1962年指定的一種串行通信接口標準。通信設備雙方只有同時遵守這一標準,雙方才可以進行通信,它是異步串行通信中應用最廣泛的總線標準。這一標準規(guī)定了在串行通信中通信設備之間連接電路的電氣特性,約定了他們之間的通信格式,以及其他通信約定。接口電路設計通信模塊電路圖設計如圖所示,通信模塊電路圖本章小結本章我首先介紹了系統(tǒng)硬件電路,計量芯片V9881D,其次設計了電流采集通道,電壓采集通道,單片機外圍電路設計及器件選擇,LCD顯示器模塊設計,顯示電路設計,數(shù)據(jù)存儲模塊設計,最后介紹了時鐘模塊設計,通信模塊設計。軟件設計系統(tǒng)軟件程序流程圖本次軟件設計的主要思路采用的是嵌套的方法,在主程序中嵌套各種中斷程序,避免程序冗雜,影響程序正常運行。首先設計系統(tǒng)軟件的主程序,它是系統(tǒng)軟件部分的基礎,它可以啟動系統(tǒng)軟件各個功能部分,完成初始化。中斷程序是針對各種事件的處理,例如按鍵處理、數(shù)據(jù)通信等。主程序設計框圖主程序流程圖如圖所示系統(tǒng)主程序流程圖功率計量流程圖由于本次設計中的計量芯片儀表參數(shù)是6400imp/Kmh,因此16個脈沖相當于16/6400=0.0025kwh的電量或0.0025*3600000=9000J的電量。時間t由兩部分num0和num1記錄,將TH0的初值設置為56,則每(256-56)*1us=200us產(chǎn)生一次中斷。這時num自動加1,當計滿16個脈沖后,將num的值賦給num0,num1則為計滿16個脈沖那一刻TH0的值。因此有時間t=(num0*200+(num1-56))us。所以功率P=電量/時間=9000*1000000/(num0*200+(num1-56))。其流程圖如圖所示:功率計量流程圖按鍵查詢流程圖中斷程序流程圖如圖所示:中斷程序流程圖本章小結本章我首先介紹了主程序設計框圖,其次設計了功率計量流程圖,最后完成了按鍵查詢流程圖。結論經(jīng)過一個多月的緊張工作,我在老師和同學的幫助下,基本上完成了智能電表的設計。但是本次設計由于時間緊張,自己水平能力有限以及各種外部條件的限制,并沒有達到自己預想的水平。硬件部分設計主要包括電壓、電流等數(shù)據(jù)采集輸入、輸出電路的設計,電能計量芯片及相關電路的設計,單片機及外圍相關電路的設計,比如存儲模塊、時鐘模塊、顯示模塊、電源模塊、通信模塊等各個功能模塊的電路設計。軟件部分的流程圖設計,主要包括主程序設計框圖,功率計量流程圖,按鍵查詢流程圖。但是本次設計總體還是有可借鑒之處,比如本次設計選取的計量芯片是V9811D是一款高性能、低功耗的單相電能計量SoC芯片,可提供提供各種數(shù)據(jù),測量精度±1°C電池電壓/外部電壓可為單相多功能電能表提供單芯片解決方案??傊@次設計的收獲還是比較大的,通過這次設計我充分了解了傳統(tǒng)電表的發(fā)展以及弊端,知道了智能電表的概念以及其未來的巨大優(yōu)勢。通過查閱相關資料,認識了專門的電能計量芯片V9811D。同時加深了本科所學知識的理解,比如單片機的知識,微機原理的知識等。這是自己第一次真正意義上做設計寫論文,大大增強了我的自主學習能力,自己不懂知識自己到圖書管查閱資料,或到網(wǎng)上搜索,為今后的學習生活打下了良好基礎。不管最后自己的畢業(yè)論文成績如何,我相信這都是我大學最后美好的回憶。致謝經(jīng)過長時間的不斷努力,為期兩個月的畢業(yè)設計終于在此時此刻完成了。這時候感覺整個人都輕松了很多,并且感到一定的成就感。畢業(yè)設計能夠直接體現(xiàn)我們的實踐能力,并且它會涉及到很多方面的知識。這次設計,讓我在設計方面的技能和知識的到了一定的提高,并提高了我在單片機方面的知識水平。同時我也培養(yǎng)了正確設計的方法和想法,以及獨立解決實際應用中遇到的問題的工作能力。本次設計還提高了我獲取資料和分析問題的能力,同時也提高了我在設計計算、原理圖繪制、c語言、書面表達等方面的能力,為我以后進入社會工作打下良好的基礎。在這里要特別感謝我的指導老師,雖然在畢業(yè)設計的期間,我們很少見面,我們都知道現(xiàn)在科技發(fā)達,通過畢業(yè)交流群來進行交流完全可以。每當有新的關于畢業(yè)設計的消息,她都會第一時間通過群來告訴我們,而且每當問她問題時她都耐心的回答我們,因為有了她的指導我才能按時完成我的畢業(yè)設計;同時也要感謝同學們的幫助,有時候遇到不懂的東西,通常是先找同學們討論,沒有結果才問老師。最后要我要再次感謝這四年對我培養(yǎng)的所有老師,很難說再見,但是又不得不說再,你們是我最好的朋友,謝謝你們。參考文獻[1]趙偉,龐海波.電能表的發(fā)展歷史[J].電測與儀表,1999,8(2):9-11.[2]譚紹瓊.淺談電能計量裝置的發(fā)展[J].機械管理開發(fā),2007,6(5):3-8.[3]王毅.電能計量裝置介紹[J].電力自動化設備,2007,5(11):6-10.[4]鄭文,趙偉.電能自動抄表技術及相關思考[J].電測與儀表,2011,3(4):12-14.[5]黃偉.電能計量技術[M].北京:中國電力出版社,2004.65-76.[6]閻士琦.電能計量裝置接線分析200例[M].北京:中國電力出版社,2008.34-36.[7]李全利,仲偉峰,徐軍.單片機原理及應用[M].北京:清華大學出版社,2006.77-91.[8]劉樂善.微型計算機接口技術原理及應用[M].武漢:華中科技大學出版社,2005.66-89.[9]謝瑞和.串行技術大全[M].北京:清華大學出版社,2003.122-139.[10]陳龍三.8051單片機C語言控制與應用[M].北京:清華大學出版社,1999.34-57.[11]張培仁.基于C語言編程:MCS-51單片機原理及應用[M].北京:清華大學出版社,2003.54-67.[12]譚浩強.C語言程序設計.北京:清華大學出版社,2000:45-123.[13]Stiqer.Ruth.Meter-readingmethodschangeslowly[J].GasUtilitymanage,2004,48(4):26-28.[14]Lucn,Zhangbu-han,LuYi-min.Automaticmeterreadingsystemsolutionanditsrealization[J].ElectricpowerAutomationEquipment,2003,23(6):68-70[15]Satanic.D.Influenceofthetransmissionmediumqualityontheautomaticmeterreadingsystemcapacity[J].ElectricPowerAutomationEquipment,2003,23(6):68-70.附錄1單片機控制電路附錄2程序源文件#include<reg52.h> #include<intrins.h>#include<stdio.h>#defineucharunsignedchar#defineuintunsignedintsfrT2MOD=0xc9;//T2MOD在reg52.h中沒有定義,這里進sbitd1=P2^6;sbitscl=P2^1;sbitsda=P2^0;sbitRS=P2^2;sbitRW=P2^3;sbitE=P2^4;sbitBF=P0^7;sbitfmq=P2^7;sbitSCLK=P1^6;sbitDATA=P3^6;sbitRST=P3^7;sbitkey=P3^2;sbitkey1=P3^3;sbitjdq=P1^3;floatnum=0.0,num0=0.0,num1=0.0,eng=0.00,pow=0.00;xdatauchari=0,j=0;bitflag=1;ucharcodestring[]={"POW"};ucharcodestring1[]={"ENG"};ucharstring2[10];ucharstring3[10];ucharcodedigit[10]={"0123456789"};//定義字符數(shù)組顯示數(shù)字uchara1;voiddelaynus(unsignedcharn){unsignedchari;for(i=0;i<n;i++);}voiddelay1ms(){unsignedchari,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}voiddelaynms(unsignedcharn){unsignedchari;for(i=0;i<n;i++)delay1ms();}voiddelay(unsignedintn);voidWrite_com(unsignedchardictate);bitBusyTest(void);voidWriteAddress(unsignedcharx){Write_com(x|0x80);}voidWrite_com(unsignedchardictate){while(BusyTest()==1);RS=0;RW=0;E=0;_nop_();_nop_();P0=dictate;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;}voidWriteData(unsignedchary){while(BusyTest()==1);RS=1;RW=0;E=0;P0=y;_nop_();_nop_();_nop_();_nop_();E=1;_nop_();_nop_();_nop_();_nop_();E=0;}voidLcdInt(void){delay(15);Write_com(0x38);delay(5);Write_com(0x38);delay(5);Write_com(0x38);delay(5);Write_com(0x0c);delay(5);Write_com(0x06);delay(5);Write_com(0x01);delay(5);}/*****************************************************函數(shù)功能:向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):x***************************************************/voidWrite1302(unsignedchardat){unsignedchari;SCLK=0;//拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準備delaynus(2);//稍微等待,使硬件做好準備for(i=0;i<8;i++)//連續(xù)寫8個二進制位數(shù)據(jù){DATA=dat&0x01;//取出dat的第0位數(shù)據(jù)寫入1302低位在前,高位在后delaynus(2);//稍微等待,使硬件做好準備SCLK=1;//上升沿寫入數(shù)據(jù)delaynus(2);//稍微等待,使硬件做好準備SCLK=0;//重新拉低SCLK,形成脈沖dat>>=1;//將dat的各數(shù)據(jù)位右移1位,準備寫入下一個數(shù)據(jù)位}}/*****************************************************函數(shù)功能:根據(jù)命令字,向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd,儲存命令字;dat,儲存待寫的數(shù)據(jù)***************************************************/voidWriteSet1302(unsignedcharCmd,unsignedchardat){RST=0;//禁止數(shù)據(jù)傳遞SCLK=0;//確保寫數(shù)居前SCLK被拉低RST=1;//啟動數(shù)據(jù)傳輸delaynus(2);//稍微等待,使硬件做好準備Write1302(Cmd);//寫入命令字Write1302(dat);//寫數(shù)據(jù)SCLK=1;//將時鐘電平置于高電平狀態(tài)RST=0;//禁止數(shù)據(jù)傳遞}/*****************************************************函數(shù)功能:從1302讀一個字節(jié)數(shù)據(jù)入口參數(shù):x***************************************************/unsignedcharRead1302(void){unsignedchari,dat;delaynus(2);//稍微等待,使硬件做好準備for(i=0;i<8;i++)//連續(xù)讀8個二進制位數(shù)據(jù){dat>>=1;if(DATA==1)//如果讀出的數(shù)據(jù)是1dat|=0x80;//將1取出,寫在dat的最高位SCLK=1;//將SCLK置于高電平,為下降沿讀出delaynus(2);//稍微等待SCLK=0;//拉低SCLK,形成脈沖下降沿delaynus(2);//稍微等待}returndat;//將讀出的數(shù)據(jù)返回}/*****************************************************函數(shù)功能:根據(jù)命令字,從1302讀取一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd***************************************************/unsignedcharReadSet1302(unsignedcharCmd){unsignedchardat;RST=0;//拉低RSTSCLK=0;//確保寫數(shù)居前SCLK被拉低RST=1;//啟動數(shù)據(jù)傳輸Write1302(Cmd);//寫入命令字dat=Read1302();//讀出數(shù)據(jù)SCLK=1;//將時鐘電平置于已知狀態(tài)RST=0;//禁止數(shù)據(jù)傳遞returndat;//將讀出的數(shù)據(jù)返回}/*****************************************************函數(shù)功能:1302進行初始化設置***************************************************/voidInit_DS1302(void){WriteSet1302(0x8E,0x00);//根據(jù)寫狀態(tài)寄存器命令字,寫入不保護指令WriteSet1302(0x80,((00/10)<<4|(0%10)));//根據(jù)寫秒寄存器命令字,寫入秒的初始值WriteSet1302(0x82,((00/10)<<4|(0%10)));//根據(jù)寫分寄存器命令字,寫入分的初始值WriteSet1302(0x84,((00/10)<<4|(0%10)));//根據(jù)寫小時寄存器命令字,寫入小時的初始值WriteSet1302(0x86,((00/10)<<4|(0%10)));//根據(jù)寫日寄存器命令字,寫入日的初始值WriteSet1302(0x88,((00/10)<<4|(0%10)));//根據(jù)寫月寄存器命令字,寫入月的初始值WriteSet1302(0x8c,((00/10)<<4|(0%10)));//根據(jù)寫年寄存器命令字,寫入年的初始值WriteSet1302(0x8E,0x80);//根據(jù)寫狀態(tài)寄存器命令字,寫入保護指令}voidDisplaySecond(unsignedcharx){unsignedchari,j;//j,k分別儲存十位和個位i=x/10;//取十位j=x%10;//取個位WriteAddress(0x49);//寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digit[i]);//將百位數(shù)字的字符常量寫入LCDWriteData(digit[j]);//將十位數(shù)字的字符常量寫入LCDdelaynms(50);//延時1ms給硬件一點反應時間}/*****************************************************函數(shù)功能:顯示分鐘入口參數(shù):x***************************************************/voidDisplayMinute(unsignedcharx){unsignedchari,j;//j,k十位和個位i=x/10;//取十位j=x%10;//取個位WriteAddress(0x46);//寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digit[i]);//將百位數(shù)字的字符常量寫入LCDWriteData(digit[j]);//將十位數(shù)字的字符常量寫入LCDdelaynms(50);//延時1ms給硬件一點反應時間}/*****************************************************函數(shù)功能:顯示小時入口參數(shù):x***************************************************/voidDisplayHour(unsignedcharx){unsignedchari,j;//j,k十位和個位i=x/10;//取十位j=x%10;//取個位WriteAddress(0x43);//寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digit[i]);//將百位數(shù)字的字符常量寫入LCDWriteData(digit[j]);//將十位數(shù)字的字符常量寫入LCDdelaynms(50);//延時1ms給硬件一點反應時間}/*****************************************************函數(shù)功能:顯示日入口參數(shù):x***************************************************/voidDisplayDay(unsignedcharx){unsignedchari,j;//j,k十位和個位i=x/10;//取十位j=x%10;//取個位WriteAddress(0x0c);//寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digit[i]);//將十位數(shù)字的字符常量寫入LCDWriteData(digit[j]);//將個位數(shù)字的字符常量寫入LCDdelaynms(50);//延時1ms給硬件一點反應時間}/*****************************************************函數(shù)功能:顯示月入口參數(shù):x***************************************************/voidDisplayMonth(unsignedcharx){unsignedchari,j;//j,k分別儲存十位和個位i=x/10;//取十位j=x%10;//取個位WriteAddress(0x09);//寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digit[i]);//將十位位數(shù)字的字符常量寫入LCDWriteData(digit[j]);//將個位數(shù)字的字符常量寫入LCDdelaynms(50);//延時1ms給硬件一點反應時間}/*****************************************************函數(shù)功能:顯示年入口參數(shù):x***************************************************/voidDisplayYear(unsignedcharx){unsignedchari,j;//j,k分別儲存十位和個位i=x/10;//取十位j=x%10;//取個位WriteAddress(0x06);//寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digit[i]);//將十位位數(shù)字的字符常量寫入LCDWriteData(digit[j]);//將個位數(shù)字的字符常量寫入LCDdelaynms(50);//延時1ms給硬件一點反應時間}voiddelay(unsignedintn){unsignedinti,y;for(i=0;i<n;i++)for(y=115;y>0;y--);}bitBusyTest(void){bitresult;RS=0;RW=1;E=1;_nop_();_nop_();_nop_();_nop_();result=BF;E=0;returnresult;}voidmain(void){intm1,m2;jdq=0;LcdInt();delay(10);TMOD=0x16;TH1=(65536-200)/256;TL1=(65536-200)%256;TH0=(65536-16)/256;TL0=(65536-16)%256;TR0=1;TR1=1;EA=1;ET0=1;ET1=1;/*外部中斷定義*/EX0=1;EX1=1;IT0=1;IT1=1;T2CON=0x34;//定義串口收發(fā)模式RCAP2H=0xff;RCAP2L=0xdc;//RCAP2H一定給0XFF,RCAP2L的值:把fosc/baud/32的值換成16進制,用10000h-這個值,后面2個數(shù)SCON=0x50;//方式1,10位異步收發(fā),8位數(shù)據(jù),無奇偶校驗位TR2=1;Init_DS1302();//將1302初始化while(1){WriteData(a+48);WriteData('.');WriteData(c+48);WriteData(d+48);*/i=0;while(m1--){WriteData(string2[i]);i++;delay(100);}WriteAddress(0x40);i=0;while(string[i]!='\0'){WriteData(string[i]);i++;delay(100);}WriteAddress(0x45);delay(5);i=0;while(m2--){WriteData(string3[i]);i++;delay(100);}}for(i=0;i<5;i++){SBUF=string2[i];while(!TI);TI=0;delay(13);}SBUF='!';while(!TI);TI=0;delay(10);}}voidt0()interrupt1{eng+=16.0/3200;num0=num;num1=TL1;TH0=(65536-16)/256;TL0=(65536-16)%256;if(num0==0&&num1==0)pow=0;else{pow=1*18000*1000000/(num0*200+(num1-65336));num=0;}d1=0;del

溫馨提示

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

評論

0/150

提交評論