液晶數字頻率計_第1頁
液晶數字頻率計_第2頁
液晶數字頻率計_第3頁
液晶數字頻率計_第4頁
液晶數字頻率計_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、西安交通大學電子系統實踐與設計報告電子系統設計報告 液晶數字頻率計摘 要在我們現在所處的信息化數字化的時代,頻率計作為一件很普通的電子器件,廣泛應用于科研機構、學校、實驗室、企業生產車間等場所。研究數字頻率計的設計和開發,有助于頻率計功能的不斷完善、性價比的提高和實用性的加強。數字頻率計的發展趨勢是由模擬器件設計數字頻率計逐步轉變為數字芯片設計數字頻率計。這樣的轉變使得頻率計的設計更趨于自動化、智能化。 本設計采用兩種方案設計頻率計:方案一系統采用可編程邏輯器件(PLD)作為信號處理及系統控制核心,完成包括計數、門控、顯示等一系列工作。方案二采用電子計數法測量頻率。利用AT89C51單片機的定

2、時器/計數器0定時(定時時間為1s),同時用定時器/計數器1計數外部輸入方波信號,兩者同時啟動,定時器0結束時,計數器1計數值即為方波信號的頻率,從而實現20Hz-10kHz信號頻率的實時測量。方案三采用多周期同步測頻原理,實現20Hz-10kHz信號頻率的等精度頻率測量。用一塊復雜可編程邏輯器件CPLD(Complex Programmable Logic Device)芯片EPM7128SLC8415完成各種時序邏輯控制、計數功能,實現頻率測量,在MAXPLUSII平臺上完成CPLD的軟件設計、編譯、調試、仿真和下載。用AT89C51單片機作為系統的主控部件,實現整個電路的測試信號控制、數

3、據運算處理、鍵盤掃描和液晶顯示。本系統采用屏液晶顯示,型號為MFC-G12864 。關鍵詞:頻率計, CPLD,單片機 ,鍵盤控制,LCD液晶顯示目 錄一、 引言二、 設計任務及具體要求三、 總體方案設計(原理)四、 具體設計過程五、 系統整體功能和操作過程說明六、 電路圖和PLD圖七、 系統調試、誤差分析、測量參數確定八、 實驗小結 附:源程序一、引言 科學技術發展到今天,數字化產品以其獨特的優越性而越來越受到廣大消費者的認可。頻率計作為一件很普通的電子器件,廣泛應用于科研機構、學校、實驗室、企業生產車間等場所,因此它的重要性和普遍性勿庸質疑。研究數字頻率計的設計和開發,有助于頻率計功能的不

4、斷完善、性價比的提高和實用性的加強。數字頻率計的發展趨勢是由模擬器件設計數字頻率計逐步轉變為數字芯片設計數字頻率計。這樣的轉變使得頻率計的設計更趨于自動化、智能化。現在,單片機技術發展非常迅速,采用單片機來實現數字頻率計的開發設計,實現頻率的測量,不但測量準確,精度高,而且誤差也很小。在這里,我們將介紹一種簡單、實用的基于單片機AT89C52的數字頻率計的設計和制作。二、設計任務及具體要求 1、實驗目的與任務(1)通過查閱相關資料,深入了液晶數字頻率計的工作原理;(2)學習可編程器件(主要功能在該器件中完成)的應用及硬件語言;(3)學習點陣液晶顯示器的工作原理及使用方法;(4)復習“MCS-5

5、1單片機原理及C語言程序設計”,掌握其接口擴展包括:顯示、鍵盤等;(5)設計液晶數字頻率計的原理圖,構建硬件平臺; (6)采用匯編或C語言編寫應用程序并調試通過; (7)制作出樣機并測試達到功能和技術指標要求。 2、具體要求(1)技術要求:、頻率測量范圍20Hz-10KHz; 、液晶顯示頻率值及其單位; 、可根據按鍵操作改變顯示字符大小;、布局合理大方;、五個功能按鍵。 (2)工作要求:、組建基于可編程器件的液晶數字頻率計總體結構框圖;、根據題目要求,選擇元器件,通過理論分析和計算選擇電路參數;、根據操作功能要求,確定鍵盤控制功能;、按設計要求確定顯示合理安排格式及內容;、編寫應用程序并調試通

