2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論