找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32F103C8音頻ADC->限幅濾波->MCP4725DAC(完整程序工程及Proteus仿真)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
本帖最后由 Kxuan163 于 2021-5-15 20:15 編輯

我的實(shí)踐:STM32F103C8音頻ADC->限幅濾波->MCP4725DAC(完整代碼工程文件及Proteus仿真)








單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "adc.h"
  5. #include "MCP4725.h"
  6. #include "myiic.h"
  7. #include <stdio.h>

  8. #define  A 800  //前后兩次采樣值的偏離上限
  9. u16 data;      //前次ADC采樣值
  10. u16 dataNew;   //本次ADC采樣值

  11. u16 filter1()  //限幅濾波函數(shù)
  12. {
  13.    dataNew = ADC_GetConversionValue(ADC1);       //本次ADC采樣
  14.    if ((dataNew -data <A) && (data -dataNew <A)) //本次ADC值與前次ADC值比較
  15.      {        
  16.       data= dataNew; //若偏離值<A,則本次ADC值采納,否則舍棄
  17.      }
  18.    return data;
  19. }


  20. int main()
  21. {
  22.   delay_init();         

  23.   ADC1_GPIO_Config();
  24.         
  25.   ADC_Config();  

  26.   MCP4725_Init();                     
  27.         
  28.   data=ADC_GetConversionValue(ADC1); //初次ADC采樣值
  29.   //if (data >4095) data=4095; // Vref =5V   
  30.   if (data >1638) data=1638;   // Vref =2V
  31.   
  32. while(1)
  33.    {
  34.      filter1(); //調(diào)用限幅濾波函數(shù)
  35.             
  36.    // PC13->LED 監(jiān)視ADC實(shí)時(shí)值是否有變化:
  37.    if (data >=1000) PCout(13) = 0;  //PC13->LED亮        
  38.    else PCout(13) = 1;                    //PC13->LED滅        
  39.                         
  40.    MCP4725_WriteData_Digital(data); //將采ADC樣值濾波后再作DA變換        
  41.             
  42.    }
  43. }
復(fù)制代碼


所有資料51hei提供下載:
C8-ADC-4725-DAC.zip (579.13 KB, 下載次數(shù): 146)

評分

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

查看全部評分

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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