6、過;、對系統進行測試和結果分析; 、撰寫設計報告和答辯PPT。三、 總體方案設計系統設計主要包括硬件和軟件兩大部分,依據控制系統的工作原理和技術性能,將硬件和軟件分開設計。硬件設計部分包括電路原理圖、合理選擇元器件、確定元器件封裝規格、繪制線路圖及PCB板圖,以達到設計要求。 軟件設計部分,首先在總體設計中完成系統的流程圖,選擇合適的編程語言和工具,進行代碼設計等;最后是對軟件進行調試、測試,達到所需功能要求。按照設計任務的要求,本液晶數字頻率計主要可分為三個模塊:頻率測量、鍵盤控制和液晶顯示。其中核心是頻率測量,下面我們對頻率測量模塊進行分析,其他兩模塊在具體的方案設計中再作詳細分析。1、頻

7、率測量方法和原理頻率計的基本原理是用一個頻率穩定度高的頻率源作為基準時鐘,對比測量其他信號的頻率。通常情況下計算每秒內待測信號的脈沖個數,此時稱閘門時間為1秒。閘門時間也可以大于或小于一秒。閘門時間越長,得到的頻率值就越準確,但閘門時間越長則每測一次頻率的間隔就越長。閘門時間越短,測的頻率值刷新就越快,但測得的頻率精度就受影響。 目前頻率測量的方法是比較多的,有模擬法、數字法、直讀法、比較法、 電容充放電式 、電子計數、電橋法、諧振法、差頻法、示波法、拍頻法、李沙育圖形法、測周期法等等。作為數字電路設計,我們重點從電子計數法中選擇測頻方法。電子計數法是根據頻率定義進行測量的一種方法,它是用電子

8、計數器顯示單位時間內通過被測信號的周期個數來實現頻率的測量。利用電子計數式測量頻率具有精度高、測量范圍寬、顯示醒目直觀、測量迅速,以及便于實現測量過程自動化等一系列優點,總體上其又可分為三種:直接計數測頻法、測周法和等精度測評法。直接測頻法:此法是記錄在確定時間T內待測信號的脈沖個數Nx ,則待測頻率Fx為: Fx=Nx/T (2-1)顯然,時間T為準確值,測量的精度主要取決于計數的誤差。其特點在于:測量方法簡單;測量精度與待測信號頻率和門控時間有關,當待測信號頻率較低時,誤差較大。 測周期法:此法是在待測信號的一個周期Tx內,記錄標準頻率信號變化次數Ns。這種方法測出的頻率是:Tx=Ns*T

9、s;Fx=1/Tx;(2-2) 此法的特點是低頻檢測時精度高,但當高頻檢測時誤差較大。等精度測頻法:前兩種測頻方法的計數值會不可避免的產生+/-1個字的誤差,并且測試精度與計數器中記錄的數值Nx或Ns有關。為了保證測試精度,一般對于低頻信號采用測周期法;對于高頻信號采用測頻法,因此測試時很不方便,于是提出等精度測頻法。等精度測頻方法是在前兩種方法上發展來的,它的閘門時間不是固定的值,而是被測信號周期的整數倍,即與被測信號同步,因此消除了對被測信號計數所產生的+/-1個字誤差,并且達到了在整個測試頻段的等精度測量。 從以上三種方法的原理對比可知等精度測頻法最為優越,下面對等精度測法作詳細介紹(1

10、)等精度測頻原理波形圖 圖3-1等精度測頻原理波形圖 在測量的過程中,有兩個計數器分別對標準信號和被測信號同時計數。首先給出閘門開啟信號(與之閘門上升沿),此時計數器并不開始計數,而是要等到被測信號的上升沿到來時,計數器才真正開始計數。然后與之閘門關閉信號(下降沿)到時,計數器并不立即停止計數,而是等到被測信號的上升沿到來時才結束計數,完成一次的測量過程。可以看出,實際閘門時間T與預置門時間t1并不嚴格相等,但差值不超過被測信號的一個周期,最關鍵的是此差值不影響最終的頻率測量結果。 設在一次閘門時間T中計數器對被測信號的計數值為Nx,對標準信號的計數值為Ns,標準信號的頻率為Fs,則被測信號的

11、頻率為 由上式可知若忽略標頻Fs的誤差,則等精度測頻可能產生的相對誤差為 由上式可以看出,測量信號的相對誤差與被測信號頻率大小無關僅于閘門時間和標準信號頻率有關,即實現了向整個測試頻段的等精度測量。閘門時間越長,標準頻率越高,測頻的相對誤差就越小。標準頻率可由穩定度好。精度高的高頻率晶體振蕩器產生,在保證測量精度不變的前提下,提高標準信號頻率,可使閘門時間縮短,即提高測試速度。 2、試驗方案的選擇結合實驗原理我們提出以下的兩種實驗方案:方案一:頻率計主要功能由單片機來實現,PLD芯片只作輔助用。直接測頻法和測周法均可以,兩者各有利弊。本實驗采用直接測頻法,利用AT89C51單片機的定時器/計數

