基于51單片機電子設(shè)計報告之波形信號采集,存儲與回放系統(tǒng)設(shè)計_第1頁
基于51單片機電子設(shè)計報告之波形信號采集,存儲與回放系統(tǒng)設(shè)計_第2頁
基于51單片機電子設(shè)計報告之波形信號采集,存儲與回放系統(tǒng)設(shè)計_第3頁
基于51單片機電子設(shè)計報告之波形信號采集,存儲與回放系統(tǒng)設(shè)計_第4頁
基于51單片機電子設(shè)計報告之波形信號采集,存儲與回放系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于51單片機電子設(shè)計報告之波形采集、存儲與回放系統(tǒng) 目錄一、設(shè)計任務(wù)求 3二、系統(tǒng)方案論證與選擇 6三、系統(tǒng)硬件的設(shè)計 10四、系統(tǒng)軟件的設(shè)計12五、參考文獻14六、結(jié)論15附錄16附錄 1 程序代碼16附錄 2 硬件原理圖30附錄 3 PCB圖(部分)32一、 設(shè)計任務(wù)求<1>、任務(wù)設(shè)計并制作一個波形采集、存儲與回放系統(tǒng),示意圖如圖1 所示。該系統(tǒng)能同時采集兩路周期信號波形,要求系統(tǒng)斷電恢復(fù)后,能連續(xù)回放已采集的信號,顯示在示波器上。<2>、要求1基本要求(1)能完成對A 通道單極性信號(高電平約4V、低電平接近0V)、頻率約1kHz 信號的采集、存儲與連續(xù)回放。要

2、求系統(tǒng)輸入阻抗不小于10 k,輸出阻抗不大于1k。(2)采集、回放時能測量并顯示信號的高電平、低電平和信號的周期。原信號與回放信號電平之差的絕對值50 mV,周期之差的絕對值5%。(3)系統(tǒng)功耗50mW,盡量降低系統(tǒng)功耗,系統(tǒng)內(nèi)不允許使用電池。2. 發(fā)揮部分(1)增加B 通道對雙極性、電壓峰峰值為100mV、頻率為10Hz10kHz 信號的采集??赏瑫r采集、存儲與連續(xù)回放A、B 兩路信號,并分別測量和顯示A、B 兩路信號的周期。B 通道原信號與回放信號幅度峰峰值之差的絕對值10 mV,周期之差的絕對值5%。(2)A、B 兩路信號的周期不相同時,以兩信號最小公倍周期連續(xù)回放信號。(3)可以存儲兩

3、次采集的信號,回放時用按鍵或開關(guān)選擇顯示指定的信號波形。(4)其他。<3>、說明1本系統(tǒng)處理的正弦波信號頻率范圍限定在10Hz10kHz,三角波信號頻率范圍限定在10Hz 2kHz,方波信號頻率范圍限定在10Hz 1kHz。2預(yù)留電源電流的測試點。3采集與回放時采用示波器監(jiān)視。4采集、回放時顯示的周期和幅度應(yīng)是信號的實際測量值,規(guī)定采用十進制數(shù)字顯示,周期以“ms”為單位,幅度以“mV”為單位。<4>、評分標準二、 系統(tǒng)方案論證與選擇1、題目要求及相關(guān)指標分析 題目的要求是將待測信號進行數(shù)字存儲,并通過普通示波器將被測信號顯示出來。由于待測信號為模擬信號,存儲過程為數(shù)字

4、方式,故應(yīng)該將模擬信號進行量化處理,然后存儲到存儲器中,當(dāng)需要顯示的時候,從存儲器讀出數(shù)據(jù)并恢復(fù)為模擬信號,并送往普通示波器Y輸入端,在X輸入端加入相應(yīng)的掃描信號,采有X-Y方式觀察信號的波形。因此,設(shè)計的重點是模擬信號的處理與采樣、數(shù)字信號的存儲、普通示波器的顯示控制、系統(tǒng)的控制4個方面。2、方案的比較與分析 1)采樣方式方案一:實時采樣。實時采樣是在信號存在期間對其采樣。根據(jù)采樣定理,采用速率必須高于信號最高頻率分量的兩倍。對于周期的正弦信號,一個周期內(nèi)應(yīng)該大于兩個采樣點。為了不失真的恢復(fù)原被測信號,通常一個周期內(nèi)就需要采樣八個點以上。方案二:等效時間采樣法。采用中高速模數(shù)轉(zhuǎn)換器,對于頻率

