找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4615|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用ADC_8bit(0)高速采樣的示波器演示Arduino程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:542032 發(fā)表于 2019-5-19 15:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
      
        1.  Nokia5110顯示屏顯示波形 , U8GLIB_PCD8544 u8g(3, 4, 99, 5, 6); // SPI Com: SCK = 3, MOSI = 4, CS = 永遠(yuǎn)接地, dc = 5, Reset = 6
        2.  A0信號(hào)輸入。
        3.  D9輸出自帶10khz方波信號(hào),D9與A0相接可以自測(cè)方波波形。
        4.  Buffer[x] = 47-(Buffer[x]>>2); //計(jì)算縱坐標(biāo)值47大小可以改變水平軸上下移動(dòng)
        5.  ADC.H庫(kù)和u8glib庫(kù)附件

Arduino源程序如下:
  1. #include <U8glib.h> //聲明庫(kù)
  2. #include<ADC.h>
  3. //Nokia5110示波器演示
  4. U8GLIB_PCD8544 u8g(3, 4, 99, 5, 6); // SPI Com: SCK = 3, MOSI = 4, CS = 永遠(yuǎn)接地, dc = 5, Reset = 6
  5. int Input = A0;  //聲明輸入引腳
  6. int x,y; //繪點(diǎn)坐標(biāo)
  7. float Vpp;
  8. int Buffer[84]; //緩存值儲(chǔ)存數(shù)組
  9. int Buf,Bu;
  10. void setup( )
  11. {
  12.    ADMUX=0xe0;  //測(cè)量通道0
  13.    ADCSRA=0xe2;
  14.   u8g.setFont(u8g_font_5x7);
  15.    u8g.firstPage();
  16.       analogReference(INTERNAL); //ADC使用單片機(jī)內(nèi)部1.1V基準(zhǔn)
  17.   u8g.setContrast(110);//設(shè)置對(duì)比度0-255
  18.    

  19. // 下面的等值于 OC1A = 輸出用于定時(shí)器1的CTC模式
  20.   pinMode(9, OUTPUT);  // 設(shè)置默認(rèn)關(guān)聯(lián)了D9(查表得知)為輸出,方波輸出A10
  21.   TCCR1B=0; // 只是個(gè)復(fù)位的習(xí)慣可以不要
  22.   TCCR1A=_BV(COM1A0); // 要是困擾的話你也可以寫(xiě)成 TCCR1A = 0b01000000;
  23.   //這里和上一個(gè)表示了 = CTC 模式, 開(kāi)啟比較器(默認(rèn)輸出), prescaler = 1
  24.   TCCR1B = _BV(WGM12)|_BV(CS10) ; //  這里等值于 TCCR1B = 0b00001001;

  25.   // 最有意思的了,16位的玩意來(lái)確定要一個(gè)怎樣的頻率
  26.   OCR1A = 800; // 計(jì)算為:F_CPU/2/Need_HZ-1 來(lái)得到你想要的,遺憾的是四舍五入來(lái)截取頻率800相當(dāng)于10khz
  27.   }

  28. //采樣

  29. void sample( )  

  30. {  

  31. for(x = 0;x < 84;x++)

  32.   // Buffer[x] = analogRead(A0);  //信號(hào)采樣
  33.   // Buf=   analogRead(A1);
  34.    // Buf = ADCH;
  35.    Buffer[x] = ADC_8bit(0);//0表示A0輸入
  36. for(x = 0;x < 84;x++)  

  37.    Buffer[x] = 47-(Buffer[x]>>2); //計(jì)算縱坐標(biāo)值47大小可以改變水平軸上下移動(dòng)

  38. }

  39. //顯示

  40. void draw( )  

  41. {  
  42.   for(x = 0;x < 83;x++)
  43.    
  44.    /*    u8g.drawStr(40,7,"V");
  45.         u8g.setPrintPos(10,7);
  46.        u8g.print(Buf);
  47.        u8g.setPrintPos(10,15);
  48.        u8g.print(Bu);*/
  49.       
  50.        for(x = 0;x < 83;x++)
  51.        for(x = 0;x < 83;x++)
  52.       u8g.drawLine(x,Buffer[x],x,Buffer[x+1]);  //畫(huà)相鄰兩點(diǎn)連線
  53.       
  54.       for(x = 0;x < 83;x++)   
  55.       u8g.drawLine(42,0,42,47);  // 畫(huà)x坐標(biāo)軸
  56.        u8g.drawLine(0,24,84,24); // 畫(huà)y坐標(biāo)軸
  57.        for(x=2;x<84;x+=8)        //畫(huà)x坐標(biāo)軸刻度
  58.        u8g.drawLine(x,23,x,25);
  59.        for(x=0;x<48;x+=8)        //畫(huà)y坐標(biāo)軸刻度
  60.        u8g.drawLine(41,x,43,x);   
  61.        u8g.drawFrame(0,0,84,48); //畫(huà)邊框
  62.      
  63. }   

  64. void loop( )

  65. {

  66.    sample();         //采樣

  67.    u8g.firstPage();  //清屏

  68.    do  draw( );      //顯示

  69.    while( u8g.nextPage( ));

  70. }
復(fù)制代碼

所有資料51hei提供下載:
ADC_8bit_1_.rar (1.46 KB, 下載次數(shù): 27)
ADC.rar (969 Bytes, 下載次數(shù): 29)
U8Glib.7z (550.41 KB, 下載次數(shù): 13)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表