版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱:單片機(jī)在礦山監(jiān)控中的應(yīng)用設(shè)計(jì)</p><p> 課題名稱:多用戶電子式電能表的設(shè)計(jì)</p><p> 姓名 _ 學(xué)號 _ </p><p> 專業(yè) 電氣工程及其自動化 班級 _09-1 _ &l
2、t;/p><p> 2012 年 1 月 6 日</p><p><b> 目錄</b></p><p><b> 一、設(shè)計(jì)任務(wù)3</b></p><p><b> 1、設(shè)計(jì)目的3</b></p><p><b
3、> 2、設(shè)計(jì)要求3</b></p><p><b> 二、 硬件設(shè)計(jì)3</b></p><p> 1、 設(shè)計(jì)總體框圖3</p><p> 2、 設(shè)計(jì)參數(shù)4</p><p> 4、 光電隔離電路7</p><p> 5、 C8051F360單
4、片機(jī)部分管腳及參數(shù)8</p><p> 6、 器件選擇8</p><p> 7、 設(shè)計(jì)原理圖10</p><p> 三、 軟件設(shè)計(jì)14</p><p> 1、 主程序框圖14</p><p> 2、 顯示用戶及相應(yīng)電能子程序框圖14</p><p> 3、
5、 查詢鍵盤程序框圖15</p><p> 4、 送LED顯示子程序框圖框圖15</p><p> 5、 中斷子程序框圖16</p><p> 6、 24C16讀程序框圖17</p><p> 7、 24C16寫程序框圖18</p><p> 四、 程序清單19</p>
6、;<p> 五、總結(jié)…………………………………………………………………………………………29</p><p> 多用戶電子式電能表的設(shè)計(jì)</p><p> 摘要: 本文介紹了一種以單片機(jī)C8051F360為核心,采用專用電能計(jì)量芯片AD7755設(shè)計(jì)的單相多用戶電子式電能表,并提供了其硬件和軟件設(shè)計(jì)結(jié)構(gòu)簡單,價(jià)格便宜,適合一戶一表使用。該電能表可實(shí)現(xiàn)電能計(jì)量、數(shù)碼管顯示
7、、,時(shí)間校正及時(shí),功耗低,掉電后自動存儲數(shù)據(jù)等功能。 關(guān)鍵詞:電能表;單片機(jī);硬件設(shè)計(jì);軟件設(shè)計(jì)</p><p><b> 0引言</b></p><p> 隨著我國經(jīng)濟(jì)的飛速發(fā)展,各行各業(yè)對電的需求越來越大,不同時(shí)間用電量不均衡的現(xiàn)象也日益嚴(yán)重。為緩解我國日趨尖銳的電力供需矛盾,調(diào)節(jié)負(fù)荷曲線,改善用電量不均衡的現(xiàn)象,全面實(shí)行峰、平、谷分時(shí)電價(jià)制度,“削峰填谷”
8、,提高全國的用電效率,合理利用電力資源,國內(nèi)部分省市的電力部門已開始逐步推出了多費(fèi)率電能表,對用戶的用電量分時(shí)計(jì)費(fèi)。電能表自誕生至今已有100多年的歷史,隨著電力系統(tǒng)及其相關(guān)產(chǎn)業(yè)的發(fā)展以及電能管理系統(tǒng)的不斷完善,電能表的結(jié)構(gòu)和性能也經(jīng)歷了不斷更新、優(yōu)化的發(fā)展過程:由最初的感應(yīng)電能表,發(fā)展到后來的感應(yīng)系脈沖電能表,直至現(xiàn)在的純電子式電能表。感應(yīng)系電能表是利用處于交變磁場的金屬圓盤中的感應(yīng)電流與有關(guān)磁場形成力的原理制成的。感應(yīng)系脈沖電能表仍
9、采用感應(yīng)系電能表的測量機(jī)構(gòu)作為工作元件,由光電傳感器完成電能脈沖轉(zhuǎn)換,然后經(jīng)電子電路對脈沖進(jìn)行處理,從而實(shí)現(xiàn)對電能的測量。純電子式電能表的原理是采用電子電路來實(shí)現(xiàn)電能計(jì)量,所以電子式電能表的共同特點(diǎn)是采用乘法器,根據(jù)所依托的乘法器為模擬的還是數(shù)字的分為模擬乘法器型電子電能表和數(shù)字乘法器型電子電能表。本文給基于C8051F360 單片機(jī)的一種新型單相多用</p><p><b> 設(shè)計(jì)任務(wù)</b&
10、gt;</p><p><b> 設(shè)計(jì)目的</b></p><p> 通過計(jì)算機(jī)編程實(shí)現(xiàn)多用戶電子式數(shù)碼顯示電能表的功能。</p><p> 本次設(shè)計(jì)用戶數(shù)為八戶,即實(shí)現(xiàn)八位用戶循環(huán)顯示電能量。同時(shí),基于E2PROM 24C16芯片實(shí)現(xiàn)單片機(jī)的掉電數(shù)據(jù)保護(hù),基于74HC165芯片實(shí)現(xiàn)單片機(jī)的清零。</p><p>
11、<b> 設(shè)計(jì)要求</b></p><p> 基于AD7755芯片實(shí)現(xiàn)電能脈沖的發(fā)生;應(yīng)用單片機(jī)C8051F360編制程序完成脈沖的讀取、計(jì)數(shù)、計(jì)算、存儲、送顯示等功能;應(yīng)用74HC164及八段譯碼顯示器完成數(shù)據(jù)的顯示;應(yīng)用74HC165及鍵盤控制對脈沖清零;應(yīng)用E2PROM 24C16完成數(shù)據(jù)的定時(shí)寫入以防停電時(shí)數(shù)據(jù)丟失。</p><p><b>
12、二、 硬件設(shè)計(jì)</b></p><p> 1、 設(shè)計(jì)總體框圖</p><p><b> 2、 設(shè)計(jì)參數(shù)</b></p><p> 基準(zhǔn)電壓: 220V±10%</p><p> 基準(zhǔn)電流:Ib=5A</p><p> 最大電流:Imax=4Ib=20A<
13、;/p><p><b> 計(jì)量精度:1%</b></p><p> 最小電流:Imin=2%Ib=0.1A</p><p> 脈沖數(shù):1000/kw.h</p><p> 3﹑ AD7755相關(guān)參數(shù)計(jì)算</p><p> 電能變換電路采用AD7755芯片(Ib=5A,C=1000KW/h
14、),工作時(shí)AD7755芯片將電流采樣信號和電壓采樣信號送入緩沖放大器,經(jīng)模擬乘法器相乘,再經(jīng)V/F轉(zhuǎn)換器轉(zhuǎn)換將電壓信號轉(zhuǎn)換為脈沖信號,AD7755芯片的快速脈沖輸出為1000脈沖/KWh,與用戶使用電能相對應(yīng)。 輸出的快速脈沖信號送給單片機(jī),我們采用C8051F360單片機(jī)對方波信號進(jìn)行采集和計(jì)數(shù),P2口(8位)工作即可對8戶電能脈沖進(jìn)行采集與計(jì)數(shù),本實(shí)驗(yàn)我們將為每戶開辟1個(gè)字節(jié)的內(nèi)存計(jì)數(shù)。</p><p&g
15、t; 簡單的ADE7755外圍應(yīng)用電路是由電流采樣電路、電壓采樣電路、輕載調(diào)節(jié)電路、頻率選擇電路、高頻輸出和低頻輸出等組成?,F(xiàn)對各個(gè)電路進(jìn)行單獨(dú)分析。</p><p> 下圖為 AD7755性能測試電路</p><p> 圖2.5 AD7755性能測試電路</p><p><b> 電流采樣電路:</b></p><
16、p> 圖2.6 電流采樣電路</p><p> 使用分流器的電流采樣電路如圖2.6所示,其中F1為分流器,R1、R2為采樣電阻,C1、C2為采樣電容,他們?yōu)殡娏鞑蓸油ǖ捞峁┎蓸与妷盒盘?,采樣電壓信號的大小由分流器的阻值和流過其上的電流決定。電流采樣通道采用完全差動輸入,V1P為正輸入端,V1N為負(fù)輸入端。電流采樣通道最大差動峰值電壓應(yīng)小于470mV,電流采樣通道有一個(gè)PGA,其增益可由ADE7755的G
17、1和GO來選擇,見表1: </p><p><b> 表1</b></p><p> 當(dāng)使用分流器采樣時(shí),G1、G0都接高電平,增益選擇16,通過分流器的峰值電壓為±30mV,當(dāng)設(shè)計(jì)電表為5(20)A規(guī)格時(shí),分流器阻值選擇為500uΩ,當(dāng)流過分流器的電流為最大電流20A時(shí),其采樣電壓為500uΩ
18、15;20A=10mV,不超過峰值電壓半滿度值,這樣考慮能允許對電流信號和高峰值因數(shù)進(jìn)行累計(jì)。</p><p> 當(dāng)使用互感器采樣時(shí),其電路如圖2.7所示:</p><p> 圖2.7 互感器采樣電路</p><p> U×I×T=1/5×F1-4×3600</p><p> 使用互感器采樣時(shí),
19、G1、G0都接低電平,增益選擇1,電流采樣通道最大差動峰值電壓為±470mV,其差動信號由互感器的二次側(cè)電流流過電阻R30和R31產(chǎn)生,互感器二次側(cè)額定電流為5mA,當(dāng)過載4倍時(shí),二次側(cè)電流為20mA,其流過電阻R30和R31產(chǎn)生的差動信號為96mV,遠(yuǎn)小于峰值電壓半滿度值(235 mV)。</p><p> R1C1和R2C2組成兩個(gè)低通濾波器,衰減掉那些無用的高頻分量,從而防止有用頻帶內(nèi)的失真。R
20、1、R2、C1、C2阻值、容值的選取對電表的性能有很大的影響,因此取值為R1= R2=300歐,C1=C2=27nF。</p><p><b> 電壓采樣電路:</b></p><p> 圖2.8 電壓采樣電路</p><p> 電壓輸入通道(V2N,V2P)也為差分電路,V2N引腳連接到電阻分壓電路的分壓點(diǎn)上,V2P接地。電壓輸入通道的
21、采樣信號是通過衰減線電壓得到的,其中R6至R15為校驗(yàn)衰減網(wǎng)絡(luò),通過短接跳線J1至J9可將采樣信號調(diào)節(jié)到需要的采樣值上,我們設(shè)計(jì)的電能表基本電流時(shí)電壓采樣值為174.2 mV,為了準(zhǔn)許分流器的容差和片內(nèi)基準(zhǔn)源8%的誤差,衰減校驗(yàn)網(wǎng)絡(luò)應(yīng)該允許至少30%的檢驗(yàn)范圍,根據(jù)參數(shù),其調(diào)節(jié)范圍為169.8 mV –250 mV,完全滿足了調(diào)節(jié)的需要。這個(gè)衰減網(wǎng)絡(luò)的-3dB頻率是由 R4和C3決定的,R19、R23、R24確保了這一點(diǎn),即使全部跳線都
22、接通,R19、R23、R24的電阻值仍遠(yuǎn)遠(yuǎn)大于R4,R4和C3的選取要和電流采樣通道的R1C1匹配,這樣才能保證兩個(gè)通道的相位進(jìn)行恰當(dāng)?shù)钠ヅ?,消除因相位失調(diào)帶來的誤差影響。</p><p> 4、 光電隔離電路</p><p> 在許多應(yīng)用中,許多電路鏈接之間需要非直接的連接,從而在提供數(shù)據(jù)的同時(shí)避免來自系統(tǒng)某一部分的危險(xiǎn)電壓或電流對另一部分造成破壞,造成這種破壞的可能是電源質(zhì)量低
23、劣、接地故障等各種故障。電路隔離的主要目的是通過隔離元件把干擾的路徑切斷,從而達(dá)到抑制干擾的目的,保護(hù)電子設(shè)備。在兩點(diǎn)間避免電流流過,而允許有數(shù)據(jù)或功率傳送時(shí)需要使用隔離技術(shù)。電路隔離主要有:模擬電路的隔離、數(shù)字電路的隔離、數(shù)字電路與模擬電路之間的隔離。所使用的隔離方法有:脈沖變壓器隔離法、繼電器隔離法、光電耦合器隔離法、直流電壓隔離法、A/D轉(zhuǎn)換器隔離法。</p><p> 傳統(tǒng)的光耦隔離電路雖然也能實(shí)現(xiàn)很高
24、的線性度, 不過這些電路需要的電源種類較多, 線路比較復(fù)雜, 設(shè)計(jì)成本比較高。</p><p> 為了解決這些問題, 本次設(shè)計(jì)中一種新的光電耦合結(jié)構(gòu), 由它組成的光耦隔離電路具有很高的線性度, 且只需采用普通的光電耦合器和簡單的電路結(jié)構(gòu)。應(yīng)用這個(gè)電路解決了彈載黑匣子的電壓采樣信號的光電隔離問題。</p><p> 光電耦合器的工作原理和特性如下。</p><p>
25、; 光電耦合器件是把發(fā)光器件(如發(fā)光二極管)和光敏器件(如光敏三極管)組裝在一起, 通過光線實(shí)現(xiàn)耦合構(gòu)成電) 光 ) 電的轉(zhuǎn)換器件。當(dāng)電信號送入光電耦合器的輸入端時(shí), 發(fā)光器件將電信號轉(zhuǎn)換為光信號。光信號經(jīng)光敏器件感應(yīng)接收, 再還原成電信號。</p><p> 圖1是一種典型反相應(yīng)用電路, 當(dāng)輸入端有電流流過時(shí), 發(fā)光二極管發(fā)光,使光電三極管導(dǎo)通, 其集電極就有電流I C 流過。</p><
26、;p> 光電耦合器其主要特點(diǎn)為:</p><p> 1) 輸入、 輸出之間在電氣上相互絕緣;</p><p> 2) 信號傳輸是單方向的, 輸出端的噪聲不影響輸入端;</p><p> 3) 體積小、 壽命長、 無觸點(diǎn),功耗低;</p><p> 4) 光電耦合器的傳輸特性具有非線性和隨溫度變化性;</p>&l
27、t;p><b> 圖1 光電隔離電路</b></p><p> 5、 C8051F360單片機(jī)部分管腳及參數(shù)</p><p><b> (1)由原理圖知:</b></p><p> P2.0~P2.7分配給八個(gè)用戶,作為脈沖輸入端口。</p><p> P1.1和P1.0分配給L
28、ED顯示部分作為時(shí)鐘信號和數(shù)據(jù)輸入。</p><p> P1.6和P1.3分配給24C16作為SCL和SDA信號腳。</p><p> P1.4,P1.5和P1.2分配給74HC164作為鍵盤數(shù)據(jù)輸入,時(shí)鐘信號和控制輸入輸出管腳使用</p><p> 此外,C8051F360功能強(qiáng)大,結(jié)構(gòu)復(fù)雜,其余端口與本設(shè)計(jì)無關(guān),故其分配情況不再詳述。</p>
29、<p> 晶振采用24.5MHz,電源使用3.3V。</p><p><b> (2)電源參數(shù)</b></p><p> 220V~5V的共兩套,一套給AD7755,另一套給顯示模塊和5V~3.3V電源。5V~3.3V電源供給C8051F360和24C16。</p><p> 220V~5V轉(zhuǎn)換電路中,相關(guān)參數(shù)如下:<
30、/p><p> C1=330uf,為濾波電容;C2=0.33uf,用于抵消輸入線較長時(shí)的電感效應(yīng),以防止電路產(chǎn)生自激震蕩;C3=1uf,用于消除輸出電壓中的高頻噪聲。</p><p><b> 6、 器件選擇</b></p><p> AD7755電能脈沖發(fā)生器的選擇:</p><p> AD7755是美國AD公
31、司生產(chǎn)的專用于功率/電能測量的低成本集成電路。它的技術(shù)指標(biāo)滿足GB/T17215-1998標(biāo)準(zhǔn)規(guī)定的準(zhǔn)確度等要求。</p><p> AD7755有24條引腳,以DIP和SSOP形式封裝。AD7755在電子電能表中的連接如圖1所示。管腳功能如下:</p><p> P1 DVDD,數(shù)字電路電源,5(±5%)V;P2AC/DC,高通濾波選擇腳,邏輯高,高通濾濾器使能;P3 AV
32、DD,模擬電路電源,5(±5%)V;P4、P19 NC,未接;P5-P6 V1P-V1N,通道1(電流通道)模擬輸入,最大差動輸入電壓為±470mV;P7-P8 V2N-V2P,通道2(電壓通道)模擬輸入,最大差動輸入電壓為±660mV; P9 RESET,復(fù)位引腳,邏輯低使ADC和數(shù)字電路保持復(fù)位狀態(tài),清內(nèi)部寄存器;P10 REFIN/OUT,電壓基準(zhǔn)腳,片上基準(zhǔn)為5(±8%)V,可接外部基準(zhǔn)源
33、;P11 AGND,模擬電路參考地;P12 SCF,校準(zhǔn)頻率選擇腳;P13、P14 S1、S0,數(shù)-頻轉(zhuǎn)換頻率選擇腳;P15、P16 G1、G0,通道1增益選擇腳;P17 - P18 CLKIN- CLKOUT,外接時(shí)鐘,鐘頻3.579545MHz;P20 REVP,負(fù)功率指示腳,電壓信號和電流信號之間的相位差>90°時(shí)變?yōu)檫壿嫺?P21DGND,數(shù)字電路參考地;P22 CF,校準(zhǔn)頻率輸出;P23、P24 F2、F1,低
34、頻輸出。</p><p> AD7755的內(nèi)部功能框圖如下圖:</p><p> 它由模擬電路(模數(shù)轉(zhuǎn)換電路、基準(zhǔn)電路與電源電壓監(jiān)測電路)和數(shù)字信號處理電路兩部分組成。被測電壓、電流轉(zhuǎn)換為數(shù)字量后,接下來的信號處理都在數(shù)字域?qū)崿F(xiàn);AD7755內(nèi)部的相位校正電路、高通濾波器、乘法器、低通濾波器、數(shù)字-頻率轉(zhuǎn)換器等都為數(shù)字電路。AD7755內(nèi)有兩個(gè)以900kHz過采樣速率采樣的16位2階Σ
35、-Δ模數(shù)轉(zhuǎn)換器(ADC)。被測電流經(jīng)可編程增益放大器(PGA)放大后接電流通道的ADC,并由此ADC轉(zhuǎn)換為對應(yīng)的數(shù)字信號。再經(jīng)相位校正和高通濾波,進(jìn)入乘法器。乘法器的另一路輸入是由電壓通道ADC轉(zhuǎn)換而來的、與被測電壓對應(yīng)的數(shù)字信號。相乘后產(chǎn)生瞬時(shí)功率信號。此信號經(jīng)低通濾波器濾除其中的交流分量,提取出負(fù)載消耗的瞬時(shí)有功功率。AD7755對這個(gè)瞬時(shí)有功功率信號進(jìn)行一段時(shí)間的累計(jì)、平均,求得平均有功功率,以較短時(shí)間對瞬時(shí)有功功率進(jìn)行累計(jì),求得
36、與瞬時(shí)有功功率成正比的高頻頻率并經(jīng)CF輸出,用于校準(zhǔn)或送微控制器累加計(jì)數(shù),實(shí)現(xiàn)對電能的計(jì)量。電流通道的PGA的增益受管腳G1、G0控制。</p><p> 高通濾波器是否接入受管腳AC/DC控制。邏輯高,HPF使能。用來去除電流通道的直流偏移和由此引起的誤差。高通濾波器接入或斷開造成的相移,由相位校正電路校正,使電壓通道和電流通道的相位匹配。如前所述,管腳F1、F2輸出與平均有功功率成正上的電壓有效值具有下列關(guān)
37、系:</p><p> fF1=fF2=8.06×U1×U2×G×(f1-4)/U²REF</p><p> 式中,U1、U2分別為電流通道和電壓通道輸入端的rms差動電壓(V),G為電流通道的增益,選擇方法見表1;UREF為基準(zhǔn)電壓值(V);f1-4為以S1、S0邏輯輸入選擇的頻率(Hz),選擇方法見表2。</p>&l
38、t;p> 表2 f1-4等選擇表</p><p> 表2第7列是與兩個(gè)通道都輸入最大電壓所對應(yīng)的最高輸出頻率(Hz)??紤]到實(shí)際電網(wǎng)電壓存在波動和負(fù)載電流可能超載,設(shè)計(jì)電能表時(shí),兩個(gè)模擬通道的輸入電壓一般都留有足夠的超量程余地。比如,取允許的最大值的一半。表2第5列是用管腳SCF、S1、S0邏輯輸入選擇的轉(zhuǎn)換系數(shù),CF腳輸出的頻率為fCF=KfF1(2)由表2知,CF端輸出的頻率能高達(dá)fF1的2048倍
39、。</p><p> 7、 設(shè)計(jì)原理圖</p><p> ?、賳纹瑱C(jī)整體顯示圖:</p><p><b> ②八段譯碼顯示:</b></p><p> ?、跡2PROM 24C16芯片</p><p><b> ④鍵盤部分</b></p><p&
40、gt; ?、軦D7755電能脈沖發(fā)生器</p><p><b> ?、揠娫?lt;/b></p><p> 圖2 兩組穩(wěn)壓電源</p><p><b> 三、 軟件設(shè)計(jì)</b></p><p> 1、 主程序框圖</p><p> 2、 顯示用戶及相應(yīng)電能子程序框
41、圖</p><p> 3、 查詢鍵盤程序框圖</p><p> 4、 送LED顯示子程序框圖框圖</p><p> 5、 中斷子程序框圖</p><p> 6、 24C16讀程序框圖</p><p> 7、 24C16寫程序框圖</p><p><b>
42、 四、 程序清單</b></p><p><b> $NOMOD51</b></p><p> $include (c8051f360.inc)</p><p> CLK EQU P1.1;//LED 時(shí)鐘 </p><p> DATE EQU P1.0;//LED 數(shù)據(jù)</p
43、><p> SCL EQU P1.6 ;24C16串行時(shí)鐘 </p><p> SDA EQU P1.3 ;74HC164脈沖控制管腳 </p><p> QL EQU P1.4 ;74HC165輸出管腳 </p><p&g
44、t; PL EQU P1.2 ;74HC165控制輸入輸出管腳</p><p> CLK165 EQU P1.5 ;74HC165脈沖控制管腳</p><p> PB0 EQU P2.0 ;P2口依次對應(yīng)1-8用戶</p><p> PB1 EQU P2.1</p&g
45、t;<p> PB2 EQU P2.2</p><p> PB3 EQU P2.3</p><p> PB4 EQU P2.4</p><p> PB5 EQU P2.5</p><p> PB6 EQU P2.6</p><p> PB7 EQU P2.7
46、</p><p><b> ORG 00H</b></p><p> LJMP MAIN ;跳轉(zhuǎn)到主程序</p><p><b> ORG 0BH </b></p><p> LJMP T0_INT ;跳轉(zhuǎn)中斷服務(wù)程序</p
47、><p><b> ORG 0100H</b></p><p> ////////主程序///</p><p><b> MAIN:</b></p><p> LCALL CHUSHI ;對F360進(jìn)行初始化</p><p> LCALL I2C_
48、RD ;讀出24C16存儲的數(shù)據(jù)</p><p> MAIN1: MOV SP, #70H ;設(shè)置堆棧</p><p> MOV 20H,P2 ;讀取外部P2口狀態(tài)</p><p> MOV TMOD,#01H ;定時(shí)器賦初值</p><p> MOV TH
49、0,#0b1H ;利用計(jì)數(shù)器T0讀取外部脈沖</p><p> MOV TL0,#0e0H ;20ms產(chǎn)生一次中斷</p><p> SETB ET0 ;T0開中斷 </p><p> SETB EA ;開總中斷</p><p> SETB
50、TR0 ;T0開始計(jì)時(shí)</p><p><b> BEGIN: </b></p><p> MOV R0, #60h ;將用戶一數(shù)據(jù)送到R0中</p><p> MOV R7, #1H ;當(dāng)前操作戶數(shù)</p><p> LOOP:MOV R
51、6,#0H ;小數(shù)點(diǎn)所在的位數(shù)</p><p> MOV A,@R0 ;把用戶脈沖數(shù)送到累加器A</p><p> MOV B,#10 ;除數(shù)為10</p><p> DIV AB ;相除,商存入A中</p><p> PU
52、SH ACC ;壓棧商</p><p> MOV A,B ;把B中所存余數(shù)即個(gè)位值賦給累加器A</p><p> LCALL XS ;調(diào)用子程序顯示個(gè)位</p><p> POP ACC ;出棧</p><p><
53、b> MOV B,#10</b></p><p><b> DIV AB</b></p><p><b> PUSH ACC</b></p><p><b> MOV A,B</b></p><p> LCALL XS ;
54、同理顯示十位</p><p><b> POP ACC</b></p><p><b> MOV B,#10</b></p><p><b> DIV AB</b></p><p><b> PUSH ACC</b></p><
55、p><b> MOV A,B</b></p><p> LCALL XS;顯示百位</p><p><b> POP ACC</b></p><p><b> MOV B,#10</b></p><p><b> DIV AB</b><
56、;/p><p><b> PUSH ACC</b></p><p><b> MOV A,B</b></p><p> LCALL XS;顯示千位</p><p><b> MOV A,#10</b></p><p> LCALL XS;顯示-&l
57、t;/p><p><b> MOV A,R7</b></p><p> LCALL XS;顯示戶名</p><p><b> LCALL XS</b></p><p><b> LCALL XS</b></p><p><b> INC
58、R0</b></p><p><b> INC R7</b></p><p> LCALL DELAY ;調(diào)用延時(shí)子程序</p><p> CJNE R7, #9, LOOP ;循環(huán)顯示完8用戶電量</p><p> LCALL I2C_WR
59、 ;啟動24C16寫數(shù)據(jù)</p><p> LJMP BEGIN ;調(diào)用顯示用戶及用電量子程序</p><p> ////////初始化程序//////</p><p> CHUSHI://MOV SFRPGEN,#01H</p><p> MOV SFRPAGE,#0FH </p>&
60、lt;p> MOV P1MDIN,#0FFH</p><p> MOV P1MDOUT,#0EFH ;推挽輸出 </p><p> MOV XBR1,#40H ;交叉開關(guān)使能 </p><p> MOV PCA0MD,#00H 關(guān)閉
61、看門狗clear Watchdog Enablei </p><p> //MOV FLKEY,#0a5H </p><p> MOV PSCTL,#13H</p><p> MOV OSCICN,#83H ;內(nèi)部振蕩器允許,不分頻 </p><p><b> RET</b&
62、gt;</p><p> /////////中斷子程序///////</p><p> T0_INT: MOV TH0, #0b1H ;重新裝入初值</p><p> MOV TL0, #0e0H</p><p> PUSH ACC ;壓棧保存累加器A中數(shù)據(jù)</p>
63、<p> PUSH PSW ;壓棧保存狀態(tài)字</p><p> MOV A, 20H ;把之前用戶狀態(tài)送入累加器A中</p><p> MOV 20H, P2 ;把此時(shí)用戶脈沖狀態(tài)存入20H存儲單元</p><p> JNB ACC.0, BJ1
64、 ; 若ACC.0位為低電平跳轉(zhuǎn)到BJ1執(zhí)行,否則順序執(zhí)行</p><p> NEXT1: JNB ACC.1, BJ2 ;判斷外部脈沖的狀態(tài)</p><p> NEXT2: JNB ACC.2, BJ3 ;判斷外部脈沖的狀態(tài)</p><p> NEXT3: JNB ACC.3, BJ4 ;判斷外部脈沖的
65、狀態(tài)</p><p> NEXT4: JNB ACC.4, BJ5 ;判斷外部脈沖的狀態(tài)</p><p> NEXT5: JNB ACC.5, BJ6 ;判斷外部脈沖的狀態(tài)</p><p> NEXT6: JNB ACC.6, BJ7 ;判斷外部脈沖的狀態(tài)</p><p> NEX
66、T7: JNB ACC.7, BJ8 ;判斷外部脈沖的狀態(tài)</p><p><b> JMP DONE</b></p><p> BJ1: JB PB0,ADD1 ;與原來外部的狀態(tài)進(jìn)行比較</p><p> JMP NEXT1 ;若相等則繼續(xù)讀外部狀態(tài)</p>
67、;<p> BJ2: JB PB1,ADD2 ;若不等則相應(yīng)的用戶的脈沖數(shù)加一</p><p><b> JMP NEXT2</b></p><p> BJ3: JB PB2,ADD3</p><p><b> JMP NEXT3</b></p>&l
68、t;p> BJ4: JB PB3,ADD4</p><p><b> JMP NEXT4</b></p><p> BJ5: JB PB4,ADD5</p><p><b> JMP NEXT5</b></p><p> BJ6: JB PB5,ADD6<
69、;/p><p><b> JMP NEXT6</b></p><p> BJ7: JB PB6,ADD7</p><p><b> JMP NEXT7</b></p><p> BJ8: JB PB7,ADD8</p><p><b> JMP
70、 DONE</b></p><p> ADD1: INC 60H</p><p><b> JMP NEXT1</b></p><p> ADD2: INC 61H</p><p><b> JMP NEXT2</b></p><p> ADD3
71、: INC 62H</p><p><b> JMP NEXT3</b></p><p> ADD4: INC 63H</p><p><b> JMP NEXT4</b></p><p> ADD5: INC 64H</p><p><b>
72、 JMP NEXT5</b></p><p> ADD6: INC 65H</p><p><b> JMP NEXT6</b></p><p> ADD7: INC 66H</p><p><b> JMP NEXT7</b></p><p>
73、 ADD8: INC 67H</p><p> DONE: POP PSW ;狀態(tài)字恢復(fù)之前值</p><p> POP ACC ;出棧,累加器A恢復(fù)之前的值</p><p> LCALL JIANPAN ;跳轉(zhuǎn)到清零子程序</p><p><b> RETI</b></p
74、><p> ////////顯示子程序//////////</p><p> //----------顯示子程序----------------------</p><p><b> XS: </b></p><p> MOV DPTR,#TAB ;把TAB表首地址賦給DPTR</p
75、><p> PUSH ACC ;對累加器A中內(nèi)容壓棧保護(hù)</p><p> MOVC A,@A+DPTR ;查詢字碼表中對應(yīng)的數(shù)</p><p> MOV R4,#8 ;循環(huán)次數(shù)8</p><p> INC R6 ; R6自
76、增一</p><p> CJNE R6,#04H,XS1 ;判斷R6是否等于4,等于4顯示帶小數(shù)點(diǎn)的數(shù),不等于4跳轉(zhuǎn)</p><p> ANL A,#0EFH ;作邏輯與運(yùn)算,顯示帶小數(shù)點(diǎn)的數(shù)</p><p><b> XS1:</b></p><p> CJNE R6,#
77、05H,XS2 ;判斷R6是否等于5,等于5顯示“—”,不等于跳轉(zhuǎn)</p><p> MOV A,#0FEH ;顯示“—”</p><p> XS2: </p><p> CJNE R6,#07H,LOOP1 ; </p>
78、<p><b> MOV A,45H</b></p><p><b> CPL A</b></p><p> LOOP1:RLC A</p><p><b> CLR CLK</b></p><p> MOV DATE,C</p><
79、;p><b> SETB CLK</b></p><p> DJNZ R4,LOOP1 ;</p><p><b> POP ACC</b></p><p><b> RET</b></p><p> /////////清零/////////
80、///</p><p><b> JIANPAN: </b></p><p> MOV 40H,R0 ;將原用戶數(shù)據(jù)存入40h單元</p><p> MOV 38H,#8 ;設(shè)置循環(huán)次數(shù)</p><p> MOV R0,#60H
81、 ;將用戶一的數(shù)據(jù)送到R0中</p><p> CLR PL ;將鍵盤的狀態(tài)讀入74HC165</p><p> NOP ;指令延時(shí) </p><p> NOP </p><p&g
82、t; SETB PL ;停止讀入鍵盤狀態(tài)</p><p><b> XUN:</b></p><p> CLR CLK165 ;將按鍵的狀態(tài)讀出,按下為0</p><p><b> NOP</b></p><p>&
83、lt;b> NOP</b></p><p> SETB CLK165 ;移出一個(gè)鍵盤的狀態(tài)</p><p> JB QL,DONE1 ;判斷鍵盤是否按下</p><p> MOV @R0,#0 ;若鍵盤按下,將該用戶脈沖清零</p
84、><p> INC R0 ;指針移到下一戶存儲地址</p><p> JMP DONE2 </p><p><b> DONE1:</b></p><p><b> INC R0</b></p>
85、<p><b> DONE2:</b></p><p> DJNZ 38H,XUN ;判斷8戶用戶是否檢查完畢</p><p> MOV R0,40H ; R0恢復(fù)清零之前數(shù)據(jù) </p><p><b> RET</b>&l
86、t;/p><p> //////////I2C_WR/////////////////////////</p><p> I2C_WR: LCALL START ;發(fā)起始條件</p><p> MOV A,#0A0H ;發(fā)器件地址</p><p> LCALL
87、 SENDI2C</p><p> JB F0,RETURN4 ;數(shù)據(jù)接收錯誤</p><p> MOV A,#0 ;發(fā)字節(jié)地址</p><p> LCALL SENDI2C</p><p> JB F0,RETURN4
88、 ;接收數(shù)據(jù)錯誤</p><p> MOV R1,#60H</p><p> MOV R2,#10H</p><p> LOP1: MOV A,@R1</p><p> LCALL SENDI2C ;發(fā)一個(gè)數(shù)據(jù)</p><p> JB F0,
89、RETURN4 ;接收數(shù)據(jù)錯誤</p><p><b> INC R1</b></p><p> DJNZ R2,LOP1</p><p><b> LCALL STP</b></p><p> LCALL LDELAY
90、 ;寫周期延時(shí)約10ms</p><p> RETURN4: RET</p><p> /////////////////////I2C_RD//////////////////</p><p> I2C_RD: MOV R2,#10H</p><p> LCALL START
91、 ;發(fā)送起始條件</p><p> MOV A,#0A0H ;發(fā)器件地址</p><p> LCALL SENDI2C</p><p> JB F0,RETURN3 ;接收數(shù)據(jù)錯誤</p><p> MOV A,#0H
92、 ;發(fā)地址</p><p> LCALL SENDI2C</p><p> JB F0,RETURN3</p><p> LCALL START ;重新發(fā)送起始標(biāo)志</p><p> MOV A,#0A1H
93、 ;發(fā)讀操作命令</p><p> LCALL SENDI2C</p><p> JB F0,RETURN3</p><p> MOV R0,#60H</p><p> LOP2: LCALL LOADI2C</p><p><b> MOV @R0,A</b>&l
94、t;/p><p><b> INC R0</b></p><p> DJNZ R2,LOP2</p><p><b> INC R0</b></p><p> SETB F0 ;F0=1,讀最后一個(gè)數(shù)據(jù)標(biāo)志</p><
95、;p> LCALL LOADI2C ;讀出1個(gè)數(shù)據(jù)</p><p><b> MOV @R0,A</b></p><p> LCALL STP ;發(fā)終止條件</p><p> RETURN3: RET</p>&l
96、t;p> /////////////I2C啟動條件//////////</p><p> START: SETB SDA ;SDA從低到高,SCL為高時(shí),24C16啟動</p><p><b> NOP</b></p><p><b> SETB SCL</b>&l
97、t;/p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> CLR SDA<
98、;/b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> C
99、LR SCL</b></p><p><b> RET</b></p><p> ///////////I2C終止條件///////////////</p><p> STP: CLR SDA ;SDA從高到低,SCL為高時(shí),24C16終止</p><p>
100、<b> NOP </b></p><p><b> SETB SCL</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p>
101、<p><b> NOP</b></p><p><b> SETB SDA</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b>
102、</p><p><b> NOP</b></p><p><b> RET</b></p><p> ////////LOADI2C/////////</p><p> LOADI2C: SETB SDA ;置數(shù)據(jù)線為輸入方式</p>&
103、lt;p> MOV R5,#08H</p><p> RCV: NOP</p><p> CLR SCL ;置低準(zhǔn)備接收數(shù)據(jù)位</p><p><b> NOP</b></p><p><b> NOP</b>&l
104、t;/p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> SETB SCL ;置高使數(shù)據(jù)線上數(shù)據(jù)有效</p><
105、;p><b> NOP</b></p><p><b> NOP</b></p><p><b> CLR C</b></p><p> JNB SDA,RCV0 ;讀數(shù)據(jù)位,若為0則置0</p><p> SET
106、B C ;讀數(shù)據(jù)位,若為1則置1</p><p> RCV0: RLC A ;接收數(shù)據(jù)位放入ACC中</p><p><b> NOP</b></p><p><b> NOP</b></p>
107、<p> DJNZ R5,RCV ;沒接收完繼續(xù)</p><p> CLR SCL ;接收完置低發(fā)應(yīng)答或非應(yīng)答信號</p><p><b> NOP</b></p><p><b> NOP</b>
108、</p><p><b> NOP</b></p><p><b> CLR SDA</b></p><p> JNB F0,SENDACKB ;判斷繼續(xù)接收數(shù)據(jù)?如需轉(zhuǎn)發(fā)送應(yīng)答位</p><p> SETB SDA
109、 ;發(fā)送非應(yīng)答信號</p><p> SENDACKB: NOP</p><p><b> NOP</b></p><p> SETB SCL ;置高使應(yīng)答有效</p><p><b> NOP</b>&
110、lt;/p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP </b></p><p> CLR SCL ;準(zhǔn)備接收停止條件</p><
111、;p> CLR F0 ;清接收非應(yīng)答信號</p><p><b> RET</b></p><p> ///////////SENDI2C///////</p><p> SENDI2C: MOV R5,#08H</p><p> AR_LP
112、1: RLC A</p><p> MOV SDA,C ;傳送1位數(shù)據(jù)</p><p><b> NOP</b></p><p><b> NOP</b></p><p> SETB SCL
113、 ;接收數(shù)據(jù)</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><
114、b> NOP</b></p><p> CLR SCL ;準(zhǔn)備接收下一位</p><p> DJNZ R5,AR_LP1 ;8位發(fā)送完</p><p><b> NOP</b></p><p&g
115、t;<b> NOP</b></p><p> SETB SDA ;發(fā)送完,準(zhǔn)備接收應(yīng)答位</p><p><b> NOP</b></p><p><b> NOP</b></p><p> SETB SCL
116、 ;開始接收應(yīng)答位</p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR F0 ;預(yù)先清發(fā)送數(shù)據(jù)出錯標(biāo)志</p><p&g
117、t; JNB SDA,ACKEND ;判斷正常否?正常轉(zhuǎn)ACKEND</p><p> SETB F0 ;未收到,置位錯誤標(biāo)志</p><p> ACKEND: NOP</p><p> CLR SCL
118、 ;準(zhǔn)備下一步操作</p><p><b> RET</b></p><p> ///////////////////LDELAY10ms延時(shí)////////////</p><p> LDELAY: MOV R3,#10</p><p> LDELAY1: MOV R2,#0FAH<
119、;/p><p> LDELAY2: MOV 50H,#70H</p><p> DJNZ R2, LDELAY2</p><p> DJNZ R3, LDELAY1</p><p><b> RET</b></p><p> /////////////////////延時(shí)子程序/////
120、//////////////</p><p> DELAY: MOV R3,#6</p><p> DELAY1: MOV TMOD,#10 ;利用T1用查詢方式進(jìn)行延時(shí)</p><p> SETB TR1 ;T1開啟定時(shí)</p><
121、;p> MOV TH1,#3CH ;裝入定時(shí)初值</p><p> MOV TL1,#0B0H ;定時(shí)50ms</p><p> JNB TF1,$ ;若定時(shí)時(shí)間未到,等待</p>&
122、lt;p> CLR TF1 ;定時(shí)時(shí)間到,對TF1位清零</p><p> DJNZ R3,DELAY1 ;循環(huán)6次</p><p> ///////TAB 數(shù)據(jù)列表///////</p><p><b> TAB:&l
123、t;/b></p><p> DB 011h,0d7h,32h,92h,0d4h,98h,18h,0d3h,010h,90H ;0,1,2,3,4,5,6,7,8,9</p><p><b> END </b></p><p><b> 五、 總結(jié)</b></p><p> 兩
124、個(gè)星期的課程設(shè)計(jì)結(jié)束了,從中我學(xué)到了很多東西且感悟良多。體會到了課本聯(lián)系實(shí)際學(xué)以至用設(shè)計(jì)思想實(shí)際動手能力都有所提高.初學(xué)單片機(jī)時(shí)覺得它深奧難懂枯燥無味通過課程設(shè)計(jì)我體會到了編程的靈活性并對它產(chǎn)生了濃厚的愛好. 另外,通過查閱各種資料,拓寬了我在單片機(jī)領(lǐng)域內(nèi)的知識面,對諸多先進(jìn)理論知識、應(yīng)用技巧得到了了解。課程設(shè)計(jì)從設(shè)計(jì)電路到調(diào)試結(jié)束我們失敗很多次,也可謂是屢敗屢戰(zhàn),可我們并未氣餒堅(jiān)持到了最后。 通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合
125、是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機(jī)匯編語言掌握得不好……在老師的辛勤的指導(dǎo)下,最后我們順利地完成了
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 多用戶電能表課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)---多用戶電能表課程設(shè)計(jì)報(bào)告
- 畢業(yè)設(shè)計(jì)---多用戶電子式電能表的設(shè)計(jì)和調(diào)試
- 多用戶電子式電能表的可靠性及其強(qiáng)化試驗(yàn)設(shè)計(jì)研究.pdf
- 基于arm多用戶智能電能表設(shè)計(jì).
- 智能多用戶電能表研究與設(shè)計(jì).pdf
- 基于ZigBee技術(shù)的智能多用戶電能表的設(shè)計(jì).pdf
- 電能表畢業(yè)設(shè)計(jì)--單相電子式電能表的設(shè)計(jì)
- 電子式電能表芯片的設(shè)計(jì).pdf
- 電子式電能表的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 分布式智能多用戶電能表的設(shè)計(jì)與開發(fā).pdf
- 基于DSP處理器的多用戶電能表設(shè)計(jì)與開發(fā).pdf
- 多用戶電能表紅外數(shù)據(jù)采集裝置的研究與設(shè)計(jì).pdf
- 電子式電能表設(shè)計(jì)畢業(yè)論文
- 基于射頻識別技術(shù)的多用戶電能表研究.pdf
- 電能表課程設(shè)計(jì)--八戶電子單相電能表設(shè)計(jì)與調(diào)試
- 單相電子式電能表設(shè)計(jì) 論文 定稿
- 電子式電能表lcd顯示子系統(tǒng)的設(shè)計(jì)【開題報(bào)告】
- 電子式電能表cpu卡子系統(tǒng)的設(shè)計(jì)【開題報(bào)告】
- 電子式電能表建設(shè)方案
評論
0/150
提交評論