5、較高的周期性信號采用等效時間采樣的方法,即對每個周期僅采樣一個點,經(jīng)過若干個周期后就可對信號各個部分采樣一遍。而這些點可以借助步進延遲方法均勻地分布于信號波形的不同位置。其中步進延遲是每一次采樣比上一次樣點的位置延遲t時間。只要精確控制從觸發(fā)獲得采樣的時間延遲,就能夠準確地恢復(fù)出原始信號。等效時間采樣雖然可以對很高頻率的信號進行采樣,可是步進延遲的采樣技術(shù)與電路較為復(fù)雜。再者,它只限于處理周期信號,而且對單次觸發(fā)采樣無能為力。實時采樣可以實現(xiàn)整個頻段的全速采樣,因此本設(shè)計采用方案一。2)雙蹤顯示方式方案一:每個通道都有一套獨立的ADC和存儲器,雙蹤顯示時,只需輪流選擇不同通道的波形數(shù)據(jù),就可以

6、實現(xiàn)兩路波形的同時顯示。方案二:只使用一片ADC,一片存儲器和一片DAC,在采樣的時候,用存儲器地址的最低位控制模擬開關(guān)。通過切換兩路模擬信號,將采集到的數(shù)據(jù)分別存儲到存儲器的奇地址和偶地址上,雙蹤顯示時通過掃描存儲器中的數(shù)據(jù)即可將兩路波形同時顯示出來。方案二使用的硬件電路較少,故我們選擇方案二。3)觸發(fā)方式選擇要使屏幕上顯示穩(wěn)定的波形,則需將被測信號本身或者與被測信號有一定時間關(guān)系的觸發(fā)信號加到觸發(fā)電路。觸發(fā)源選擇確定觸發(fā)信號由何處供給。通常有三種觸發(fā)源:內(nèi)觸發(fā)(INT)、電源觸發(fā)(LINE)、外觸發(fā)EXT)。題目要求選擇內(nèi)觸發(fā),即使用被測信號作為觸發(fā)信號。方案一:采用數(shù)字觸發(fā)方式。對波形信

7、號進行采集,將采集到的波形數(shù)據(jù)和觸發(fā)電平(可由鍵盤設(shè)置)進行比較,找到波形在上升過程中大于或等于該觸發(fā)電平的點,即得到觸發(fā),此時開始對波形進行存儲。因為本來就需要對波形信號進行采集,使用這種方法無需要增加額外的硬件電路,實現(xiàn)方便。但是,對波形每個周期只采集有限個點,不可能每次都能采集到等于觸發(fā)電平的點(這時不得不以大于該電平的值為觸發(fā)電平),從而使觸發(fā)位置不穩(wěn)定,連續(xù)觸發(fā)時輸出波形會有抖動現(xiàn)象。方案二:采用模擬觸發(fā)方式。通過比較器LM311將被測波形信號和觸發(fā)電平進行比較,大于觸發(fā)電平時輸出為高電平,小于觸發(fā)電平時則輸出低電平,即可得到信號被整形后的脈沖序列,再在該脈沖序列的上升沿開始存儲波形

8、即實現(xiàn)了觸發(fā)存儲的功能。這種觸發(fā)方式穩(wěn)定,故我們采用了這種方案。4)水平和垂直位置的調(diào)節(jié)a)水平移動的調(diào)節(jié)方案一:由FPGA內(nèi)地址累加器的輸出控制數(shù)模轉(zhuǎn)換器不斷地輸出鋸齒波。在后級加一個加法器,調(diào)節(jié)滑動變阻器R的阻值,可以實現(xiàn)對鋸齒波波形的直流電平疊加,從而達到調(diào)節(jié)顯示器上波形左右位置的平移功能。方案二:通過對雙口RAM讀出數(shù)據(jù)的起始地址的偏移控制來控制波形的左右移動。方案一實現(xiàn)左右平移,電路簡單,效果明顯。但是一頁屏幕的波形通過這樣的平移,就必然會將一部分的波形移動到示波器屏幕以外,同時將示波器的另一邊變成空白。這樣不符合實際數(shù)字示波器的功能要求。再者,它也實現(xiàn)不了auto的功能。而方案二方