12、器1定時(定時時間為1s),同時用定時器/計數器0計數外部輸入方波信號,兩者同時啟動,定時器1結束時,計數器0計數值即為方波信號的頻率,從而實現20Hz-10kHz信號頻率的實時測量。系統采用單片機AT89C51作為控制核心,門控信號由AT89C51內部的計數/定時器產生。AT89C51則完成運算、控制功能。由于使用了單片機,使整個系統具有極為靈活的可編程性,能方便地對系統進行功能擴展與改進。系統原理框圖如圖2-4所示。被測信號時間閘門計數器顯示晶體振蕩分頻器(時基)單片機圖3-2 方案一的原理框圖液晶顯示被測信號鍵盤輸入電源單片機PLD芯片圖3-3 方案一的硬件實現電路框圖方案二:采用單片機

13、與CPLD結合使用等精度法測量頻率。用一塊復雜可編程邏輯器件CPLD(Complex Programmable Logic Device)芯片EPM7128SLC8415完成各種時序邏輯控制、計數功能,實現測頻模塊。在MAXPLUSII平臺上,用VHDL語言編程完成CPLD的軟件設計、編譯、調試、仿真和下載。用AT89C51單片機作為系統的主控部件,實現整個電路的測試信號控制、數據運算處理、鍵盤掃描,顯示等功能。系統將單片機AT89C51的控制靈活性及CPLD芯片的現場可編程性相結合,不但大大縮短了開發研制周期,而且使本系統具有結構緊湊、體積小,可靠性高,測頻范圍寬、精度高等優點。具體的測頻方

14、法采用等精度法測量頻率。 系統原理圖如下: 圖3-4方案二的原理框圖 圖3-5方案二硬件連接框圖四、具體設計過程如前所述,本系統設計主要分為三個模塊:頻率測量、功能按鍵、LCD顯示輸出。因為本實驗需要測量的只是標準方波信號,故不需要進行信號的前端處理。只需將標準被測信號(幅值等均滿足要求的方波)輸入頻率測量系統即可。方案一、二的區別僅在于頻率測量模塊。1、方案一測頻模塊的具體設計本方案以AT89C51單片機為核心,利用他內部的兩個16位定時器計數器及五個中斷源完成待測信號頻率的測量。單片機內部的專用寄存器TMOD中,有一個控制位(C/T),分別用于控制定時器/計數器0和1是工作在定時器方式還是

15、計數器方式。本方案頻率測量中T1工作在定時方式,選擇操作模式1構成16位定時器,用來產生一秒的時間間隔。T0工作在計數方式選擇操作模式1構成16位計數器,用來對外部輸入脈沖個數的測量。T1開始定時的同時T0開始計數,當1秒時間間隔到時在T1中斷函數中停止T0的計數,此時T0的計數值就是所測的外部信號頻率。 綜上所述,在程序中T0、T1初始化時TMOD=0x15; TH1=(65536-10000)%256; TL1=(65536-10000)/256,每次定時10ms,進入T1中斷函數,當T1中斷累計100次(1秒定時)時,停止T0計數,并將此時T0的計數值進行簡單運算即可得到被測頻率。當輸入

16、信號產生由1至0的跳變時,計數寄存器(TH0、TL0)的值增加1。每個機器周期的S5P2期間,對外部輸入進行采樣。如在第一個周期中采得的值為1,而在下一個周期中采得的值為0,則在緊跟著的再下一個周期的S3P1期間,計數值就增加1。由于確認一次下跳變需要2個機器周期,即24個振蕩器周期,因此外部輸入的計數脈沖的最高頻率為振蕩器頻率的1/24,本實驗單片機采用12MHz的晶振,故最高測量頻率不能超過500KHz,否則單片機將不能準確的判斷信號的上下跳變,導致測頻產生較大誤差。程序中T0不再設置中斷函數,因16位計數器,最高可記到65536,故實際上本方案最高測頻為65536Hz,滿足實驗要求。原理

17、和硬件框圖見方案設計。詳細測頻程序如下:/初始化函數void INIT_TM1INT(void) TMOD=0x15; EA=1; ET1=1; ET0=1;TH1=0xf7;TL1=0x00;/每次定時2.5ms TH0=0x00; TL0=0X00; TR0=1;/開始定時 TR1=1;/開始計數/中斷函數void time1(void)interrupt 3 TH1=0xf7;TL1=0x00;/每次定時2.5ms,定時400次,總的定時時間為1s if(+count_1s400)count_1s=0;timecount=256*TH0+TL0;fre=timeout;TH0=0x00;

