<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于單片機的簡(jiǎn)易示波器設計

基于單片機的簡(jiǎn)易示波器設計

作者: 時(shí)間:2017-04-19 來(lái)源:網(wǎng)絡(luò ) 收藏

  1、系統結構框圖

本文引用地址:http://dyxdggzs.com/article/201704/346811.htm

    

 

  圖1系統結構圖

  1.1、信號調理電路

  信號調理電路要完成的功能是:程控放大,疊加直流分量。程控放大的作用是:當輸入信號的幅度很小的時(shí)候就需要對輸入信號進(jìn)行放大,使得被測信號可以在LCD上盡可能清楚的顯示出來(lái)。疊加直流分量的作用是:ATmega16自帶的A/D是單電源的,沒(méi)辦法輸入負壓而待測信號又往往有負壓。這時(shí)候就需要這樣一個(gè)電路,可以把負壓抬高到0電平以上。

    

 

  圖2信號調理電路原理圖

  R1,R2分別由一個(gè)模擬開(kāi)關(guān)CD4051來(lái)連接不同的電阻,不同的R1,R2通過(guò)公式:這樣就可以實(shí)現程控放大功能了??烧{電阻R9用來(lái)設置信號調理電路加入的直流分量的大小。放大后的信號和直流分量最后由U3模擬加法器疊加后輸出。

  輸入信號與輸出信號的關(guān)系:只要R4、R6、R7的阻值相同,調理電路輸入與輸出的關(guān)系簡(jiǎn)化為:。

  Ux為U3的輸出電壓,輸出電壓的電壓值與可調電阻R9中間抽頭的電壓一至。

  1.2、主控芯片軟件設計

  這個(gè)系統的主控芯片選擇的是,Atmel公司的AVR系列ATmega16,最高可達到16MPIS指令速度。ATmega16有16K的flash, 1K的SRAM, 512 B的EEPROM,內部自帶一個(gè)10 bits精度的逐次逼近型模數轉換器,內建采樣/保持電路。ADC的時(shí)鐘是可編程的,在這個(gè)設計中為了太到最高的采樣頻率100KHz ADC的時(shí)鐘設置為2MHz。ADC的觸發(fā)源選擇為定時(shí)器/計數器0溢出,ATmega16的定時(shí)器的時(shí)鐘源也是可編程的。這樣就可以通過(guò)控制定時(shí)器/計數器0溢出中斷頻率來(lái)控制ADC的采樣頻率。

    

 

  圖3系統程序流程圖

  1.2.1、鍵盤(pán)功能

  在這個(gè)系統中設置了7個(gè)按鈕分別為:運行與停止,放大倍數增大,放大倍數減小,采樣頻率增大,采樣頻率減小,觸發(fā)電平上移,觸發(fā)電平下移。

  運行與停止鍵:是通過(guò)開(kāi)啟和關(guān)閉ATmega16 ADC轉換完畢中斷的方式來(lái)實(shí)現的。

  放大倍數的增大與減?。菏峭ㄟ^(guò)ATmega16控制模擬開(kāi)關(guān)CD4051來(lái)實(shí)現放大倍數的數字化控制。CD4051為8通道的模擬開(kāi)關(guān),所以程控放大器可以有8檔。

  采樣頻率的增大與減?。菏峭ㄟ^(guò)控制ATmega16的定時(shí)器0的時(shí)鐘源及定時(shí)器的初始值來(lái)實(shí)現系統所需要的各個(gè)采樣頻率。定時(shí)器0的中斷頻率就等于A(yíng)DC的采樣頻率。

  觸發(fā)電平的上移與下移:是通過(guò)對采樣來(lái)的數據進(jìn)行數字觸發(fā)時(shí),當數據的二進(jìn)制值在增加的過(guò)程中某個(gè)數據的大小剛好與數字觸發(fā)的二進(jìn)制數值一樣,在此以后的波形數據才存入顯示RAM中。

  當這7個(gè)按鍵中的某一個(gè)被觸發(fā),都會(huì )置位相應的標志位,以便刷新LCD液晶屏上相應的顯示信息。

  1.2.2、數字觸發(fā)功能

  如何實(shí)現觸發(fā)呢?用硬件來(lái)完成的話(huà)又會(huì )增加系統硬件電路的復雜度,我就想了一個(gè)辦法,有軟件的方式來(lái)實(shí)現觸發(fā)的功能。實(shí)現的過(guò)程如下:

  for (ik=0;ik<500;ik++){

  if (k0_ram){

  if (box_buff[ik] < trigger) {

  kk_ram = 1 ;

  }

  if (kk_ram){

  if ((box_buff[ik] >= trigger) & (ik < 402)){

  en_ram = 1 ;

  k0_ram = 0 ;

  kk_ram = 0 ;

  }}}

  if (en_ram){

  boxing[adc_data]=box_buff[ik] ;

  adc_data++ ;

  if (adc_data > 96){

  adc_data = 0x00 ;

  en_ram = 0 ;

  }}}

  trigger的大小可以通過(guò)觸發(fā)電平上移與觸發(fā)電平下移按鍵來(lái)設置它的大小。

  1.2.3、還原波形

  GDM12864A是一個(gè)具有128點(diǎn)x 64點(diǎn)的點(diǎn)陣LCD。根據所選的LCD的特點(diǎn),Y軸上只有64個(gè)點(diǎn),所以能顯示的數據范圍為0到63而采樣得到的數據為8位的二進(jìn)制數據為0到255。為了能在這個(gè)LCD上顯示只取8位數據的高6位。那么如何把這高6位的二進(jìn)制數據轉換成在LCD上的Y軸座標和數據值呢?我想了這樣一個(gè)計算的方法:

  LCD的縱向分為8個(gè)地址從上到下依次為0~7,每個(gè)地址段有8個(gè)數據點(diǎn)。在某個(gè)數據段中如果想依次讓這些位從上到下點(diǎn)亮就需要依次向這個(gè)地址段送數據0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,送入0x00后這個(gè)地址段的8個(gè)數據點(diǎn)將不被點(diǎn)亮。實(shí)現的具體過(guò)程如圖4所示。

  dat = dat>>2

  y = 7

  dat >= 8 ?

  dat = dat – 8; y--;

  y == 1 ?

  dat > 7 ?

  dat = 7 ;

  dat = 0x80 >> dat

  write_add(y,x) ;

  write_data(dat) ;

    

 

  圖4數據還原成波形上點(diǎn)的程序流程圖

  1.2.4、ADC采樣頻率控制

  ADC的采樣頻率在上文已有提及,ADC中斷的計算公式為:,通過(guò)ATmega16的特殊功能寄存器TCCR0的低3位CS02,CS01,CS00的設置就可以改變的頻率,再把TCNT0設置成不同的數值就可以得到這個(gè)系統所需要的各個(gè)采樣頻率值了。表1中的數據是通過(guò)上面的公式計算出來(lái)的數據再經(jīng)實(shí)際的系統調試并修正后的數據。

  表1采樣頻率的設置

    

 

  2、系統性能指標及誤差

  2.1、系統性能指標

  系統主要性能指標見(jiàn)表2所示。

  表2系統主要性能指標

    

 

  2.2、系統誤差

  系統的誤差主要出在信號調理電路,因為模擬開(kāi)關(guān)有一定的內阻約為80Ω對調理電路的放大倍數會(huì )造成一定的影響。通過(guò)1.1中的計算公式計算出來(lái)的電阻值在實(shí)際中不存在,通過(guò)幾個(gè)電阻串聯(lián)來(lái)實(shí)現也還是會(huì )有一定的誤差。平衡電阻R3是固定的在R1,R2發(fā)生變化的時(shí)候,平衡電阻可能就不能平衡也會(huì )給運算放大器引入一定的誤差。

  2.3、可以改進(jìn)的地方

  系統可以進(jìn)一步改進(jìn)的地方在于信號調理電路,可以通過(guò)選擇性能更好的模擬開(kāi)關(guān)和運算放大器,更合理的選擇電阻這樣就可以提高信號調理電路的放大的準確度。使整個(gè)系統的性能得以進(jìn)一步改善。

  2.4、系統實(shí)際工作情況

  LCD顯示的信息分別有,波形圖像,在波形的上面是橫軸的標尺,在屏幕的右邊為系統的運行狀態(tài)(Run / Stop),Time為整個(gè)波形框的時(shí)間長(cháng)度,Volt-為電壓檔,在波形框與信息框之間有個(gè)小點(diǎn)為信號的觸發(fā)電平。信號的頻率=波形框中信號的周期數/Time。

    

 

  3、結論

  用這種方法可以實(shí)現一個(gè)簡(jiǎn)易的示波器,整個(gè)系統結構簡(jiǎn)單,清晰。充分利用了AVR內部資源使系統電路得以簡(jiǎn)單化,就連系統的工作時(shí)鐘也是AVR內部自帶的。通過(guò)測試該系統在測量頻率方向的誤差很小,可以用來(lái)比較準確的測量測試信號的頻率。



關(guān)鍵詞: 單片機 簡(jiǎn)易示波器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>