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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6181|回復: 1
收起左側

單片機 利用C語言產生正弦波DA數據

[復制鏈接]
ID:215122 發表于 2017-9-11 17:49 | 顯示全部樓層 |閱讀模式
       通過改變單片機的DA輸出電壓,可以得到各種各樣的電壓波形輸出,下面介紹產生正弦波形需送DA的數據是如何計算的。
       首先既然是正弦波,那么就要確定要輸出一個周期正弦波的采樣點數point,即由多少點組成了一周期的正弦波,還要知道單片機輸出DA的數字值maxnum是多少,比如
8位DA,maxnum=256。10位DA,maxnum=1024。
       知道以上兩個值后,就開始計算需要得到的正弦波DA數據了,我設置一個正弦波由61個點組成,所選DA最大數字輸入值為1024,那么我的正弦波數據數組就有61個數據,即sin_tab[61],也就是把一個正弦波360度,分成了61份,那么每份就是360÷61=5.901度,這樣就可以計算出61點中每個點對應的角度值jiaodu,有了角度值就可以算出來角度對應的正弦值,利用正弦值和輸出DA的數字值maxnum,就可以計算出對應DA輸入的數值了。
公式為:
sin_tab=(maxnum/2)*sin(x)+(maxnum/2); //  i代表某點      x為某角度對應的弧度      弧度=角度*(π/180);  //(maxnum/2)為正弦波零點處對應DA輸入值;即DA滿量程的一半;

在51單片機運行了以下函數,DA輸出波形完美,驗證產生的DA數據無誤。
  1. #include<math.h> //注意需添加此頭文件,包含了求正弦值函數sin(弧度值);

  2. //獲取不同點數的正弦波數據
  3. //point: 一周期內的取樣點數
  4. //maxnum: 一周期內對應DA輸出最大值
  5. void getSinTab(uchar point,uint maxnum)
  6. {
  7. uchar i=0;
  8. float x;   //弧度
  9. float jiao;//角度 分度角
  10. jiao=360.000/point;

  11.   for(i=0;i<point;i++)
  12. {
  13. x=jiao*i;    //得到角度值
  14.    x=x*0.01744; //角度轉弧度  弧度=角度*(π/180)
  15.       sin_tab[i]=(maxnum/2)*sin(x)+(maxnum/2);
  16. }

  17. }

  18. // sin_tab[i] 為得到的正弦波數據,用于送給DA輸出。
復制代碼



回復

使用道具 舉報

ID:1004213 發表于 2022-2-6 20:01 | 顯示全部樓層
大佬牛逼,我們教材上的代碼是錯的輸出不了,謝謝解答
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人欧美日韩一区二区三区 | 一级毛片免费完整视频 | 日韩视频一区二区三区 | www.日韩| 亚洲成人免费在线 | 国产伦精品一区二区三区照片91 | 成人性视频免费网站 | 成人午夜免费视频 | 91精品国产91久久久久久不卞 | 国产日屁 | 黑人巨大精品欧美一区二区免费 | 夜夜夜夜夜夜曰天天天 | 亚洲精品久久久一区二区三区 | 亚洲免费在线 | 天天拍天天插 | 极品久久 | 精品在线视频播放 | 免费a网站 | 亚洲欧美一区二区三区国产精品 | 视频二区国产 | 免费看爱爱视频 | 国产精品一区二 | 999re5这里只有精品 | 国产精品毛片 | 日本视频一区二区 | 欧美激情一区二区 | 天堂中文资源在线 | 天堂国产 | 日韩毛片在线免费观看 | 欧美视频免费在线 | 日韩av中文 | 日韩在线观看一区 | 黄色一级毛片免费看 | 中文字幕乱码一区二区三区 | 丁香五月网久久综合 | 亚洲人成在线观看 | 国产成人精品a视频 | 全部免费毛片在线播放网站 | 国产亚洲精品久久yy50 | 一本一道久久a久久精品综合 | 日韩欧美在线播放 |