0.png (7.35 KB, 下載次數: 34)
下載附件
2017-12-15 01:16 上傳
單片機源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "adc.h"
- #include "dac.h"
- #include "key.h"
- /*************************************************
- 工程模板
- ①添加相應驅動文件 xxx.c
- ②修改驅動文件路徑 C/C++
- ③添加庫函數源文件 lib.c
- ④引用初始化函數(#include "..")
- **************************************************/
- int main(void)
- {
- u16 adcx;
- float temp;
- u8 t=0;
- u16 dacval=0;
- u8 key;
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
- uart_init(115200); //串口初始化
- KEY_Init(); //按鍵初始化
- LED_Init(); //LED初始化
- Adc_Init(); //ADC1初始化
- Dac1_Init(); //DAC1初始化
-
- printf("\r\n DAC輸出實驗 \r\n");
- printf("\r\n 測試時間:2016/8/2 \r\n");
- printf("\r\n 實驗--燃然 \r\n");
-
- while(1)
- {
- t++;
- key=KEY_Scan(0);
- if(key==WKUP_PRES) //WKUP按鍵按下
- {
- if(dacval<4000) dacval+=200;
- DAC_SetChannel1Data(DAC_Align_12b_R,dacval);//12位右對齊數據格式 ,設置DAC輸出值
- }
- else if(key==KEY1_PRES) //KEY1按下
- {
- if(dacval>200) dacval-=200;
- else dacval=0;
- DAC_SetChannel1Data(DAC_Align_12b_R,dacval);//12位右對齊數據格式 ,設置DAC輸出值
- }
- if(t==10||key==WKUP_PRES||key==KEY1_PRES) //WKUP/KEY1按下了,或者定時時間到了/
- {
- adcx=DAC_GetDataOutputValue(DAC_Channel_1); //讀取DAC寄存器值
- printf("\r\n讀取DAC寄存器值= %d ",adcx); //串口顯示讀取DAC寄存器值
- temp=(float)adcx*(3.3/4096); //計算并得到DAC電壓值
- printf("\r\n讀取DAC電壓值= %f",temp); //串口顯示讀取DAC電壓值
- adcx=Get_Adc_Average(ADC_Channel_1,10); //得到ADC轉換值
- temp=(float)adcx*(3.3/4096); //得到ADC電壓值
- printf("\r\n讀取ADC電壓值= %f \r\n",temp); //串口顯示讀取ADC電壓值
- LED1=!LED1;
- LED0=!LED0;
- t=0;
- }
- delay_ms(20);
- }
-
- }
-
- //正弦波
- //三角波
- //方波
復制代碼
所有資料51hei提供下載:
template-工程模板 - DAC.rar
(400.28 KB, 下載次數: 28)
2017-12-15 01:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|