9、法新穎,對于波形在屏幕的滿屏顯示和auto的功能都可以輕易處理和簡單實現(xiàn)。于是本設(shè)計采用方案二。b)垂直移動的調(diào)節(jié)方案一與上述水平移動調(diào)節(jié)的方案一相同。方案二是直接對雙口RAM的數(shù)據(jù)進行處理。譬如向上平移,可將波形的所有數(shù)據(jù)都加上一個偏移值,然后送到DAC0832,直接將輸出的模擬信號加在y軸上。但這種方法的問題是當(dāng)RAM中數(shù)據(jù)較大時,加上某一個偏移值后數(shù)據(jù)均達到255,則波形的上半部分就會被削平。而通過加法電路的調(diào)節(jié)則不會出現(xiàn)這個問題。故我們選用方案一。5)頻率的測量方案一:用單片機掃描存儲在RAM中波形數(shù)據(jù),找到波形的上升過零點位置或者波形數(shù)據(jù)的峰值,并記錄此時的地址ADR1,在掃描下一個

10、波形的上升過零點位置或者波形數(shù)據(jù)的峰值,并記錄此時的地址ADR2,通過如下公式計算出波形的頻率: f = 1/B×(ADR2-ADR1)/20其中,B為水平分辨率,單位為s/div。 方案二:等精度測量法先將待測信號進行二分頻,用此信號作為閘門。取FPGA內(nèi)部40M信號作為基準信號,二分頻后信號的上升沿開起計數(shù)器時鐘計數(shù),下降沿關(guān)閉計數(shù)。由計得的數(shù)值來計算信號的頻率。方案一計算的頻率數(shù)據(jù)的精度不會很高,加上采樣的不穩(wěn)定,必將導(dǎo)致頻率測量的不正確。而方案二測量的穩(wěn)定性較高且數(shù)據(jù)較準確。故我們選用方案二測量信號的頻率。三、 系統(tǒng)硬件的設(shè)計DAC0832輸出的是電流,一般要求輸出是電壓,所

11、以還必須經(jīng)過一個外接的運算放大器轉(zhuǎn)換成電壓。實驗線路如圖所示。1. 運算放大器運算放大器有三個特點:開環(huán)放大倍數(shù)非常高,一般為幾千,甚至可高達10萬。在正常情況下,運算放大器所需要的輸入電壓非常小。輸入阻抗非常大。運算放大器工作時,輸入端相當(dāng)于一個很小的電壓加在一個很大的輸入阻抗上,所需要的輸入電流也極小。輸出阻抗很小,所以,它的驅(qū)動能力非常大。2.DAC0832的外部連接DAC0832的外部連接線路如圖10.10所示。3.運算放大電路和低通濾波電路LM324的5管腳與DAC0832的(IOUT2)12管腳相連,LM324的6管腳與DAC0832的(IOUT1)11管腳相連,LM324的7管腳

12、與DAC0832的REF(9)管腳相連.第一級運算放大器的作用是將DAC0832輸出的電流信號轉(zhuǎn)化為電壓信號V1,第二級運算放大器的作用是將V1通過反向放大電路-(R2/R1)倍。實驗表明,輸出波形效果不錯四、 系統(tǒng)軟件的設(shè)計本程序的程序流程圖如下所示五、 參考文獻1 康華光. 電子技術(shù)基礎(chǔ)模擬部分(第五版). 高等教育出版社,2005年. 2 閻 石. 數(shù)字電子技術(shù)基礎(chǔ)(第五版). 高等教育出版社,2005年. 3 劉愛華 滿寶元. 傳感器原理與應(yīng)用技術(shù).人民郵電出版社,2011年.4 馬 彪. 單片機應(yīng)用技術(shù). 同濟大學(xué)出版社,2010年.5 郭天祥. 51單片機C語言教程. 北京: 電子

13、工業(yè)出版社,2012年.6 劉建清. 輕松玩轉(zhuǎn)51單片機C語言.北京航空航天大學(xué)出版社,2011年.7 彭 偉. 單片機C語言程序設(shè)計實例100例. 北京: 電子工業(yè)出版社,2011年.六、 結(jié)論本方案的系統(tǒng)設(shè)計符合2011 年全國大學(xué)生電子設(shè)計競賽試題(H)題的要求。 通過單片機控制一個數(shù)模轉(zhuǎn)換器DAC0832將采集到的數(shù)據(jù)進行模數(shù)轉(zhuǎn)并經(jīng)過運算放大器LM324可以將其電流輸出線性地轉(zhuǎn)換成電壓輸出到外部設(shè)備示波器進而實現(xiàn)波形的采集存儲與回放。附錄 附錄 1 程序代碼/*adc.h文件*/#ifndef _ADC_H_#define _ADC_H_void DelayUs2x(unsigned

14、char t);void DelayMs(unsigned char t); bit LCD_Check_Busy(void) ; void LCD_Write_Com(unsigned char com); void LCD_Write_Data(unsigned char Data); void LCD_Clear(void); void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) ; void LCD_Write_Char(unsigned char x,unsigned char y,unsign

15、ed char Data); void LCD_Init(void) ; void init1602(void) ;void Delay_Ms (unsigned int a);void ADC_Init (unsigned char CHA);unsigned char ADC_Read (void);#endif/*- 名稱:LCD1602.h 論壇: 修改:無 內(nèi)容: 引腳定義如下:1-VSS 2-VDD 3-V0 4-RS 5-R/W 6-E 7-14 DB0-DB7 15-BLA 16-BLK-*/#ifndef _eeprom_H_#define _eeprom_H_ bit LC

16、D_Check_Busy(void) ; void LCD_Write_Com(unsigned char com) ; void LCD_Write_Data(unsigned char Data) ; void LCD_Clear(void) ; void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) ; void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) ; void LCD_Init(void) ;#endi

17、f/* - STC International Limited - 一個完整的EEPROM 測試程序,用宏晶的下載板可以直接測試STC12C5AxxAD 系列單片機 EEPROM/IAP 功能測試程序演示STC12C52xxAD 系列單片機 EEPROM/IAP 功能測試程序演示STC11xx 系列單片機 EEPROM/IAP 功能測試程序演示STC10xx 系列單片機 EEPROM/IAP 功能測試程序演示 - STC International Limited - - 宏晶科技 設(shè)計 2009/1/12 V1.0 - - Mobile:- - Fax: 0755-

18、82944243 - - Tel:- - Web: www.MCU-M -本演示程序在STC-ISP Ver 3.0A.PCB 的下載編程工具上測試通過,EEPROM 的數(shù)據(jù)在P1 口上顯示, 如果要在程序中使用或在文章中引用該程序,請在程序中或文章中注明使用了宏晶科技的資料及程序*/#include <STC12C5A60S2.H>#include <intrins.H>#include "adc.H"unsigned int i=0,j;unsigned char guanji,cy,cy0,huifang=1;sb

19、it kep1=P17;typedef unsigned char INT8U;typedef unsigned int INT16U;/定義Flash 操作等待時間及允許IAP/ISP/EEPROM 操作的常數(shù)/#define ENABLE_ISP 0x80 /系統(tǒng)工作時鐘<30MHz 時,對IAP_CONTR 寄存器設(shè)置此值/#define ENABLE_ISP 0x81 /系統(tǒng)工作時鐘<24MHz 時,對IAP_CONTR 寄存器設(shè)置此值/#define ENABLE_ISP 0x82 /系統(tǒng)工作時鐘<20MHz 時,對IAP_CONTR 寄存器設(shè)置此值#define

20、ENABLE_ISP 0x83 /系統(tǒng)工作時鐘<12MHz 時,對IAP_CONTR 寄存器設(shè)置此值/#define ENABLE_ISP 0x84 /系統(tǒng)工作時鐘<6MHz 時,對IAP_CONTR 寄存器設(shè)置此值/#define ENABLE_ISP 0x85 /系統(tǒng)工作時鐘<3MHz 時,對IAP_CONTR 寄存器設(shè)置此值/#define ENABLE_ISP 0x86 /系統(tǒng)工作時鐘<2MHz 時,對IAP_CONTR 寄存器設(shè)置此值/#define ENABLE_ISP 0x87 /系統(tǒng)工作時鐘<1MHz 時,對IAP_CONTR 寄存器設(shè)置此值#de

21、fine DEBUG_DATA 0x5A /本測試程序最終存儲在 EEPROM 單元的數(shù)值#define DATA_FLASH_START_ADDRESS 0x00 /STC5Axx 系列 EEPROM 測試起始地址union union_temp16 INT16U un_temp16; INT8U un_temp82;my_unTemp16;INT8U Byte_Read(INT16U add); /讀一字節(jié),調(diào)用前需打開IAP 功能void Byte_Program(INT16U add, INT8U ch); /字節(jié)編程,調(diào)用前需打開IAP 功能void Sector_Erase(INT

