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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7195|回復: 1
打印 上一主題 下一主題
收起左側

STM32F103內部DAC使用源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:322834 發表于 2018-5-15 13:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大容量的 STM32F103 具有內部 DAC,無線傳感器網絡實驗平臺 TDL-02 選擇的是
STM32F103ZET6 屬于大容量產品,所以是帶有 DAC 模塊的。
STM32 的 DAC 模塊(數字/模擬轉換模塊)是 12 位數字輸入,電壓輸出型的 DAC。DAC 可以配置為 8 位或 12 位模式,也可以與 DMA 控制器配合使用。DAC 工作在 12 位模式時,數據可以設置成左對齊或右對齊。DAC 模塊有 2 個輸出通道,每個通道都有單獨的轉換器。在雙
DAC 模式下,2 個通道可以獨立地進行轉換,也可以同時進行轉換并同步地更新 2 個通道的輸出。DAC 可以通過引腳輸入參考電壓 VREF+以獲得更精確的轉換結果。

單片機源程序如下:
  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. int main(void)
  10. {         
  11.         u16 adcx;
  12.         float temp;
  13.         u8 t=0;         
  14.         u16 dacval=0;
  15.         u8 key;
  16.         delay_init();                     //延時函數初始化          
  17.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
  18.         uart_init(115200);                 //串口初始化為115200
  19.         KEY_Init();                          //初始化按鍵程序
  20.         LED_Init();                             //LED端口初始化
  21.         LCD_Init();                                  //LCD初始化
  22.         Adc_Init();                                  //ADC初始化
  23.         Dac1_Init();                                //DAC初始化

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

  72.         }
  73. }

復制代碼

所有資料51hei提供下載:
DAC實驗.rar (325.65 KB, 下載次數: 71)


評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:470646 發表于 2019-1-19 18:12 | 只看該作者
怎么不行啊,天哪,大哥哥救救我
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美色图在线视频 | 欧美激情视频网站 | 自拍偷拍18p| 国产欧美一区二区三区视频在线观看 | 免费三级黄色片 | 国产精品一区二区三区免费 | 国产综合视频 | 国产激情网 | 在线视频99 | 中文字幕高清在线 | 成年网站在线观看 | 亚洲免费视频一区 | www.国产精品| 国产精品成人一区 | 国产免费91 | 成人一区在线观看 | 国产麻豆91 | 欧美日韩国产在线播放 | 亚洲第一伊人 | 免费av在线播放 | 丰满女人裸体淫交 | 国产一区二区网站 | 国产手机在线视频 | 成人在线免费观看视频 | av片网站| 又黄又爽又色视频 | 国产伦精品一区二区三区免费视频 | 亚洲一级特黄 | 欧美日韩成人在线 | 欧美日韩激情视频 | 国产欧美在线播放 | 亚洲午夜在线 | 可以免费看黄色的网站 | 丰满少妇高潮在线观看 | 97caoporn | 国产精品一区二区av | 亚洲伊人av| 精品国产乱码久久久久久影片 | 综合99 | 在线观看黄色小视频 | 欧美久久久久久 |