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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8145|回復: 5
收起左側

stm32 DAC產生可調電壓0到3V源碼親測可用

  [復制鏈接]
ID:225297 發表于 2017-8-8 09:13 | 顯示全部樓層 |閱讀模式
stm32開發板不要太舊,3年前的rb6t及以下版本不行沒有內部DA功能,其他的如rc6t都可以

全部資料下載地址:
實驗20 DAC實驗.rar (373.23 KB, 下載次數: 133)


  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"                  
  7. #include "dac.h"
  8. #include "adc.h"
  9. #include "usmart.h"

  10. /************************************************
  11. ALIENTEK戰艦STM32開發板實驗20
  12. DAC 實驗  
  13. ************************************************/


  14. int main(void)
  15. {         
  16.         u16 adcx;
  17.         float temp;
  18.         u8 t=0;         
  19.         u16 dacval=1800;
  20.         u8 key;
  21.         delay_init();                     //延時函數初始化          
  22.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  23.         uart_init(115200);                 //串口初始化為115200
  24.         KEY_Init();                          //初始化按鍵程序
  25.         LED_Init();                             //LED端口初始化
  26.         LCD_Init();                                  //LCD初始化
  27.         //usmart_dev.init(72);        //初始化USMART       
  28.         Adc_Init();                                  //ADC初始化
  29.         Dac1_Init();                                //DAC初始化

  30.         POINT_COLOR=RED;//設置字體為紅色
  31.         LCD_ShowString(60,50,200,16,16,"WarShip STM32");       
  32.         LCD_ShowString(60,70,200,16,16,"DAC TEST");       
  33.         LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
  34.         LCD_ShowString(60,110,200,16,16,"2015/1/15");       
  35.         LCD_ShowString(60,130,200,16,16,"WK_UP:+  KEY1:-");       
  36.         //顯示提示信息                                                                                             
  37.         POINT_COLOR=BLUE;//設置字體為藍色
  38.         LCD_ShowString(60,150,200,16,16,"DAC VAL:");             
  39.         LCD_ShowString(60,170,200,16,16,"DAC VOL:0.000V");             
  40.         LCD_ShowString(60,190,200,16,16,"ADC VOL:0.000V");
  41.        
  42.          DAC_SetChannel1Data(DAC_Align_12b_R, 0);//初始值為0                         
  43.         while(1)
  44.         {
  45.                 t++;
  46.                 key=KEY_Scan(0);                          
  47.                 if(key==WKUP_PRES)
  48.                 {                 
  49.                         if(dacval<4000)dacval+=50;
  50.                  DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//設置DAC值       
  51.                 }else if(key==KEY1_PRES)       
  52.                 {
  53.                         if(dacval>200)dacval-=50;
  54.                         else dacval=0;
  55.                   DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//設置DAC值
  56.                 }         
  57.          if(t==10||key==KEY1_PRES||key==WKUP_PRES) //WKUP/KEY1按下了,或者定時時間到了
  58.                 {          
  59.                         adcx=DAC_GetDataOutputValue(DAC_Channel_1);//讀取前面設置DAC的值
  60.                         LCD_ShowxNum(124,150,adcx,4,16,0);             //顯示DAC寄存器值
  61.                         temp=(float)adcx*(3.3/4096);                        //得到DAC電壓值
  62.                         adcx=temp;
  63.                         LCD_ShowxNum(124,170,temp,1,16,0);             //顯示電壓值整數部分
  64.                         temp-=adcx;
  65.                         temp*=1000;
  66.                         LCD_ShowxNum(140,170,temp,3,16,0X80);         //顯示電壓值的小數部分
  67.                         adcx=Get_Adc_Average(ADC_Channel_1,10);                //得到ADC轉換值          
  68.                         temp=(float)adcx*(3.3/4096);                        //得到ADC電壓值
  69.                         adcx=temp;
  70.                         LCD_ShowxNum(124,190,temp,1,16,0);             //顯示電壓值整數部分
  71.                         temp-=adcx;
  72.                         temp*=1000;
  73.                         LCD_ShowxNum(140,190,temp,3,16,0X80);         //顯示電壓值的小數部分
  74.                         LED0=!LED0;          
  75.                         t=0;
  76.                 }            
  77.                 delay_ms(10);       

  78.         }
  79. }

復制代碼


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:68421 發表于 2019-7-5 21:26 | 顯示全部樓層
非常感謝分享
回復

使用道具 舉報

ID:548974 發表于 2019-9-29 12:08 | 顯示全部樓層
謝謝
回復

使用道具 舉報

ID:240600 發表于 2020-9-27 10:31 | 顯示全部樓層
最近計劃要用到DAC,正好學習一下
回復

使用道具 舉報

ID:52721 發表于 2023-8-17 15:06 | 顯示全部樓層
正在用DAC,樓主辛苦了
回復

使用道具 舉報

ID:968906 發表于 2023-11-9 11:36 | 顯示全部樓層

正在用DAC,樓主辛苦了
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www久久久| 日韩1区| 亚洲午夜久久久 | 亚洲欧美成人影院 | 成人性生交a做片 | 在线午夜| 国产sm主人调教女m视频 | 欧美一区二区三区一在线观看 | 欧洲一区二区视频 | 久久久精品视频一区二区三区 | 欧美日韩不卡 | 日韩一区在线播放 | 国产日韩欧美激情 | 国内久久 | 国产农村妇女精品一区 | 国产精品美女久久久久久久网站 | 久久精品视频99 | 天天操人人干 | 在线视频亚洲 | 一区二区三区视频在线观看 | 欧美视频一级 | 国产精品日女人 | 91 中文字幕 | 国产精品色婷婷久久58 | 99久久精品国产一区二区三区 | 国产精品美女www爽爽爽 | 欧美在线一区二区三区 | 欧美日韩一区二区在线 | 亚洲美女天堂网 | 精品日韩一区二区 | 作爱视频免费观看 | 狠狠狠干 | 久久久精彩视频 | 亚洲午夜久久久 | 久久久五月天 | 天天干狠狠干 | 成人黄色av网址 | 99精品国产一区二区三区 | 成人精品毛片国产亚洲av十九禁 | 亚洲一区二区三区四区五区午夜 | 日韩免费看片 |