18、TL0=0x00; 2、方案2測頻模塊的具體設計方案2采用單片機與CPLD結合使用等精度法測量輸入頻率。故主要測頻邏輯均在PLD中。對比與方案一的軟件實現,方案二基本上是由硬件來實現頻率的測量,單片機只起到整體的控制和數據運算。等精度測量方法由硬件實現時可簡化為下圖: 圖4-1 等精度測量原理簡圖CNT1和CNT2是兩個可控計數器,標準頻率Fs信號從CNT1的時鐘輸入端CLK輸入;被測信號Fx從CNT2的時鐘輸入端CLK輸入。每個計數器中的CEN輸入端為時鐘時能斷控制時鐘輸入。當預置門信號為高電平(預置時間開始)時,被測信號的上升沿通過D觸發器的輸出端,同時啟動兩個計數器計數;同樣,當預置門信

19、號為低電平(預置時間結束)時,被測信號的上升沿通過D觸發器的輸出端,同時關閉計數器的計數,實現等精度測量。 標頻信號的要求是高頻和穩定,試驗中我們直接采用CPLD外接的50MHz晶振的輸入信號。預置門時間有單片機來控制可設置為1秒或0.1秒。被測信號的范圍是20Hz-10KHz,而標頻是50MHz,故CNT1設計為32位計數器,CNT2為16為計數器,即可滿足要求。 方案二對PLD的設計借助MAXPLUS II開發平臺可實現完全可視化設計。大多數數字芯片里面均有封裝,然后借助已有的芯片進行多次封裝可設計出一個結構經湊邏輯清晰的等精度數字頻率計2、液晶顯示模塊的設計(1)液晶顯示基本知識液晶顯示

20、模塊是一種將液晶顯示器件、連接件、集成電路、PCB線路板、背光源、結構件裝配在一起的組建,也成LCD。具有顯示質量高、數字式接口、體積小,重量輕和功率消耗小的優點。根據顯示方式和內容的不同,液晶模塊可以分為數顯液晶模塊、點陣字符液晶模塊和點陣圖形液晶模塊三種,本實驗采用點陣圖形液晶模塊MFC-G12864。MFC- G12864液晶顯示模塊為全屏幕圖形點陣式液晶顯示組件,由控制器、驅動器和全點陣液晶顯示器組成,可完成數字、符號、字母、漢字以及圖形的顯示。點陣圖形液晶模塊的點陣像素連續排列,行和列在排布中均沒有空格,不僅可以顯示字符,而且可以顯示連續、完整的圖形。MFC-G12864擁有64*1

21、28點陣,顯示4行16*16漢字,每行8個漢字,MFC-G12864由2片KS0108控制驅動器驅動,所以在顯示字符時應進行片選。MFC-G12864結構如下圖所示所示:COMMON DRIVER ICKS0107BLCD PANEL128 5 64 DOTSVOVDDVSSDB0 DB7LED BACK LIGHTBLABLKCOM64SEGMENTDRIVER ICKS0108BKS0108BSEGMENTDRIVER ICKS0108BSEG64SEG64RS, R/W, ERSTBCS2CS1VOUT538 圖4-2.64*128圖形點陣模塊邏輯圖(2)KS0108的時序MCU與KS0

22、108的并行讀寫時序分別如下圖4-3(a)和4-3(b)所示。在進行讀寫操作時,應特別注意各個控制引腳的電平信號和持續時間,以及各電平信號的先后順序,以確保正確地進行讀寫。 圖4-3(a)MCU寫資料到模塊圖4-3(b)MCU讀資料到模塊(3)LCD的接口電路如下:AD0AD7為數據總線與單片機的P0口相連。圖4-4 LCD的接口電路原理圖 (4)液晶顯示模塊程序設計結合上述64*128圖形點陣模塊邏輯圖、MCU讀寫時序圖,可以設計出相應的液晶控制程序。Mfc-12864總共有20個引腳,結合老師給的電路板圖,程序需要控制的引腳共有5個:RS、R/W、E、CS1、CS2。RS位高位輸入數據信號

