📄 dac_sin.c
字号:
#include<iom128v.h>
#include"math.h"
#define uchar unsigned char
#define uint unsigned int
//延时函数
void s_ms(unsigned int t)
{
for(;t>1;t--)
{
}
}
//SPI初始化
void spi_init()
{
DDRB=0xf7; //端口设置
PORTB=0xff;
SPSR&=0x00;
SPCR=0x5d; //主机模式 方式0 ocs/16
}
void spi_send(uint spi_data)
{
uchar spi_lo,spi_hi;
spi_lo=spi_data;
spi_hi=spi_data>>8;
PORTB&=~(1<<0); //ss=0
SPDR=spi_hi; //发送高字节
while(!(SPSR&(1<<SPIF)));
SPDR=spi_lo; //发送低字节
while(!(SPSR&(1<<SPIF)));
PORTB|=(1<<0);
}
//使用DAC产生27Hz的正弦波
//主要时间消耗在sin的计算上,使用查表会更快
//主函数
main()
{
float pai=0,aa;
int sin_p;
s_ms(50000); //等待7512复位
spi_init();
spi_send(0x07ff);
while(1)
{
pai+=0.1;
sin_p=sin(pai)*2000;
sin_p+=2048; //2048作为中点
spi_send(sin_p);
if(pai==6.28) //2pai回零
{pai=0;}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -