❶ 如何用單片機C語言進行三角函數運算最好給出代碼!
使用數學頭文件math.h,裡面有你需要的三角函數,不過要注意使用的角度都是以弧度為單位的。
❷ 單片機計算器怎麼實現正餘弦函數
1、增加頭文件include
2、使用sin(x),cos(y)就可實現正餘弦函數。正弦,數學術語,在直角三角形中,任意一銳角A的對邊與斜邊的比叫做A的正弦。函數的定義通常分為傳統定義和近代定義,函數的兩個定義本質是相同的,只是敘述概念的出發點不同,傳統定義是從運動變化的觀點出發,而近代定義是從集合、映射的觀點出發。
❸ 關於在C51單片機中使用三角函數的問題
可能是你定義的數據類型不對,你對照函數原型看看。還有sin(x)裡面的x是弧度不是角度,所以30度應該換算成弧度=30*π/180
❹ 單片機實現正弦波的C程序
在把PC上 用C語言 編寫一個程序 生成 一個周期 正弦信號 的離散值
用一個位元組 8位 表示
即 0 ~ 255 表示正弦 信號 -1 到 1之間的值
單片程序 把這組0 ~ 255的 數字 放在一個 數組里
用循環 向 某個 IO口輸出 這個數組
IO口接 DAC數模轉換 器
❺ 單片機輸出正弦函數中正弦表的計算
看你用什麼D/A了。8/12位D/A的話用char/int就好了。float不行,運算太慢了,又占空間。
你想VC得到數據,初始化為單片機數據,然後單片機查表實現?這是可行的方法。
#include <stdio.h>
#include <math.h>
#define PI (4*atan(1))
int main()
{
int i;
for(i=0;i<64;++i)
printf("0x%04x,",(short)(256*(1+sin(2*PI*i/64))));
return 0;
}
0x0100,0x0119,0x0131,0x014a,0x0161,0x0178,0x018e,0x01a2,
0x01b5,0x01c5,0x01d4,0x01e1,0x01ec,0x01f4,0x01fb,0x01fe,
0x0200,0x01fe,0x01fb,0x01f4,0x01ec,0x01e1,0x01d4,0x01c5,
0x01b5,0x01a2,0x018e,0x0178,0x0161,0x014a,0x0131,0x0119,
0x0100,0x00e6,0x00ce,0x00b5,0x009e,0x0087,0x0071,0x005d,
0x004a,0x003a,0x002b,0x001e,0x0013,0x000b,0x0004,0x0001,
0x0000,0x0001,0x0004,0x000b,0x0013,0x001e,0x002b,0x003a,
0x004a,0x005d,0x0071,0x0087,0x009e,0x00b5,0x00ce,0x00e6
❻ 51單片機使用數學函數庫中的正弦函數 需要怎樣改
不建議直接用正弦函數,因為執行時間會很久,51單片機運算能力比較弱,一般都是用演算法計算高級函數的,為了執行時間以及效率高,通常都是把高級函數用另外的方法去做,例如你這里要計算y=sinx這個函數,顯然直接用庫函數是容易寫程序是容易,但是單片機執行就很慢(可能要算一秒才能出結果),如果你的精度不需要很高(例如精確到1度),你做表,把1度到90度的正弦值全部自己算出來,然後做成表,通過查表方法就可以得到結果,這樣雖然寫程序是麻煩,但是執行速度和效率都高。你應該是剛剛學習單片機的,不理解CPU底層,C語言雖然是很靈活,但是也要看是什麼CPU,是根據CPU選擇高效率的數據類型以及演算法。
❼ 51單片機怎樣計算sin(x);和cos(x);
三角函數的計算是使用的弧度(rad),如果你得到的角度單位是度(deg),需要將deg轉換為rad才能用三角函數計算。
1rad=180/π,所以任意度數x轉換為弧度就是x*π/180。
❽ 請教各位如何在單片機內計算正弦反正弦餘弦程序
用庫函數,頭文件是math.h,裡面有sin,cos等函數。
❾ 單片機實現正弦波的C程序
keil
C中
#include<math.h>之後,sin函數是可以用的哦,然後每20ms計時中斷一次,計算m=sin(t),t是每次中斷加1度的變數,然後將m輸出,做DA既可。
❿ 如何利用單片機實現正弦函數運算
用單片機c語言實現比較簡單!
1、增加頭文件:#include<math.h>
2、使用sin(x),cos(y)等等實現;
3、例如:
int
i,y;
for(i=0;i<360;i++)
{
y=
sin(i);
}