基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì)_第1頁
基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì)_第2頁
基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì)_第3頁
基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì)_第4頁
基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、編號(hào): 畢業(yè)設(shè)計(jì)(論文)說明書課題名稱:基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì) 院 (系): 計(jì)算機(jī)與電子信息工程系專 業(yè): 電子信息工程 班級(jí): 04電本1班 學(xué)生姓名: 黃* 學(xué) 號(hào): 0400604105 郵 箱: larryximuyi 指導(dǎo)教師: 黃永慶 職 稱: 工程師 2008年 1月14日摘要本系統(tǒng)設(shè)計(jì)的是基于FPGA的數(shù)字存儲(chǔ)示波器,能夠完成對(duì)輸入信號(hào)的實(shí)時(shí)采樣、信號(hào)峰峰值和頻率的測(cè)量、信號(hào)的存儲(chǔ)及顯示。本系統(tǒng)以單片機(jī)AT89S52為主控制芯片,F(xiàn)PGA控制高速模數(shù)芯片配合進(jìn)行高速數(shù)據(jù)采集、存儲(chǔ)及傳輸,并用型號(hào)為SYM320240BZK的圖形點(diǎn)陣液晶顯示屏進(jìn)行實(shí)時(shí)信號(hào)波形顯示。整

2、體設(shè)計(jì)完成了10500KHZ波形數(shù)據(jù)的采集、存儲(chǔ)及實(shí)時(shí)顯示,同時(shí)能夠進(jìn)行波形的頻率及峰峰值等參數(shù)的實(shí)時(shí)測(cè)量,并且本系統(tǒng)以觸摸屏為控制核心,可以對(duì)采樣速率及數(shù)據(jù)存儲(chǔ)進(jìn)行實(shí)時(shí)控制,達(dá)到了較好的顯示效果。本設(shè)計(jì)完成了整個(gè)系統(tǒng)的軟硬件設(shè)計(jì),對(duì)信號(hào)采集及處理提供了一種較好的解決方案。關(guān)鍵字:?jiǎn)纹瑱C(jī) FPGA 高速采集 參數(shù)測(cè)量 觸摸屏 實(shí)時(shí)顯示AbstractThis system designs about the Digital Saving Oscillograph based on FPGA, it can finish sampling、calculating the Vpp and freq

3、uncy、saving and display the input signal in the real time.The Single Chip Micyoco(SCM) plays the main role in controlling the system, and FPGA helps to sample the fast input signal, saving and comunicating with SCM by controlling the high-speed analog-to-digital converter, and the input signal wave

4、can be display on the graphics and lattice Liquid Crystal isplay(LCD). The whole design finish sampling the wave data range from 10 to 500K HZ, saving and display in the real time, and it can also calculate the Vpp and frequncy and save the data in the real time, also this system takes the touch scr

5、een as the control core, it can control the sample speed and data saving, and the LCD displays rather good of the signal wave.This system finish designing the hard-ware and soft-ware of the whole, and provides rather good resolving schemefor the signal sampling and management.Keyword: SCM FPGA High-

6、speed Sampling Parameter Calculation Touch Screen Real Time Disply目錄第一章 緒論 .51.1 數(shù)字存儲(chǔ)示波器概述 .51.2 數(shù)字存儲(chǔ)示波器的原理及特點(diǎn).51.3 本設(shè)計(jì)完成的主要性能指標(biāo).71.4 基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì)結(jié)構(gòu)框圖.7第二章 整體電路模塊設(shè)計(jì).9 2.1 AD前端信號(hào)處理及A/D電路模塊.9 2.2 FPGA內(nèi)部RTL電路構(gòu)造.12 2.3 觸摸屏原理及觸摸屏鍵盤構(gòu)造.14 2.4 I2C總線原理及CAT24WC256存儲(chǔ)器存儲(chǔ)及讀取原理19 2.5 硬件測(cè)頻信號(hào)信號(hào)的放大與整形.25 2.6 蜂鳴

7、器驅(qū)動(dòng)電路.26第三章 程序設(shè)計(jì).27 3.1 FPGA采樣、數(shù)據(jù)暫存及傳輸.273.2 單片機(jī)控制FPGA采樣、畫圖及數(shù)據(jù)存儲(chǔ)283.3 單片機(jī)波形顯示及信號(hào)處理模塊.29第四章 結(jié)束語36致謝.36參考文獻(xiàn).37第一章 緒論1.1 數(shù)字存儲(chǔ)示波器概述作為時(shí)域測(cè)量的經(jīng)典儀器,示波器是電子行業(yè)工程師最為熟悉的工具,它是一種可以用來觀察、測(cè)量、記錄各種瞬時(shí)物理現(xiàn)象,并以波形方式顯示其與時(shí)間關(guān)系的電子儀器,它能夠直觀的顯示被測(cè)信號(hào)的時(shí)域信息。數(shù)字存儲(chǔ)示波器是一種新型示波器,主要以微處理器、數(shù)字存儲(chǔ)器、A/D轉(zhuǎn)換器與D/A轉(zhuǎn)換器為核心,輸入信號(hào)經(jīng)過A/D轉(zhuǎn)換器把模擬波形轉(zhuǎn)換成數(shù)字信息,存儲(chǔ)在數(shù)字存儲(chǔ)

8、器內(nèi);顯示時(shí),再從存儲(chǔ)器中讀出,經(jīng)過D/A轉(zhuǎn)換器將數(shù)字信息轉(zhuǎn)換成模擬波形顯示在CRT上,通過接口可以與計(jì)算機(jī)相連,利用機(jī)內(nèi)微處理器系統(tǒng)對(duì)存儲(chǔ)的信號(hào)作進(jìn)一步處理,或直接將數(shù)字信號(hào)送至圖像點(diǎn)陣液晶顯示器,這樣大大改進(jìn)顯示特性,增強(qiáng)功能,便于程控化和智能化。比傳統(tǒng)數(shù)字示波器精確得多的實(shí)時(shí)波形采集技術(shù),使數(shù)字測(cè)量更加精確,主要用于高精度測(cè)量和分析,以及組成自動(dòng)測(cè)試系統(tǒng)。其主要性能指標(biāo)包括采樣速率、帶寬、顯示更新速率、存儲(chǔ)深度等。數(shù)字存儲(chǔ)示波器不是將波形存儲(chǔ)在示波管內(nèi)存儲(chǔ)柵網(wǎng)上, 而是存在存儲(chǔ)器中,存儲(chǔ)時(shí)間可以無限長(zhǎng)。因此,數(shù)字存儲(chǔ)示波器是一種既具有實(shí)時(shí)觀察, 又具有波形存儲(chǔ)能力, 既具有信號(hào)處理能力又

