#include<iostream.h>
#include<math.h>
int n;
unsigned int y;
void main()
{
for(n=0;n<65;n++)
{
y=1+sin(2*3.14*n/64);
cout<<hex<<y;
}
}
一个周期分成64个点。大家说说有没有问题啊,为什么输出不是16进制的?
y我想用2个字节来存储,所以用的是unsigned int,但是好像存放得不够。
谢谢vbtraz 指教,应该是for(n=0;n<64;n++)
为什么输出不到16进制的数呢?
我想用表格code的形式,把数据输出到D/A输出正弦波
我用的是keil软件编译,就是用来给51单片机编程用的。在数据类型里,keil定义的int就是 2个byte。
确实y不是整数。我的意思是想让程序输出正弦信号的采样值。最后可以以0xxx这种方式16进制方式输出。如果用float型的话长度是4个字节,char是一个字节,到底哪个类型好呢?
单片机输出正弦函数中正弦表的计算
你想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,0x...
单片机输出正弦波,那个数据表的数据是怎样计算得到的?有具体的计算过程...
直接sin(1.8*n)即可得出某个时刻的三角函数 值 将这个数值再乘以DA的最大数字量,8位是256,10位是1024 即可得到单片机要送往DA转换器的数字量
用51单片机产生正弦波,那个数据表怎么得到的?谢谢!
这个表是预先算好的,就是将标准正弦波上移1\/2幅值后模256。三角波和锯齿波也可以按相同方法计算得到对应的数值表。对一个周期取样256次,也就是说第0个取样点的弧度是0,第一个取样点的弧度值就是pi\/128,第二个取样点的弧度为(pi\/128)*2,依次类推。测峰峰值为256,所以f(x) = sin(x)*1...
用51单片机产生正弦波的查表方法
单相的从正弦涵数中从0度到90度范围中均匀取出n个数再用256的模转换成表格数。三相的只需从0度到30度取,可这会n要是三的公倍数。后在运行中按你的频率的不同从该表格中抽取就行了。这就是单牌机由PWM产生的正弦波中的那时间段的数。
利用单片机怎么产生正弦波信号
单片机 外接AD转换芯片 再加运放 通过一定的控制程序就可产生正弦波。实现方法:1、通过单片机DA来实现,需要通过查表法;2、通过PWM方式实现;不过都需要加硬件滤波电路来实现正弦波的平滑。
如何用单片机控制输出一个1KHz,5Ⅴ的正弦波?电路图
单片机内置 模数转换模块DA,参考电压 为5V 再利用正弦函数 算出从0-360度的值 假设5V 满量程为max. DA=sinX*(max\/2)+max\/2 (X为角度)给360 度每个角度都算遍 并且定个周期为 1Khz 输出模拟电压即可 换算方法 如 3度 sin(pi\/180 *3) 90度 sin(pi\/180 *90)以上表述 由于不...
请教各位如何在单片机内计算正弦反正弦余弦程序
用库函数,头文件是math.h,里面有sin,cos等函数。
单片机查表法输出正弦信号,如何连续或阶梯式调整输出信号幅度呢?_百度...
首先单片机需要接入一个DA来输出模拟电压。你查表得到的只是正弦幅值为1的时候的正弦信号波形,所以调整幅值的时候直接乘以你要输出的幅值就行了,比如:sin(90°)=1,查表的时候得到的就是在90°的位置是1,如果想输出0.5*sin(90)=0.5 那就直接在输出的时候乘以0.5就行了,如果输出2,道理...
如何利用单片机实现正弦函数运算?
用单片机C语言实现比较简单!1、增加头文件:#include<math.h> 2、使用sin(x),cos(y)等等实现;3、例如:int i,y;for(i=0;i<360;i++){ y= sin(i);}
单片机实现正弦波的C程序
在把PC上 用C语言 编写一个程序 生成 一个周期 正弦信号 的离散值 用一个字节 8位 表示 即 0 ~ 255 表示正弦 信号 -1 到 1之间的值 单片程序 把这组0 ~ 255的 数字 放在一个 数组里 用循环 向 某个 IO口输出 这个数组 IO口接 DAC数模转换 器 ...