23、,低位輸入指令信號,R/W高位MFC-G12864寫數據,低位讀數據,E位使能端,高位有效,CS1高位選中左半屏,CS2高位選中右半屏。不管是方案一還是方案二,控制信號的傳輸均需要CPLD內的時序電路的連接。本系統設計中,PLD的五個輸出端口已在電路板上和該五個控制位接在一起,PLD內部將這五個輸出口和單片及的地址線A8、A9、P16、P15通過一些邏輯門相接,實現單片機對MFC-G12864的控制。PLC設計圖如下:A8高位時選中MFC-G12864數據寄存器,低位選中MFC-G12864指令寄存器,A9需一直保持為高才能使使能端E有效。此外,另無關的地址線為高位,得出數據寄存器的地址為0x

24、FFFF, 指令寄存器的地址為0xFEFF。同時,PLD的8個IO口與單片機的數據總線相接,但實際上PLD并不需要從數據總線上讀值,故這8個IO口并不使用,查資料可知PLD閑置的這8個IO口會鉗制數據總線的高低位,因此在PLD內部需將這8個口設為輸出口,接在無用的IO上,PLD電路圖如下: 故主要控制程序設計如下:#define lcdcom XBYTE0xFEFF/lcd指令寄存器#define lcddat XBYTE0xFFFF/lcd數據寄存器/LCD顯示口sbit cs1=P15; sbit cs2=P15; /lowsbit RW=P16;void sendcom(unsigned

25、 char cmd ,int i)/向lcd寫指令if(i=1) cs1=1; delay(1); lcdcom=cmd;else cs2=0; delay(1); lcdcom=cmd;void senddat(unsigned char dat,int i)/向lcd寫數據 if(i=1) cs1=1; delay(1); lcddat=dat; else cs2=0; delay(1); lcddat=dat;(5)液晶模塊顯示漢字方法:本系統設計使用圖形液晶模塊以點陣形式來顯示漢字。每8個點組成1個字節,每個點用一個2進制位表示,存1的點顯示時在屏上顯示1個亮點;存0的點則在屏上不顯示

26、。在單片機系統中對字模的存儲,是將提取的漢字字模數據作為常量數組存放在程序存儲區內,單片機再將已提取的漢字的字模輸入液晶控制器,即可按設定在液晶模塊顯示屏上顯示需要的漢字。故寫數據函數設計如下:/寫漢字函數void lcdhanzi(unsigned char page,unsigned char lie,unsigned char code *word, int cs)/漢字顯示 int i,j;for(i=0;i2;i+) delay(1); sendcom(0xB8+page+i,cs);/x每加1,液晶上加8橫行 delay(1); sendcom(0x40+lie,cs); for(

27、j=0;j16;j+) delay(1); senddat(wordi*16+j,cs);/數組每個元素的8位,寫在豎著的一列8個點(dot),寫完一個元素,y(列)自動加1 /寫數字函數Void lcdshuzi(unsigned char page,unsigned char lie,unsigned char code *word, int cs)/數字顯示 unsigned char i,j;for(i=0;i2;i+) delay(1); sendcom(0xBB+page+i,cs); sendcom(0x40+lie,cs); for(j=0;j8;j+) senddat(wor

28、di*8+j,cs);/數組每個元素的8位,寫在豎著的一列8個點(dot),寫完一個元素,y(列)自動加1 3、鍵盤控制模塊的設計在鍵盤控制模塊中,鍵入信號的軟件處理方法是影響系統操作性能的重要因素。鍵盤的接口及軟件的任務主要包括以下幾個方面:首先,檢測并判斷是否有鍵按下;其次,對按鍵開關進行時延的消抖;再次,計算并確定按鍵的鍵值;最后,程序根據計算出的鍵值進行一系列的動作處理和執行。在實際系統中,當需要輸入參數較多,功能復雜時,需要采用行列的鍵盤對單片機進行輸入。本實驗需要的鍵盤比較簡單,如下圖所示,鍵盤接上拉電阻后與電源的高電平相連。圖4-5 控制鍵常用的鍵盤識別方法有:行掃描法、線反轉法

29、和利用8279鍵盤接口的中斷法。鍵盤識別的流程如下圖。鍵盤識別是否有鍵按下?去抖動確定按鍵位置結束NOYES圖4-6 鍵盤識別流程圖(1)本實驗按鍵比較簡單,故程序設計時,將五個功能鍵接口定義為五個標志位。然后再程序中設置按鍵函數,里面嵌套while循環,一直讀取五個功能鍵接口的狀態,如果各口均為高電平,則無鍵按下;若有低電平狀態,則有鍵按下。按鍵本身是機械開關,在閉合或斷開的瞬間會出現電壓抖動的現象,必須去除抖動的影響,才能正確識別被按下的鍵。為簡單起見,使用軟件方法消抖,延時10ms,再次讀取各狀態,若兩次狀態相同,說明信號穩定,可以繼續進入相應的鍵處理子程序中。軟件主要實現三個功能:鍵盤