9、具有電路分析功能, 精確度高, 操作簡(jiǎn)單,可以通過計(jì)算機(jī)進(jìn)行程序自動(dòng)測(cè)量的高智能化示波器。1.2 數(shù)字存儲(chǔ)示波器的原理及特點(diǎn)典型的數(shù)字存儲(chǔ)示波器原理框圖如圖1所示,其工作過程一般可分為存儲(chǔ)和顯示兩個(gè)階段。水平放大器CRT垂直放大器輸入YD/A轉(zhuǎn)換器存儲(chǔ)器RAMA/D轉(zhuǎn)換器輸入放大器輸入衰減器記錄輸出控制器D/A轉(zhuǎn)換器微處理器CPU地址計(jì)數(shù)器觸發(fā)器圖1數(shù)字存儲(chǔ)示波器原理框圖存儲(chǔ)階段模擬信號(hào)經(jīng)Y輸入端輸入,經(jīng)過適當(dāng)?shù)乃p或放大,送到A/D轉(zhuǎn)換器,得到一串相應(yīng)的數(shù)據(jù)流。微處理器形成存儲(chǔ)的寫地址,將數(shù)據(jù)依次存儲(chǔ)到隨機(jī)存儲(chǔ)器RAM中,RAM的讀寫操作受RD、WR控制指令的控制,控制方式如表1,RAM進(jìn)行

10、讀寫操作時(shí),存儲(chǔ)單元的地址由微處理器產(chǎn)生。RAM讀寫RD01WR10表1RAM讀寫控制方式顯示階段由CPU產(chǎn)生讀時(shí)鐘或讀地址,將數(shù)字信號(hào)從存儲(chǔ)器中讀出,或使用CRT顯示屏,則經(jīng)D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬信號(hào),經(jīng)垂直放大器放大后加到CRT的Y偏轉(zhuǎn)板,與此同時(shí),CPU的讀地址計(jì)數(shù)器脈沖加至D/A轉(zhuǎn)換器,經(jīng)掃描后得到一個(gè)掃描電壓,經(jīng)水平放大器放大,驅(qū)動(dòng)CRT的X偏轉(zhuǎn)板,從而實(shí)現(xiàn)在CRT上以稠密的光點(diǎn)顯示出信號(hào)的波形。若使用液晶顯示屏,則把A/D轉(zhuǎn)換后的數(shù)字信號(hào)轉(zhuǎn)變成液晶屏上實(shí)際的坐標(biāo)號(hào),然后調(diào)用畫點(diǎn)程序把數(shù)據(jù)以圖形方式顯示在屏幕上。讀出的數(shù)字信號(hào)還可以由接口電路送往計(jì)算機(jī)分析處理。本設(shè)計(jì)中的數(shù)字存儲(chǔ)示波

11、器是利用高速A/D器件把被測(cè)模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)然后存入機(jī)內(nèi)的RAM中,需要顯示時(shí),將RAM中存儲(chǔ)的數(shù)據(jù)內(nèi)容調(diào)出,通過坐標(biāo)變換再顯示在液晶屏幕上。它不僅可以顯示周期信號(hào),更能顯示非周期及瞬時(shí)信號(hào),這對(duì)觀測(cè)某些波形,特別是未確定波形來說有著比模擬示波器更優(yōu)良的特點(diǎn),主要體現(xiàn)在:1、 波形處理:由于數(shù)字存儲(chǔ)示波器內(nèi)含一片微處理器,它能對(duì)所采集到的信號(hào)數(shù)據(jù)進(jìn)行各種數(shù)據(jù)處理,比如波形的相加、相乘及FFT變換等。2、 數(shù)據(jù)存儲(chǔ):由于數(shù)字存儲(chǔ)示波器是利用高速A/D器件把模擬信號(hào)進(jìn)行量化處理,為此可以把量化后的數(shù)據(jù)進(jìn)行長(zhǎng)期存儲(chǔ)以備日后作為研究之用。1.3 本設(shè)計(jì)完成的主要性能指標(biāo)本設(shè)計(jì)完成的數(shù)字存儲(chǔ)示波器

12、采用單通道,最大存儲(chǔ)深度為256B。設(shè)有峰峰值檢測(cè),頻率測(cè)量及存儲(chǔ)等功能,主要性能指標(biāo)如下:垂直分辨率:8 bits等效帶寬 :?jiǎn)瓮ǖ?00KHZ垂直靈敏度:150mv/div最大輸入電壓:1V最高采樣率:20MSa/S存儲(chǔ)深度:256B1.4 基于FPGA的數(shù)字存儲(chǔ)示波器的設(shè)計(jì)結(jié)構(gòu)框圖根據(jù)對(duì)系統(tǒng)性能指標(biāo)的分析,本系統(tǒng)設(shè)計(jì)主要分為以下五個(gè)部分:信號(hào)前端調(diào)理模塊、信號(hào)采集模塊、FPGA控制采樣、存儲(chǔ)及傳輸模塊、數(shù)據(jù)信號(hào)的實(shí)時(shí)顯示及存儲(chǔ)模塊。如圖2所示:信號(hào)調(diào)理電路模塊單片機(jī)控制模塊FPGA控制A/D采樣及信號(hào)傳輸模塊高速A/D器件信號(hào)采集模塊波形數(shù)據(jù)實(shí)時(shí)存儲(chǔ)模塊320*240液晶顯示及觸摸屏鍵盤

13、模塊圖2 基于FPGA的數(shù)字存儲(chǔ)示波器整體結(jié)構(gòu)框圖其中信號(hào)調(diào)理電路采用高速運(yùn)放AD811進(jìn)行波形信號(hào)前端處理,高速A/D器件采用TI公司的最高采樣速率達(dá)20MSa/S的TLC5510芯片,F(xiàn)PGA則采用EPF10K10器件,它可進(jìn)行內(nèi)部FIFO的構(gòu)造,能夠滿足對(duì)采樣信號(hào)的暫存。AT89S52單片機(jī)控制FPGA進(jìn)行采樣及傳輸,并控制320*240點(diǎn)陣液晶進(jìn)行波形信號(hào)的實(shí)時(shí)顯示,在需要的時(shí)候可把波形信號(hào)數(shù)據(jù)存入基于I2C總線的存儲(chǔ)芯片CAT24WC256中。320*240液晶構(gòu)造觸摸屏鍵盤可對(duì)整個(gè)系統(tǒng)進(jìn)行采樣速率、數(shù)據(jù)存儲(chǔ)等進(jìn)行控制并且達(dá)到了較好的顯示效果。第二章 整體電路模塊設(shè)計(jì)2.1 AD前端

14、信號(hào)處理及A/D電路模塊根據(jù)采樣定理,當(dāng)fs>=2fin,即A/D采樣率大于或等于兩倍的信號(hào)頻率fin時(shí),才可以無失真地重構(gòu)波形。為了完成上述性能指標(biāo),本設(shè)計(jì)采用美國(guó)TI公司的新型高速A/D器件TLC5510,它是一種采用CMOS工藝制造的8位高阻抗并行A/D芯片,能提供的最大采樣率為20MSa/S。由于本設(shè)計(jì)中輸入信號(hào)最大頻率為500KHZ,則此A/D芯片已經(jīng)達(dá)到并超過了設(shè)計(jì)要求。由于TLC5510采用了半閃速結(jié)構(gòu)及CMOS工藝,因而大大減少了器件中比較器的數(shù)量,而且在高速轉(zhuǎn)換的同時(shí)能夠保持較低的功耗。在推薦工作條件下,TLC5510的功耗僅為130mW。由于TLC5510不僅具有高速

