版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
(此文檔為word格式,下載后您可任意編輯修改!)畢業(yè)論文基于單片機的數(shù)字電壓表的設(shè)計摘要本設(shè)計主要研究的是以AT89C51單片機為核心的電壓測量系統(tǒng),該系統(tǒng)能夠在單片機的控制下完成對電壓信號采集,能夠根據(jù)采樣值進行量程自動轉(zhuǎn)換,并且測量結(jié)果可通過四個數(shù)碼管顯示出來。整個系統(tǒng)的設(shè)計完成了硬件電路的設(shè)計及軟件程序的編寫,通過最終硬件電路的調(diào)試及軟件程序的仿真,使該系統(tǒng)能夠在要求的條件下到達正常的測量及顯示功能。在整個系統(tǒng)的設(shè)計過程中,主要采用了模塊化的設(shè)計方法。關(guān)鍵詞:AT89C51單片機;數(shù)字電壓表;模塊化DesignofthedigitalvoltmeterbasedontheMCUAbstractThispaperintroducesanachievementofavoltagemeasuresystembasedontheAT89C51MCU.Thissystemcanaccomplishthesignalsamplingofvoltage,andchangerangeautomaticallyaccordingtothesignalsampled.Theresultcanbedisplayedthroughnumeralrubeoffourplaces.Inthisdesign,theofsoftwareprogram.Thissystemcanfulfillthefunctionofmeasureanddisplayingunderthedemandedconditions.Overthedesigningofthewholesystem,themethodofmodularityisused.Keywords:AT89C51MCU;DigitalVoltmeter;Modularity目錄TOC\o"1-4"\h\z緒論 1第一篇硬件局部的設(shè)計 11.數(shù)據(jù)采集局部的設(shè)計 21.1交流信號和直流信號的采樣 22.量程自動轉(zhuǎn)換電路的設(shè)計 43.模數(shù)轉(zhuǎn)換單元的設(shè)計 54.控制電路的設(shè)計 74.1總體概況 7一.主要功能 7二.內(nèi)部結(jié)構(gòu)框圖 8三.外部引腳說明 94.2單片機在系統(tǒng)中的應(yīng)用 115.顯示局部的設(shè)計 125.1鍵盤顯示8279芯片 125.28279的組成和根本工作原理 135.38279引腳及功能 155.48279的工作方式及命令字格式 17第二篇軟件系統(tǒng)的設(shè)計 231.MCS-51單片機匯編語言 232.主程序的設(shè)計 233.子程序的設(shè)計 253.1采樣程序的設(shè)計 253.2量程處理程序的設(shè)計 263.21采樣及其處理程序 263.22計算局部的設(shè)計 283.23顯示局部的軟件設(shè)計 293.3超量程處理 294.系統(tǒng)程序清單 29設(shè)計總結(jié) 41參考文獻 41緒論在電氣測量中,電壓是一個很重要的參數(shù)。如何準確地測量模擬信號的電壓值,一直是電測儀器研究的內(nèi)容之一。數(shù)字電壓表是通用儀器中使用較廣泛的一種測試儀器,很多電量或非電量經(jīng)變化后都用可數(shù)字電壓表完成測試。因此,數(shù)字電壓表被廣泛地應(yīng)用于科研和生產(chǎn)測試中。本文將介紹一種以單片機為核心的電壓測量儀表,它能夠測量電壓量,能夠自動進行量程選擇,并且測量結(jié)果能夠通過數(shù)碼管顯示,從而具有一定的智能性。本文將就這一系統(tǒng)的硬件電路局部和軟件程序局部分別作以介紹。在硬件局部,本文就系統(tǒng)的各個組成模塊的原理作了詳細的介紹。另外,在每一模塊電路中都對元器件的選擇作了簡單的介紹,其中包括有關(guān)數(shù)值的計算和分析。在軟件局部,詳細闡述了各個模塊電路的軟件設(shè)計方法和設(shè)計中的細節(jié)。第一篇硬件局部的設(shè)計分析本設(shè)計,可以看出其主要任務(wù)就是對電壓信號能夠自動選擇適宜的量程進行測量并顯示。本設(shè)計要求采用單片機進行控制,由于單片機的有效輸入輸出信號均為數(shù)字信號,而對于整個系統(tǒng)的前向通道有效信號均應(yīng)為模擬信號,所以在設(shè)計過程中必然包括模擬量轉(zhuǎn)換為數(shù)字量單元的設(shè)計。根據(jù)要求本設(shè)計中采用的是VF轉(zhuǎn)換電路。對于VF轉(zhuǎn)換電路,要使其轉(zhuǎn)換具有良好的線性度和精度必須使其輸入電壓變化范圍較小。而本系統(tǒng)中要求測量的電壓范圍是0~500V,無法滿足VF轉(zhuǎn)換的要求。所以,前向模擬通道的設(shè)計要包括量程轉(zhuǎn)換局部,即對大信號進行分壓變小,對小信號進行放大,顯然,這樣不僅能滿足VF轉(zhuǎn)換電路的要求,而且也能有效的防止超量程測量。另外,前向通道的設(shè)計還應(yīng)包括對模擬信號的采集局部。本設(shè)計框圖如圖1-1所示:圖1-1設(shè)計總框圖在以后的各節(jié)中,將分別介紹各個局部的設(shè)計。1.數(shù)據(jù)采集局部的設(shè)計根據(jù)本系統(tǒng)的要求所采集的信號應(yīng)為電壓信號,同時電壓信號還應(yīng)有交流和直流之分。所以在設(shè)計中應(yīng)該具有相應(yīng)的處理電路,使最終的信號得以統(tǒng)一。對于交流信號可以采用交直流變換的方法變?yōu)橹绷鳎@樣最終進入模數(shù)轉(zhuǎn)換單元〔即VF轉(zhuǎn)換單元〕的模擬信號就應(yīng)該為直流電壓信號。對于信號變換局部應(yīng)該注意的是所采樣的信號種類應(yīng)能夠通知控制局部〔單片機〕,以使控制局部做出相應(yīng)的計算處理,只有這樣才能保證最終的顯示結(jié)果的正確性。1.1交流信號和直流信號的采樣本設(shè)計中所采用的交直流轉(zhuǎn)換電路如圖1-2所示:分析此電路,可以看出此電路集精密全波整流、量程切換、信號過零比擬于一體。CD4053是三組單刀雙擲集成模擬開關(guān),開關(guān)X承當(dāng)了全波整流的任務(wù),其控制端A受控于比擬器的輸出電平。圖中U10工作于同相放大狀態(tài),運放U11工作于反相放大狀態(tài),比擬器的輸入引自U10的放大輸出信號,這有利于提高比擬器對信號的靈敏度。電路輸入交流信號的正半波時,同相連接的比擬器U9輸出高電平,模擬開關(guān)X接通運放U10輸出信號送后續(xù)的模擬信號與數(shù)字信號的轉(zhuǎn)換單元;電路輸入交流信號的負半波時,比擬器U9輸出低電平,模擬開關(guān)X接通反相器U11的輸出信號送后續(xù)的模擬信號與數(shù)字信號的轉(zhuǎn)換單元。由此完成了由U9過零躍變的準數(shù)字量控制的全波整流過程。這個準數(shù)字信號就可以用來通知控制局部所進行測量的是交流信號還是直流信號,以使控制局部進行相應(yīng)的計算和顯示。CD4053的另兩組模擬開關(guān)Y和Z承當(dāng)了三個量程的切換任務(wù),它們的控制端B和C通過來自單片機的量程切換命令。圖1-2交直流轉(zhuǎn)換電路另外,圖1-2電路能同樣有效地用于直流信號的前置處理。電路的輸入端無論接入的是直流正信號還是直流負信號,輸出的幅值都是0伏以上的直流正信號,這對于后續(xù)電路的設(shè)計尤其適用,而此時可以從比擬器輸出的電平上下獲知是正輸入還是負輸入。特別重要的示,直流信號和交流信號具有同樣的傳輸增益,給交直流參數(shù)的測量軟件同一處理提供了極大的方便。顯然,此電路滿足本設(shè)計的要求,而且它集量程轉(zhuǎn)換于一體,為量程轉(zhuǎn)換局部的設(shè)計提供了方便,節(jié)省了硬件資源。2.量程自動轉(zhuǎn)換電路的設(shè)計在儀表的設(shè)計過程中,量程轉(zhuǎn)換的設(shè)計是相當(dāng)重要的。所設(shè)計的系統(tǒng)應(yīng)該具有自動轉(zhuǎn)換量程的功能,并且能夠自動判斷是否超量程測量。這樣才能夠為后續(xù)的模數(shù)轉(zhuǎn)換單元提供適當(dāng)?shù)妮斎腚妷海蛊滢D(zhuǎn)換具有良好的精度和線性度。在本設(shè)計中模數(shù)轉(zhuǎn)換單元選擇的是電壓頻率轉(zhuǎn)換電路,對于VF轉(zhuǎn)換電路,其輸入電壓選擇0~5V。這樣,經(jīng)過量程轉(zhuǎn)換后的電壓范圍就應(yīng)該為0~5V。因為本系統(tǒng)的輸入電壓范圍是0~500V,故我們可以選擇1100作為其最大電壓的量程檔,500V經(jīng)過1100分壓后降為5V,恰好可以滿足VF轉(zhuǎn)換的要求。在本設(shè)計中,對于電壓信號設(shè)置了五個量程,即1100檔,110檔,×1檔,×10檔,×100檔。1100檔和110檔由分壓電路來完成,它們是用來測量較大電壓的。而×1檔,×10檔,×100檔那么是應(yīng)用放大電路來完成的,它們那么是用來測量較小的電壓的。在本設(shè)計中,×1檔,×10檔,×100檔可由交直流轉(zhuǎn)換局部的電路來實現(xiàn),見圖1-4。此電路中的多路選擇開關(guān)CD4053可以用來選擇放大倍數(shù),在該電路中分別設(shè)置了×1,×10和×100的放大倍數(shù)。具體選擇多大的放大倍數(shù)可以通過單片機的引腳P1.3和P1.4電平來控制。本設(shè)計中CD4053各個開關(guān)的導(dǎo)通與單片機引腳的關(guān)系見表1-1所示。表1-1:CD4053與單片機引腳的關(guān)系C〔P1.4〕B(P1.3)Y選通情況Z選通情況00Y Y0——01Y Y1Z Z010Y Y0——11Y Y1Z Z1本設(shè)計中1100和110分壓比的選擇也由單片機引腳控制多路選擇開關(guān)來實現(xiàn)。由于本系統(tǒng)要求的電壓測量范圍是0~500V,所以多路開關(guān)的選擇應(yīng)特別注意其耐壓值。在本設(shè)計中采用的是MAX4602,因為它的耐壓值可到達兩千伏左右,故可以應(yīng)用在本系統(tǒng)中。分壓比的選擇由單片機的P1.0和P1.1來控制。電路圖見圖1-3。圖1-3量程轉(zhuǎn)換局部的分壓電路由上述分析可知量程的轉(zhuǎn)換由兩局部〔即分壓和放大〕共同完成,所以在量程的選擇時需注意兩局部的關(guān)系,即選用分壓時放大電路的放大倍數(shù)要選為1,選用放大時信號要直接進來而不經(jīng)過分壓。3.模數(shù)轉(zhuǎn)換單元的設(shè)計單片機對模擬信號的讀取通常是采用AD轉(zhuǎn)換方式,這一方法對輸出阻抗低,惰性強,變化緩慢,傳輸距離長的信號,采用AD轉(zhuǎn)換的抗干擾性能就比擬差。對于不需要較快檢測速度的信號,如果采用VF變換器代替原有的AD轉(zhuǎn)換器,把電壓信號轉(zhuǎn)換成與之對應(yīng)的頻率信號〔f=kv〕,由單片機CPU計數(shù)器在采樣周期內(nèi)對頻率脈沖進行計數(shù),采樣時,CPU發(fā)出計數(shù)指令,定時時間一到,計數(shù)停止,從讀到的計數(shù)值乘以一定的系數(shù),就可以得到相應(yīng)電壓值。本設(shè)計中,采用的是LM331轉(zhuǎn)換芯片〔VF〕將模擬信號轉(zhuǎn)變?yōu)橄鄳?yīng)的頻率信號,具體電路如圖1-4所示:圖1-4VF轉(zhuǎn)換電路LM331是單片集成芯片,在VF轉(zhuǎn)換器中,它是LMΧ31系列中的一種,它作為一種簡單廉價的電路很適用于模數(shù)轉(zhuǎn)換。它使用了新的溫度補償能隙基準電路,在整個工作溫度范圍內(nèi)和低到4.0V電源電壓下都有較高的精度,最大線性度達0.01%,6個數(shù)量級的動態(tài)范圍,即滿量程的頻率范圍為1HZ~100KHZ。其數(shù)字脈沖重復(fù)率正比于模擬輸入電壓的幅值。這類器件的高精度,高線性度,低溫移及單調(diào)性的組合所提供的性能是其它技術(shù)難以實現(xiàn)的。逐次近似AD轉(zhuǎn)換器定期進行“抽樣〞,因此易受噪聲尖峰的影響,而電壓——頻率轉(zhuǎn)換器的輸出端一直在進行積分,因此能對噪聲或變化的輸入信號進行平滑,特別適合于噪聲工作環(huán)境。對VF變換,整個電路都是線性放大。對LM331,根據(jù)VF變換的原理,其輸出頻率與輸入電壓的關(guān)系滿足下面的公式:f=(V2.09)×(RR)×(1R)×(1C)(1-3)由公式1-3可以看出輸出頻率f與輸入電壓V成正比。對VF轉(zhuǎn)換,滿度頻率f大,閘門周期短,轉(zhuǎn)換快,分辨率高,但同時線性度下降。因此在選擇參數(shù)R、R、R、C時格外要注意。本設(shè)計中的輸入電壓Vi在0~5V(即量程轉(zhuǎn)換后的電壓均為0~5V)內(nèi)變化,輸出f選擇在0—10KHZ內(nèi)變化,既可滿足轉(zhuǎn)換率又可滿足分辨率的要求。在本設(shè)計中,為了消除干擾,在輸入信號端加一個低通濾波器,C=1uF,R=100KΩ,低通濾波的截止頻率為:f=1(2RC)≈1.59HZ圖1-4中,選擇R(R26)為62K,R(R22)為5.1K,C(C5)為0.01uF,R為R24+R30,仔細調(diào)節(jié)R30即可滿足輸入為5V時,輸出f為10KHZ。LM331由7腳輸入電壓,由5腳輸入偏置電流,5腳最大保持電壓為7Vs,2腳的參考電壓為1.9V。流入C6的Iaver=i(1.1RC)f。f輸出期間〔t=1.1RC〕,C14充電到V,此后,i=0,f無輸出,C14從V放電到V,而后比擬器工作,開始另一個循環(huán),整個過程始終保持電荷平衡。LM331的輸出接光電耦合器6N137,6N137采用射極輸出,不改變輸出相位,集電極開路,內(nèi)部有脈沖整形電路,其輸出可直接接單片機的引腳,而不會改變信號的頻率輸出。使用光電耦合器,一方面可以抑制較大的隨機干擾信號進入單片機,〔6N137最大可抑制3000V的噪聲干擾〕,減少進入單片機的干擾信號修改單片機內(nèi)部存放器的數(shù)值或發(fā)生死機的現(xiàn)象;另一方面可以防止數(shù)字電路,模擬電路的共地,因而能有效的抑制由于數(shù)字電路,模擬電路的共地帶來的地電位脈沖引起的數(shù)據(jù)抖動現(xiàn)象。4.控制電路的設(shè)計4.1總體概況一.主要功能MCS-51系列單片機是美國Intel公司在1980年推出的高性能8位單片微型計算機,比原來的MCS-48系列結(jié)構(gòu)更為先進,功能增強,它包括51和52兩個子系列。在51子系列中,主要有8031、8051、8751三種機型,他們的指令系統(tǒng)與芯片引腳完全兼容,僅片內(nèi)ROM有所不同。51子系列的主要功能為:⑴8位CPU。⑵片內(nèi)帶振蕩器,振蕩頻率fosc范圍為1.2~12MHZ;可有時鐘輸出。⑶128個字節(jié)的片內(nèi)數(shù)據(jù)存儲器。⑷4K字節(jié)的片內(nèi)程序存儲器〔8031無〕。⑸程序存儲器的尋址范圍為64K字節(jié)。⑹片外數(shù)據(jù)存儲器的尋址范圍為64K字節(jié)。⑺21個字節(jié)專用存放器。⑻4個8位并行IO接口:P0、P1、P2、P3。⑼1個全雙工串行IO接口,可多機通信。⑽2個16位定時器計數(shù)器。⑾中斷系統(tǒng)有5個中斷源,可編程為兩個優(yōu)先級。⑿111條指令,含乘法指令和除法指令。⒀有強的位尋址、位處理能力。⒁片內(nèi)采用單總線結(jié)構(gòu)。⒂用單一+5V電源。二.內(nèi)部結(jié)構(gòu)框圖MCS-51系列單片機的內(nèi)部結(jié)構(gòu)框圖如以下圖1-5所示:通道0驅(qū)動器通道通道0驅(qū)動器通道2驅(qū)動器RAM地址鎖存器RAM通道0鎖存器通道2鎖存器ROMB存放器程序地址存放器緩沖器PC遞增器程序計數(shù)器DPTR指針VCCGNDP1.0~P1.7堆棧指針SPACCTMP2PSW通道3鎖存器通道1鎖存器通道1驅(qū)動器通道3驅(qū)動器TMP1SCONTMODPCONTCONTL0TH1TH0TL1IESBUF(TX/RX)IP中斷、串行口和定時器邏輯振蕩器P3.0~P3.7RSTEAALEPSENXTAL2XTAL1ALU(+5V)指令存放定時邏輯指令譯碼由圖可大致看到:它含運算器、控制器、片內(nèi)存儲器、4個IO 接口、串行接口、定時器計數(shù)器、中斷系統(tǒng)、振蕩器等功能部件。圖中SP是堆棧指針存放器,棧區(qū)占用了片內(nèi)RAM的局部單元;未見通用存放器〔工作存放器〕,因單片機片內(nèi)有存儲器,與訪問工作存放器一樣方便,所以就把一定數(shù)量的片內(nèi)RAM字節(jié)劃作工作存放器區(qū);PSW是程序狀態(tài)字存放器,簡稱程序狀態(tài)字,相當(dāng)于其他計算機的標志存放器;DPTR是數(shù)據(jù)指針存放器,在訪問片外RAM、片外ROM、甚至擴展IO接口時特別有用;B存放器又稱乘法存放器,它與累加器A協(xié)同工作,可進行乘法操作和除法操作。三.外部引腳說明MCS-51系列單片機芯片有40個引腳。用HMOS工藝制造的芯片采用雙列直插式封裝,見以下圖1-6。低功耗的、采用CHMOS工藝制造的機型〔在型號中間加一“C〞字作為識別,如80C31、80C51、87C51〕也有用方封裝結(jié)構(gòu)的。圖1-6MCS-51系列單片機芯片引腳圖現(xiàn)將各引腳分別說明如下:1.主電源引腳VCC:接+5V電源正端。VSS:接+5V電源地端。2.外接晶體引腳XTAL1:片內(nèi)反相放大器輸入端。XTAL2:片內(nèi)反相放大器輸出端。外接晶體時,XTAL1與XTAL2各接晶體的一端,借外接晶體與片內(nèi)反相放大器構(gòu)成振蕩器。3.輸入輸出引腳P0.0~P0.7:P0口的8個引腳。在不接片外存儲器與不擴展IO接口時,可作為準雙向輸入輸出接口。在接有片外存儲器或擴展IO接口時,P0口分時復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。P1.0~P1.7:P1口的8個引腳??勺鳛闇孰p向IO接口使用。P2.0~P2.7:P2口的8個引腳。一般可作為準雙向IO接口;在接有片外存儲器或擴展IO接口且尋址范圍超過256個字節(jié)時,P2口用為高8位地址總線。P3.0~P3.7:P3口的8個引腳。除作為準雙向IO接口使用外,還具有第二功能,見表2-2。表2-2:輸入輸出引腳引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2(外部中斷0請求輸入端)P3.3(外部中斷1請求輸入端)P3.4T0(定時器計數(shù)器0計數(shù)脈沖輸入端)P3.5T1(定時器計數(shù)器1計數(shù)脈沖輸入端)P3.6(片外數(shù)據(jù)存儲器寫選通信號輸入端)P3.7(片外數(shù)據(jù)存儲器讀選通信號輸入端)4.控制端ALE:地址鎖存有效信號輸出端。在訪問片外程序存儲器期間,每機器周期該信號出現(xiàn)兩次,其下降沿用于控制鎖存P0口輸出的低8位地址。:片外程序存儲器讀選通信號輸出端,或稱片外取指信號輸出端。在向片外程序存儲器讀取指令或常數(shù)期間,每個機器周期該信號兩次有效〔低電平〕,以通過數(shù)據(jù)總線P0口讀回指令或常數(shù)。在訪問片外數(shù)據(jù)存儲器期間,信號將不出現(xiàn)。RSTVPD:RET寫全是RESET,是復(fù)位端。單片機的振蕩器工作時,該引腳上出現(xiàn)持續(xù)兩個機器周期的高電平就可實現(xiàn)復(fù)位操作,使單片機回復(fù)到初始狀態(tài)。上電時,考慮到振蕩器有一定的起振時間,該引腳上高電平必須持續(xù)10ms以上才能保證有效復(fù)位。VCC掉電期間,該引腳如接備用電源VPD〔+5V±0.5V〕,可用于保存片內(nèi)RAM中的數(shù)據(jù)。當(dāng)VCC下降到某規(guī)定值以下,VPD便向片內(nèi)RAM供電。VDD:片外程序存儲器選用端。該引腳有效〔低電平〕時只選用片外程序存儲器,否那么計算機上電或復(fù)位后先選用片內(nèi)程序存儲器。綜上所述,對MCS-51系列單片機的引腳可歸納出以下兩點:=1\*GB3①單片機功能多,引腳少,許多引腳都具有第二功能。=2\*GB3②單片機對外呈三總線形式。由P2、P0組成16位地址總線;由P0分時復(fù)用為數(shù)據(jù)總線;由ALE、、RST、、與P3口中的、、T0、T1、、共10個引腳組成控制總線。因是16位地址線,使片外存儲器的尋址范圍到達64K字節(jié)。4.2單片機在系統(tǒng)中的應(yīng)用在整個系統(tǒng)中,單片機的控制功能為:采用T0口對VF轉(zhuǎn)換之后的頻率進行計數(shù),采用T1口進行定時,采用P1.0、P1.1、P1.3和P1.4進行量程選擇,采用P1.2口判斷所測信號是交流信號還是直流信號,采用P0.0口作為顯示電路的清零端,采用串行輸入端RXD作為移位存放器的輸入端,采用串行輸出端TXD作為移位脈沖,電路如圖1-7所示:圖1-7控制局部電路圖圖1-7控制局部電路圖系統(tǒng)的控制過程為:T1口定時,T0口采樣,定時時間到,采樣結(jié)束,通過單片機進行計算并選擇適當(dāng)?shù)牧砍?,然后再進行采樣、計算、顯示。5.顯示局部的設(shè)計5.1鍵盤顯示8279芯片圖1-8顯示電路8279是一種可編程的鍵盤顯示器接口芯片。它既具有按鍵處理功能,又具有自動顯示功能,在單片機系統(tǒng)中應(yīng)用很廣泛。8279內(nèi)部有鍵盤FIFO〔先進先出堆?!硞鞲衅?,雙重功能的8×8=64BRAM,鍵盤控制局部可控制8×8=64個按鍵或控制8×8陣列方式的傳感器。該芯片能自動消除鍵抖動并具有雙鍵鎖定保護功能。顯示RAM容量為16×8,即顯示器最大配置可達16位LED數(shù)碼顯示。5.28279的組成和根本工作原理圖1-9為8279內(nèi)部結(jié)構(gòu)框圖。CNTL/STBSHIFT數(shù)據(jù)緩沖器I/O控制FIFO/CNTL/STBSHIFT數(shù)據(jù)緩沖器I/O控制FIFO/傳感器RAM的狀態(tài)存放器鍵盤去抖動與控制8×8FIFO/傳感器RAM控制與定時存放器顯示地址存放器16×8顯示RAM顯示存放器定時與控制掃描計數(shù)器回復(fù)OUTA0~3OUTB0~3SL0~3RL0~7時鐘復(fù)位D0~D7A0IRQ圖1-98279內(nèi)部結(jié)構(gòu)框圖1〕數(shù)據(jù)緩沖器和IO控制數(shù)據(jù)緩存器為雙向緩沖器,連接內(nèi)、外總線,用于傳送CPU和8279之間的命令或數(shù)據(jù)。IO控制線用于CPU對8279內(nèi)部各種存放器、緩沖器讀寫數(shù)據(jù)和讀寫狀態(tài)命令的控制。是片選信號,=0時8279被選通,CPU才能對其進行讀、寫操作;、是來自CPU的讀、寫控制信號;A0用于區(qū)別信息的特性,A0=1,表示數(shù)據(jù)線輸入的是指令,輸出的是狀態(tài)字;A0=0,表示輸入輸出的是數(shù)據(jù)。2〕控制與定時存放器及定時控制控制與定時存放器用來存放鍵盤和顯示器的工作方式,以及由CPU編程的其他操作方式。這些存放器一旦接收并鎖存CPU送來的命令,就通過譯碼產(chǎn)生相應(yīng)的信號,從而完成相應(yīng)的控制功能。定時控制包含根本的計數(shù)鏈,首級計數(shù)器是一個可編程的N分頻計數(shù)器。N可以在2~31之間由軟件編程,以便從外部時鐘CLK分頻得到內(nèi)部所需要的100KHz時鐘。然后再經(jīng)過分頻,為鍵盤掃描提供適當(dāng)?shù)闹鹦袙呙桀l率和顯示時間。3〕掃描計數(shù)器掃描計數(shù)器由兩種工作方式:編碼方式和譯碼方式。編碼工作方式時,計數(shù)器作二進制計數(shù),4位計數(shù)狀態(tài)從掃描線SL0~SL3輸出。外接416譯碼器,能提供16位LED的字位控制;外接38譯碼器,能為行列式鍵盤提供8列掃描信號,與RL0~RL7構(gòu)成8×8鍵盤的行列掃描。譯碼方式工作時,掃描計數(shù)器的最低二位被譯碼后,從SL0~SL3輸出一位低電平,可接4位LED或4×8鍵盤。4〕回復(fù)緩沖器、鍵盤去抖動及控制、回復(fù)緩沖器用來接收并鎖存來自回復(fù)線RL0~RL7的8個回復(fù)信號?!?〕在鍵盤工作方式中,回復(fù)線為行列式鍵盤的行〔列〕輸入線。在逐行逐列掃描時,回復(fù)線用來搜尋每一行〔列〕中閉合的鍵。當(dāng)某一鍵閉合時,去抖電路被置位,延時10ms后,再檢驗該鍵是否繼續(xù)閉合,并將該鍵的地址和附加的移位、控制狀態(tài)一起形成鍵盤數(shù)據(jù),送入8279內(nèi)部FIFORAM〔先入先出存儲器〕。鍵盤數(shù)據(jù)格式如表3-3所示:表3-3鍵盤數(shù)據(jù)格式D7D6D5D4D3D2D1D0控制移位掃描回復(fù)控制〔D7〕和移位〔D6〕的狀態(tài)由CNTL、SHIFT端外接的兩個附加按鍵決定;掃描〔D5、D4、D3〕來自掃描計數(shù)器,是閉合鍵所在列的編號,由SL0~SL3確定;回復(fù)〔D2、D1、D0〕是閉合鍵所在行的編號,由RL0~RL7確定。〔2〕在傳感器開關(guān)狀態(tài)矩陣方式中,回復(fù)線的內(nèi)容直接被送往相應(yīng)的傳感器RAM〔即FIFO存儲器〕?!?〕在選通輸入方式工作時,回復(fù)線的內(nèi)容在CNTLSTB信號的脈沖上升沿被送入FIFORAM。5〕FIFO傳感器RAM及其狀態(tài)存放器FIFO傳感器RAM是一個雙重功能的8×8位RAM。在鍵盤或選通方式工作時,它是FIFORAM,其寫入或讀出遵循先入先出的原那么。FIFO狀態(tài)存放器用來存放FIFORAM的狀態(tài),如RAM是滿還是空,其中存有多少數(shù)據(jù),是否操作出錯等。假設(shè)FIFORAM不空,例如已存有閉合鍵的鍵值,狀態(tài)邏輯將產(chǎn)生IRQ=1信號,向CPU申請中斷。在傳感器矩陣方式工作時,這個存儲器又是傳感器存儲器,它存放著傳感器矩陣中的每一個傳感器狀態(tài)。在此方式中,假設(shè)檢索出傳感器的變化,IRQ信號變?yōu)楦唠娖?,向CPU申請中斷。6〕顯示RAM和顯示地址存放器顯示RAM用來存儲顯示數(shù)據(jù),容量為16×8位。在顯示過程中,存儲的顯示數(shù)據(jù)輪流從顯示存放器輸出。顯示存放器分為A、B兩組,OUTA3~0和OUTB3~0可以單獨送數(shù),也可以組成一個8位的字。顯示存放器的輸出與顯示掃描配合,不斷從顯示RAM中讀出顯示數(shù)據(jù),同時輪流驅(qū)動被選中的顯示器件,以到達多路復(fù)用的目的,使顯示器件呈現(xiàn)穩(wěn)定的顯示狀態(tài)。顯示地址存放器用來存放CPU讀寫顯示RAM的地址,它可以由命令設(shè)定,也可以設(shè)置成在每次讀出或?qū)懭胫笞詣舆f增。5.38279引腳及功能8279是具有40個引腳的雙列直插式封裝的芯片,其引腳及功能如圖1-10所示。下面介紹各引腳功能。1〕數(shù)據(jù)線D0~D7是雙向三態(tài)數(shù)據(jù)總線,在接口電路中與系統(tǒng)數(shù)據(jù)總線相連,用以傳送CPU與8279之間的數(shù)據(jù)和命令。2〕地址線=0選中8279,當(dāng)A0=1為命令字及狀態(tài)字地址。A0=0為片內(nèi)數(shù)據(jù)地址,故8279芯片占用兩個端口地址。3〕控制線
VCCVCCRL1RL0CNTL/STBSHIFTSL3SL2SL1SL0OUTB0OUTB1OUTB2OUTB3OUTA0OUTA1OUTA2OUTA3A0RL2RL3CLKIRQRL4RL5RL6RL7RESETD0D1D2D3D4D5D6D7GND8279IRQD0~D7A0RESETCLKRL7~RL0SHIFTCNTL/STBSL3~SL10OUTA3~0OUTB3~088444140239338437536635734833932311082793011292812271326142515241617231822192021CPU接口鍵盤數(shù)據(jù)數(shù)據(jù)顯示圖1-108279引腳及功能(a)管腳配置;(b)引腳功能〔a〕(b)8279有較多的控制線。〔1〕CLK:時鐘輸入線8279所需時鐘頻率為100kHz,該頻率通常由8051單片機ALE端分頻得來。ALE的頻率為單片機系統(tǒng)主頻的16,再由指令送入分頻系數(shù),從而得到100kHz的8279時鐘頻率?!?〕IRQ:中斷請求輸出線,高電平有效?!?〕、:讀、寫輸入控制線。〔4〕SL0~SL3:掃描輸出線,用來作為掃描鍵盤和顯示的代碼輸出或直接輸出線?!?〕RL0~RL7:回復(fù)輸入線,它們是鍵盤或傳感器矩陣的信號輸入線。〔6〕SHIFT:來自外部鍵盤或傳感器矩陣的輸入信號,它是8279鍵盤數(shù)據(jù)的次高位即D6位的狀態(tài),該位狀態(tài)控制鍵盤上下檔功能。在傳感器方式和選通方式中,該引腳無用?!?〕CNTLSTB:控制選通輸入線,高電平有效。鍵盤方式時,鍵盤數(shù)據(jù)最高位〔D7〕的信號輸入到該引腳,以擴充鍵功能;選通方式時,當(dāng)該引腳信號上升沿到時,把RL0~RL7的數(shù)據(jù)存入FIFORAM中?!?〕OUTA0~OUTA3:通常作為顯示信號的高4位輸出線?!?〕OUTB0~OUTB3:通常作為顯示信號的低4位輸出線?!?0〕:顯示熄滅輸出線,低電平有效。當(dāng)=0時將顯示全熄滅。5.48279的工作方式及命令字格式一、8279的工作方式8279有三種工作方式:鍵盤方式、顯示方式和傳感器方式。1〕鍵盤工作方式8279在鍵盤方式工作時可設(shè)置為雙鍵互鎖方式和N鍵巡回方式。雙鍵互鎖方式:假設(shè)有兩個或多個鍵同時按下時,不管按鍵先后順序如何,只能識別最后一個被釋放的鍵,并把該鍵值送入FIFORAM中。N鍵巡回方式:一次按下任意個鍵均可被識別,以按鍵被掃描順序把鍵值存入FIFORAM中。2〕顯示方式8279的顯示方式又可分為左端入口和右端入口方式。顯示數(shù)據(jù)只要寫入顯示RAM那么可由顯示器顯示出來,因此顯示數(shù)據(jù)寫入RAM的順序,決定了顯示的次序。左端入口方式即顯示位置從顯示器最左端1位〔最高位〕開始,以后顯示的字符逐個向右順序排列。右端入口方式即顯示位置從顯示器最右端1位〔最低位〕開始,以后顯示的字符逐個向左順序排列。3〕傳感器方式傳感器方式是把傳感器的開關(guān)狀態(tài)送入傳感器RAM中。當(dāng)CPU對傳感器矩陣掃描時,一旦發(fā)現(xiàn)傳感器狀態(tài)發(fā)生變化就發(fā)出中斷請求〔IRQ置“1〞〕,中斷響應(yīng)后轉(zhuǎn)入中斷處理程序。二、8279的命令字及其格式8279的各種工作方式都要通過對命令存放器的設(shè)置來實現(xiàn)。8279共有8種命令,通過這些命令設(shè)置工作存放器,來選擇各種工作方式。命令存放器共8位,其格式如下:D7D6D5D4D3D2D1D0命令特征位〔3位〕有關(guān)命令內(nèi)容〔5位〕8279的一條命令由兩大局部組成,一局部為命令特征,代表某一類命令,由命令存放器高3位D7~D5決定。D7~D5三位的狀態(tài)可組合出8種形式,分別對應(yīng)8種命令,故稱為命令特征位。另一局部為命令的具體內(nèi)容,由D4~D0決定。每一種特征所代表的命令如表1-4所示。表1-4:8279命令特征表D7D6D5代表的命令種類000鍵盤顯示命令001時鐘編程命令010讀FIFO傳感器RAM命令011讀顯示器RAM命令100寫顯示命令101顯示禁止熄滅命令110消除命令111結(jié)束中斷出錯方式設(shè)置命令下面詳細說明各種命令中,D4~D0各位的設(shè)置方法,以便確定各種命令字。1〕鍵盤顯示命令特征位D7~D5=000D4,D3兩位用來設(shè)定4種顯示方式,D2~D0三位用以設(shè)定8種鍵盤顯示掃描方式,分別如表1-5和表1-6所示。由于顯示是硬件掃描顯示,因此顯示方式種規(guī)定了掃描顯示的位數(shù)〔8位、16位〕和第1個顯示的字符位置〔最左端或最右端〕。表1-5:顯示方式D4D3顯示方式008個字符顯示,左端入口方式0116個字符顯示,左端入口方式108個字符顯示,右端入口方式1116個字符顯示,右端入口方式表1-6:鍵盤顯示掃描方式D2D1D0鍵盤顯示掃描方式000編碼掃描鍵盤,雙鍵鎖定001譯碼掃描鍵盤,雙鍵鎖定010編碼掃描鍵盤,N鍵輪回011譯碼掃描鍵盤,N鍵輪回100編碼掃描傳感器矩陣101譯碼掃描傳感器矩陣110選通輸入,編碼顯示掃描111選通輸入,譯碼顯示掃描表1-6中所謂編碼掃描指掃描代碼直接由掃描線SL0~SL3輸出,每次只有1位是低電平〔4選1〕。所謂譯碼掃描,掃描代碼經(jīng)SL0~SL3外接譯碼器輸出。由于鍵盤最大8×8=64個鍵,由SL0~SL2接3~8譯碼器,譯碼器的8位輸出作為鍵盤掃描輸出線〔列線〕,RL0~RL7為輸入線〔行線〕。8279最多驅(qū)動16位顯示器,故可由SL0~SL3接一個4~16譯碼器,譯碼器16位輸出為顯示掃描輸出線〔16選1〕,決定第幾位顯示。顯示字段碼由OUTA0~OUTA3和OUTB0~OUTB3輸出。以上表1-4、表1-5、表1-6三個表相互組合可得到各種鍵盤顯示命令。2〕時鐘編程命令一般單片機的ALE端接8279的CLK端,但ALE端輸出的脈沖是主機頻率的16,而8279工作只需100kHz的時鐘脈沖,利用分頻系數(shù)可把CLK端輸入脈沖再分頻以到達產(chǎn)生100kHz脈沖之目的。分頻系數(shù)是由時鐘編程命令輸入。由表1-4可見時鐘編程命令特征位D7~D5=001。D4~D0用來設(shè)定分頻系數(shù)。3〕讀FIFO傳感器RAM命令特征位D7~D5=010。D2~D0為8279中FIFO及傳感器RAM的首地址。D3無用。D4控制RAM地址自動加1位:D4=1時CPU讀完一個數(shù)據(jù),RAM地址自動加1,準備讀下一個單元數(shù)據(jù);D4=0時CPU讀完一個數(shù)據(jù)后,地址不變。4〕讀顯示RAM命令此命令用來讀顯示器RAM,其格式如下:特征位D7~D5=011。D4=1RAM地址自動加1,D4=0不加1。D3~D0為顯示RAM中的地址。5〕寫顯示RAM命令特征位D7~D5=100。D4是地址自動加1控制,D4=1地址自動加1,D4=0地址不加1。D3~D0是欲寫入的RAM地址,假設(shè)連續(xù)寫入那么表示RAM首地址。命令格式同讀顯示RAM。6〕顯示器禁止寫入熄滅命令特征位D7~D5=101。D4為無用位,可設(shè)為“1〞或“0〞。D3為禁止A組顯示RAM寫入,D3=1禁止。D2為禁止B組顯示RAM寫入,D2=1禁止。D1為A組顯示熄滅控制,D1=1時熄滅,D1=0恢復(fù)顯示。D0為B組顯示熄滅控制,D0=1時熄滅,D0=0恢復(fù)顯示。利用該命令可以控制A、B兩組顯示器,哪組繼續(xù)顯示,哪組被熄滅。7〕去除命令此命令用以去除顯示RAM和FIFO中的內(nèi)容。特征位D7~D5=110。D0為總?cè)コ卣魑?,D0=1把顯示RAM和FIFO全可去除。D1=1去除FIFO狀態(tài),使中斷輸出線復(fù)位,傳感器RAM的讀出地址清0。D4~D2設(shè)定去除顯示RAM的方式,如表1-7所示。表1-7:去除顯示RAM方式D4D3D2消除方式10×將全部顯示RAM清為010將顯示RAM置為20H〔A組=0010B組=0000〕11將顯示RAM置為FFH0D0=0不去除D1=1仍按上述方式去除8〕結(jié)束中斷出錯方式設(shè)置命令特征位D7~D5=111。D4=1時〔其D3~D0位任意〕有兩種不同作用?!?〕在傳感器方式,用此命令結(jié)束傳感器RAM的中斷請求。因為在傳感器工作方式時,每當(dāng)傳感器狀態(tài)發(fā)生變化,掃描電路自動將傳感器狀態(tài)寫入傳感器RAM,同時發(fā)出中斷申請即將IRQ置高電平,并禁止再寫入傳感器RAM。中斷響應(yīng)后,從傳感器RAM讀走數(shù)據(jù)進行中斷處理,但中斷標志IRQ的撤除分兩種情況。假設(shè)讀RAM地址自動加1標志位為“0〞,中斷響應(yīng)后IRQ自動變低,撤銷中斷申請;假設(shè)讀RAM地址自動加1標志位為“1〞,中斷響應(yīng)后IRQ不能自動變低,必須通過結(jié)束中斷命令來撤銷中斷請求。〔2〕在設(shè)定為鍵盤掃描N鍵輪回方式時作為特定錯誤方式設(shè)置命令。在鍵盤掃描N鍵輪回工作方式,又給8279寫入結(jié)束中斷錯誤方式命令,那么8279將以一種特定的錯誤方式工作,即在8279消顫周期內(nèi),如果發(fā)現(xiàn)多個按鍵同時按下,那么將FIFO狀態(tài)字中錯誤特征位置“1〞,并發(fā)出中斷請求阻止寫入FIFORAM。根據(jù)上述8種命令可以確定8279的工作方式。在8279初始化時把各種命令送入命令地址口,根據(jù)其特征位可以把命令存入相應(yīng)的命令存放器,執(zhí)行程序時8279能自動尋址相應(yīng)的命令存放器。三、8279的狀態(tài)字及其格式狀態(tài)字顯示出8279的工作狀態(tài)。狀態(tài)字和8種命令字共用1個地址口。當(dāng)A0=1時,從8279命令狀態(tài)口地址讀出的是狀態(tài)字。狀態(tài)字格式如表1-8所示:表1-8狀態(tài)字格式D7D7=1表示顯示無效,此時不能對顯示RAM寫入D6D6=1表示至少有1個鍵閉合;在特殊錯誤方式時有多鍵同時按下錯誤D5D5=1表示FIFORAM已滿,再輸入1個字那么溢出D4D4=1表示FIFO中已空,無數(shù)據(jù)可讀D3D3=1表示FIFORAM中數(shù)據(jù)已滿D2~D0FIFORAM中數(shù)據(jù)個數(shù)狀態(tài)字主要用于鍵盤和選通工作方式,以指示FIFORAM中的字符數(shù)及有無錯誤發(fā)生。四、8279數(shù)據(jù)輸入輸出格式對8279輸入輸出數(shù)據(jù)不僅要先確定數(shù)據(jù)地址口,而且數(shù)據(jù)存放也要按一定格式,其格式在鍵盤和傳感器方式有所不同。1〕 鍵盤掃描方式數(shù)據(jù)輸入格式鍵盤的行號、列號及控制鍵位置如表1-9所示:表1-9:鍵盤的行號、列號及控制鍵位置D7控制鍵CNTL狀態(tài)D6控制鍵SHIFT狀態(tài)D5~D3被按鍵所在列號〔由SL0~SL2狀態(tài)確定〕D2~D0被按鍵所在行號〔由RL0~RL7狀態(tài)確定〕2〕 傳感器方式及選通方式數(shù)據(jù)輸入格式此種方式8位輸入數(shù)據(jù)為RL0~RL7的狀態(tài)。格式如表1-10所示:表1-10:傳感器方式及選通方式數(shù)據(jù)輸入格式D7D6D5D4D3D2D1D0RL7RL6RL5RL4RL3RL2RL1RL0五、8279內(nèi)部譯碼和外部譯碼方式8279的內(nèi)、外譯碼由鍵盤顯示命令字的最低位D0選擇決定。D0=1選擇內(nèi)部譯碼,也稱為編碼方式,該方式SL0~SL3每時刻只能有一位為低電平。8279只能接4位顯示器和4×8矩陣式鍵盤。D0=0選擇外部譯碼方式,SL0~SL3為計數(shù)分頻式波形輸出,顯示方式可外接4~16譯碼器驅(qū)動16位顯示器。鍵盤方式按3~8譯碼器,構(gòu)成8×8矩陣式鍵盤。第二篇軟件系統(tǒng)的設(shè)計硬件電路和軟件程序是組成一個系統(tǒng)不可缺少的兩局部,二者的正確與否將直接影響整個程序的可實現(xiàn)性。在上一章中已經(jīng)將整個系統(tǒng)的硬件局部作了介紹,在這一章中將就系統(tǒng)的軟件局部加以分析說明1.MCS-51單片機匯編語言由于本系統(tǒng)所需要完成的軟件程序不是很大,并且數(shù)據(jù)的計算也不是很繁瑣,因此本系統(tǒng)軟件將采用匯編語言進行設(shè)計。2.主程序的設(shè)計分析本設(shè)計,可知其軟件所要完成的功能是:對VF轉(zhuǎn)換后的頻率信號進行采樣,并通過計算比擬選擇適當(dāng)?shù)牧砍?,然后再次進行采樣,通過FV轉(zhuǎn)換使其轉(zhuǎn)換為最初模擬信號的值,最后顯示,以后將再次進行采樣比擬重復(fù)上述操作。圖2-1主程序流程圖:由上述分析可知,主程序的功能應(yīng)為選擇量程并進行量程的處理。本設(shè)計的主程序流程圖如圖2-1所示。本設(shè)計中通過10ms的采樣值進行量程比擬,由于本設(shè)計中采用的VF轉(zhuǎn)換為0~10KHZ,所以10ms對應(yīng)的最大采樣值應(yīng)為100HZ。設(shè)計中單片機引腳與量程選擇以及電壓范圍的關(guān)系見表2-1。從表2-1中可以看出,每一量程下限對應(yīng)的頻率均應(yīng)為10HZ,在系統(tǒng)的設(shè)計中,為了使量程轉(zhuǎn)換的臨界值得以測量準確,可選擇下限頻率為9HZ。表2-1:量程與控制引腳的電平關(guān)系量程輸入電壓范圍P1.0P1.1P1.3P1.4110050~500V11111105~50V1011×10.5~5V0011×100.05~0.5V0010×1000.005~0.05V0000另外,在主程序的設(shè)計中還應(yīng)注意在進行量程選擇時,必須將系統(tǒng)置于最大量程,因為這樣可以防止所測信號在系統(tǒng)要求范圍內(nèi)的超量程測量。從表2-1中可以看出本設(shè)計中所測量的電壓范圍是:0.005V~500V。對于超出500V,系統(tǒng)將做超量程處理。對于小于0.005V的信號系統(tǒng)顯示結(jié)果將為0。3.子程序的設(shè)計由系統(tǒng)的主程序流程圖可以看出,系統(tǒng)子程序的設(shè)計即為對采樣程序的設(shè)計和量程處理程序的設(shè)計以及超量程處理程序的設(shè)計。3.1采樣程序的設(shè)計系統(tǒng)采樣的實現(xiàn)為:T1口進行定時,T0口進行計數(shù),在T1定時器開始工作的同時計數(shù)器T0開始計數(shù),T1定時時間到,那么T0停止計數(shù),最終的采樣值就應(yīng)為T0的計數(shù)值。系統(tǒng)采樣的流程圖見圖2-2。在采樣程序的設(shè)計中要注意系統(tǒng)的采樣時間。由于采樣值僅作為量程比擬的數(shù)據(jù),故采樣時間可以選擇小一些,這樣既可以節(jié)省整個程序的執(zhí)行時間,也可以使后續(xù)的量程比擬計算局部簡單些。但是采樣時間也不能選擇太小,如果選擇太小顯然采樣誤差就會很大。在本系統(tǒng)中選擇采樣時間為10ms。10ms采樣最大采樣值應(yīng)為100HZ,顯然在量程比擬局部計算就比擬簡單。圖2-210ms采樣流程圖圖2-3量程處理程序3.2量程處理程序的設(shè)計在量程處理程序中需要完成的功能應(yīng)為在所選量程下進行信號的采樣,計算和顯示。系統(tǒng)量程處理局部的流程圖見圖2-2所示.。從圖2-3中可以看出,在量程處理局部又將系統(tǒng)采樣處理程序以及計算、顯示程序分別作為了子程序來調(diào)用。下面將就其各個子程序作以介紹。3.21采樣及其處理程序在量程處理程序局部,采樣程序的功能為:采樣值經(jīng)過計算后顯示,所以這局部的程序?qū)φ麄€系統(tǒng)來說將非常重要,采樣值的準確與否將直接影響顯示結(jié)果的準確與否,所以設(shè)計中要盡量使這局部的精度高些。對于采樣局部的設(shè)計與前一局部介紹的采樣實現(xiàn)方法相同,只是采樣時間的設(shè)置有所不同。前一局部的采樣精度要求不是很高,而這一局部的采樣值要求很高,所以采樣時間不能選為10ms。這一局部采樣時間相對要長一些才能保證采樣精度,在本設(shè)計中選擇采樣時間為100ms,因為100ms采樣,采樣精度能夠滿足要求,而且,最終的計算局部只需要通過移動小數(shù)點位即可實現(xiàn),另外,程序執(zhí)行的時間也不是很長。為了使采樣值更為精確,本設(shè)計中采用了滑動濾波的方法對采樣值進行處理。即先在RAM中建立一個數(shù)據(jù)緩沖區(qū),一次存放10次采樣數(shù)據(jù),然后每采進一個新數(shù)據(jù),就將最早采集的數(shù)據(jù)去掉。這樣,每采樣一個數(shù)值,就可計算一個新的和值進行顯示。即測量數(shù)據(jù)取一丟一,測量一次便計算一次和值,大大加速了數(shù)據(jù)處理的能力。圖2-4滑動濾波流程圖取采樣時間為100ms,那么采用滑動濾波后,其顯示的刷新時間就應(yīng)為100ms左右,對于其顯示的結(jié)果分別對應(yīng)為100ms采樣值,200ms采樣值,一直到1s的采樣值,在1s以后,每次顯示的均應(yīng)為1s的采樣值,只是每采樣一次,替換一個1s以前采樣的值,求一個新的和值,顯然這樣會比采用算術(shù)平均濾波運算獲得有效數(shù)值速度快得多?;瑒訛V波程序的流程圖見圖2-4。3.22計算局部的設(shè)計在量程處理局部需要計算的是采樣頻率值轉(zhuǎn)換為相應(yīng)的電壓值,同時為了最終的正確顯示還要將轉(zhuǎn)換之后的電壓值轉(zhuǎn)換為十進制的BCD碼,另外,所測信號假設(shè)為交流信號,還應(yīng)使其轉(zhuǎn)換為有效值進行顯示。分析表2-1,那么有當(dāng)量程為50V~500V時,有500V對應(yīng)于10KHZ,即20HZV。當(dāng)量程為5V~50V時,由50V對應(yīng)于10KHZ,即200HZV。當(dāng)量程為0.5V~5V時,那么有2KHZV??梢钥闯鲱l率轉(zhuǎn)換為電壓值可以通過頻率值右移一位〔即除以2〕和小數(shù)點位的控制來實現(xiàn)。由于本設(shè)計中所用的為4位顯示,而采樣100ms對應(yīng)的最大頻率為1KHZ,如果被測量為電壓值,那么經(jīng)過右移最大為500HZ,轉(zhuǎn)換后的BCD碼應(yīng)該為3位,所以在所測頻率值右移時,要保存移出的小數(shù)局部,可將其暫存至存放器R4中,作為電壓顯示時的最低位,這樣就可使測量更為精確了。對于電壓值轉(zhuǎn)換的3位BCD碼,可將其存至R5~R7單元中,〔其中R5存放轉(zhuǎn)換后的最低位,R7存放最高位〕,這樣在顯示局部的設(shè)計就比擬容易了。對于交流信號,本設(shè)計中的測量結(jié)果應(yīng)為其平均值,而將平均值轉(zhuǎn)換為有效值還要將其再乘以1.11的系數(shù)。對于乘法顯然運算起來會比擬麻煩,所以在本設(shè)計中采用了十進制加法的方法,將轉(zhuǎn)換后的十進制BCD碼乘以1.11。另外,在計算之后還要注意小數(shù)點的位置,如果在量程為0.05V~0.5V時,當(dāng)所測頻率轉(zhuǎn)換為四位BCD碼〔其中最高位R7非0〕時,顯然,在送入R4~R7顯示時,無論小數(shù)點在哪一位,最終的顯示都將是錯誤的,所以在送顯示之前還要對于不同的量程有不同的處理程序,為了顯示數(shù)據(jù)精度高一些,系統(tǒng)軟件中還采用了四舍五入的方法對最終數(shù)據(jù)進行處理。計算局部的軟件流程圖見圖2-5所示:圖2-5計算局部的流程圖3.23顯示局部的軟件設(shè)計顯示局部的軟件相比照擬簡單,只是把要顯示的數(shù)據(jù)送至單片機串口即可,在這一局部需要注意的是送顯示數(shù)據(jù)的順序,要先從最低位單元R4送,然后再送R5,R6和R7。3.3超量程處理當(dāng)所測量的信號超過系統(tǒng)所要求的測量范圍時,必須要以一定的方式通知測量者,否那么被測信號過大可能將系統(tǒng)的某些元器件燒壞,從而影響系統(tǒng)的正常工作。對于智能儀器這局部的設(shè)計是很必要的。在本設(shè)計中可以通過顯示的方法來判斷是否超量程測量,通過軟件使被測信號超出系統(tǒng)要求的最大測量值時,顯示結(jié)果為E000。4.系統(tǒng)程序清單ORG0000HLLJMP0030HORG0030HSTART: LCALLP8279 ;8279初始化子程序 SETBP1.0;設(shè)置最大量程SETBP1.1SETBP1.3SETBP1.4ACALLCAI;調(diào)用10ms采樣子程序MOVA,#100;設(shè)置采樣比擬值100msCLRCSUBBA,R1;采樣值>100msJCERR;轉(zhuǎn)到超量程處理MOVA,#9;否那么,設(shè)置采樣比擬值9msCLRCSUBBA,R1;采樣值>9msJCA1;轉(zhuǎn)到1100量程處理ST1:SETBP1.0;否那么,設(shè)置110量程CLRP1.1SETBP1.3SETBP1.4ACALLCAI;調(diào)用10ms采樣子程序MOVA,#100;設(shè)置采樣比擬值100msCLRCSUBBA,R1;采樣值>100msJCSTART;轉(zhuǎn)到設(shè)置最大量程MOVA,#9;否那么,設(shè)置采樣比擬值9msCLRCSUBBA,R1;采樣值>9msJCD1;轉(zhuǎn)到110量程處理ST2:CLRP1.0;否那么,設(shè)置乘1量程CLRP1.1SETBP1.3SETBP1.4ACALLCAI;調(diào)用10ms采樣子程序MOVA,#100;設(shè)置采樣比擬值100msCLRCSUBBA,R1;采樣值>100msJCSTART;轉(zhuǎn)到設(shè)置最大量程MOVA,#9;否那么,設(shè)置采樣比擬值9msCLRCSUBBA,R1;采樣值>9msJCD2;轉(zhuǎn)到乘1量程處理ST3:CLRP1.0;否那么,設(shè)置乘10量程CLRP1.1SETBP1.3CLRP1.4ACALLCAI;調(diào)用10ms采樣子程序MOVA,#100;設(shè)置采樣比擬值100msCLRCSUBBA,R1;采樣值>100msJCSTART;轉(zhuǎn)到設(shè)置最大量程MOVA,#9;否那么,設(shè)置采樣比擬值9msCLRCSUBBA,R1;采樣值>9msJCD3;轉(zhuǎn)到乘10量程處理ST4:CLRP1.0;否那么,設(shè)置乘100量程CLRP1.1CLRP1.3CLRP1.4ACALLCAI;調(diào)用10ms采樣子程序MOVA,#100;設(shè)置采樣比擬值100msCLRCSUBBA,R1;采樣值>100msJCSTART;轉(zhuǎn)到設(shè)置最大量程MOVA,#9;否那么,設(shè)置采樣比擬值9msCLRCSUBBA,R1;采樣值>9msJCB2;轉(zhuǎn)到乘100量程處理SETBP0.0;否那么,清零LJMPSTARTB2:LJMPA5D1:LJMPA2D2:LJMPA3D3:LJMPA4ERR:MOVR4,#00H;設(shè)置E000MOVR5,#00HMOVR6,#00HMOVR7,#0EHCLRP0.0CLRP0.1CLRP0.2ACALLXIAN;調(diào)用顯示子程序LJMPSTARTA1:MOV40H,#40HMOV50H,#50HC1:ACALLF_V;調(diào)用F_V程序ACALLXIAN;調(diào)用顯示子程序CLRP0.0;以下在不同量程下的處理程序CLRP0.1SETBP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JCERRMOVA,#9CLRCSUBBA,R1JCC1LJMPST1A2:MOV40H,#40HMOV50H,#50HC2:ACALLF_VACALLXIANCLRP0.0SETBP0.1CLRP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JNCB3LJMPSTARTB3:MOVA,#09CLRCSUBBA,R1JCC2LJMPST2A3:MOV40H,#40HMOV50H,#50HC3:ACALLF_VACALLXIANSETBP0.0CLRP0.1CLRP0.2LJMPA30A30:ACALLCAIMOVA,#100CLRCSUBBA,R1JCB4MOVA,#09CLRCSUBBA,R1JCC3LJMPST3B4:LJMPSTARTA4:MOV40H,#40HMOV50H,#50HC4:ACALLF_VMOVA,R5MOVR4,AMOVA,R6MOVR5,AMOVA,R7MOVR6,AMOVR7,#00HSETBP0.0CLRP0.1CLRP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JCB5MOVA,#09CLRCSUBBA,R1JCC4LJMPST4B5:LJMPSTARTA5:MOV40H,#40HMOV50H,#50HC5:ACALLF_VMOVA,R5CLRCSUBBA,#05HJCNJWMOVA,R6ADDA,#01HCJNEA,#0AH,SMOVR6,#00HMOVA,R7ADDA,#01HMOVR7,ALJMPNJWS:MOVR6,ANJW:MOVA,R6MOVR4,AMOVA,R7MOVR5,AMOVR6,#00HMOVR7,#00HA50:ACALLXIANSETBP0.0CLRP0.1CLRP0.2ACALLCAIMOVA,#100CLRCSUBBA,R1JCB6MOVA,#09CLRCSUBBA,R1JCC5SETBP0.3B6:LJMPSTARTCAI:MOVTMOD,#15H;T0工作于計數(shù)器方式1,T1工作于定時器方式1MOVTH1,#0D8H;定時時間設(shè)置為10msMOVTL1,#0F0HMOVTH0,#00H;T0計數(shù)器清零MOVTL0,#00HSETBTR1;開計數(shù)器SETBTR0;開定時器LOOP:JBCTF1,LOOP1;定時到退出循環(huán)ALJMPLOOPLOOP1:CLRTR1;關(guān)計數(shù)器CLRTR0;關(guān)定時器MOVR1,TL0;計數(shù)值送R1RETCAI1:MOVTMOD,#15H;100ms采樣MOVTH1,#0AHMOVTL1,#0DCHMOVTH0,#00HMOVTL0,#00HSETBTR1SETBTR0LOOP0:JBCTF1,LOOP2ALJMPLOOP0LOOP2:CLRTR1CLRTR0MOVR2,TL0;保存采樣值MOVR3,TH0MOVA,40HMOVR0,A;#40H送R0MOVA,50HMOVR1,A;50H送R1MOVA,R2MOV@R,A;R2值送40H單元MOVA,40HINCAMOV40H,AMOVA,R3MOV@R,A;R3值送50H單元MOVA,50HINCAMOV50H,AMOVA,40HSUBBA,#4AHJNZF1MOV40H,#40HMOV50H,#50HF1:MOVR0,#40HMOVR1,#50HMOVR3,#00HCLRAF2:ADDA,@R;兩次采樣值相加MOVR2,AMOVA,@RADDCA,R3MOVR3,AMOVA,R2INCR0INCR1CJNER0,#4AH,F2;判斷十次采樣是否完成RETF_V:ACALLCAI1CLRCMOVA,R3;高位先右移一位RRCAMOVR3,A;低位再右移一位MOVA,R2RRCAMOVR2,A;完成采樣值除二JCB1;判斷數(shù)據(jù)位移出的值MOVR4,#00H;移出值為1時置R4為00HLJMPBCD;跳轉(zhuǎn)到電壓BCD碼轉(zhuǎn)換子程序B1:MOVR4,#05H;移出值為0時置R4為05HBCD:ACALLBCD0;轉(zhuǎn)到電壓BCD0MOVA,R0MOVR5,A;R0給R5MOVA,R2MOVR6,A;R2給R6MOVA,R2MOVR7,A;R2給R7AD:MOVC,P1.2MOV20H.0,CMOVTMOD,#10HMOVTH1,#0D8HMOVTL1,#0F0HMOVIE,#00HSETBTR1LOOP3:JBCTF1,LOOP4ALJMPLOOP3LOOP4:CLRTR1MOVC,20H.0;以下是交流信號乘1.11程序ANLC,P1.2MOV20H.1,CMOVC,P1.2ANLC,20H.0ORLC,20H.1JNCFANMOVA,R4ADDA,R5MOVR0,ASUBBA,#0AHJCN1INCR5MOVR4,ALJMPN2N1:MOVA,R0MOVR4,AN2:MOVA,R4ADDA,R6MOVR0,ASUBBA,#0AHJCN3MOVR4,AINCR5LJMPN4N3:MOVA,R0MOVR4,AN4:MOVA,R5ADDA,R6MOVR0,ASUBBA,#0AHJCN5MOVR5,AINCR6LJMPN6N5:MOVA,R0MOVR5,AN6:MOVA,R5ADDA,R7MOVR0,ASUBBA,#0AHJCN7MOVR5,AINCR6LJMPN8N7:MOVA,R0MOVR5,AN8:MOVA,R6ADDA,R7MOVR0,ASUBBA,#0AHJCN9MOVR6,AINCR7LJMPFANN9:MOVA,R0MOVR6,AFAN:RETBCD0:MOVR1,#00H;R1,R5~R7單元初始化MOVR5,#00HMOVR6,#00HMOVR7,#10H;設(shè)置循環(huán)次數(shù)為10BCD1:CLRCMOVA,R2;低位先左移一位RLCAMOVR2,A;高位再左移一位MOVA,R3RLCAMOVR3,A;完成采樣值復(fù)原MOVA,R1ADDCA,R1DAAMOVR1,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R6ADDCA,R6DAAMOVR6,ADJNZR7,BCD1;循環(huán)十次MOVA,R1ANLA,#0FH;截?。?低位四位MOVR0,A;存入R0MOVA,R1ANLA,#0F0H;截取R1高位四位SWAPA;上下四位互換MOVR2,A;存入R2MOVA,R5ANLA,#0FH;截取R5低位四位MOVR3,A;存入R3MOVA,R5ANLA,#0F0H;截取R5高位四位SWAPA;上下四位互換MOVR7,A;存入R7RETP8279:PUSH DPH ;保護現(xiàn)場 PUSH DPL PUSH ACC MOV DPTR,#0FF82H MOV A,#00H ;置8279工作方式〔8個字符顯示,左入口; ;編碼掃描鍵盤,雙鍵鎖定〕 MOVX @DTR,A MOV A,#2FH ;置鍵盤掃描速率 MOVX @DTR,A MOV A,#0C1H ;去除LED顯示 MOVX @DTR,A POP ACC ;恢復(fù)現(xiàn)場 POP DPL POP DPH RETXIAN: ;4個數(shù)碼管顯示子程序 MOV50H,R7MOV51H,R6MOV52H,R5MOV53H,R4MOV R0,#50H MOV R4,#03H LOOP2: MOV A,@R MOV R5,A LCALL DISLED INC R0 MOV A,@R MOV R5,A DEC R4 LCALL DISLED INC R0 DEC R4 CJNE R4,#0FFH,LOOP2 RET DISLED: ;顯示字符子程序 PUSH DPH ;保護現(xiàn)場 PUSH DPL PUSH ACC MOV A,#80H ;置顯示起始地址 ADD A,R4 ;加位置偏移量 MOV DPTR,#0FF82H MOVX @DTR,A ;設(shè)置顯示位置 MOV DPTR,#LEDSEG ;置顯示常數(shù)表起始位置 MOV A,R5 MOVC A,@ADPTR ;查表 MOV DPTR,#0FF80H MOV
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云南省景洪市第三中學(xué)2014-2021學(xué)年高一上學(xué)期期末考試數(shù)學(xué)試題
- 2022版《紅對勾講與練》高三物理人教版總復(fù)習(xí)課時作業(yè)13萬有引力與航天-
- 飼料加工工藝
- 處理意見書范文處理意見寫
- 磨削加工技術(shù)
- 天津華寧KTC101系統(tǒng)說明書
- 鋁冶煉與節(jié)能減排政策實施效果考核試卷
- 針織品行業(yè)智能物流與供應(yīng)鏈管理考核試卷
- 食品倉儲的退貨與退款管理考核試卷
- 節(jié)能建筑室內(nèi)空氣質(zhì)量控制施工考核試卷
- 幼兒園小班語言《誰的耳朵》課件
- 院前急救診療技術(shù)操作規(guī)范
- 患者轉(zhuǎn)診記錄單
- 美好生活“油”此而來-暨南大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 買賣合同糾紛案民事判決書
- 神經(jīng)內(nèi)科應(yīng)急預(yù)案完整版
- 2023零售藥店醫(yī)保培訓(xùn)試題及答案篇
- UCC3895芯片內(nèi)部原理解析
- 混凝土設(shè)計的各種表格
- 保安員培訓(xùn)教學(xué)大綱
- 廣東省高等學(xué)?!扒О偈こ獭钡诹^續(xù)培養(yǎng)對象和第
評論
0/150
提交評論