30、按鍵的消抖、查詢按下的鍵所在的位置、相應的處理子程序,鍵盤接口程序如下:/按鍵查詢口定義sbit key0=P10;sbit key1=P11;sbit key2=P12;sbit key3=P13;sbit key4=P14;/按鍵處理函數void judge_key() while(1) if(key0=0) delay(10); if(key0=0) init_lcd(); clear_lcd(); / key0功能函數 if(key1=0) delay(10); if(key1=0) init_lcd(); clear_lcd();/ key1功能函數 if(key2=0) delay

31、(10); if(key2=0) init_lcd(); clear_lcd(); / key2功能函數 if(key3=0) delay(10); if(key3=0) init_lcd(); clear_lcd();/ key3功能函數 if(key4=0) delay(10); if(key4=0) init_lcd(); clear_lcd();/ key4功能函數 (2)本系統的設計中,功能按鍵模塊放在設計最后,主要目的是考慮到可以通過該模塊,將測頻模塊和顯示模塊聯系在一起。而且整個系統的功能最終都是要通過按鍵注意選擇來顯示出來的。系統功能設計:1.key0:按鍵顯示頻率值及其單位;

32、 2. key1:按鍵操作改變顯示字符大小;3 .key2:按鍵切換到測脈寬狀態;4.key3:按鍵復位,重新進行初始化5.key4:按鍵退出測頻和測脈寬系統初始化完畢后會自動進入按鍵查詢,標致狀態為屏幕中央的“請按鍵”Key0處理子程序: working=1;-工作狀態標志位,由此來控制循環的進行及部分液晶顯示內容displaywork();-液晶顯示子函數,會在第一行滾屏顯示“working”manage1616();-頻率值顯示子函數,會在屏幕中央顯示被測的頻率值及單位Key1處理子程序:working=1;-工作狀態標志位,由此來控制循環的進行及部分液晶顯示內容displaywork(

33、);-液晶顯示子函數,會在第一行滾屏顯示“working”manage2424();-大字符顯示子函數,會在屏幕中央顯示放大的被測頻率值及單位Key2處理子程序:working=1;-工作狀態標志位,由此來控制循環的進行及部分液晶顯示內容displaywork();-液晶顯示子函數,會在第一行滾屏顯示“working”maikuan();-脈寬值顯示子函數,會在屏幕中央顯示被測的脈寬值及單位Key3處理子程序:displayfuwei();-液晶顯示子函數,在屏幕中央顯示“正在復位”fuwei=1;-復位狀態標致位,由該狀態來決定外循環是否執行goto語句,從而跳到程序開頭重新進行初始化bre

34、ak;-跳出內循環,迫使程序在外循環中進行“fuwei”狀態位判斷Key4處理子程序:working=0;- 工作狀態標志位,由此來控制循環的進行及部分液晶顯示內容displayend();-液晶顯示子函數,在屏幕中央顯示“謝謝使用”break;- -跳出內循環,在此執行外循環 說明按鍵需要的時間五、系統整體功能和操作過程說明1、整體功能說明主要功能由按鍵實現,已在上一部分中進行了說明。系統程序采取標準的結構化設計,在main函數中實現對各個子函數的調用。在定時器和PLD初始化后,隨著計時的開始將直接由計數器和PLD進行測頻,1秒時間間隔到,則測頻結束,程序自動算出頻率之后保存在定義好的變量中

35、,供顯示頻率的函數調用。也就是說當進入按鍵功能選擇時測頻過程已經完成。Key0、Key1、Key2只是調用函數顯示不同的內容而已。Key3按下后程序由break語句跳出按鍵掃描程序而重新進行定時器和PLD初始化,即重新開始頻率測量。Key4按下后將由goto語句直接跳到main函數剛進去的地方,完全從頭重新執行程序。程序段先進行變量定義,然后是液晶顯示數據段,接下來是各種函數以及函數的相互組合調用,最后進入main函數實現整個系統的邏輯功能 系統整體運行邏輯框圖如下:開始 液晶顯示初始化清屏顯示標題,清屏顯示初始化面頻率 脈寬等精度法測頻初始化PLD;初始化定時器計數器開始測量 T1定時T0計