15、的A/D轉(zhuǎn)換功能,而且還帶有內(nèi)部采樣保持電路,從而大大簡(jiǎn)化了外圍電路的設(shè)計(jì);同時(shí),由于其內(nèi)部帶有了標(biāo)準(zhǔn)分壓電阻,因而可以從+5V的電源獲得2V滿刻度的基準(zhǔn)電壓。TLC5510的引腳說明 圖3TLC5510引腳排列圖TLC5510為24引腳、PSOP表貼封裝形式。其引腳排列如圖3所示。各引腳功能如下: AGND:模擬信號(hào)地; ANALOG IN:模擬信號(hào)輸入端; CLK:時(shí)鐘輸入端;DGND:數(shù)字信號(hào)地; D1D8:數(shù)據(jù)輸出端口。D1為數(shù)據(jù)最低位,D8為最高位; OE:輸出使能端。當(dāng)OE為低時(shí),D1D8 數(shù)據(jù)有效,當(dāng)OE為高時(shí),D1D8為高阻抗; VDDA:模擬電路工作電源; VDDD:數(shù)字電路

16、工作電源; REFTS :內(nèi)部參考電壓引出端之一,當(dāng)使用內(nèi)部電壓分壓器產(chǎn)生額定的2V基準(zhǔn)電壓時(shí),此端短路至REFT端; REFT:參考電壓引出端之二; REFB:參考電壓引出端之三; REFBS :內(nèi)部參考電壓引出端之四,當(dāng)使用內(nèi)部電壓基準(zhǔn)器產(chǎn)生額定的2V基準(zhǔn)電壓時(shí),此端短路至REFB端。 圖4 TLC5510的內(nèi)部結(jié)構(gòu)框圖圖5TLC5510的工作時(shí)序TLC5510的內(nèi)部結(jié)構(gòu)如圖4所示。由圖中可以看出:TLC5510模數(shù)轉(zhuǎn)換器內(nèi)含時(shí)鐘發(fā)生器、內(nèi)部基準(zhǔn)電壓分壓器、1套高4位采樣比較器、編碼器、鎖存器、2套低4位采樣比較器、編碼器和4個(gè)低4位鎖存器等電路。TLC5510的外部時(shí)鐘信號(hào)CL

17、K通過其內(nèi)部的時(shí)鐘發(fā)生器可產(chǎn)生3路內(nèi)部時(shí)鐘,以驅(qū)動(dòng)3組采樣比較器?;鶞?zhǔn)電壓分壓器則可用來為這3組比較器提供基準(zhǔn)電壓。輸出A/D信號(hào)的高4位由高4位編碼器直接提供,而低4位的采樣數(shù)據(jù)則由兩個(gè)低4位的編碼器交替提供。 TLC5510的工作時(shí)序見圖5。時(shí)鐘信號(hào)CLK在每一個(gè)下降沿采集模擬輸入信號(hào)。第N次采集的數(shù)據(jù)經(jīng)過2.5個(gè)時(shí)鐘周期的延遲之后,將送到內(nèi)部數(shù)據(jù)總線上。 在圖3所示的工作時(shí)序的控制下,當(dāng)?shù)谝粋€(gè)時(shí)鐘周期的下降沿到來時(shí),模擬輸入電壓將被采樣到高比較器塊和低比較器塊,高比較器塊在第二個(gè)時(shí)鐘周期的上升沿最后確定高位數(shù)據(jù),同時(shí),低基準(zhǔn)電壓產(chǎn)生與高位數(shù)據(jù)相應(yīng)的電壓。低比較塊在第三個(gè)時(shí)鐘周期的上升沿的

18、最后確定低位數(shù)據(jù)。高位數(shù)據(jù)和低位數(shù)據(jù)在第四個(gè)時(shí)鐘周期的上升沿進(jìn)行組合,這樣,第次采集的數(shù)據(jù)經(jīng)過2.5個(gè)時(shí)鐘周期的延遲之后,便可送到內(nèi)部數(shù)據(jù)總線上。此時(shí)如果輸出使能OE有效,則數(shù)據(jù)便可被送至8位數(shù)據(jù)總線上。由于CLK的最大周期為50ns,因此,TLC5510數(shù)模轉(zhuǎn)換器的最小采樣速率可以達(dá)到20MSPS。為了滿足輸入電壓在A/D測(cè)量范圍之內(nèi),必須對(duì)輸入的信號(hào)進(jìn)行前端信號(hào)處理,即信號(hào)調(diào)理。本設(shè)計(jì)采樣高速運(yùn)放AD811對(duì)采樣信號(hào)進(jìn)行恰當(dāng)?shù)碾妷浩貌⒎糯?,再?jīng)過RC低通濾波后輸入到TLC5510的模擬輸入端,從而完成信號(hào)采集的前端處理,AD811可處理高達(dá)140MHZ帶寬的信號(hào),最小建立時(shí)間為25ns,

19、電源噪聲卻只有1.9 nVHz,非常適合用在本設(shè)計(jì)中,其電路模塊如圖6所示:圖6 A/D信號(hào)前端調(diào)理電路 其中R13為一滑動(dòng)變阻器,調(diào)節(jié)它的阻值使AD811無信號(hào)輸入時(shí)輸出電壓在一幅度范圍之內(nèi),而且在信號(hào)輸入后改變它的阻值可以實(shí)現(xiàn)波形的上升與下降。運(yùn)放設(shè)計(jì)為正向輸入使它的放大倍數(shù)為A=(R11+R12)/R12=2倍。經(jīng)過信號(hào)調(diào)理電路后的模擬量直接輸入至A/D芯片進(jìn)行模數(shù)轉(zhuǎn)換并把轉(zhuǎn)換后的數(shù)字信號(hào)傳送給FPGA,其電路模塊如圖7所示:圖7 由TLC5510構(gòu)成的A/D采集電路由于A/D對(duì)信號(hào)電源的要求較高,在本設(shè)計(jì)中采用了型濾波網(wǎng)絡(luò)對(duì)電源進(jìn)行濾波,實(shí)測(cè)時(shí)發(fā)現(xiàn)電源紋波非常小,達(dá)到了本設(shè)計(jì)的要求。2

