2024-09-01
售卖作品
00

目录

一个简单的sin波形发生器
控制频率、幅度
帮助、问询

一个简单的sin波形发生器

代码:

c
#include <msp430.h> #define uchar unsigned char #define CPU_F ((double)1000000)//cpu frequency1000000 #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define CS_SET P2OUT |= BIT6 #define CS_CLR P2OUT &= ~BIT6 //P26 CS #define WR_SET P2OUT |= BIT7 #define WR_CLR P2OUT &= ~BIT7 //P27 WR #define DI P1OUT //DI const uchar sin_a[52] = {128, 143, 159, 174, 188, 201, 213, 224, 234, 242, 248, 252, 255, 255, 254, 251, 246, 239, 230, 220, 209, 196, 182, 168, 153, 137, 121, 106, 91, 76, 62, 49, 37, 27, 18, 11, 5, 1, 0, 0, 2, 6, 12, 19, 28, 39, 51, 64, 78, 93, 108, 124 }; void write_dac(uchar data) //dac写数据函数 { CS_CLR; DI = data; WR_CLR; delay_us(1); WR_SET; //latch data CS_SET; } void sin() //正弦波发生函数 { uchar i; for (i = 0; i < 52; i++) { write_dac(sin_a[i]); } } void main(void) { WDTCTL = WDTPW + WDTHOLD;// Stop WDT P1DIR = 0xff;//0832的数据位 P2DIR |= BIT6 + BIT7; P2SEL &= ~(BIT6 + BIT7); for (;;) { sin(); } }

仿真:

在这里插入图片描述

控制频率、幅度

频率依靠定时器可以较为精准控制,但幅度只能加一点减一点。

稍微修改后,按键调节频率和幅度,产生正弦、矩形、三角波:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

仿真图和程序源码:http://dt2.8tupian.net/2/28880a10b9990.pg3

帮助、问询

csharp
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!