22、16U add); /擦除扇區(qū)void IAP_Disable(); /關(guān)閉IAP 功能void Delay();void main (void) unsigned char ram100=0; unsigned char b=0,c=0,a=0; / a = Byte_Read(0); /讀EEPROM的值,存到read_eeprom /EA=1; /全局中斷開 /EX0=1; /外部中斷0開 /IT0=1; /邊沿觸發(fā) /EX1=1; /外部中斷1開 / IT1=1; /IT1=1表示邊沿觸發(fā) init1602(); ADC_Init (0);/ ADC_Read (); LCD_Writ

23、e_String(1,0,"zhou yi chen "); LCD_Write_String(1,0,"zhou yi chen ");/ LCD_Write_Char(3,1,'o');while(1)for(i=0;i<100;i+) rami=Byte_Read(i); /讀EEPROM的值,存到read_eeprom LCD_Write_String(1,0,"U=4V "); LCD_Write_String(1,1,"PINLV 1.017 KHZ ");while(huifan

24、g=1&&kep1=1) for(i=0;i<100;i+) ADC_Init (1); a= ADC_Read (); P3=rami; /讀EEPROM的值,存到read_eeprom while(kep1=0) for(i=0;i<100;i+) /if(i=0) /Sector_Erase(0); /擦除整個扇區(qū) ADC_Init (1); a= ADC_Read (); P3=a; rami=a;/Byte_Program(i,a);/將 DEBUG_DATA 寫入 EEPROM for(i=0;i<100;i+) if(i=0) Sector_Er

25、ase(0); /擦除整個扇區(qū)Byte_Program(i,rami);/將 DEBUG_DATA 寫入 EEPROM /讀一字節(jié),調(diào)用前需打開IAP 功能,入口:DPTR = 字節(jié)地址,返回:A = 讀出字節(jié)INT8U Byte_Read(INT16U add) IAP_DATA = 0x00; IAP_CONTR = ENABLE_ISP; /打開IAP 功能, 設(shè)置Flash 操作等待時間 IAP_CMD = 0x01; /IAP/ISP/EEPROM 字節(jié)讀命令 my_unTemp16.un_temp16 = add; IAP_ADDRH = my_unTemp16.un_temp80

26、; /設(shè)置目標單元地址的高8 位地址 IAP_ADDRL = my_unTemp16.un_temp81; /設(shè)置目標單元地址的低8 位地址 /EA = 0; IAP_TRIG = 0x5A; /先送 5Ah,再送A5h 到ISP/IAP 觸發(fā)寄存器,每次都需如此 IAP_TRIG = 0xA5; /送完A5h 后,ISP/IAP 命令立即被觸發(fā)起動 _nop_(); /EA = 1; IAP_Disable(); /關(guān)閉IAP 功能, 清相關(guān)的特殊功能寄存器,使CPU 處于安全狀態(tài), /一次連續(xù)的IAP 操作完成之后建議關(guān)閉IAP 功能,不需要每次都關(guān) return (IAP_DATA);/

27、字節(jié)編程,調(diào)用前需打開IAP 功能,入口:DPTR = 字節(jié)地址, A= 須編程字節(jié)的數(shù)據(jù)void Byte_Program(INT16U add, INT8U ch) IAP_CONTR = ENABLE_ISP; /打開 IAP 功能, 設(shè)置Flash 操作等待時間 IAP_CMD = 0x02; /IAP/ISP/EEPROM 字節(jié)編程命令 my_unTemp16.un_temp16 = add; IAP_ADDRH = my_unTemp16.un_temp80; /設(shè)置目標單元地址的高8 位地址 IAP_ADDRL = my_unTemp16.un_temp81; /設(shè)置目標單元地址的低8 位地址 IAP_DATA = ch; /要編程的數(shù)據(jù)先送進IAP_DATA 寄存器 /EA = 0; IAP_TRIG = 0x5A; /先送 5Ah,再送A5h 到ISP/IAP 觸發(fā)寄存器,每次都需如此 IAP_TRIG = 0xA5; /送完A5h 后,ISP

溫馨提示

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

評論

0/150

提交評論