20、.2 FPGA內(nèi)部RTL電路構(gòu)造FPGA采用ATMEL公司的10K10器件,其最大時(shí)鐘頻率可達(dá)100M,且內(nèi)部含有576個(gè)邏輯單元(Logic elements),含有6144 bits的內(nèi)部RAM單元,可進(jìn)行內(nèi)部靜態(tài)RAM的構(gòu)造。這對(duì)于本設(shè)計(jì)所提出的性能指標(biāo)來說已經(jīng)足夠。由于FPGA掉電后數(shù)據(jù)即丟失,不可掉電保存燒錄的代碼,則需要加入配置電路。本設(shè)計(jì)采用AT89C2051單片機(jī)和24C128對(duì)它進(jìn)行配置,上電后單片機(jī)從24C128中讀取Quartus2轉(zhuǎn)換的代碼格式,傳送給FPGA,F(xiàn)PGA即可正常工作。其配置電路如圖8所示。圖8FPGA配置電路FPGA根據(jù)單片機(jī)對(duì)實(shí)際波形的要求配合提供A/

21、D轉(zhuǎn)換所需要的時(shí)鐘信號(hào),并在FPGA內(nèi)部構(gòu)造一個(gè)256B大小的FIFO(First In and First Out,即先進(jìn)先出存儲(chǔ)器)完成對(duì)采樣信號(hào)的暫存,存儲(chǔ)滿后發(fā)一“FULL”信號(hào)給單片機(jī),單片機(jī)根據(jù)此信號(hào)讀取FPGA內(nèi)部RAM中的數(shù)據(jù),并在液晶中顯示所采集的波形。其中FPGA內(nèi)部的RTL電路如圖9所示:圖9 FPGA內(nèi)部構(gòu)造的RTL圖形RTL圖形總共由4個(gè)模塊構(gòu)成,分別為分頻模塊、RS觸發(fā)器模塊、2選1模塊以及FIFO_RAM模塊。分頻模塊負(fù)責(zé)把系統(tǒng)的50M時(shí)鐘根據(jù)需要進(jìn)行分頻送至A/D的時(shí)鐘引腳以及供給FIFO_RAM用作存儲(chǔ)數(shù)據(jù)時(shí)鐘,RS觸發(fā)器負(fù)責(zé)控制FIFO_RAM的讀寫,因?yàn)榇?/p>

22、儲(chǔ)數(shù)據(jù)要求速度快但讀取數(shù)據(jù)時(shí)考慮到單片機(jī)相對(duì)FPGA來說是慢速器件,故用到2選1模塊把FIFO_RAM讀寫時(shí)鐘分開。當(dāng)“start”為“0”且RS為“01”時(shí)Q為“1”,Qf為“0”,即FIFO_RAM的wrreq和rdreq分別為“1”,“0”,F(xiàn)IFO_RAM進(jìn)入寫狀態(tài),這時(shí)可把A/D采樣的數(shù)據(jù)寫入FIFO_RAM中暫存;當(dāng)“start”為“1”且RS為“10”時(shí)Q為“0”,Qf為“1”,即FIFO_RAM的wrreq和rdreq分別為“0”,“1”,F(xiàn)IFO_RAM進(jìn)入讀狀態(tài),此時(shí)讀時(shí)鐘變?yōu)閺膯纹瑱C(jī)進(jìn)入的讀時(shí)鐘,這時(shí)可把FIFO_RAM中的數(shù)據(jù)讀出來送至單片機(jī)中,單片機(jī)把這些數(shù)據(jù)進(jìn)行坐標(biāo)

23、轉(zhuǎn)換后即可在液晶屏上顯示,即構(gòu)成波形。FPGA采樣、存儲(chǔ)與傳輸?shù)臅r(shí)序邏輯圖如圖10所示。圖10FPGA采樣、存儲(chǔ)與傳輸時(shí)序圖FPGA與單片機(jī)間采用并行通信的方法以提高傳輸速度,從而保證波形可以實(shí)時(shí)顯示。當(dāng)單片機(jī)將要在液晶上顯示一幅完整的波形圖時(shí),從“start”引腳發(fā)出“0”信號(hào)命令FPGA進(jìn)行A/D采樣并把采樣數(shù)據(jù)存入內(nèi)部構(gòu)造的FIFO_RAM中,當(dāng)存滿時(shí),“full”引腳電平為高,單片機(jī)根據(jù)此信號(hào)在“read_clk”引腳發(fā)出合適的讀取時(shí)鐘把FIFO_RAM中的數(shù)據(jù)讀到內(nèi)存中,再把這些數(shù)據(jù)進(jìn)行坐標(biāo)變換后轉(zhuǎn)換為液晶屏上實(shí)際的點(diǎn)坐標(biāo),從而可以顯示在液晶屏上。單片機(jī)還通過三個(gè)引腳(A2,A1,A

24、0)與FPGA進(jìn)行通信,目的是對(duì)A/D采樣速率進(jìn)行控制。當(dāng)A2A1A0三個(gè)引腳狀態(tài)不同時(shí)FPGA分頻模塊系數(shù)也不同,從而提供給A/D芯片的采樣時(shí)鐘也不同。2.3 觸摸屏原理及觸摸屏鍵盤構(gòu)造 由于SYM320240BZK液晶自帶有觸摸面板及其電路,故在本設(shè)計(jì)中引用觸摸屏構(gòu)造鍵盤可達(dá)到節(jié)省單片機(jī)IO口的目的。本設(shè)計(jì)中采用的是電阻式觸摸面板,它是由兩層極薄的電阻面板組成,如圖11所示,兩層面板之間有一個(gè)很小的間距,當(dāng)有外力在面板上的某一點(diǎn)壓下去時(shí),會(huì)在施力點(diǎn)造成兩層電阻接觸,也就是短路(Short),而兩層電阻面板的端點(diǎn)都各有電極,如圖12所示YU, YD, XL, XR ,因此配合一些開關(guān)就可偵測(cè)

25、出面板上哪一相對(duì)位置被觸摸。圖11 觸摸面板圖12 觸摸面板與偵測(cè)開關(guān)在圖11中,設(shè)定開關(guān)SW2 與SW3 是OFF(Open),SW0 與SW1 是ON(Close),當(dāng)有外力在面板上的某一點(diǎn)壓下去時(shí),由YU 點(diǎn)取得電壓接到ADC,就可以得到被觸摸點(diǎn)的X 坐標(biāo)相對(duì)位置。圖13 讀取X坐標(biāo)圖14 X方向上電阻的分壓在圖13中,因?yàn)殚_關(guān)SW2 與SW3 是OFF,因此YD 點(diǎn)是處于懸浮狀態(tài),所以當(dāng)有外力在面板上的某一點(diǎn)壓下去時(shí),YU 上的電壓事實(shí)上就是X 的Panel(也就是電阻)上的分壓結(jié)果,壓在面板上的不同一點(diǎn),就會(huì)得到不同的分壓值,如圖8所示。同理,在圖14中,設(shè)定開關(guān)SW0 與SW1 是