36、數直接計數法測頻按鍵掃描顯示頻率Key0? Y N放大字符Key1? Y N顯示脈寬Key2? Y NKey3? Y NKey4? N fuwei=1 Yfuwei=1 ? Y N清屏、初始化面 圖5-1 系統整體運行邏輯框圖2、系統操作過程說明 上電之后液晶屏刷新一次,然后顯示初始化面,保持2、3秒后,屏幕中央顯示“請按鍵”提示,表示系統初始化、測頻已完成,程序已進入按鍵掃描函數,此時按鍵有效。注意按鍵有防抖動功能,故按鍵不能太快,當按鍵后看到有清屏現象時表示按鍵有效。Key0、Key1、Key2各鍵按下時,屏幕第一行均有滾動顯示的“working”狀態提示。信號測量范圍20Hz-9999H

37、z,當算出頻率大于此范圍時,Key0、Key1按下均會顯示“超出范圍”提示,當小于此范圍時,Key0、Key1按下均會顯示“NO SIGNAL!”提示.Key3按下時,頻幕顯示“正在復位”提示,然后系統從頭開始。Key4按下時,頻幕顯示“謝謝使用”提示,然后系統重新初始化。具體流程見圖5-1 系統整體運行邏輯框圖六、電路圖和PLD圖七、實驗調試、誤差分析、參數確定1、系統調試方案的具體設計是分成三個模塊的,故調試也是分成三個獨立模塊,這樣的好處是,每次調試的時候程序都比較短,沒有很復雜的邏輯在里面容易調試通過和查處錯誤。調試順序:頻率測試模塊、液晶顯示模塊、功能鍵模塊,最后進行系統整體功能完整

38、調試。(1)頻率測試模塊:直接計數測頻的調試:程序用printf語句作為輸出,直接將方波信號接到T0引腳上,程序為循環測試,進入debug狀態后,調節信號發生器的輸出頻率,觀察不斷刷新的窗口顯示,通過輸入輸出對比,檢查頻率測量的正常與否。 等精度測頻調試:由于電路板發下的時間較遲,故該模塊的調試可在學習機上完成,。(2) 液晶顯示模塊調試: 該模塊是在電路板焊好后子環節在自己的電路板上調試的,因為接線較多(20個引腳)在學習機上調試不太方便。在電路板上調試,不僅不用接線,還可以檢查自己電路板的焊接是否存在問題。液晶顯示模塊原理比較陌生和難以理解,故可顯示最簡單的字符來檢查整個模塊的控制以及自己

39、的程序設計是否有問題。等液晶顯示模塊可以正常顯示了,再添加內容,比如漢字顯示,字符大小調整、顯示位置的調整等進行調試驗證,以完善程序和加深理解、整個模塊的調試還包括對自摸提取軟件的熟悉使用。(3)功能鍵模塊調試: 該模塊的調試有兩個作用:按鍵功能的程序實現、通過功能鍵將前兩個程序模塊連接在一起。按鍵功能調試時不需要有太復雜的子函數,可簡單的添加不同的printf語句。等上述調試完成后,開始逐個添加功能鍵子程序進行調試。然后對信號經過PLD傳輸到單片機的接口電路進行調試。最后整機進行調試,基本功能實現后可逐步修改顯示及按鍵是整個系統功能完善,顯示合理美觀。2、誤差分析(1)方案一的誤差分析在測量

40、中,誤差分析計算是不可少的。理論上講不管對什么物理量的測量,不管用什么樣的測量方法,只要進行測量,就可能存在誤差。誤差分析的目的就是要找出引起誤差的主要愿意,從而有針對地采取有效措施,減小測量誤差,提高測量的精確度。在實際調試過程中,方案一測的頻率總是誤差很大,經過檢查,將單片機晶振當作12MHz會產生時間閘門的擴大,從而導致測頻數據變大。經過調整將1秒的時間閘門換算成11.0592MHz下,從而TH1=(65536-10000*11.0592/12)/256=(65536-9216)/256;TH0=(65536-9216)%256;經調整后誤差明顯下降,但還是存在穩定的接近1%的誤差。方案

41、一的固有誤差分析如下:方案一的誤差由計數器計數脈沖相對誤差和標準時間相對誤差兩部分組成。因此,對這兩種相對誤差可以分別加以討論,然后相加得到總的頻率測量相對誤差。a.量化誤差-誤差在測頻時,主門的開啟時間與計數脈沖之間的時間關系是不相關的,即它們在時間軸上的相對位置是隨機的。這樣,即使是在相同的主門開啟時間T(先假定標準時間相對誤差為零)內,計數器所計得的數卻不一定相同。第一種情況進入8個脈沖,而第二種情況卻只進入7個脈沖7個脈沖,即引起可能多一個或少一個的誤差,這是頻率量化時帶來的誤差,故稱量化誤差。圖14 誤差示意圖b.閘門時間誤差(標準時間誤差)如果閘門時間不準,造成主門啟閉時間或長或短

42、,顯然要產生測頻誤差。閘門信號是由晶振信號所得。設晶振頻率為(周期為)分頻系數為m,所以有由誤差合成定理對上式微分得: 即為:閘門時間的相對誤差在數值上等于晶振頻率的相對誤差。通常對標準頻率準確度的要求是根據所要求的測頻準確度提出來的。方案一中的晶振頻率為單片機的晶振頻率。綜上所述計數器直接測頻的誤差主要有兩項,即誤差和標準頻率誤差。一般總誤差可采用分項誤差絕對值合成,即由此式可知,在一定時,閘門時間T選得越長,測量準確度越高。而當T選定后,越小,標準頻率誤差將對測量結果產生影響,并以為極限。測量低頻時,由于誤差產生的測頻誤差大得驚人。例如,時,則由誤差引起的測頻誤差可達10%,所以低頻時不宜

43、采用直接測頻方法。 另一方面,雖然閘門時間T越長,則測量準確度越高,但事實上為了保證測頻的實時性,我們不可能將閘門時間取得太長,所以一般通過閘門時間來調整測頻精度范圍不大。(2)方案二的誤差分析:設在一次預置門時間T中對被測信號計數值為,對標準信號的計數值為則下式成立:推得: 相對誤差公式為: 從誤差公式中可以看出,其測量頻率精度和與標準頻率精確度有關,而與被測頻率無關。顯然,決定于預置門時間和標準頻率信號的頻率,其關系如下如果采用頻率為50MHz的晶體振蕩器,忽略標準高頻的誤差,則有:若預置門時間為T=0.1s,則:=0.150000000=5000000, 可見,在整個測量范圍內,要達到題

44、目所要求的精度是完全可行的。3、系統參數確定(1)測頻范圍:2Hz-60KHz(2)測頻精度:(3)測頻數據表:八、實驗小結(問題處理、包括展望與不足與感想) 1、實驗遇到的問題及處理(1)剛開始的時候,只是在編程序然后編譯通過就行,忽略了調試,到后面開始調試的時候才發現程序根本運行不下去,最讓人難受的是再三檢查感覺邏輯沒問題,可結果不出來。調試程序花的時間都差不多比編第一個測頻程序的時間長,最后沒辦法只能從頭重寫,一步步的在實驗室編譯調試。盡管老師當時強調了程序不要一次編寫太長,但最開始的時候還是沒注意到這個問題,直到自己遇到了才會發現問題的嚴重性。(2)參考文獻1 王建校 楊建國 寧改娣

45、危建國 51系列單片機及C51程序設計 北京:科學出版社 2002.12王建校 張虹 金印彬 電子系統設計與實踐實驗指導書 西安交通大學電氣工程學院電工電子教學實驗中心附:源程序#include#include #include #include /內部函數(_nop_)#include/絕對尋址(xbyte)#define lcdcom XBYTE0xFEFF/lcd指令寄存器#define lcddat XBYTE0xFFFF/lcd數據寄存器#define maxdat0 XBYTE0x1FFF/ns0-7#define maxdat1 XBYTE0x3FFF/ns8-15#define

46、 maxdat2 XBYTE0x5FF/ ns16-23#define maxdat3 XBYTE0x7FFF/ns 24-31#define maxdat4 XBYTE0x9FFF/nx 0-7#define maxdat5 XBYTE0xBFFF/nx 8-15bit fuwei;/LCD顯示口sbit cs1=P15; sbit cs2=P15; /lowsbit RW=P16;sbit cr=P17;sbit gate=P33;/按鍵查詢口sbit key0=P10;sbit key1=P11;sbit key2=P12;sbit key3=P13;sbit key4=P14;unsigned char working;unsigned int timecount=0;unsigned int count_1s=1;unsigned int ws;unsigned char nsdat0,nsdat1,nsdat2,nsdat3,nxdat0,nxdat1;unsigned long nx,ns,fx,pxwide,T; /* 數據段*/unsigned char code number0=/*- 源文件 / 文字 : 0 寬高(像素): 816 字模格式/大小 : 單色點陣液晶字模,縱向取模,字節倒序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論