久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: stm32f4xxDAC實驗源碼 [打印本頁]

作者: 15039410836    時間: 2018-5-28 21:40
標(biāo)題: stm32f4xxDAC實驗源碼
stm32f4xxDAC實驗代碼
實驗現(xiàn)象:
    本實驗利用按鍵(KEY1/KEY_UP兩個按鍵,或USMART)控制STM32F4內(nèi)部DAC模塊的通道1來輸出電壓,通過ADC1的
    通道5采集DAC的輸出電壓,在LCD模塊上面顯示ADC獲取到的電壓值以及DAC的設(shè)定輸出電壓值等信息。同時可以通
    過usmart調(diào)用Dac1_Set_Vol函數(shù),來直接設(shè)置DAC輸出電壓。
   
注意事項:
    1,4.3寸和7寸屏需要比較大電流,USB供電可能不足,請用外部電源適配器(推薦外接12V 1A電源).
    2,本例程在LCD_Init函數(shù)里面(在ILI93xx.c),用到了printf,如果不初始化串口1,將導(dǎo)致液晶無法顯示!!
    3,ADC和DAC的參考電壓默認(rèn)通過P7連接在VDDA上面(3.3V),所以默認(rèn)參考電壓是3.3V  
    4,通過跳線帽短接多功能接口(P12)的ADC和DAC,即可實現(xiàn)自測試(AD讀取DA值,顯示在LCD上)

單片機(jī)源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "adc.h"
  7. #include "dac.h"
  8. #include "key.h"


  9. int main(void)
  10. {
  11.         u16 adcx;
  12.         float temp;
  13.         u8 t=0;         
  14.         u16 dacval=0;
  15.         u8 key;       
  16.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級分組2
  17.         delay_init(168);      //初始化延時函數(shù)
  18.         uart_init(115200);                //初始化串口波特率為115200
  19.        
  20.         LED_Init();                                        //初始化LED
  21.         LCD_Init();                                        //LCD初始化
  22.         Adc_Init();                                 //adc初始化
  23.         KEY_Init();                                 //按鍵初始化
  24.         Dac1_Init();                                 //DAC通道1初始化       
  25.         POINT_COLOR=RED;
  26.         LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");       
  27.         LCD_ShowString(30,70,200,16,16,"DAC TEST");       
  28.         LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
  29.         LCD_ShowString(30,110,200,16,16,"2014/5/6");         
  30.         LCD_ShowString(30,130,200,16,16,"WK_UP:+  KEY1:-");         
  31.         POINT_COLOR=BLUE;//設(shè)置字體為藍(lán)色               
  32.         LCD_ShowString(30,150,200,16,16,"DAC VAL:");             
  33.         LCD_ShowString(30,170,200,16,16,"DAC VOL:0.000V");             
  34.         LCD_ShowString(30,190,200,16,16,"ADC VOL:0.000V");
  35.        
  36.   DAC_SetChannel1Data(DAC_Align_12b_R,dacval);//初始值為0       
  37.         while(1)
  38.         {
  39.                 t++;
  40.                 key=KEY_Scan(0);                          
  41.                 if(key==WKUP_PRES)
  42.                 {                 
  43.                         if(dacval<4000)dacval+=200;
  44.                         DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//設(shè)置DAC值
  45.                 }else if(key==2)       
  46.                 {
  47.                         if(dacval>200)dacval-=200;
  48.                         else dacval=0;
  49.                         DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//設(shè)置DAC值
  50.                 }         
  51.                 if(t==10||key==KEY1_PRES||key==WKUP_PRES)         //WKUP/KEY1按下了,或者定時時間到了
  52.                 {          
  53.                         adcx=DAC_GetDataOutputValue(DAC_Channel_1);//讀取前面設(shè)置DAC的值
  54.                         LCD_ShowxNum(94,150,adcx,4,16,0);                //顯示DAC寄存器值
  55.                         temp=(float)adcx*(3.3/4096);                                 //得到DAC電壓值
  56.                         adcx=temp;
  57.                         LCD_ShowxNum(94,170,temp,1,16,0);                //顯示電壓值整數(shù)部分
  58.                         temp-=adcx;
  59.                         temp*=1000;
  60.                         LCD_ShowxNum(110,170,temp,3,16,0X80);            //顯示電壓值的小數(shù)部分
  61.                         adcx=Get_Adc_Average(ADC_Channel_5,10);                //得到ADC轉(zhuǎn)換值          
  62.                         temp=(float)adcx*(3.3/4096);                                //得到ADC電壓值
  63.                         adcx=temp;
  64.                         LCD_ShowxNum(94,190,temp,1,16,0);               //顯示電壓值整數(shù)部分
  65.                         temp-=adcx;
  66.                         temp*=1000;
  67.                         LCD_ShowxNum(110,190,temp,3,16,0X80);           //顯示電壓值的小數(shù)部分
  68.                         LED0=!LED0;          
  69.                         t=0;
  70.                 }            
  71.                 delay_ms(10);         
  72.         }       
  73. }

復(fù)制代碼

所有資料51hei提供下載:
DAC實驗.zip (545.31 KB, 下載次數(shù): 8)







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 六月丁香综合 | 日韩欧美一区二区三区 | 日本人の夫妇交换 | 日韩一级大片 | 一级免费黄色片 | 亚洲久久在线 | 一区二区久久 | www.久久爱| 欧美成人精品欧美一级乱黄 | 激情综合婷婷 | 毛片网站大全 | 青青操影院 | 久草视频免费在线观看 | 国产乱码一区二区 | 日韩黄色影院 | 欧美高清在线 | 久久精品一区二区三区不卡牛牛 | 午夜视频 | 精品国产91 | 人人草人人爽 | 精品久久久久久久久久久久久久久久 | 亚洲资源在线 | 久久午夜影院 | 亚洲成a人 | 国产精品久久网 | 中文字幕一区在线观看 | 国产精品久久久久久久久久久久久 | 天天天天躁天天爱天天碰2018 | 欧美一区二区免费 | 深夜福利影院 | 一级片观看 | 国产欧美视频在线观看 | 国产精品嫩草影院桃色 | 久久九九精品 | 亚洲国产成人精品久久 | 成人黄色免费视频 | 簧片在线免费观看 | 一级片在线观看视频 | 欧美激情五月 | 人人草人人爽 | 欧美国产精品一区二区 |