26、OFF(Open),SW2 與SW3 是ON(Close),當(dāng)有外力在面板上的某一點(diǎn)壓下去時(shí),由XL 點(diǎn)取得電壓接到ADC,就可以得到被觸摸點(diǎn)的Y 坐標(biāo)相對(duì)位置。一般說來許多觸摸面板都是貼在LCD 面板上面,因此在程序設(shè)計(jì)上如果重復(fù)圖12與圖13的讀取步驟就可以順利得知被觸摸的點(diǎn)是在屏幕上的哪一位置。圖15 讀取Y坐標(biāo)圖16 Y方向上電阻的分壓在圖15中,因?yàn)殚_關(guān)SW0 與SW1 是OFF,因此XR 點(diǎn)是Floating,所以當(dāng)有外力在面板上的某一點(diǎn)壓下去時(shí),XL 上的電壓事實(shí)上就是Y 的Panel(也就是電阻)上的分壓結(jié)果,壓在面板上的不同一點(diǎn),就會(huì)得到不同的分壓值,如圖16所示。在本設(shè)計(jì)在

27、根據(jù)需要在液晶屏上構(gòu)造了以下按鍵:波形水平分辨率、靜止/動(dòng)態(tài)、存儲(chǔ)、讀取。其中“波形水平分辨率”按鍵根據(jù)需要對(duì)不同頻率的波形可提供不同頻率的采樣速率,具體為:系統(tǒng)上電時(shí)默認(rèn)的采樣速率為“20Msa/S”,且系統(tǒng)默認(rèn)可以自動(dòng)設(shè)置合適的采樣速率以達(dá)到最好的視覺觀察效果。當(dāng)選擇“自動(dòng)”時(shí),單片機(jī)根據(jù)輸入的信號(hào)頻率自動(dòng)選擇不同的采樣速率發(fā)給FPGA,即把單片機(jī)三個(gè)引腳的電平作相應(yīng)改變,F(xiàn)PGA根據(jù)這三個(gè)引腳電平的變化把采樣速率調(diào)到要求的值。當(dāng)選擇手動(dòng)方式時(shí),單片機(jī)掃描觸摸屏上的“水平分辨率”鍵,若有按下則單片機(jī)把采樣速率進(jìn)行改變后發(fā)給FPGA,F(xiàn)PGA再次根據(jù)單片機(jī)三個(gè)引腳電平的改變把采樣速率變換一次

28、,同時(shí)顯示也跟著變換一次,這樣即達(dá)到更改波形水平分辨率的目的。在固定存儲(chǔ)深度M下,采樣率fs與掃描速率S成反比,即10S*fs=M在本設(shè)計(jì)中取M256,則fs=25.6/S。本系統(tǒng)中設(shè)定掃描速率從1S/div200S/div,共8檔。根據(jù)上式,計(jì)算出對(duì)應(yīng)的采樣率如表2所示。信號(hào)頻率A/D采樣率fs掃描速率S單片機(jī)引腳A2,A1,A0狀態(tài)>100 KHZ20 MHZ1S/div00050100 KHZ12.5 MHZ2S/div0013050 KHZ5 MHZ5S/div0101530 KHZ2.5 MHZ10S/div0111015 KHZ1.25 MHZ20S/div100310 KH

29、Z510 KHZ40S/div10113 KHZ255 KHZ100S/div110<1 KHZ128 KHZ200S/div111表2信號(hào)頻率、A/D采樣率與掃描速度關(guān)系在觸摸屏按鍵構(gòu)造中,“靜止/動(dòng)態(tài)”按鍵根據(jù)觀察波形的需要可把波形靜止觀察或讓其動(dòng)態(tài)顯示波形;“存儲(chǔ)”按鍵每按下一次就對(duì)當(dāng)前的波形進(jìn)行一次存儲(chǔ),存入CAT24WC256中;“讀取”按鍵每按下一次就可以把存儲(chǔ)在CAT24WC256中的波形數(shù)據(jù)調(diào)出來顯示;在按下“存儲(chǔ)”或“讀取”按鍵時(shí),屏幕上可實(shí)時(shí)顯示當(dāng)前已經(jīng)存儲(chǔ)和讀取的段數(shù)。在液晶屏幕上,根據(jù)需要還分別設(shè)有波形水平分辨率顯示區(qū)、波形峰峰值顯示區(qū)以及波形頻率顯示區(qū)。在實(shí)時(shí)顯

30、示波形的同時(shí)可實(shí)時(shí)顯示這些參數(shù)值。2.4 I2C總線原理及CAT24WC256存儲(chǔ)器存儲(chǔ)及讀取原理在本設(shè)計(jì)中采用I2C總線技術(shù)根據(jù)需要可把當(dāng)前的波形數(shù)據(jù)存入CAT24WC256中,以方便在需要的時(shí)候把它調(diào)出來顯示。其與單片機(jī)的接口電路如圖17所示。圖17 CAT24WC256與單片機(jī)連接圖CAT24WC256 是一個(gè)256K 位串行CMOS E2PROM ,內(nèi)部含有32768 個(gè)字節(jié),每字節(jié)為8位,它有一個(gè)64 字節(jié)頁寫緩沖器,該器件通過I2C 總線接口進(jìn)行操作。CAT24WC256主要特性如下所示:特性* 與1MHz I2C 總線兼容* 1.8 到6.0 伏工作電壓范圍* 低功耗CMOS 技

31、術(shù)* 寫保護(hù)功能當(dāng)WP 為高電平時(shí)進(jìn)入寫保護(hù)狀態(tài)* 64 字節(jié)頁寫緩沖器* 自定時(shí)擦寫周期* 100,000 編程/擦寫周期* 可保存數(shù)據(jù)100 年* 8 腳DIP SOIC 封裝CAT24WC256 支持I2C 總線數(shù)據(jù)傳送協(xié)議,I2C 總線協(xié)議規(guī)定,任何將數(shù)據(jù)傳送到總線的器件作為發(fā)送器,任何從總線接收數(shù)據(jù)的器件為接收器。數(shù)據(jù)傳送是由產(chǎn)生串行時(shí)鐘和所有起始停止信號(hào)的主器件控制的,CAT24WC256 是作為從器件被操作的。主器件和從器件都可以作為發(fā)送器或接收器,但由主器件控制傳送數(shù)據(jù)發(fā)送或接收的模式。管腳描述SCL 串行時(shí)鐘CAT24WC256 串行時(shí)鐘輸入管腳用于產(chǎn)生器件所有數(shù)據(jù)發(fā)送或接收

32、的時(shí)鐘,這是一個(gè)輸入管腳。SDA 串行數(shù)據(jù)/地址雙向串行數(shù)據(jù)/地址管腳用于器件所有數(shù)據(jù)的發(fā)送或接收,SDA 是一個(gè)開漏輸出管腳,可與其它開漏輸出或集電極開路輸出進(jìn)行線或(wire-OR)。WP 寫保護(hù)當(dāng)WP 腳連接到Vcc,所有內(nèi)存變成寫保護(hù)(只能讀)。當(dāng)WP 引腳連接到Vss 或懸空,允許器件進(jìn)行讀/寫操作。A0 A1 器件地址輸入這些管腳為硬連線或者不連接對(duì)于單總線系統(tǒng)最多可尋址4 個(gè)AT24WC256 器件(參閱器件尋址),當(dāng)這些引腳沒有連接時(shí)其默認(rèn)值為0。I2C總線協(xié)議I2C 總線協(xié)議定義如下:(1) 只有在總線空閑時(shí)才允許啟動(dòng)數(shù)據(jù)傳送。(2 ) 在數(shù)據(jù)傳送過程中當(dāng)時(shí)鐘線為高電平時(shí)數(shù)據(jù)

