利用微控制器DAC和C語言產生正弦波資料

2021-09-26 06:49:32 字數 920 閱讀 2977

以下為適用於各類微控制器:

改變微控制器的dac輸出電壓,可以得到需要的電壓波形輸出,下面介紹正弦波所需的dac資料是如何計算的。

首先既然是正弦波,那麼就要確定輸出乙個週期正弦波的取樣點數point,即由多少點組成了一週期的正弦波,還要知道微控制器輸出dac的數字值maxnum是多少,比如8位dac,maxnum=256。10位dac,maxnum=1024。

知道以上兩個值後,就開始計算需要得到的正弦波da資料了,我設定乙個正弦波由61個點組成,所選da最大數字輸入值為1024,那麼我的正弦波資料陣列就有61個資料,即sin_tab[61],也就是把乙個正弦波360度,分成了61份,那麼每份就是360÷61=5.901度,這樣就可以計算出61點中每個點對應的角度值angle,有了角度值就可以算出來角度對應的正弦值,利用正弦值和輸出da的數字值maxnum,就可以計算出對應da輸入的數值了。

公式為:

sin_tab[i]

=(maxnum/2)

*sin

(x)+

(maxnum/2)

;// i代表某點 x為某角度對應的弧度

弧度=角度*(π/

180);

//(maxnum/2)為正弦波零點處對應da輸入值;即da滿量程的一半;

下面為**:

#include

//注意需新增此標頭檔案,包含了求正弦值函式sin(弧度值);

//獲取不同點數的正弦波資料

//point: 一週期內的取樣點數

//maxnum: 一週期內對應da輸出最大值

void

getsintab

(uchar point,uint maxnum)

}// sin_tab[i] 為得到的正弦波資料,用於送給da輸出。

微控制器C語言程式設計

一 首先我們先了解一下51微控制器的標頭檔案 include 為了能看懂reg51.h標頭檔案,下面需了解keil c51編譯器擴充套件的關鍵字 關鍵字用途 說明bit 位標量宣告 宣告乙個位標量或位型別 sbit 位變數宣告 宣告乙個可位定址變數 sfr特殊功能暫存器宣告 宣告乙個特殊功能暫存器 ...

51微控制器C語言

使用c語言已成為微控制器應用系統開發的趨勢。include 包含微控制器暫存器的標頭檔案這個檔案對微控制器內部各種暫存器進行了定義。如果將 sfr p0 0x80 語句中的 p0 改為其他名字,如 q0 那麼在程式設計時,使用第一行的 檔案包含 處理命令後,微控制器以後就不再認識 p0 而是只認識 ...

如何入門微控制器C語言

一 為什麼要學微控制器技術?傳統的電子產品公升級改造成智慧型化的電子產品需要用到微控制器技術。也就是說傳統的電子產品如電視機 電子錶 計算器 數位相機 手機 遙控器 洗衣機等產品智慧型化 微型化,需要的核心技術就是微控制器技術。所以從事電子行業的工作人員必須學好微控制器技術,否則必然被社會淘汰。二 ...