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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7077|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32F103內(nèi)部DAC使用源碼

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

單片機(jī)源程序如下:
  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();                     //延時函數(shù)初始化          
  17.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級分組為組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
  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;//設(shè)置字體為紅色        
  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;//設(shè)置字體為藍(lán)色
  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);//設(shè)置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);//設(shè)置DAC值
  50.                 }         
  51.                 if(t==10||key==KEY2_PRES||key==KEY3_PRES) //WKUP/KEY1按下了,或者定時時間到了
  52.                 {          
  53.                         adcx=DAC_GetDataOutputValue(DAC_Channel_1);//讀取前面設(shè)置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);             //顯示電壓值整數(shù)部分
  58.                         temp-=adcx;
  59.                         temp*=1000;
  60.                         LCD_ShowxNum(140,170,temp,3,16,0X80);         //顯示電壓值的小數(shù)部分
  61.                         adcx=Get_Adc_Average(ADC_Channel_1,10);                //得到ADC轉(zhuǎn)換值          
  62.                         temp=(float)adcx*(3.3/4096);                        //得到ADC電壓值
  63.                         adcx=temp;
  64.                         LCD_ShowxNum(124,190,temp,1,16,0);             //顯示電壓值整數(shù)部分
  65.                         temp-=adcx;
  66.                         temp*=1000;
  67.                         LCD_ShowxNum(140,190,temp,3,16,0X80);         //顯示電壓值的小數(shù)部分
  68.                         LED0=!LED0;          
  69.                         t=0;
  70.                 }            
  71.                 delay_ms(10);       

  72.         }
  73. }

復(fù)制代碼

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


評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人在线视频观看 | 9191av| 黄视频免费在线 | 国产女人与拘做受视频 | 国产精品久久久 | 在线观看久草 | 亚洲精品乱码久久久久久蜜桃91 | 成人精品一区二区三区中文字幕 | 国产性色视频 | 精品毛片视频 | 女朋友的闺蜜3韩国三级 | 99精品国产一区二区青青牛奶 | 青青草原精品99久久精品66 | 波多野结衣中文字幕一区二区三区 | 久久久精品综合 | 亚洲成人av | 一级高清视频 | 天天射色综合 | 亚洲精选久久 | 亚洲第一天堂 | 欧美在线观看一区 | 国产电影精品久久 | 精品国产免费人成在线观看 | 欧美成人猛片aaaaaaa | 午夜精品久久久久久久久久久久久 | 超碰婷婷 | 日韩高清中文字幕 | 999久久久国产精品 欧美成人h版在线观看 | 国产在线观看 | 成人精品网 | 高清一区二区 | 男女爱爱福利视频 | 亚洲h视频 | 羞羞网站在线观看 | 亚洲久久一区 | 青青草综合 | 亚州中文| 中文字幕日韩在线观看 | 国产精品一区二区三区四区五区 | 国产一区二区三区在线 | 丁香婷婷久久久综合精品国产 |