33、線必須保持穩(wěn)定狀態(tài)不允許有跳變,時(shí)鐘線為高電平時(shí)數(shù)據(jù)線的任何電平變化將被看作總線的起始或停止信號(hào)。起始信號(hào)時(shí)鐘線保持高電平期間,數(shù)據(jù)線電平從高到低的跳變作為I2C 總線的起始信號(hào)。停止信號(hào)時(shí)鐘線保持高電平期間,數(shù)據(jù)線電平從低到高的跳變作為I2C 總線的停止信號(hào)。其總線時(shí)序如圖18所示:圖18 I2C總線時(shí)序?qū)憰r(shí)序如圖19所示:圖19 寫時(shí)序起始/停止時(shí)序如圖20所示:圖20 起始/停止時(shí)序器件尋址主器件通過發(fā)送一個(gè)起始信號(hào)啟動(dòng)發(fā)送過程,然后發(fā)送它所要尋址的從器件的地址。8位從器件地址的高5位固定為10100(見圖19)。接下來的2 位(A1 A0)為器件的地址位。最多可以連接4個(gè)器件到同一總線

34、上。這些位必須與硬連線輸入腳A1 A0相對(duì)應(yīng)。從器件地址的最低位作為讀寫控制位?!?”表示對(duì)從器件進(jìn)行讀操作;“0”表示對(duì)從器件進(jìn)行寫操作。在主器件發(fā)送起始信號(hào)和從器件地址字節(jié)后,CAT24WC256 監(jiān)視總線并當(dāng)其地址與發(fā)送的從地址相符時(shí)響應(yīng)一個(gè)應(yīng)答信號(hào)(通過SDA線)。CAT24WC256再根據(jù)讀寫控制位(R/W)的狀態(tài)進(jìn)行讀或?qū)懖僮?。?yīng)答信號(hào)I2C 總線數(shù)據(jù)傳送時(shí),每成功地傳送一個(gè)字節(jié)數(shù)據(jù)后,接收器都必須產(chǎn)生一個(gè)應(yīng)答信號(hào)。應(yīng)答的器件在第9 個(gè)時(shí)鐘周期時(shí)將SDA 線拉低,表示其已收到一個(gè)8 位數(shù)據(jù)。CAT24WC256 在接收到起始信號(hào)和從器件地址之后響應(yīng)一個(gè)應(yīng)答信號(hào),如果器件已選擇了寫操

35、作,則在每接收一個(gè)8 位字節(jié)之后響應(yīng)一個(gè)應(yīng)答信號(hào)。當(dāng)CAT24WC256 工作于讀模式時(shí),在發(fā)送一個(gè)8 位數(shù)據(jù)后釋放SDA 線并監(jiān)視一個(gè)應(yīng)答信號(hào),一旦接收到應(yīng)答信號(hào),CAT24WC256 繼續(xù)發(fā)送數(shù)據(jù),如主器件沒有發(fā)送應(yīng)答信號(hào),器件停止傳送數(shù)據(jù)并等待一個(gè)停止信號(hào)。圖21 應(yīng)答時(shí)序圖22 從器件地址位寫操作字節(jié)寫在字節(jié)寫模式下,主器件發(fā)送起始信號(hào)和從器件地址信息(R/W 位置0) 給從器件,在從器件送回應(yīng)答信號(hào)后,主器件發(fā)送兩個(gè)8 位地址字寫入CAT24WC256 的地址指針,主器件在收到從器件的應(yīng)答信號(hào)后,再發(fā)送數(shù)據(jù)到被尋址的存儲(chǔ)單元。CAT24WC256 再次應(yīng)答,并在主器件產(chǎn)生停止信號(hào)后開

36、始內(nèi)部數(shù)據(jù)的擦寫,在內(nèi)部擦寫過程中,CAT24WC256 不再應(yīng)答主器件的任何請(qǐng)求。其時(shí)序圖如圖23所示:圖23 字節(jié)寫時(shí)序頁寫在頁寫模式下,單個(gè)寫周期內(nèi)CAT24WC256 最多可以寫入64 個(gè)字節(jié)數(shù)據(jù)。頁寫操作的啟動(dòng)和字節(jié)寫一樣,不同在于傳送了一字節(jié)數(shù)據(jù)后,主器件允許繼續(xù)發(fā)送63 個(gè)字節(jié)。每發(fā)送一個(gè)字節(jié)后,CAT24WC256 將響應(yīng)一個(gè)應(yīng)答位,且內(nèi)部低6 位地址加1 ,高位地址保持不變。如果主器件在發(fā)送停止信號(hào)之前發(fā)送大于64 個(gè)字節(jié),地址計(jì)數(shù)器將自動(dòng)翻轉(zhuǎn),先前寫入的數(shù)據(jù)被覆蓋。當(dāng)所有64 字節(jié)接收完畢,主器件發(fā)送停止信號(hào),內(nèi)部編程周期開始。此時(shí),所有接收到的數(shù)據(jù)在單個(gè)寫周期內(nèi)寫入CAT

37、24WC256。其時(shí)序圖如圖24所示:圖24 頁寫時(shí)序應(yīng)答查詢可以利用內(nèi)部寫周期時(shí)禁止數(shù)據(jù)輸入這一特性。一旦主器件發(fā)送停止位指示主器件操作結(jié)束時(shí),CAT24WC256 啟動(dòng)內(nèi)部寫周期,應(yīng)答查詢立即啟動(dòng),包括發(fā)送一個(gè)起始信號(hào)和進(jìn)行寫操作的從器件地址。如果CAT24WC256 正在進(jìn)行內(nèi)部寫操作,將不會(huì)發(fā)送應(yīng)答信號(hào)。如果CAT24WC256 已經(jīng)完成了內(nèi)部寫操作,將發(fā)送一個(gè)應(yīng)答信號(hào),主器件可以繼續(xù)對(duì)CAT24WC256 進(jìn)行下一次讀寫操作。寫保護(hù)寫保護(hù)操作特性可使用戶避免由于不當(dāng)操作而造成對(duì)存儲(chǔ)區(qū)域內(nèi)部數(shù)據(jù)的改寫,當(dāng)WP 管腳接高時(shí),整個(gè)寄存器區(qū)全部被保護(hù)起來而變?yōu)橹豢勺x取。AT24WC256 可

