




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEII功率測量模塊的軟件設(shè)計(jì)與實(shí)現(xiàn)摘要:本文介紹了一種基于8051單片機(jī)的功率測量模塊的軟件設(shè)計(jì).首先簡介硬件電路部分,簡述一種簡單有效的功率測量方法,利用從負(fù)載獲得的電流和電壓信號,采用ADE7755芯片完成功率計(jì)算,輸出與功率成正比的頻率信號,與單片機(jī)結(jié)合對頻率計(jì)數(shù)處理,可方便地得到功率值。然后主要對軟件進(jìn)行介紹,功率測量模塊的軟件包括主程序、功率測量數(shù)據(jù)的獲取、外部中斷子程序、實(shí)際功率的工程量計(jì)算與顯示程序.分析了軟件的功能需求,采用模塊化設(shè)計(jì)方法。對每個(gè)程序模塊分別進(jìn)行仿真調(diào)試和整體調(diào)試,最后和硬件聯(lián)合進(jìn)行調(diào)試,經(jīng)過反復(fù)修改,程序運(yùn)行基本正常。關(guān)鍵詞:單片機(jī);程序設(shè)計(jì);ADE7755;功率測量SoftwareDesignAndImplementationofPowerMeasurementModulesAbstract:Thispaperintroducesapowerofmeasurementbasedon8051monolithicintegratedcircuitsdesignofsoftwaremodules。firstabriefintroductionofahardwarecircuit,simpleandeffectivepowerwasmeasured,usingfromtheloadofthecurrent,voltageade7755chipin,withcompletepoweroutputproportionaltothepowerofthesignalfrequencyandmonolithicintegratedcircuitstothefrequency,withacountcaneasilygetthepower.Andmaintothesoftwareareintroduced,thepowertomeasuresoftwaremodulesincludingthemainprogram,thepowertoobtaindata,outsidemeasurementofthesubroutine,theactualpowerworkamountwiththatprocedure。theanalysisofthesoftwarefunctionandusemodulardesign.foreachprogrammoduleforemulation,thecommissioningandthewhole,andthehardware,thedebuggedafterrepeatedamendment,aprogramisallright。Keywords:SCM;Programming;ADE7755;PowerMeasurement目錄TOC\o”1-3”\h\z\u第1章功率測量模塊的系統(tǒng)概述 21.2設(shè)計(jì)要求 32.2STC89C51RC介紹 42.3液晶顯示部分 7HYPERLINK\l”_Toc264891987"2。3.1LCD16824概述 7_Toc264891990"2。5RS-232接口電路 11HYPERLINK\l”_Toc264891991"第3章軟件設(shè)計(jì) 12HYPERLINK\l”_Toc264891992"3.1軟件的設(shè)計(jì)思路 12HYPERLINK\l”_Toc264891993"3。1.1軟件設(shè)計(jì)需求 12HYPERLINK\l”_Toc264891994"3.1.2軟件設(shè)計(jì)思想 12_Toc264891996"3.2。1主程序 13HYPERLINK\l”_Toc264891997"3。2.2LCD顯示程序設(shè)計(jì) 143。2。3ADE7755與單片機(jī)程序設(shè)計(jì) 15_Toc264892000”4。1軟件調(diào)試 184.1。1軟件調(diào)試 18HYPERLINK\l”_Toc264892002"4.1.2軟件燒錄 19HYPERLINK\l”_Toc264892003"4。2Proteus軟件仿真 21HYPERLINK\l”_Toc264892004”4.3軟件硬件聯(lián)合調(diào)試 22_Toc264892006”參考文獻(xiàn) 25HYPERLINK\l”_Toc264892007"致謝 26HYPERLINK\l”_Toc264892008"附錄1系統(tǒng)原理圖 27HYPERLINK\l”_Toc264892010”附錄2源程序代碼 28第41頁共44頁前言隨著電力技術(shù)的高速發(fā)展,高精度數(shù)字式的電力測量設(shè)備已廣泛地應(yīng)用在電力系統(tǒng)中.為了適應(yīng)這種測量的要求,數(shù)字式電參數(shù)測量儀表多采用高精度的專用電能測量芯片來研制.對于功率的計(jì)量方法,以前主要采用的是機(jī)械式電能表的設(shè)計(jì),但是機(jī)械表很難做到較高的精度要求.因此,機(jī)械式電能表雖然具有工作壽命較長的優(yōu)點(diǎn),仍然不可避免的被電子電能表取代。電子電能表的核心是一塊計(jì)量芯片,配以一些外圍器件實(shí)現(xiàn)電能計(jì)量功能。此類芯片主要基于模擬乘法器和頻率變換原理的設(shè)計(jì),這類芯片中應(yīng)用較廣泛的有CIRRUSIDGIC公司CS5460、美國ADI公司的ADE7755和貝嶺公司的BID932.這些芯片擁有內(nèi)部集成度高,易于與微處理器接口,測量精度高等特點(diǎn),利用這些芯片開發(fā)電量測量系統(tǒng)和設(shè)備,將有效提高系統(tǒng)的精度和降低開發(fā)難度.對電量的測量和計(jì)算,傳統(tǒng)的機(jī)械式電度表體積大、精度差,需派專門人員上門抄表,工作量大,不利于集中管理。目前廣泛采用的交流采樣法能量計(jì),測量精度高,便于計(jì)算機(jī)集中管理,但為保證計(jì)量精度,需保證采樣時(shí)刻準(zhǔn)確,每個(gè)采樣周期要采集足夠多的點(diǎn)數(shù),這就對數(shù)據(jù)轉(zhuǎn)換速度和單片機(jī)處理速度提出了很高的要求,為得到功率值需進(jìn)行大量的數(shù)值計(jì)算,編程過程非常麻煩.本文介紹了一種簡單有效的測量方法,利用從負(fù)載獲得的電流和電壓信號,采用ADE7755芯片完成功率計(jì)算,輸出與功率成正比的頻率信號,與單片機(jī)結(jié)合對頻率計(jì)數(shù)處理,可方便地得到功率值。選題聯(lián)系了實(shí)際需求,結(jié)合所學(xué)專業(yè)知識,將微電子技術(shù)與計(jì)算機(jī)技術(shù)相結(jié)合,將理論與實(shí)踐相結(jié)合,將功率計(jì)量專用芯片采集到的數(shù)據(jù)送到單片機(jī)集中處理。研究設(shè)計(jì)了一種基于ADE7755芯片的功率測量模塊,在保證計(jì)量精度與系統(tǒng)穩(wěn)定性的前提下,實(shí)現(xiàn)了8路負(fù)載功率的計(jì)量,LCD顯示測量數(shù)據(jù)與上位機(jī)的串行通訊等基本功能。第1章功率測量模塊的系統(tǒng)概述1.1系統(tǒng)概述電度表作為電能計(jì)量工具,在國民經(jīng)濟(jì)各部門中得到廣泛應(yīng)用。隨著微電子技術(shù)的迅猛發(fā)展,微控器(單片機(jī))和大規(guī)模集成電路在電能計(jì)量領(lǐng)域的廣泛應(yīng)用,使電度表的技術(shù)水平和性能得到長足發(fā)展。根據(jù)我國目前的發(fā)展?fàn)顩r,和廣大用電單位及個(gè)人的用電狀況,發(fā)現(xiàn)現(xiàn)在所使用的電能計(jì)量器具功能較少,不能滿足人們目前的要求。電子式電能表具有功耗少、防潛動(dòng)、啟動(dòng)電流小、防竊電、穩(wěn)定性好、計(jì)量準(zhǔn)確等諸多優(yōu)點(diǎn),替代感應(yīng)式電能表是電表行業(yè)的發(fā)展趨勢。目前,全國幾乎所有的電能表廠家都在致力于電子式電能表的研制與生產(chǎn)。在這些年的城網(wǎng)改造和農(nóng)網(wǎng)改造中,電子式電能表一直占據(jù)著電表市場。電子技術(shù)的飛速發(fā)展造就了電能表的更新?lián)Q代,而計(jì)算機(jī)技術(shù)的迅猛突起對電能表市場又提出了更新的要求,那就是網(wǎng)絡(luò)化的管理。目前,普通的電子式電能表大多數(shù)采用專用的電能表芯片,靠專用芯片產(chǎn)生的電能累計(jì)脈沖去驅(qū)動(dòng)機(jī)電式計(jì)度器,這種結(jié)構(gòu)的優(yōu)點(diǎn)是簡單、便宜,在不需要聯(lián)網(wǎng)的場合被大量使用,但這種電表中無CPU、無存貯器、無通信接口,因而該類表是無法構(gòu)成自動(dòng)抄表系統(tǒng)的。如果在該類表的基礎(chǔ)上進(jìn)行改造,則每表增加1個(gè)CPU、1個(gè)存貯器、1個(gè)通信接口芯片,顯然表的硬件成本會成倍增加,而且作為整個(gè)自動(dòng)抄表系統(tǒng)的網(wǎng)絡(luò)節(jié)點(diǎn)容量數(shù)也會顯得十分龐大??紤]中國城市居民住宅的特點(diǎn)(一般進(jìn)戶的電纜集中在樓道),我們將上述結(jié)構(gòu)進(jìn)行改造,將進(jìn)線電纜在一起的用戶共用1個(gè)CPU、1個(gè)存貯器、1個(gè)通信接口芯片,并且發(fā)揮CPU的強(qiáng)大功能,共用1個(gè)顯示窗口輪流顯示各用戶電量信息,構(gòu)成多用戶電子式電能表。再由各多用戶電表與管理機(jī)構(gòu)成整個(gè)自動(dòng)抄表系統(tǒng),其系統(tǒng)結(jié)構(gòu)如圖1-1所示。多用戶電表1多用戶電表1多用戶電表2多用戶電表3管理微機(jī)用戶脈沖1用戶脈沖2用戶脈沖n用戶脈沖1用戶脈沖2用戶脈沖s用戶脈沖1用戶脈沖2用戶脈沖p………。?!?………圖1—1由多用戶電能表構(gòu)成的自動(dòng)抄表系統(tǒng)結(jié)構(gòu)從圖1-1可知,系統(tǒng)依舊符合國家要求的一戶一表原則,不僅節(jié)約了硬件資源,而且大大減少了網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)量。電子式多功能電能表主要針對國內(nèi)市場三相用電的工業(yè)用戶。隨著電力行業(yè)改革深入,工業(yè)用電對多功能電能表的需求大量增加。目前國內(nèi)多功能表種類少、價(jià)格較高、功能不完善,往往僅是針對某些地區(qū)的特定要求開發(fā),缺乏通用性,本文介紹的功率測量模塊以單片機(jī)為核心,課完成負(fù)載功率測量,并可通過通信功能將功率發(fā)送至管理計(jì)算機(jī)。1.2設(shè)計(jì)要求1、測量8路功率(1KW以內(nèi))。2、測量功率結(jié)果通過LCD顯示.3、完成整個(gè)功率測量模塊的軟件設(shè)計(jì)與調(diào)試,并與硬件聯(lián)合調(diào)試。4、撰寫任務(wù)突出符合規(guī)范的畢業(yè)設(shè)計(jì)論文。 第2章系統(tǒng)硬件電路方案簡介2。1工作原理功率測量模塊硬件電路主要由測量單元ADE7755、時(shí)鐘、單片機(jī)、顯示器、存儲器、電源、通信接口和8個(gè)繼電器控制系統(tǒng)電路等幾部分組成[3]。工作原理如下:通過檢測模塊來檢測電量,將測到的數(shù)據(jù)送給單片機(jī),單片機(jī)再將數(shù)據(jù)進(jìn)行一定的處理,轉(zhuǎn)化為液晶可以顯示的內(nèi)容,當(dāng)然這會在在編程中有很明顯的體現(xiàn),液晶顯示也有他一定的規(guī)則特別是動(dòng)態(tài)顯示的方式.總體結(jié)構(gòu)框圖如圖2—1所示.單片機(jī)單片機(jī)電壓電流ADE7755LCD16824Eeprom串口選擇端圖2-1功率模塊的整體結(jié)構(gòu)2.2STC89C51RC介紹STC89C51RC/RD+系列單片機(jī)是宏晶科技推出的新一代超強(qiáng)抗干擾、強(qiáng)抗靜電,高速、高可靠,低功耗的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī)[4],12時(shí)鐘/機(jī)器周期和6時(shí)鐘/機(jī)器周期可任意選擇,最新的D版本內(nèi)部集成MAX810專用復(fù)位電路。STC89C51RC具有4K的程序存儲器,512字節(jié)的數(shù)據(jù)存儲器,內(nèi)置2K的E2PROM,支持ISP與IAP同時(shí)完全兼容C51指令與AT89C5X系列的引腳(40DIP封裝兼容),功耗低,可使用高達(dá)48M的外部晶振,速度較普通12M晶振提高至少1/3。其引腳圖與AT89C51類似。1、特點(diǎn):(1)80C51核心處理器;(2)3V/SV工作電壓,操作頻率0~33MHz(STC89LE516AD最高可達(dá)90MHz);5V工作電壓,操作頻率0~40MHz;(3)大容量內(nèi)部數(shù)據(jù)RAM:1K字節(jié)RAM(4)64/32/16/8kB片內(nèi)Flash程序存儲器,具有在應(yīng)用可編程(IAP),在系統(tǒng)可編程(ISP),可實(shí)現(xiàn)遠(yuǎn)程軟件升級,無需編程器;(5)支持12時(shí)鐘(默認(rèn))或6時(shí)鐘模式;(6)雙DPTR數(shù)據(jù)指針;(7)PCA(可編程計(jì)數(shù)器陣列),具有PWM的捕獲/比較功能;(8)4個(gè)8位I/O口,含3個(gè)高電流P1口,可直接驅(qū)動(dòng)LED;(9)3個(gè)16位定時(shí)器/計(jì)數(shù)器;(10)可編程看門狗定時(shí)器(WDT);(11)兼容TTL和CMOS邏輯電平;(12)掉電檢測和低功耗模式;(13)低EMI方式(ALE禁止);2、中斷STC89C51RC共有6個(gè)中斷向量:兩個(gè)外中斷(INT0和INT1),3個(gè)定時(shí)器中斷(定時(shí)器0、1、2)和串行口中斷.這些中斷源可通過分別設(shè)置專用寄存器IE的置位或清0來控制每一個(gè)中斷的允許或禁止。IE也有一個(gè)總禁止位EA,它能控制所有中斷的允許或禁止[5].3、定時(shí)器控制寄存器(TCON)該寄存器用于保存外部中斷請求以及定時(shí)器的計(jì)數(shù)溢出。進(jìn)行字節(jié)操作時(shí),寄存器地址為操時(shí),各位的地址為88H~8FH.寄存器的內(nèi)容及位地址表示如表2-1下:表2—1定時(shí)器控制寄存器位地址表位地址8FH8EH8DH8CH8BH8AH89H88H位符號TF1TR1TF0TR0IE1IT1IE0IT0當(dāng)計(jì)數(shù)器產(chǎn)生計(jì)數(shù)溢出時(shí),相應(yīng)的溢出標(biāo)志位由硬件置“1”.當(dāng)轉(zhuǎn)向中斷服務(wù)時(shí),再由硬件自動(dòng)清“0”。計(jì)數(shù)溢出標(biāo)志位的使用有兩種情況:采用中斷方式時(shí),作中斷請求標(biāo)志位來使用;采用查詢方式時(shí),作查詢狀態(tài)位來使用.4、串行口控制寄存器(SCON)進(jìn)行字節(jié)操作時(shí),寄存器地址為98H.按位操作時(shí),各位的地址為98H~9FH.寄存器的內(nèi)容及位地址表示如畢表2-2下:
表2—2串行口控制寄存器位地址表位地址9FH9EH9DH9CH9BH9AH99H98H位符號SM0SM1SM2RENTB8RB8TIRI當(dāng)接收完一幀串行數(shù)據(jù)后,由硬件置“1”;在轉(zhuǎn)向中斷服務(wù)程序后,用軟件清“0"。串行中斷請求由TI和RI的邏輯或得到。就是說,無論是發(fā)送標(biāo)志還是接收標(biāo)志,都會產(chǎn)生串行中斷請求。5、編程方法編程前,先設(shè)置好地址、數(shù)據(jù)及控制信號,STC89C51RC編程方法如下:(1)在地址線上加上要編程單元的地址信號。(2)在數(shù)據(jù)線上加上要寫入的數(shù)據(jù)字節(jié)。(3)激活相應(yīng)的控制信號。(4)在高電壓編程方式時(shí),將EA/Vpp端加上+12V編程電壓。(5)每對Flash存儲陣列寫入一個(gè)字節(jié)或每寫入一個(gè)程序加密位,加上一個(gè)ALE/PROG編程脈沖.每個(gè)字節(jié)寫入周期是自身定時(shí)的,通常約為1。5ms。重復(fù)1—5步驟,改變編程單元的地址和寫入的數(shù)據(jù),直到全部文件編程結(jié)束。芯片擦除:利用控制信號的正確組合并保持ALE/PROG引腳10mS的低電平脈沖寬度即可將PEROM陣列(4k字節(jié))和三個(gè)加密位整片擦除,代碼陣列在片擦除操作中將任何非空單元寫入“1”,這步驟需再編程之前進(jìn)行。讀片內(nèi)簽名字節(jié):STC89C52單片機(jī)內(nèi)有3個(gè)簽名字節(jié),地址為030H、031H和032H。用于聲明該器件的廠商、型號和編程電壓。讀AT89C52簽名字節(jié)需將P3.6和P3。7置邏輯低電平,讀簽名字節(jié)的過程和單元030H、031H及032H的正常校驗(yàn)相仿,只返回值意義如下:(030H)=1EH聲明產(chǎn)品由STC公司制造。(031H)=51H聲明為STC89C51RC單片機(jī)。(032H)=FFH聲明為12V編程電壓。(032H)=05H聲明為5V編程電壓。2。3液晶顯示部分2。3。1LCD16824概述LCD16824是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、二級簡體中文字庫的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64,內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面.可以顯示8×4行16×16點(diǎn)陣的漢字。也可完成圖形顯示.低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊[6]。
本功率模塊采用的是16824字符型LCD,16824通常有20條引腳線,其中的2條線是背光電源線.引腳如下表2—3所示:表2-3串行接口管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC3.0+5V電源正3V0-對比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,表示DB7——DB0為顯示數(shù)據(jù)RS=“L”,表示DB7-—DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)被讀到DB7-—DB0R/W=“L",E=“H→L”,DB7——DB0的數(shù)據(jù)被寫到IR或DR6E(SCLK)H/L使能信號7DB0H/L三態(tài)數(shù)據(jù)線8DB1H/L三態(tài)數(shù)據(jù)線9DB2H/L三態(tài)數(shù)據(jù)線10DB3H/L三態(tài)數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式(見注釋1)16NC-空腳17/RESETH/L復(fù)位端,低電平有效(見注釋2)18VOUT-LCD驅(qū)動(dòng)電壓輸出端19AVDD背光源正端(+5V)(見注釋3)20KVSS背光源負(fù)端(見注釋3)*注釋1:如在實(shí)際應(yīng)用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC”用焊錫短接.*注釋2:模塊內(nèi)部接有上電復(fù)位電路,因此在不需要經(jīng)常復(fù)位的場合可將該端懸空。*注釋3:如背光和模塊共用一個(gè)電源,可以將模塊上的JA、JK用焊錫短接。2.3。2軟件說明指令表表2-4軟件說明指令表指令名稱控制信號控制代碼RSR/WD7D6D5D4D3D2D1D0顯示開關(guān)設(shè)置000011111D顯示起始行設(shè)置0011L5L4L3L2L1L0頁面地址設(shè)置0010111P2P1P0列地址設(shè)置0001C5C4C3C2C1C0讀取狀態(tài)字01BUSY0ON/OFFRESET0000寫顯示數(shù)據(jù)10數(shù)據(jù)讀顯示數(shù)據(jù)11數(shù)據(jù)詳細(xì)解釋各個(gè)指令功能1、讀狀態(tài)字格式BUSY0ON/OFFRESET0000狀態(tài)字是MPU了解LCM(液晶顯示模塊)當(dāng)前狀態(tài),或LCM向MPU提供其內(nèi)部狀態(tài)的唯一的信息渠道.BUSY表示當(dāng)前LCM接口控制電路運(yùn)行狀態(tài)。BUSY=1表示LCM正在處理MPU發(fā)過來的指令或數(shù)據(jù).此時(shí)接口電路被封鎖,不能接受除讀狀態(tài)字以外的任何操作.BUSY=0表示LCM接口控制電路已外于“準(zhǔn)備好”狀態(tài),等待MPU的訪問。ON/OFF表示當(dāng)前的顯示狀態(tài)。ON/OFF=1表示關(guān)顯示狀態(tài),ON/OFF=0表示開顯示狀態(tài)。RESET表示當(dāng)前LCM的工作狀態(tài),即反映/RES端的電平狀態(tài).當(dāng)/RES為低電平狀態(tài)時(shí),LCM處于復(fù)位工作狀態(tài),標(biāo)志位RESET=1.當(dāng)/REST為高電平狀態(tài)時(shí),LCM為正常工作狀態(tài),標(biāo)志位RESET=0。在指令設(shè)置和數(shù)據(jù)讀寫時(shí)要注意狀態(tài)字中的BUSY標(biāo)志。只有在BUSY=0時(shí),MPU對LCM的操作才能有效。因此MPU在每次對LCM操作之前,都要讀出狀態(tài)字判斷BUSY是否為“0”.若不為“0”,則MPU需要等待,直至BUSY=0為止。2、顯示開關(guān)設(shè)置格式0011111D該指令設(shè)置顯示開/關(guān)觸發(fā)器的狀態(tài),由此控制顯示數(shù)據(jù)鎖存器的工作方式,從而控制顯示屏上的顯示狀態(tài).D位為顯示開/關(guān)的控制位.當(dāng)D=1為開顯示設(shè)置,顯示數(shù)據(jù)鎖存器正常工作,顯示屏上呈現(xiàn)所需的顯示效果。此時(shí)在狀態(tài)字中ON/OFF=0。當(dāng)D=0為關(guān)顯示設(shè)置,顯示數(shù)據(jù)鎖存器被置零,顯示屏呈不顯示狀態(tài),但顯示存儲器并沒有被破壞,在狀態(tài)字中ON/OFF=1。3、顯示起始行設(shè)置格式11L5L4L3L2L1L0該指令設(shè)置了顯示起始行寄存器的內(nèi)容。LCM通過CS的選擇分別具有64行顯示的管理能力,該指令中L5~L0為顯示起始行的地址,取值在0~3FH(1~64行)范圍內(nèi),它規(guī)定了顯示屏上最頂一行所對應(yīng)的顯示存儲器的行地址。如果定時(shí)間隔地,等間距地修改(如加一或減一)顯示起始行寄存器的內(nèi)容,則顯示屏將呈現(xiàn)顯示內(nèi)容向上或向下平滑滾動(dòng)的顯示效果【10】。4、列地址設(shè)置格式01C5C4C3C2C1C0該指令設(shè)置了Y地址數(shù)計(jì)數(shù)器的內(nèi)容,LCM通過CS的選擇分別具有64列顯示的管理能力,C5~C0=0~3FH(1~64)代表某一頁面上的某一單元地址,隨后的一次讀或?qū)憯?shù)據(jù)將在這個(gè)單元上進(jìn)行.Y地址計(jì)數(shù)器具有自動(dòng)加一功能,在每一次讀/寫數(shù)據(jù)后它將自動(dòng)加一,所以在連續(xù)進(jìn)行讀/寫數(shù)據(jù)時(shí),Y地址計(jì)數(shù)器不必每次都設(shè)置一次.頁面地址的設(shè)置和列地址的設(shè)置將顯示存儲器單元唯一地確定下來,為后來的顯示數(shù)據(jù)的讀/寫作了地址的選通.5、寫顯示數(shù)據(jù)格式數(shù)據(jù)該操作將8位數(shù)據(jù)寫入先前已確定的顯示存儲器的單元內(nèi).操作完成后列地址計(jì)數(shù)器自動(dòng)加一。2。4功率測量模塊ADE7755計(jì)量模塊由高精度專用電能計(jì)量芯片ADE7755是美國模擬器件公司(ADI)生產(chǎn)的一種高準(zhǔn)確度電能測量集成電路.它的內(nèi)部只有模/數(shù)轉(zhuǎn)換電路和基準(zhǔn)電源是用模擬電路,其它的信號處理都使用數(shù)字電路,這使得ADE7755在惡劣的環(huán)境下仍能保持極高的準(zhǔn)確度和長期的穩(wěn)定性,具有優(yōu)良的溫度和時(shí)間穩(wěn)定性,其技術(shù)指標(biāo)超過了IEC1036規(guī)定的準(zhǔn)確度要求,能適應(yīng)各種環(huán)境要求,為電能表的質(zhì)量提供了保證[7]。ADE7755的輸入為電流和電壓信號,輸出為與有功功率成正比頻率信號,其內(nèi)部組成主要由可編程放大器、電源監(jiān)控電路、基準(zhǔn)電路、模/數(shù)轉(zhuǎn)換電路(ADC)、相位校正網(wǎng)絡(luò)、乘法器、高通濾波(HPF)、低通濾波(LPF)、數(shù)字-頻率轉(zhuǎn)換器等組成,其內(nèi)部原理框圖如圖2—3所示。D/FD/F轉(zhuǎn)換器F2F1F2ADCADCV1PV1NV2PV2NREVPLPFHFF圖2—3AD7755內(nèi)部原理框圖圖中,由V1P,V1N組成的電流通道輸入電流信號,由V2P和V2N組成的電壓通道輸入電壓信號,其中電流通道經(jīng)過可變增益放大器PGA,用戶可方便地根據(jù)需要調(diào)整增益為1,2,8或16.兩信號進(jìn)入模/數(shù)轉(zhuǎn)換電路ADC轉(zhuǎn)換成數(shù)字信號,這兩個(gè)ADC都是16為二階∑—Δ模數(shù)轉(zhuǎn)換器,其過采樣速率達(dá)900kHz。由于電流互感器中可能有直流信號,需經(jīng)高通濾波濾去直流成分后送乘法器,與ADC送來的電壓信號相乘得瞬時(shí)功率信號.有功功率是從瞬時(shí)功率信號推到計(jì)算出來的,瞬時(shí)功率信號時(shí)用電流和電壓信號直接相乘得到的。為了得到有功功率分量(即直流分量),只要對瞬時(shí)功率信號進(jìn)行低通濾波就可以了[8]。2。5RS-232接口電路數(shù)據(jù)通信方式主要有并行數(shù)據(jù)通信與串行數(shù)據(jù)通信兩種??紤]到串行數(shù)據(jù)通信只需要一對數(shù)據(jù)傳送線進(jìn)行信息的傳送,所需傳輸線條數(shù)極少,傳送成本較低,特別適用于分級、分層和分布式控制系統(tǒng)以及遠(yuǎn)距離通信之中,故本設(shè)計(jì)選擇串行數(shù)據(jù)通信。RS—232接口電路是最常用的接口之一,缺點(diǎn)是只能用于短距離的數(shù)據(jù)通信。但這已經(jīng)能夠滿足我們的設(shè)計(jì)要求了,所以在此我們選用了RS-232接口做為與上位機(jī)的通訊電路[10].Maxim公司專門為上位機(jī)設(shè)計(jì)的RS-232標(biāo)準(zhǔn)串口的接口電路,使用+5V電源供電。RS-232是一種把電腦的串行口信號電平(-10~+10V)轉(zhuǎn)換為單片所用到的TTL信號電平(0~+5V)芯片。圖2—6RS—232接口電路第3章軟件設(shè)計(jì)3.1軟件的設(shè)計(jì)思路3.1。1軟件設(shè)計(jì)需求在研制單片機(jī)應(yīng)用系統(tǒng)時(shí),匯編語言是一種常用的軟件工具,它能直接操作硬件,指令的執(zhí)行速度快。但其指令系統(tǒng)的固有格式受硬件結(jié)構(gòu)的限制很大,難以編寫與調(diào)試,可移植行也差。隨著單片機(jī)性能的提高,工作速度越來越快,因此在編寫單片機(jī)應(yīng)用系統(tǒng)程序時(shí),更著重于程序本事的編寫效率。所以C51已成為目前最流行的開發(fā)單片機(jī)的軟件工具。與匯編語言相比,C51在功能、結(jié)構(gòu)、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用.另外,使用C51可以縮短開發(fā)周期,降低開發(fā)成本,可靠行高,可移植性好[11]。3.1.2軟件設(shè)計(jì)思想功率測量模塊軟件設(shè)計(jì)主要由主程序,外部中斷子程序,電量脈沖計(jì)算程序及顯示子程序組成。C語言程序有利于實(shí)現(xiàn)較復(fù)雜的算法,功率測量模塊有較復(fù)雜的計(jì)算(計(jì)算模塊的功率),所以程序采用C語言編寫.運(yùn)用KeilC51軟件環(huán)境編寫,KeilC51是德國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng)。KeilC51軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具uVision2.uVision2全Windows界面,只要看一下編譯后生成的編譯代碼,就能體會到KeilC51生成的目標(biāo)代碼效率非常高,多數(shù)語句生成的匯編代碼很緊湊,容易理解,在開發(fā)大型軟件時(shí)更能體現(xiàn)高級語言的優(yōu)勢[12]。3。2系統(tǒng)的軟件構(gòu)成整個(gè)系統(tǒng)的軟件主要包括主程序,系統(tǒng)初始化、電量脈沖計(jì)算、電量轉(zhuǎn)化、LCD顯示、數(shù)據(jù)保存等功能子程序,通過主程序直接或通過中斷的方式調(diào)用子程序,實(shí)現(xiàn)系統(tǒng)整體功能.主程序框圖如圖3-1所示。該電能表的工作原理還是要根據(jù)電能表的三大模塊來進(jìn)行說明,其中最重要的還是測量模塊,也就是ADE7755如何測測量電量的,以及它和單片機(jī)的連線。AD7755程序AD7755程序單片機(jī)主題程序LCD16824程序其他程序通信子程序圖3—1系統(tǒng)的軟件構(gòu)成軟件是整個(gè)控制系統(tǒng)設(shè)計(jì)的核心,它具有充分的靈活性,可以根據(jù)系統(tǒng)的要求而變化.在硬件結(jié)構(gòu)一定的情況下,只要改變軟件就能實(shí)現(xiàn)一些不同的功能。單片機(jī)所具有的智能功能要由軟件來完成.在本設(shè)計(jì)中[13],軟件結(jié)構(gòu)采用模塊化設(shè)計(jì)方法,將數(shù)字電能表所要完成的功能分別編寫和調(diào)試。所有模塊調(diào)試成功以后,將各個(gè)模塊連接構(gòu)成單片機(jī)軟件系統(tǒng)。這樣的設(shè)計(jì)有利于程序代碼的優(yōu)化,而且便于設(shè)計(jì)、調(diào)試和維護(hù).3。2.1主程序主程序流程圖如下圖3-2所示.主程序首先對系統(tǒng)環(huán)境初始化,設(shè)置定時(shí)器T1工作模式為16位的定時(shí)計(jì)數(shù)器模式,置位總中斷允許位EA并給顯示端口P0和P2清0。然后調(diào)用超聲波發(fā)生子程序送出一個(gè)超聲波脈沖。由于采用12MHz的晶振,機(jī)器周期為1us,當(dāng)主程序檢測到接收成功的標(biāo)志位后,將計(jì)數(shù)器T0中的數(shù)(對脈沖計(jì)數(shù))按下式計(jì)算即可測得被測量模塊的電能,一個(gè)周期內(nèi)消耗的電能為:電能=平均功率×積分時(shí)間=脈沖個(gè)數(shù)(3—1)測出電能后結(jié)果將以十進(jìn)制BCD碼方式送往LCD顯示。初始化LCD初始化LCD開機(jī)界面初始化定時(shí)器顯示各路功率開始圖3—2主程序流程圖3。2。2LCD顯示程序設(shè)計(jì)在STC89C51RC單片機(jī)中,液晶驅(qū)動(dòng)作為一個(gè)外圍模塊集成于片內(nèi),極大的簡化了液晶顯示部分的接口設(shè)計(jì),只要選擇合適的液晶顯示器,采用合適的驅(qū)動(dòng)方式即可完成數(shù)據(jù)的顯示.主程序一開始運(yùn)行則設(shè)置堆棧起始地址為00H,設(shè)置寄存器,首先系統(tǒng)進(jìn)入主函數(shù)進(jìn)行初始化.包括LCD16824進(jìn)行一次清屏,使其各個(gè)指令、數(shù)據(jù)寄存器的值進(jìn)行清空,屏幕不顯示任何字符.通過上一章節(jié)對LCD16824介紹可知,只要將01H送到數(shù)據(jù)總線,使RS=0,R/W=0,E有個(gè)下降沿的脈沖就可以完成清屏工作。用指令實(shí)現(xiàn)送到數(shù)據(jù)DB7-DB0,調(diào)用子程序ENABLE,由于下降沿時(shí),內(nèi)部數(shù)據(jù)要送到RAM區(qū),所以要有一個(gè)延時(shí)子程序,使這個(gè)下降沿持續(xù)2.5毫秒。內(nèi)部RAM有指令代碼后就開始對RAM進(jìn)行清零,所以屏幕原有的字符將被清除[14]。接著對16824行功能的設(shè)定。按表3-2來看是設(shè)定顯示器按4行顯示,每行8位,5×7點(diǎn)陣。LCD顯示程序流程圖如3—3所示:設(shè)置行設(shè)置行寫數(shù)據(jù)設(shè)置面設(shè)置頁忙?讀忙YN開始圖3-3LCD顯示程序流程圖3。2。3ADE7755與單片機(jī)程序設(shè)計(jì)ADE7755與微控制器(MCU)接口最簡單的方法是使用CF高頻輸出,輸出頻率設(shè)定2048(F1,F2,這要求設(shè)置SCF=0和S0=S1=1).當(dāng)模擬輸入端加入有滿度交流信號時(shí),CF輸出頻率高達(dá)5。5KHZ左右。示出的方案能把輸出頻率數(shù)字化,并且完成前面提到的平均作用.其設(shè)計(jì)框圖如圖3—4所示,計(jì)數(shù)器0如圖3—5所示,定時(shí)器1如圖3—6所示設(shè)AD設(shè)ADE7755采樣時(shí)間時(shí)間是否到測量AD7755脈沖數(shù)轉(zhuǎn)化為電能值返回主程序NY是否超限NY開始圖3-4ADE7755程序流程圖ADE7755初始化程序如下:/******ADE7755初始化*********/voidInit7755(){ G0=0; G1=0;//增益=1,最大差動(dòng)信號=470mv}/******定時(shí)器/計(jì)數(shù)器初始化********/voidInitTimer(){ TMOD=0x15;//00010101設(shè)置方式1,計(jì)數(shù)器0,定時(shí)器1 TH1=0x3c;//定時(shí)初值裝載,50ms TL1=0xb0; TCON=0X51;//01010001計(jì)數(shù)器0下降沿觸發(fā) IE=0X89;//10001001開總中斷、外部中斷0、定時(shí)中斷1}外部中斷了?對脈沖外部中斷了?對脈沖計(jì)數(shù)YN初始化2秒到了?讀取計(jì)數(shù)值換通道YN初始化圖3—5計(jì)數(shù)器0流程圖3—6定時(shí)器1流程終端服務(wù)子程序如下:/*******終端服務(wù)子程序******/voidInt0()interrupt0using1{ N++;//計(jì)數(shù)脈沖數(shù) }voidTimer1()interrupt3using2{ TH1=0x3c;//定時(shí)初值重裝,50ms TL1=0xb0; M++; if(M==40)//計(jì)時(shí)2秒到了? { temp=N;//讀取2秒內(nèi)脈沖數(shù) N=0;//清零 M=0; Fq=temp/2+(temp%2);//計(jì)算頻率 tab_pow[c]=Fq;//保存各路功率值 c++; if(c==8) c=0; CH=(0x01〈<c); } } 第4章系統(tǒng)調(diào)試及總結(jié)4。1軟件調(diào)試當(dāng)硬件制作完成后,軟件制作也是不可輕視的部分,是實(shí)現(xiàn)電路的功能的關(guān)鍵部分,通過本次畢業(yè)設(shè)計(jì),總結(jié)經(jīng)驗(yàn)如下:1、先進(jìn)行人工檢查。寫好程序后,不要立刻燒入單片機(jī),先對紙面上的程序進(jìn)行人工檢查。由于采用C語言編程,所以要特別小心地檢查語法錯(cuò)誤,如括號不配對,漏寫分號等,通過仔細(xì)的檢查,發(fā)現(xiàn)并排除這些錯(cuò)誤。2、人工檢查無誤后,上機(jī)調(diào)試.在編譯時(shí)給出的語法錯(cuò)誤的信息,根據(jù)提示的信息具體找出程序中錯(cuò)誤之處并改之,從上至下逐一改正。應(yīng)當(dāng)注意的是:有的提示出錯(cuò)行并不是真正出錯(cuò)的行,如果在提示出錯(cuò)的行上找不到錯(cuò)誤的話,則應(yīng)該到上行再找。3、當(dāng)確認(rèn)程序無語法錯(cuò)誤和邏輯錯(cuò)誤時(shí),通過直接下載到單片機(jī)來調(diào)試。采用的是自下到上的調(diào)試方法,即單獨(dú)調(diào)好每一個(gè)模塊,然后再連接成一個(gè)完整的系統(tǒng)調(diào)試。4、程序燒入單片機(jī)后,觀察各個(gè)部件的工作是否正常,功能是否實(shí)現(xiàn)。如不能正常工作,則繼續(xù)檢查程序中的相應(yīng)模塊,必要時(shí)從上到下重新檢查程序[15]。4.1.1軟件調(diào)試硬件電路制作完成并調(diào)整檢查好以后,接下就是軟件的設(shè)計(jì)調(diào)試。在keil_uVision2軟件中編寫并運(yùn)行調(diào)試程序,直至運(yùn)行成功自動(dòng)生成后綴名為。hex的文件。圖4-1為程序在keil_uVision2軟件中的編寫界面。圖4—1程序在keil_uVision3軟件中的編寫界面KEILC51標(biāo)準(zhǔn)C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,同時(shí)保留了匯編代碼高效,快速的特點(diǎn)。C51編譯器的功能不斷增強(qiáng),使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個(gè)集成開發(fā)環(huán)境包含:編譯器,匯編器,實(shí)時(shí)操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。uVision2IDE可為它們提供單一而靈活的開發(fā)環(huán)境。uVision2包含一個(gè)器件數(shù)據(jù)庫(devicedatabase),可以自動(dòng)設(shè)置匯編器、編譯器、連接定位器及調(diào)試器選項(xiàng),來滿足用戶充分利用特定微控制器的要求[16]。此數(shù)據(jù)庫包含:片上存儲器和外圍設(shè)備的信息,擴(kuò)展數(shù)據(jù)指針(extradatapointer)或者加速器(mathaccelerator)的特性。4。1.2軟件燒錄程序運(yùn)行成功之后[17],將。hex的文件通過STC-ISP燒錄軟件下載到單片機(jī)運(yùn)行。STC-ISP燒錄軟件的特點(diǎn)是將程序源代碼下載進(jìn)單片機(jī)內(nèi)部,而不用編譯器。下圖4—2為燒錄的界面。圖4—2STC-ISP燒錄界面本次設(shè)計(jì)采用STC—ISPVer2.0B。PCB演示板作為編程工具,它可以完成下載/燒錄用戶程序的功能.需要注意的是,要先點(diǎn)擊Download/下載,再打開電源,因?yàn)樾枰鋯?dòng)才運(yùn)行系統(tǒng)ISP程序。圖4-3為STC—ISPVer2.0B.PCB演示板。圖4—3STC—ISPVer2。0B.PCB演示板4。2Proteus軟件仿真初始化仿真測試如圖4—4所示[18]:圖4-4初始化仿真測試工作中仿真測試4—5所示:圖4-5工作中仿真測試4.3軟件硬件聯(lián)合調(diào)試1、靜態(tài)檢查根據(jù)硬件電路圖核對元器件的型號、規(guī)格、極性、集成芯片的插接方向是否正確。用邏輯筆、萬用表等工具檢查硬件電路連線是否與電路圖一致,有無短路、虛焊等現(xiàn)象。嚴(yán)防電源短路和極性接反。檢查數(shù)據(jù)總線、地址線和控制總線是否存在短路的故障。2、通電檢查通電檢查時(shí),可以模擬各種輸入信號分別送入電路的各有關(guān)部分,觀察I/O口的動(dòng)作情況,查看電路板上有無元件過熱、冒煙、異味等現(xiàn)象,各相關(guān)設(shè)備的動(dòng)作是否符合要求,整個(gè)系統(tǒng)的功能是否符合要求。3、聯(lián)合調(diào)試硬件和軟件調(diào)試完成之后,應(yīng)進(jìn)行系統(tǒng)調(diào)試。在系統(tǒng)調(diào)試時(shí),應(yīng)將全部硬件電路都接上,應(yīng)用程序模塊、子程序也都組合好,進(jìn)行全系統(tǒng)軟、硬件調(diào)試,系統(tǒng)調(diào)試的任務(wù)是排除軟、硬件中的殘留錯(cuò)誤,使整個(gè)系統(tǒng)能夠完成預(yù)定的工作任務(wù),達(dá)到要求的性能指標(biāo)。在進(jìn)行系統(tǒng)調(diào)試時(shí),對于有電氣控制負(fù)載的系統(tǒng),應(yīng)先試驗(yàn)空載,空載正常后再試驗(yàn)負(fù)載情況.要試驗(yàn)系統(tǒng)的各項(xiàng)功能,避免遺漏.系統(tǒng)調(diào)試成功之后,就可以將程序固化到ROM中,程序固化可以在有些仿真系統(tǒng)中進(jìn)行,最好用專用程序固化器進(jìn)行固化操作,因?yàn)樗墓δ芡晟?,使用方便、可?將固化好程序的ROM插回到應(yīng)用系統(tǒng)電路板的相應(yīng)位置,即可脫機(jī)運(yùn)行。系統(tǒng)試運(yùn)行要連續(xù)運(yùn)行相當(dāng)長的時(shí)間,以考驗(yàn)其穩(wěn)定性。并要進(jìn)一步進(jìn)行修改和完善處理。一般地,經(jīng)開發(fā)裝置調(diào)試合格的軟、硬件,脫機(jī)后應(yīng)正常運(yùn)行.但由于開發(fā)調(diào)試環(huán)境與應(yīng)用系統(tǒng)的實(shí)際運(yùn)行環(huán)境不盡相同,也會出現(xiàn)脫機(jī)后不能正常運(yùn)行的情況。當(dāng)出現(xiàn)脫機(jī)運(yùn)行故障時(shí),應(yīng)考慮程序固化有無錯(cuò)誤;仿真系統(tǒng)與實(shí)際系統(tǒng)在運(yùn)行時(shí),有無某些方面的區(qū)別(如驅(qū)動(dòng)能力);在聯(lián)機(jī)仿真調(diào)試時(shí),未涉及的電路部分有無錯(cuò)誤,硬件實(shí)物圖如圖4-6所示:圖4—6硬件實(shí)物圖4。4本章總結(jié)本章敘述了系統(tǒng)的軟件設(shè)計(jì),包括主程序的設(shè)計(jì)首先對系統(tǒng)環(huán)境初始化,經(jīng)過反復(fù)修改,程序運(yùn)行基本正常,我的設(shè)計(jì)已能實(shí)現(xiàn)功率測量模塊的基本功能,并在LCD上顯示實(shí)際的功率.但在某些提高測量功率的精度方面、環(huán)境影響、某些功能設(shè)計(jì)構(gòu)想還沒有完整的表達(dá)出來.調(diào)試過程中遇到的問題及解決方法總結(jié)如下:1、提示無asm文件編譯時(shí)候提示:F:\。.\XX。asmFilehasbeenchangedoutsidetheeditorreload?解決方法:重新生成項(xiàng)目,產(chǎn)生examl1.asm即可。2、再進(jìn)入Keil的調(diào)試環(huán)境以后,發(fā)現(xiàn)程序有錯(cuò)解決方法:將光標(biāo)定位于需要修改的程序上,用菜單,DebugInlineAssambly…即可出現(xiàn)對話框,3、EnterNew后面的編輯框內(nèi)直接輸入需要修改的程序語句,輸入完之后鍵入回車將自動(dòng)指向下一條語句,可以繼續(xù)修改,如果不在需要修改,可以點(diǎn)擊右上角的關(guān)閉按鈕關(guān)閉窗口。輸入程序時(shí),有中文標(biāo)點(diǎn),用Keil編譯時(shí)出現(xiàn)錯(cuò)誤解決方法:程序里有帶中文標(biāo)點(diǎn),用英文重輸入一遍4、匯編出現(xiàn)數(shù)字,字母混淆解決方法:字母“O”和數(shù)字“0”.主要錯(cuò)在這里。注意細(xì)節(jié)!當(dāng)然由于時(shí)間和精力等多方面的原因,此功率模塊多少還存在一些不足之處,有待進(jìn)一步改進(jìn)和提高.參考文獻(xiàn)[1]趙林。單片機(jī)基礎(chǔ)[M].北京:科學(xué)出版社,2008。[2]李全利。單片機(jī)原理及接口技術(shù)[M]。北京:高等教出版社,2004.[3]嚴(yán)天峰.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與仿真調(diào)試[J]。北京航空航天大學(xué)出版社,2005,20(4):40-42.[4]Bernd-MarkusPfeiffer.Astudyofoperatoreffectsonultrasonicmeasuresoffatdepthandlongissimusmuscleareaincattle[J].InformationSystemsandTechnologies,KORUS2002,28(4):169-173.[5]AnthonyCollins.ACostWatt—hourEnergyMeterBasedontheAD7755(AN559)[M].ADIInc,2003[6]蘭吉昌.51單片機(jī)應(yīng)用設(shè)計(jì)百例[M]。北京:化學(xué)工業(yè)出版社,2009.[7]陳新擴(kuò),鮑鴻,陳宇翔.AD7755的測量原理與應(yīng)用[J]。廣東工業(yè)大學(xué)學(xué)報(bào)(自然版),2002,19(4):30-33.[8]陳霞.利用AD7755實(shí)現(xiàn)電能有功功率的測量[J].山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,18(5):68-72.[9]張洪潤,孫悅,張亞凡。單片應(yīng)用及應(yīng)用[M]。北京:清華大學(xué)出版社,2008。[10]周堅(jiān).單片機(jī)C語言程序設(shè)計(jì)[M]。北京:北京航空航天大學(xué)出版社,2007。趙林.單片機(jī)基礎(chǔ)[M]。北京:科學(xué)出版社,2008.[11]吳金戌。8051單片機(jī)實(shí)踐與應(yīng)用[M].北京:清華大學(xué)出版社,2003年.[12]李朝青。PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù)[M].北京:航空航天大學(xué)出版社,2000.[13]江志紅。51單片機(jī)技術(shù)與應(yīng)用系統(tǒng)開發(fā)案例精選[M].北京:清華大學(xué)出版社,2008.[14]田明光.單片機(jī)與可編程控制器[M].山東:山東科學(xué)技術(shù)出版社,2006.[15]胡漢才。單片機(jī)原理及其接口技術(shù)[M]。北京:清華大學(xué)出版社,2004.[16]王為青,程國剛.單片機(jī)keilc51應(yīng)用開發(fā)技術(shù)[M]。北京:人民郵電出版社,2007.[17]趙文博,劉文濤.單片機(jī)語言C51程序設(shè)計(jì)[M].北京:人民郵電出版社,2005.[18]周潤景,張麗娜,劉映群.PROTEUS入門實(shí)用教程[M].北京:機(jī)械工業(yè)出版2007.致謝撰寫畢業(yè)論文是大學(xué)生完成學(xué)業(yè)的最后一個(gè)學(xué)習(xí)任務(wù),撰寫畢業(yè)論文的目的在于總結(jié)專業(yè)理論學(xué)習(xí)的成果,考核畢業(yè)生觀察問題、分析問題和解決問題的能力.同時(shí),這也是對我大學(xué)四年以來學(xué)習(xí)的檢驗(yàn)和總結(jié).經(jīng)過這次設(shè)計(jì),自身的實(shí)踐能力和職業(yè)素質(zhì)都得到了顯著的提高。這其中也凝結(jié)了很多他人的心血,沒有他們的幫助,我將無法順利完成這次設(shè)計(jì),在此對他們表示衷心的感謝。首先,感謝四年來江蘇技術(shù)師范學(xué)院的領(lǐng)導(dǎo)對我的關(guān)懷和培養(yǎng),感謝老師們四年內(nèi)對我的學(xué)習(xí)和生活上的幫助指導(dǎo),這對我的成長起到了至關(guān)重要的作用。再次,感謝這次課題設(shè)計(jì)的指導(dǎo)老師羅老師,在做設(shè)計(jì)的過程中羅老師和我一塊分析課題,查閱相關(guān)資料,共同討論制作具體的設(shè)計(jì)方案;并且在遇到難題時(shí)細(xì)心的分析問題,幫我解決問題;在做設(shè)計(jì)的后期又對我的設(shè)計(jì)作了認(rèn)真的批改,提出了許多細(xì)小的問題。總之,在這里我真心的感激,感謝曾經(jīng)幫助指導(dǎo)幫助過我的老師和同學(xué)附錄1系統(tǒng)原理圖附錄2源程序代碼/*********************** AD7755功率計(jì) 12M晶振 1T************************/#include〈reg52。h〉#include”12864LCD.h”#include"code.h”#defineCHP0//繼電器通道選擇sbitREVP=P1^0;sbitG0=P1^4;//通道1增益選擇sbitG1=P1^5;sbitF1=P1^6;//有功功率輸出sbitF2=P1^7;uintN=0;//脈沖計(jì)數(shù)值uintM=0;//T1中斷計(jì)數(shù)值uinttemp=0;//2秒內(nèi)脈沖數(shù)uintFq=0;//CF頻率uinttab_pow[8];//8路功率ucharc=0;//sbitCF=P1^3;/******AD7755初始化*********/voidInit7755(){ G0=0; G1=0;//增益=1,最大差動(dòng)信號=470mv}/******定時(shí)器/計(jì)數(shù)器初始化********/voidInitTimer(){ TMOD=0x15;//00010101設(shè)置方式1,計(jì)數(shù)器0,定時(shí)器1 TH1=0x3c;//定時(shí)初值裝載,50ms TL1=0xb0; TCON=0X51;//01010001計(jì)數(shù)器0下降沿觸發(fā) IE=0X89;//10001001開總中斷、外部中斷0、定時(shí)中斷1}/**********顯示函數(shù)***********/voiddisp_power(uchari)//顯示第i路功率,1<=i<=8{ ucharj,k; uintge,shi,bai,qian; switch(i) { case1:j=1;k=0; break; case2:j=1;k=2; break; case3:j=1;k=4; break; case4:j=1;k=6; break; case5:j=2;k=0; break; case6:j=2;k=2; break; case7:j=2;k=4; break; case8:j=2;k=6; break; default: break; } qian=tab_pow[i—1]/1000; bai=(tab_pow[i—1]%1000)/100; shi=((tab_pow[i—1]%1000)%100)/10; ge=((tab_pow[i-1]%1000)%100)%10; Display_FULL(j,k,0*16,(i+1));//選屏,頁,列,字?jǐn)?shù) Display_HALF(j,k,3*8,qian); Display_HALF(j,k,4*8,bai); Display_HALF(j,k,5*8,shi); Display_HALF(j,k,6*8,ge); }/******主函數(shù)**********/voidmain(){ uchari; CH=0XFF;//關(guān)閉所有通道 InitLCD(); Display_PIC(&tab_start[0]);//開機(jī)畫面 delay();//延時(shí)5s ClearScreen(0); CH=0X01;//打開通道1 InitTimer();//初始化定時(shí)器 while(1) { for(i=1;i<=8;i++) { disp_power(i); } }}/*******終端服務(wù)子程序******/voidInt0()interrupt0using1{ N++;//計(jì)數(shù)脈沖數(shù) }voidTimer1()interrupt3using2{ TH1=0x3c;//定時(shí)初值重裝,50ms TL1=0xb0; M++; if(M==40)//計(jì)時(shí)2秒到了? { temp=N;//讀取2秒內(nèi)脈沖數(shù) N=0;//清零 M=0; Fq=temp/2+(temp%2);//計(jì)算頻率 tab_pow[c]=Fq;//保存各路功率值 c++; if(c==8) c=0; CH=(0x01<〈c); } }#ifndef_12864LCD_H_#define_12864LCD_H_#include〈reg52。h〉#include〈intrins。h>#include"code.h"#defineuintunsignedint#defineucharunsignedchar/*******************************LCD接口定義*******************************/#defineDATAP2//LCD12864數(shù)據(jù)線sbitRST=P3^7;//復(fù)位,0有效sbitRS=P1^3;//數(shù)據(jù)\指令選擇sbitRW=P3^3;//讀\寫選擇sbitEN=P3^4;//讀\寫使能sbitcs1=P3^5;//片選1sbitcs2=P3^6;//片選2/*******************************延時(shí)函數(shù)*******************************/voiddelayms(){ unsignedchara,b,c;for(c=1;c>0;c--)for(b=142;b>0;b—-)for(a=2;a>0;a-—);}/*******************************測忙函數(shù)*******************************/voidCheckBusy() {uchardat;//狀態(tài)信息(判斷是否忙)RS=0;//數(shù)據(jù)\指令選擇,D/I(RS)=“L”,表示DB7∽DB0為顯示指令數(shù)據(jù)RW=1;//R/W=“H”,E=“H”數(shù)據(jù)被讀到DB7∽DB0do{DATA=0x00;EN=1; //EN下降源 _nop_();//一個(gè)時(shí)鐘延時(shí) dat=DATA;EN=0;dat=0x80&dat;//僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號)}while(!(dat==0X00));}/*******************************寫命令*******************************/voidWrite_COM(ucharcom){CheckBusy();//狀態(tài)檢查,LCD是否忙RS=0; //向LCD發(fā)送命令。RS=0寫指令,RS=1寫數(shù)據(jù)RW=0;//R/W=“L”,E=“H→L”數(shù)據(jù)被寫到IR或DR//_nop_();DATA=com; //com:命令//delayms();EN=1;//EN下降源_nop_();EN=0;//delayms();}/*******************************寫顯示數(shù)據(jù)*******************************/voidWrite_DAT(uchardat) {CheckBusy();//狀態(tài)檢查,LCD是否忙RS=1;//RS=0寫指令,RS=1寫數(shù)據(jù)RW=0;//R/W=“L",E=“H→L”數(shù)據(jù)被寫到IR或DR//_nop_();DATA=dat;//dat:顯示數(shù)據(jù)//delayms();EN=1;//EN下降源_nop_();EN=0;//delayms();}/*******************************設(shè)置頁*******************************/voidSet_PAGE(ucharpage) {page=0xb8|page;//10111xxx0<=page<=7設(shè)定頁地址-—X0—7,8行為一頁64/8=8,共8頁Write_COM(page);}/*******************************設(shè)置行*******************************/voidSet_LINE(ucharstartline) {startline=0xc0|startline;//11000000Write_COM(startline);//設(shè)置從哪行開始:0--63,一般從0行開始顯示}/*******************************設(shè)置列*******************************/voidSet_COLUMN(ucharcolumn) {column=column&0x3f;//column最大值為64,越出0=〈column<=63column=0x40|c(diǎn)olumn;//01xxxxxxWrite_COM(column);}/*******************************設(shè)置顯示開關(guān)*******************************/voidDisp_SW(ucharsw) { sw=0x3e|sw;//0011111x,sw只能為0或者1 Write_COM(sw);}/******************************* 選擇屏幕 screen:0—全屏,1-左屏,2-右屏*******************************/voidSelectScreen(ucharscreen) { switch(screen)//仿真時(shí)CS1,CS2低電平有效,實(shí)際使用時(shí)高電平有效{case0:cs1=0;//全屏_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;case1:cs1=0;//左屏_nop_();_nop_();_nop_();cs2=1;_nop_();_nop_();_nop_();break;case2:cs1=1;//右屏_nop_();_nop_();_nop_();cs2=0;_nop_();_nop_();_nop_();break;}}/******************************* 清屏 screen:0—全屏,1—左屏,2-右屏*******************************/voidClearScreen(ucharscreen) { uchari,j;SelectScreen(screen); for(i=0;i〈8;i++) //控制頁數(shù)0-7,共8頁 { Set_PAGE(i); Set_COLUMN(0);for(j=0;j〈64;j++) //控制列數(shù)0-63,共64列 {Write_DAT(0x00);//寫點(diǎn)內(nèi)容,列地址自動(dòng)加1}} }/*******************************初始化LCD*******************************/voidInitLCD() { RST=0;//復(fù)位 _nop_(); _nop_(); RST=1; _nop_(); _nop_(); CheckBusy(); SelectScreen(0); Disp_SW(0);//關(guān)顯示 SelectScreen(0); Disp_SW(1);//開顯示 SelectScreen(0); ClearScreen(0);//清屏 Set_LINE(0);//開始行:0}/*******************************顯示函數(shù)*******************************//*顯示全角漢字*/voidDisplay_FULL(ucharss,ucharpage,ucharcolumn,ucharnumber){ inti; //選屏參數(shù),page選頁參數(shù),column選列參數(shù),number選第幾漢字輸出 SelectScreen(ss); column=column&0x3f; Set_PAGE(page); //寫上半頁 Set_COLUMN(column);//控制列 for(i=0;i〈16;i++)//控制16列的數(shù)據(jù)輸出 { Write_DAT(Hzk[i+32*number]);//i+32*number漢字的前16個(gè)數(shù)據(jù)輸出 } Set_PAGE(page+1); //寫下半頁 Set_COLUMN(column); //控制列for(i=0;i<16;i++) //控制16列的數(shù)據(jù)輸出 { Write_DAT(Hzk[i+32*number+16]); //i+32*number+16漢字的后16個(gè)數(shù)據(jù)輸出 }}/*顯示半角漢字和數(shù)字和字母*/voidDisplay_HALF(ucharss,ucharpage,ucharcolumn,ucharnumber){ uinti;//選屏參數(shù),page選頁參數(shù),column選列參數(shù),number選第幾漢字輸出 SelectScreen(ss); column=column&0x3f; Set_PAGE(page); //寫上半頁 Set_COLUMN(column); for(i=0;i<8;i++) { Write_DAT(Ezk[i+16*number]); } Set_PAGE(page+1); //寫下半頁 Set_COLUMN(column); for(i=0;i<8;i++) { Write_DAT(Ezk[i+16*number+8]); }}/*************************************** 顯示128*64的圖片 縱向取模,字節(jié)倒序***************************************/voidDisplay_PIC(uchar*p)//通過指針引用數(shù)組{ uinti,j;SelectScreen(1);//左屏 for(i=0;i〈8;i++) //控制頁數(shù)0—7,共8頁 { Set_PAGE(i); Set_COLUMN(0);for(j=(i*128);j<((i*128)+64);j++) //控制列數(shù)0—63,共64列 {Write_DAT(*(p+j));//寫內(nèi)容,列地址自動(dòng)加1}} SelectScreen(2);//右屏 for(i=0;i<8;i++) //控制頁數(shù)0-7,共8頁 { Set_PAGE(i); Set_COLUMN(0);for(j=((i*128)+64);j<((i+1)*128);j++) //控制列數(shù)0—63,共64列 {Write_DAT(*(p+j));//寫內(nèi)容,列地址自動(dòng)加1}} }#endif#ifndef_CODE_H_#define_CODE_H_#include〈intrins。h〉#defineuintunsignedint#defineucharunsignedchar/*******延時(shí)5S**********/voiddelay(void)//誤差0us{unsignedchara,b,c;for(c=165;c〉0;c—-)for(b=100;b〉0;b--)for(a=150;a〉0;a-—);_nop_();//ifKeil,requireuseintrins.h_nop_();//ifKeil,requireuseintrins.h}/*******字庫******///半角字庫ucharcodeEzk[]={/*——文字:0—-*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16--*/0xE0,0xF8,0xF8,0x18,0x18,0xF8,0xF0,0x00,0x0F,0x1F,0x3F,0x30,0x30,0x3F,0x1F,0x00,/*-—文字:1--*//*-—楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16--*/0x00,0x20,0x30,0xF8,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x3F,0x3F,0x3F,0x00,0x00,/*—-文字:2——*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16-—*/0x30,0x38,0x38,0x08,0x98,0xF8,0xF8,0x00,0x30,0x38,0x3C,0x3E,0x37,0x33,0x31,0x00,/*——文字:3--*//*—-楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16--*/0x30,0x38,0x38,0x88,0x88,0xF8,0xF8,0x00,0x08,0x18,0x38,0x31,0x31,0x3F,0x1F,0x04,/*—-文字:4—-*//*—-楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16—-*/0x00,0x80,0xC0,0xF0,0xF8,0xF8,0xF8,0x00,0x06,0x07,0x07,0x04,0x3F,0x3F,0x3F,0x00,/*—-文字:5—-*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16—-*/0xE0,0xF8,0xF8,0xC8,0xC8,0x88,0x88,0x00,0x19,0x39,0x30,0x20,0x30,0x3F,0x1F,0x00,/*——文字:6——*//*——楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16——*/0x00,0xC0,0xE0,0xF8,0xB8,0x98,0x80,0x00,0x1F,0x1F,0x3F,0x30,0x30,0x3F,0x1F,0x00,/*—-文字:7——*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16-—*/0x08,0x08,0x08,0x08,0xC8,0xF8,0x78,0x00,0x00,0x20,0x3C,0x3F,0x1F,0x01,0x00,0x00,/*——文字:8—-*//*——楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16-—*/0x70,0xF8,0xF8,0x88,0x98,0xF8,0xF8,0x00,0x1E,0x3F,0x3B,0x31,0x31,0x3F,0x1F,0x00,/*-—文字:9—-*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=8x16--*/0xF0,0xF8,0xB8,0x08,0x18,0xF8,0xF8,0xE0,0x01,0x23,0x33,0x3F,0x1F,0x07,0x03,0x00,};//漢字庫ucharcodeHzk[]={/*-—文字:負(fù)--*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16--*/0x00,0x00,0x00,0x00,0xE0,0xF8,0xDE,0x6E,0x7E,0x78,0xE8,0xE8,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x4F,0x6F,0x71,0x3F,0x1F,0x31,0x7F,0x6F,0x40,0x00,0x00,0x00,/*—-文字:載——*//*——楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16--*/0x40,0x40,0x40,0x50,0xD0,0xFC,0xFC,0xBC,0xBE,0xFE,0xE4,0xA4,0xAC,0x88,0x00,0x00,0x00,0x00,0x15,0x17,0x1F,0x7F,0x7F,0x6A,0x3A,0x1F,0x1F,0x3F,0x71,0x70,0x70,0x00,/*——文字:一--*//*-—楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16—-*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x00,/*--文字:二——*//*-—楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16—-*/0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x30,0x30,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0C,0x0C,0x0C,0x0C,0x00,/*--文字:三--*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16—-*/0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x98,0x98,0x88,0x98,0x10,0x00,0x00,0x00,0x20,0x30,0x30,0x10,0x11,0x11,0x11,0x11,0x11,0x10,0x19,0x19,0x18,0x18,0x18,0x00,/*—-文字:四—-*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16-—*/0x00,0x20,0xE0,0xE0,0x20,0xF0,0xF0,0x30,0xF0,0xF0,0x10,0x18,0xF8,0xF0,0x70,0x00,0x00,0x00,0x07,0x0F,0x0F,0x0B,0x08,0x08,0x0D,0x0D,0x0D,0x1F,0x1F,0x0F,0x00,0x00,/*——文字:五-—*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16-—*/0x00,0x00,0x00,0x00,0x10,0x10,0xF0,0xF8,0xF8,0x88,0x88,0x88,0x08,0x00,0x00,0x00,0x20,0x20,0x20,0x21,0x31,0x3F,0x1F,0x17,0x11,0x1F,0x1F,0x13,0x10,0x10,0x30,0x00,/*-—文字:六-—*//*-—楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16—-*/0x00,0x80,0x80,0x80,0x80,0x80,0x88,0x98,0x98,0xD0,0x40,0x40,0x40,0x40,0xC0,0x00,0x00,0x00,0x20,0x30,0x1C,0x0E,0x06,0x04,0x00,0x06,0x0E,0x1C,0x18,0x10,0x00,0x00,/*—-文字:七——*//*--楷體12;此字體下對應(yīng)的點(diǎn)陣為:寬x高=16x16--*/0x00,0x00,0x00,0x00,0x00,0x1C,0xFC,0xF8,0xC0,0xC0,0x40,0x60,0x60,0x60,0x40,0x00,0x00,0x02,0x02,0x03,0x01,0x01,0x1F,0x1F,0x10,0x10,0x10,0x10,0x18,0x1C,0x1C,0x00,/*--文字:八-—*//*--楷體12;此字體下對應(yīng)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 昆明學(xué)院《現(xiàn)代辦公技能訓(xùn)練A》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年非接觸溫度計(jì)項(xiàng)目合作計(jì)劃書
- 蘇州城市學(xué)院《場景特效》2023-2024學(xué)年第二學(xué)期期末試卷
- 噴槍及類似器具項(xiàng)目效益評估報(bào)告
- 全國川教版信息技術(shù)八年級上冊第9課《編輯工作表》教學(xué)設(shè)計(jì)
- 桂林師范高等??茖W(xué)?!稊?shù)字繪畫技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 農(nóng)村打井簡易合同范本
- 揚(yáng)州大學(xué)《展具設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海立達(dá)學(xué)院《食品營養(yǎng)與衛(wèi)生管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南2024年河南信陽師范大學(xué)招聘專職輔導(dǎo)員30人筆試歷年參考題庫附帶答案詳解
- 中考英語高頻單詞專項(xiàng)訓(xùn)練題配套答案
- 火龍罐療法經(jīng)典課件
- 應(yīng)用寫作(第六版) 課件 第1-4章 應(yīng)用寫作概述-行政事務(wù)應(yīng)用文
- 核島通風(fēng)系統(tǒng)介紹
- 我見證改革開放三十年課件
- xxxx智能化工程施工進(jìn)度計(jì)劃表
- 供應(yīng)商來料包裝運(yùn)輸存儲規(guī)范
- 搭橋術(shù)后護(hù)理查房
- 人工智能概論P(yáng)PT全套完整教學(xué)課件
- 第一章-運(yùn)動(dòng)選材概述課件
- 藏式建筑簡介優(yōu)質(zhì)課件
評論
0/150
提交評論