|
想找個(gè)現(xiàn)成的,沒(méi)有找到,自己改了一個(gè),讓大家好找。
編譯運(yùn)行很好,接在擴(kuò)音機(jī)上,8000HZ的量化噪聲也沒(méi)有聽(tīng)到。
KEIL5下編譯,PA5口聲音輸出,可以用一根線連接在蜂鳴器口上。
單片機(jī)源程序如下:
- #include "system.h"
- #include "SysTick.h"
- #include "led.h"
- #include "usart.h"
- #include "key.h"
- #include "dac.h"
- /*******************************************************************************
- * 函 數(shù) 名 : main
- * 函數(shù)功能 : 主函數(shù)
- * 輸 入 : 無(wú)
- * 輸 出 : 無(wú)
- *******************************************************************************/
- int main()
- {
- u8 i=0;
- u8 key;
- int dac_value=0;
- u16 dacval;
- float dac_vol;
-
- SysTick_Init(72);
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級(jí)分組 分2組
- LED_Init();
- USART1_Init(9600);
- KEY_Init();
- DAC1_Init();
- TIM4_Init(257,35-1); //72000000/257/35=8000
-
- while(1)
- {
- key=KEY_Scan(0);
- if(key==KEY_UP)
- {
- dac_value+=400;
- if(dac_value>=4000)
- {
- dac_value=4095;
- }
- DAC_SetChannel2Data(DAC_Align_12b_R,dac_value);
- }
- else if(key==KEY_DOWN)
- {
- dac_value-=400;
- if(dac_value<=0)
- {
- dac_value=0;
- }
- DAC_SetChannel2Data(DAC_Align_12b_R,dac_value);
- }
-
- i++;
- if(i%20==0)
- {
- led1=!led1;
- }
-
- if(i%50==0)
- {
- dacval=DAC_GetDataOutputValue(DAC_Channel_2);
- dac_vol=(float)dacval*(3.3/4096);
- printf("輸出DAC電壓值為%.2fV\r\n",dac_vol);
- }
- delay_ms(10);
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
DAC數(shù)模wav.7z
(294.99 KB, 下載次數(shù): 145)
2020-5-14 20:58 上傳
點(diǎn)擊文件名下載附件
|
|