38、以接收從器件地址和字節(jié)地址,但是裝置在接收到第一個(gè)數(shù)據(jù)字節(jié)后不發(fā)送應(yīng)答信號(hào)從而避免寄存器區(qū)域被編程改寫。讀操作CAT24WC256 讀操作的初始化方式和寫操作時(shí)一樣,僅把R/W 位置為1。有三種不同的讀操作方式:立即/當(dāng)前地址讀,選擇/隨機(jī)讀和連續(xù)讀。立即/當(dāng)前地址讀如果上次讀/寫的操作地址為N,則立即讀的地址從地址N+1 開始。如果N=E(此處E=32767),則計(jì)數(shù)器將翻轉(zhuǎn)到0 且繼續(xù)輸出數(shù)據(jù)。CAT24WC256接收到從器件地址信號(hào)后(R/W 位置1),它首先發(fā)送一個(gè)應(yīng)答信號(hào),然后發(fā)送一個(gè)8 位字節(jié)數(shù)據(jù)。主器件不需發(fā)送一個(gè)應(yīng)答信號(hào),但要產(chǎn)生一個(gè)停止信號(hào)。圖25 立即地址讀時(shí)序連續(xù)讀連續(xù)讀

39、操作可通過立即讀或選擇性讀操作啟動(dòng)。在CAT24WC256 發(fā)送完一個(gè)8 位字節(jié)數(shù)據(jù)后,主器件產(chǎn)生一個(gè)應(yīng)答信號(hào)來響應(yīng),告知CAT24WC256 主器件要求更多的數(shù)據(jù),對(duì)應(yīng)每個(gè)主機(jī)產(chǎn)生的應(yīng)答信號(hào)CAT24WC256 將發(fā)送一個(gè)8 位數(shù)據(jù)字節(jié)。當(dāng)主器件不發(fā)送應(yīng)答信號(hào)而發(fā)送停止位時(shí)結(jié)束此操作。從CAT24WC256 輸出的數(shù)據(jù)按順序由N 到N+1 輸出。讀操作時(shí)地址計(jì)數(shù)器在CAT24WC256 整個(gè)地址內(nèi)增加,這樣整個(gè)寄存器區(qū)域在可在一個(gè)讀操作內(nèi)全部讀出。當(dāng)讀取的字節(jié)超過E(此處E=32767)計(jì)數(shù)器將翻轉(zhuǎn)到零并繼續(xù)輸出數(shù)據(jù)字節(jié)。圖26 連續(xù)讀時(shí)序2.5 硬件測(cè)頻信號(hào)信號(hào)的放大與整形本系統(tǒng)采樣硬件測(cè)

40、頻方式進(jìn)行輸入信號(hào)頻率的測(cè)量,由于輸入信號(hào)幅度可能比較微弱,這就需要進(jìn)行信號(hào)的放大后再測(cè)頻,而且由于輸入信號(hào)的不確定性,需要事先把輸入信號(hào)進(jìn)行整形成標(biāo)準(zhǔn)方波之后再通入單片機(jī)T0引腳進(jìn)行計(jì)數(shù)。本系統(tǒng)采樣三極管來放大輸入的信號(hào),再用施密特電路進(jìn)行波形變換,把輸入信號(hào)波形變成可供單片機(jī)進(jìn)行頻率測(cè)量的方波信號(hào)。其電路如圖27所示。圖27輸入信號(hào)的放大與整形其中三極管采用普通的NPN型三極管,為了吸收BE間的導(dǎo)通電壓Vbe隨溫度的變化,而使工作點(diǎn)(集電極電流)穩(wěn)定,射級(jí)電阻R4的直流壓降必須在1V以上,一般取2V。若取Ie=2mA,則Ic=Ie=2mA,R4=Ve/Ie=2V/2mA=1K.R1=R4*

41、Av=1K*10=10K(取Av=10)又Vb=Vbe+Ve=0.6+2=2.6V,故R3壓降Vr32.6V,R2壓降V=Vcc-Vr3=5-2.6=2.4V,又在R2和R3上流動(dòng)的電流應(yīng)比Ib大得多(10倍以上),這里取0.1mA,則R2=2.4/0.1=24K,R3=2.6/0.1=26K,取C5=C6=0.1F。三極管把輸入信號(hào)進(jìn)行放大后輸入到施密特集成芯片SN74HC14中,輸出即為標(biāo)準(zhǔn)的方波,單片機(jī)則可直接測(cè)量此信號(hào)的頻率。2.6 蜂鳴器驅(qū)動(dòng)電路在本設(shè)計(jì)中為了能在觸摸屏按鍵按下時(shí)可以確定已經(jīng)按下,加入了蜂鳴器來配合按鍵進(jìn)行動(dòng)作。當(dāng)觸摸屏有按鍵按下時(shí)蜂鳴器進(jìn)行短暫的一聲“嘀”響后停止,

42、以告知已經(jīng)按下了按鍵,以防止重新按下。其驅(qū)動(dòng)電路如圖28所示。圖28蜂鳴器驅(qū)動(dòng)電路當(dāng)“BELL”引腳信號(hào)為低電平時(shí),三極管導(dǎo)通,蜂鳴器響;當(dāng)“BELL”引腳信號(hào)為高電平時(shí),三極管截止,蜂鳴器停止響。第三章 程序設(shè)計(jì)3.1 FPGA采樣、數(shù)據(jù)暫存及傳輸FPGA在本設(shè)計(jì)中主要負(fù)責(zé)信號(hào)的采集、數(shù)據(jù)暫存及與單片機(jī)通信,其總體程序流程圖如圖29所示:開始N“start”信號(hào)為0嗎?YRS觸發(fā)器開始工作,分頻模塊根據(jù)單片機(jī)div引腳脈沖數(shù)確定A/D的采樣時(shí)鐘頻率,并把采樣數(shù)據(jù)存儲(chǔ)入FIFO_RAMN存滿了嗎?“FULL”信號(hào)變?yōu)?,停止RS觸發(fā)器工作在寫FIFO_RAM狀態(tài),變?yōu)楣ぷ髟谧xFIFO_RAM狀

43、態(tài),并通知單片機(jī)可以取數(shù)據(jù)若單片機(jī)開始取數(shù)據(jù),F(xiàn)IFO_RAM時(shí)鐘變?yōu)橛蓡纹瑱C(jī)read_clk引腳控制若FIFO_RAM數(shù)據(jù)被讀取完,等待進(jìn)行下一輪的A/D采樣結(jié)束返回圖29 總體程序流程圖3.2 單片機(jī)控制FPGA采樣、畫圖及數(shù)據(jù)存儲(chǔ)單片機(jī)在本設(shè)計(jì)中是主要核心,它主要負(fù)責(zé)命令FPGA采樣及把采樣數(shù)據(jù)存到內(nèi)存中并調(diào)用畫圖程序顯示采樣信號(hào),在觸摸屏有按鍵按下時(shí)它根據(jù)按下鍵的值轉(zhuǎn)入相應(yīng)的處理子程序,總體程序流程如圖30所示:開始 讀取液晶觸摸屏按鍵,有鍵按下嗎NY按下采樣率鍵按下動(dòng)態(tài)/靜止鍵按下存儲(chǔ)鍵按下讀取鍵命令FPGA改變A/D采樣速率按下奇數(shù)次當(dāng)前狀態(tài)為“靜止”,偶數(shù)次為“動(dòng)態(tài)”調(diào)用CAT2

