|
本帖最后由 Kxuan163 于 2021-5-15 20:15 編輯
我的實(shí)踐:STM32F103C8音頻ADC->限幅濾波->MCP4725DAC(完整代碼工程文件及Proteus仿真)
Proteus仿真運(yùn)行截圖.jpg (98.78 KB, 下載次數(shù): 54)
下載附件
2021-5-15 14:40 上傳
輸入輸出波形.jpg (99.69 KB, 下載次數(shù): 48)
下載附件
2021-5-15 14:40 上傳
工作流程圖.jpg (42.89 KB, 下載次數(shù): 55)
下載附件
2021-5-15 14:40 上傳
單片機(jī)源程序如下:
- #include "stm32f10x.h"
- #include "delay.h"
- #include "sys.h"
- #include "adc.h"
- #include "MCP4725.h"
- #include "myiic.h"
- #include <stdio.h>
- #define A 800 //前后兩次采樣值的偏離上限
- u16 data; //前次ADC采樣值
- u16 dataNew; //本次ADC采樣值
- u16 filter1() //限幅濾波函數(shù)
- {
- dataNew = ADC_GetConversionValue(ADC1); //本次ADC采樣
- if ((dataNew -data <A) && (data -dataNew <A)) //本次ADC值與前次ADC值比較
- {
- data= dataNew; //若偏離值<A,則本次ADC值采納,否則舍棄
- }
- return data;
- }
- int main()
- {
- delay_init();
- ADC1_GPIO_Config();
-
- ADC_Config();
- MCP4725_Init();
-
- data=ADC_GetConversionValue(ADC1); //初次ADC采樣值
- //if (data >4095) data=4095; // Vref =5V
- if (data >1638) data=1638; // Vref =2V
-
- while(1)
- {
- filter1(); //調(diào)用限幅濾波函數(shù)
-
- // PC13->LED 監(jiān)視ADC實(shí)時(shí)值是否有變化:
- if (data >=1000) PCout(13) = 0; //PC13->LED亮
- else PCout(13) = 1; //PC13->LED滅
-
- MCP4725_WriteData_Digital(data); //將采ADC樣值濾波后再作DA變換
-
- }
- }
復(fù)制代碼
51hei.png (4.44 KB, 下載次數(shù): 48)
下載附件
2021-5-15 15:58 上傳
工程組件結(jié)構(gòu).jpg (50.56 KB, 下載次數(shù): 43)
下載附件
2021-5-15 15:59 上傳
所有資料51hei提供下載:
C8-ADC-4725-DAC.zip
(579.13 KB, 下載次數(shù): 146)
2021-5-15 20:15 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|