找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ESK32-360開發(fā)板的A/D轉(zhuǎn)換及應用

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:776997 發(fā)表于 2020-8-12 10:49 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
1. A/D采集
在例程中提供A/D采集功能,它是通過采集外接的電位器來模擬電位變化,進而來獲得數(shù)據(jù)的變化。此外,它通過串口通信來輸出采集結(jié)果。
                              

圖1 電位器調(diào)節(jié)電位
經(jīng)編譯下載,程序的運行效果如圖2所示。

圖2 調(diào)整前的數(shù)據(jù)顯示
為了改善觀察效果,特添加了延時函數(shù),修改后程序內(nèi)容為:
  1. void mdelay(unsigned int z)
  2. {
  3.          unsigned int x,y;
  4.          for(x=z;x>0;x--)
  5.                    for(y=100;y>0;y--);
  6. }
復制代碼

  1. int main(void)
  2. {
  3.   RETARGET_Configuration();
  4.   ADC_Configuration();
  5.   ADC_Cmd(HT_ADC0, ENABLE);
  6.   ADC_SoftwareStartConvCmd(HT_ADC0, ENABLE);

  7.   while (1)
  8.   {
  9.     if (gADC_SingleEndOfConversion)
  10.     {
  11.       printf("\rPotentiometer level is %04d \r\n", (int)gPotentiometerLevel);  //115200
  12.     }
  13.     mdelay(100);
  14.   }
  15. }
復制代碼

修改后的運行效果如圖3所示,這樣數(shù)據(jù)的變化就很便于觀察了。

3 調(diào)整后的數(shù)據(jù)顯示
2.數(shù)據(jù)顯示
前面為數(shù)據(jù)的顯示,已經(jīng)增添了數(shù)值顯示函數(shù),此時就可以排上用場了,實現(xiàn)圖4顯示效果的主程序如下:
  1. int main(void)
  2. {
  3.   RETARGET_Configuration();
  4.   ADC_Configuration();
  5.   ADC_Cmd(HT_ADC0, ENABLE);
  6.   ADC_SoftwareStartConvCmd(HT_ADC0, ENABLE);

  7.   LCD_Init();
  8.   LCD_Config();
  9.   LCD_Clear(0x2c5c);
  10.   LCD_BackColorSet(0x2c5c)
  11.   LCD_TextColorSet(Yellow);
  12.   LCD_StringLineDisplay(Line9, "     ADC=");
  13.   while (1)
  14.   {
  15.     if (gADC_SingleEndOfConversion)
  16.     {
  17.        LCD_ShowNum(Line9,180,adc,4);
  18.     }
  19.     mdelay(100);
  20.   }
  21. }
復制代碼

4 采集數(shù)據(jù)顯示
3.波形繪制
為了能更直觀地觀察數(shù)據(jù)的變化趨勢,繪制數(shù)據(jù)的波形曲線是一種有效的方法。
在利用前面完成的畫線函數(shù)和區(qū)域填充函數(shù)的檢測上,實現(xiàn)圖5所示效果的主程序如下:
  1. int main(void)
  2. {
  3.   int adc,p,q,t,l,k;

  4.   RETARGET_Configuration();
  5.   ADC_Configuration();
  6.   ADC_Cmd(HT_ADC0, ENABLE);
  7.   ADC_SoftwareStartConvCmd(HT_ADC0, ENABLE);

  8.   LCD_Init();
  9.   LCD_Config();
  10.   LCD_Clear(0x2c5c);
  11.   LCD_BackColorSet(0x2c5c);
  12.   LCD_TextColorSet(Yellow);
  13.   LCD_RectDraw(10, 10, 200, 300);
  14.   LCD_DrawLine(105,12 , 105,308 ,Red);
  15.   LCD_DrawLine(10,25 , 210,25 ,Red);
  16.   LCD_StringLineDisplay(Line9, "  n=     adc=");
  17.   mdelay(50000);

  18.   for(t=0;t<60;t++)
  19.   {
  20.          l=t*5+10;
  21.          LCD_DrawLine(210,l,214,l,Yellow);
  22.   }
  23.         
  24.   for(t=0;t<10;t++)
  25.   {
  26.          l=t*21;   
  27.          LCD_DrawLine(210-l,6,210-l,10,Yellow);
  28.   }
  29.   t=10;
  30.   l=15;
  31.   q=210;
  32.   p=210;
  33.   k=21;
  34.   while (1)
  35.   {
  36.     mdelay(50000);
  37.     if(gADC_SingleEndOfConversion)
  38.     {
  39.                    adc=(int)gPotentiometerLevel;
  40.                    LCD_ShowNum(Line9,220,adc,4);
  41.                    p=adc/21;
  42.                    l=t+5;
  43.                    LCD_ShowNum(Line9,60,t/5-1,3);
  44.                    LCD_DrawLine(q,t,p,l,Yellow);
  45.                    t=l;
  46.                    q=p;
  47.       
  48.                    if(t>=305)
  49.                    {
  50.                       LCD_fill(11,11,199,297,0x2c5c);
  51.                       LCD_DrawLine(105,12 , 105,308 ,Red);
  52.                       LCD_DrawLine(10,25 , 210,25 ,Red);
  53.                        t=10;
  54.                       l=15;
  55.                       q=210;
  56.                    }
  57.     }
  58.   }
  59. }
復制代碼

5 波形曲線繪制

評分

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

查看全部評分

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表