【正文】
摘要本論文主要是單相電子式預(yù)付費電度表的設(shè)計,包括電能計量系統(tǒng)方案選擇,預(yù)付費系統(tǒng)方案選擇,電源電路、控制電路、顯示電路、掉電保護電路、電能存儲器、磁保持電路、IC卡接口電路等模塊的設(shè)計,程序編寫,電表穩(wěn)定性設(shè)計等部分。 Prepaid。同時,電子技術(shù)、計算機技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,給供電部門和用電部門、居委會或物業(yè)管理部門在供用電管理的規(guī)范化、自動化和收費網(wǎng)絡(luò)化方面提供了可能。如著名的珠鷹大廈、碧桂園鳳凰城等著名樓盤,中國南方航空公司、廣州軍區(qū)司令部、陸軍總醫(yī)院、廣東工業(yè)大學(xué)等部隊、院校,均通過采用智能IC卡表預(yù)付費系統(tǒng),極大地促進了管理水平,提升了品位。且已經(jīng)逐步成為電能表發(fā)展的主流,在未來幾年里,這種趨勢將更加明顯。(4)電能的計算關(guān)系到用戶交納電費的多少,涉及經(jīng)濟的實際,不允許出現(xiàn)錯誤,所以電能表對電能計算準(zhǔn)確精度高。這樣轉(zhuǎn)盤每轉(zhuǎn)一圈,產(chǎn)生一個脈沖,再通過對脈沖的整形計數(shù),顯示完成電能的計量。: 電壓頻率轉(zhuǎn)換式這種方案CPU要實現(xiàn)讀寫卡控制,求功率因數(shù),電能計算等功能,負(fù)擔(dān)較重,一般的MCS51,MCS96和PIC系列單片機難以勝任。多采用2線串行通信協(xié)議(I2C總線協(xié)議)或3線串行通信協(xié)議(SPI協(xié)議),存儲器卡的典型型號有:AT24C01AL02/04/08/16/32/64二線串行EEPROM; AT93C46/56/66三線串行EEPROM;SLE4418智能型1KB EEPROM,等等。③RAM用于存放中間處理結(jié)果及作為卡與讀寫器間的信息,交換的中間緩沖器128B~1KB。由于讀寫之間無機械接觸,避免了因接觸讀寫而產(chǎn)生的各種故障;且射頻CPU卡及讀寫器表面均無裸露的接觸,無需擔(dān)心觸點損壞或脫落,卡彎曲損害所致之卡片失效;卡與讀寫器均為全封閉防水防塵結(jié)構(gòu),既避免靜電,塵污對卡的影響,也可防止粗暴插卡,異物插入讀寫器插槽以及讀寫器“吃卡”等問題。通過以上四種方案的綜合比較可以看出,方案一適合學(xué)校的定量用電,在設(shè)計中選用AT24C04為存儲器卡,用Visual c++在微機上編制相應(yīng)的售電管理系統(tǒng),配以相應(yīng)的讀卡器實現(xiàn)對IC卡的初始化,卡號識別充值等操作。8 具有掉電保護功能。4硬件電路及工作原理本設(shè)計采用有功電能測量集成電路SM9003,芯片中包含了四象限模擬乘法器,積分器,電壓率頻轉(zhuǎn)換器VFC,計數(shù)器(分頻器)及控制邏輯,它能將正弦電壓和電流相乘后,轉(zhuǎn)換為頻率輸出。下面是各個模塊的工作原理:電能計量電路采用電子電度表專用集成電路SM9003,首先有必要介紹一下SM9003的相關(guān)特點和技術(shù)參數(shù)。⑤直接驅(qū)動步進電機⑥適用于單相,三相電度表。 輸出無調(diào)制的脈沖信號在設(shè)計中,:,用精密金屬作為電壓采樣電阻。這一致命的弱點將導(dǎo)致電度表的可靠性下降。51系列單片機簡介單片機是在一塊硅片上集成了各種部件的微型計算機??刂七壿嬛饕ǘ〞r和控制邏輯、指令寄存器、譯碼器以及地址指針DPTR和程序計數(shù)器PC等。51單片機在物理上有4個存儲空間:片內(nèi)程序存儲器和片外程序存儲器;片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。為了提高IC卡的可靠性,必須有卡上下電控制電路,卡插入檢測電路,卡短路檢測等輔助電路,結(jié)合軟件可大大提高其讀寫的準(zhǔn)確性和可靠性。常用的并行接口EEPROM芯片有2816(2K8bit)、2817(2K8bit)、2864(8K8bit)等.串口接口EEPROM芯片體積小、功耗低、占用系統(tǒng)放入信號線少、電路簡單。由于總線接口以集成在單片機內(nèi),用戶無需設(shè)計接口,使設(shè)計時間大為縮短。主器件 (通常為單片機)和從器件均可工作于接收器和發(fā)送器狀態(tài)。在時鐘線保持高電平期間,數(shù)據(jù)線出現(xiàn)由高電平向低電平的變化時,作為起始信號S,啟動I2C總線工作。下面以內(nèi)部無I2C接口的8051單片機擴展I2C總線E2PROM24CXX為例,說明擴展I2C接口的軟件設(shè)計方法。AT24CXX采用I2C規(guī)約,采用主/從雙向通信,主器件通常為單片機,主器件產(chǎn)生串行時鐘,發(fā)出控制字,控制總線的傳送方向就,并產(chǎn)生開始和停止條件,串行E2PROM為從器件,無論主器件還是從器件,接受一字節(jié)后必須發(fā)出一個應(yīng)答信號ACK??刂谱止?jié)AAA0的選擇必須與外部引腳的硬件或者內(nèi)部塊選擇匹配,AAA0引腳無內(nèi)部連接的,則這3位無關(guān)緊要,須作器件選擇的,其AAA0引腳可接高電平或低電平。再接收一字節(jié)后,接收器件必須產(chǎn)生一個應(yīng)答信號ACK主器件必須產(chǎn)生一個于此應(yīng)答信號相應(yīng)的額外時鐘脈沖。接收每一字節(jié)以后,低位順序地址指針在內(nèi)部加1,高位順序地址保持為常數(shù)。: AT24CXX讀當(dāng)前內(nèi)容的時序(2)讀指定地址內(nèi)容這是指定1個需要讀取的存儲單元地址,然后對其進行讀取的操作。這就大大節(jié)省了能量,降低了功耗,:、驅(qū)動電路由電阻R2R4R4R4R4R4R50、R5PNP三極管VTVT三極管VTVT VTVT8組成。軟件的設(shè)計占了整個產(chǎn)品的大部分時間。用以實現(xiàn)脈沖計數(shù),從而實現(xiàn)電能的累加。單片機對電源要求最高采用線性穩(wěn)壓電源。為防止電源波動時多次產(chǎn)生掉電信號,從而引起多次寫EEPROM操作,電路應(yīng)具有滯回特性(施密特特性)。若正確,寫入;否則退出。剩余電能必須是二十進制碼(BCD碼)。設(shè)計期間,我學(xué)到:治學(xué)務(wù)必嚴(yán)謹(jǐn)、思維務(wù)必開闊、科研務(wù)必創(chuàng)新。在本次設(shè)計之后,我們基本上獲得了預(yù)期的收獲,有效的達到了畢業(yè)設(shè)計的目的和要求,完成了設(shè)計的任務(wù)。void Delay ( uint ms ) // 延時{ unchar i。 //開始讀 Delay ( 1 ) 。 }void write_LCD_mand ( unchar cmd ) //寫LCD命令{ LCD_Busy_wait ( ) 。}void write_LCD_data ( unchar dat ) //寫LCD命令數(shù)據(jù){ LCD_Busy_wait ( ) 。}void Intialize_LCD ( ){ void write_LCD_mand ( 0x38) 。} Void showstring( unchar x,unchar y,unchar *str) { unchar i=0。a[2]=((d%1000)%100)/10+’0’。void startc ( ){ SDAC=1。 NOP4( )。 SDAC=1。 i8。}Void write_IICC( unchar addr ,unchar dat ){ Startc( )。 i8。 write_A_Bytec( 0xa1 )。 stop( )。 NOP4( )。}void RASK ( ){ SDA=1。 SCL=0。 SCL=1。 stop( )。 SCL=0。 Return d。 electricity++。sbit P1_0=P1^0。 TMOD=0x03。 If(P1_5==1){showstring( 0x0100,0, string[2])。}else showstring( 0x0100,0, string[5]。}}附錄三 中英文資料The General Situation of AT89C51Chapter 1 The application of AT89C51Microcontrollers are used in a multitude of mercial applications such as modems, motorcontrol systems, air conditioner control systems, automotive engine and among others. The high processing speed and enhanced peripheral set of these microcontrollers make them suitable for such highspeed eventbased applications. However, these critical application domains also require that these microcontrollers are highly reliable. The high reliability and low market risks can be ensured by a robust testing process and a proper tools environment for the validation of these microcontrollers both at the ponent and at the system level. Intel Platform Engineering department developed an objectoriented multithreaded test environment for the validation of its AT89C51 automotive microcontrollers. The goals of this environment was not only to provide a robust testing environment for the AT89C51 automotive microcontrollers, but to develop an environment which can be easily extended and reused for the validation of several other future microcontrollers. The environment was developed in conjunction with Microsoft Foundation Classes (AT89C51). The paper describes the design and mechanism of this test environment, its interactions with various hardware/software environmental ponents, and how to use AT89C51. IntroductionThe 8bit AT89C51 CHMOS microcontrollers are designed to handle highspeed calculations and fast input/output operations. MCS 51 microcontrollers are typically used for highspeed event control systems. Commercial applications include modems, motorcontrol systems, printers, photocopiers, air conditioner control systems, disk drives, and medical instruments. The automotive industry use MCS 51 microcontrollers in enginecontrol systems, airbags, suspension systems, and antilock braking systems (ABS). The AT89C51 is especially well suited to applications that benefit from its processing speed and enhanced onchip peripheral functions set, such as automotive powertrain control, vehicle dynamic suspension, antilock braking, and stability control applications. Because of these critical applications, the market requires a reliable costeffective controller。if(electricity==0){P1_0=1。remnant= remnant+ Random_Readc( 0x01)。showstring( 0x0100,0, string[1])。Intialize_LCD( )。} ****************************************************************//掉電中斷(INT0)Void EX_INT0( ) interrupt 0{ Void write_IIC( 0x01 , electricity )。 write_A_Byte( 0xa0 )。} Unchar Read_Current( ){ Unchar d。}Unchar Read_A_Byte( ){ Unchar i, b。 SCL=0。}Void write_A_Byte( unchar b ){ Unchar i。 NOP4( )。} void stop ( ){ SDA=0。}sbit SDA=P3^0。 NO_ACKC( )。 b=1