44、4WC256寫程序存儲(chǔ)當(dāng)前波形數(shù)據(jù)調(diào)用CAT24WC256讀程序讀取上次存儲(chǔ)的數(shù)據(jù)命令FPGA進(jìn)行A/D采樣NFPGA中的FIFO_RAM是否存滿?Y讀取FIFO_RAM數(shù)據(jù)并調(diào)用畫點(diǎn)程序在液晶上顯示完整波形,同時(shí)實(shí)時(shí)測(cè)量波形參數(shù)并顯示結(jié)束返回圖30 單片機(jī)總體程序流程圖3.3 單片機(jī)波形顯示及信號(hào)處理模塊本模塊是基于Keil uV2軟件環(huán)境下進(jìn)行編譯并調(diào)試,其主要包括波形顯示程序及波形存儲(chǔ)程序。其中波形顯示主要完成對(duì)采樣波形轉(zhuǎn)換成液晶屏幕的實(shí)際坐標(biāo)值并顯示出來。由于單片機(jī)內(nèi)存有限,考慮到程序的實(shí)現(xiàn)難度,只能分四次從FPGA中把波形數(shù)據(jù)取出來,前三次每次取80個(gè)數(shù)據(jù),最后一次取16個(gè)數(shù)據(jù),總共

45、有256個(gè)數(shù)據(jù),其算法實(shí)現(xiàn)如下:1、 建立坐標(biāo),把采集到的波形數(shù)據(jù)存儲(chǔ)到數(shù)組AD_DATA80中。2、 由于AD采樣的位數(shù)為8位,其采樣值在0255之中,可是本設(shè)計(jì)采樣的320*240液晶屏波形顯示區(qū)的縱坐標(biāo)只設(shè)有200個(gè)點(diǎn),這就需要把采樣值進(jìn)行相應(yīng)的變換后換算成實(shí)際坐標(biāo)值。如果A/D采樣回來的值不大于200就不需要轉(zhuǎn)換即可對(duì)應(yīng)實(shí)際的坐標(biāo)值,若大于200后把它除以2后即可轉(zhuǎn)換成實(shí)際的屏幕坐標(biāo)值,同時(shí)垂直分辨率也隨之改變。3、 根據(jù)畫點(diǎn)程序potxy()逐點(diǎn)描出數(shù)組中的值,畫點(diǎn)程序如下:/函數(shù)功能:在屏幕上任何一個(gè)地方顯示一個(gè)點(diǎn),下一個(gè)顯示的點(diǎn)不影響在它之前/ 顯示的點(diǎn).其中X坐標(biāo)范圍為0319

46、,Y坐標(biāo)范圍為0239/ 但此函數(shù)有一個(gè)限定條件:即調(diào)用8次后必然清除screen數(shù)組中的內(nèi)容/ 否則會(huì)出錯(cuò)/void potxy(unsigned int x,unsigned int y) unsigned int dot,new_x; WriteCommand(0x00,0xC5);/繪圖模式new_x=(int)x/8;/取出X的宏坐標(biāo)(范圍:039),即320/840LocateXY(new_x,y);/坐標(biāo)定位switch(x%8)/對(duì)X取余,即求出X的點(diǎn)坐標(biāo)(范圍:0319) /一個(gè)X宏坐標(biāo)包括8個(gè)X點(diǎn)坐標(biāo) case 0: dot=0x80;break;/第8個(gè)點(diǎn),即1000,0

47、000 case 1: dot=0x40;break;/第7個(gè)點(diǎn),即0100,0000 case 2: dot=0x20;break;/第6個(gè)點(diǎn),即0010,0000 case 3: dot=0x10;break;/第5個(gè)點(diǎn),即0001,0000 case 4: dot=0x08;break;/第4個(gè)點(diǎn),即0000,1000 case 5: dot=0x04;break;/第3個(gè)點(diǎn),即0000,0100 case 6: dot=0x02;break;/第2個(gè)點(diǎn),即0000,0010 case 7: dot=0x01;break;/第1個(gè)點(diǎn),即0000,0001 default:break; W

48、riteData(dot|screeny%8); /寫入數(shù)據(jù)之前先與上同一個(gè)宏坐標(biāo)內(nèi)的點(diǎn)坐標(biāo)值 /防止把之前的數(shù)據(jù)覆蓋掉 screeny%8=dot|screeny%8;/寫完一個(gè)數(shù)據(jù)后馬上保存,使得下一次在/同一個(gè)宏 /坐標(biāo)下寫入數(shù)據(jù)的時(shí)候可以進(jìn)行與操作 /y%8的意思是screen數(shù)組只有8位,要正確存入只有%8調(diào)用此函數(shù)256次之后即可在液晶屏幕上描出采樣到的波形數(shù)據(jù),如圖31 a 正弦波b 方波c 三角波圖31 實(shí)際顯示波形效果4、 波形數(shù)據(jù)的存儲(chǔ)采樣ATCAT24WC256存儲(chǔ)器,其最大存儲(chǔ)容量為256Kb,內(nèi)部采用I2C總線技術(shù),讀寫一個(gè)字節(jié)的速度可在5ms內(nèi)完成,這對(duì)快速存儲(chǔ)數(shù)據(jù)

49、而言已可以做到快速存儲(chǔ)。采用單片機(jī)進(jìn)行模擬I2C總線協(xié)議,其程序如下:/=/函數(shù)名稱:void i2c_write(uchar Address_H,uchar Address_L,uchar Data)/函數(shù)功能:寫入數(shù)據(jù)/ =void i2c_write(uchar Address_H,uchar Address_L,uchar Data) /先寫高地址,再寫低地址,最后寫數(shù)據(jù) do / 啟動(dòng)總線 i2c_start(); i2c_send8bit(0xA0); /主器件向從器件發(fā)送地址(R/W=0為寫) while(i2c_ack(); /從器件若無應(yīng)答一直循環(huán) i2c_send8bit(

50、Address_H); /發(fā)送從器件內(nèi)部存儲(chǔ)的地址 i2c_ack();/主器件發(fā)送應(yīng)答信號(hào) i2c_send8bit(Address_L); /發(fā)送從器件內(nèi)部存儲(chǔ)的地址 i2c_ack();/主器件發(fā)送應(yīng)答信號(hào) i2c_send8bit(Data); /主器件向從器件發(fā)送數(shù)據(jù) i2c_ack();/主器件發(fā)送應(yīng)答信號(hào) i2c_stop();/釋放總線 return;/ =/函數(shù)名稱:uchar i2c_read(uchar Address_H,uchar Address_L)/函數(shù)功能:i2c_read(地址,數(shù)據(jù)),讀一個(gè)字節(jié)/=uchar i2c_read(uchar Address_H,uchar Address_L) /先讀高地址,再寫讀地址 uchar c; do i2c_start(); / 啟動(dòng)總線 i2c_send8bit(0xA0);/主器件向從器件發(fā)送地址(R/W=0為寫) whi

溫馨提示

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

評(píng)論

0/150

提交評(píng)論