基于stc8a的ad9833模块的例程的使用

用淘宝买的信号模块9833,然后例子也已经给了51的,但是手头用的是stc8a的,因此简单改造一下,测试买的模块。
测试的结果还是比较好的,就是信号比较弱,所以后面需要加运放等电路。

接线:
VCC接单片机的+5V,DGND接单片机的GND,
三个信号引脚;
测试的示波器的引脚GND接AGND,然后红表笔接OUT。
得到后面的波形。

//---------------------------------------------------//
//AD9833模块测试程序
//功能:循环输出1KHz方波,正弦波。三角波

//接口:DAT   -->   P1.0
//      CLK   -->   P1.1
//      FNC   -->   P1.2
//---------------------------------------------------//
//定义头文件
# include <reg51.h>
# include <stdio.h>
# include <intrins.h>

sfr     P0M0        =   0x94;
sfr     P0M1        =   0x93;
sfr     P1M0        =   0x92;
sfr     P1M1        =   0x91;
sfr     P2M0        =   0x96;
sfr     P2M1        =   0x95;
sfr     P3M0        =   0xb2;
sfr     P3M1        =   0xb1;
sfr     P4M0        =   0xb4;
sfr     P4M1        =   0xb3;
sfr     P5M0        =   0xca;
sfr     P5M1        =   0xc9;
sfr     P6M0        =   0xcc;
sfr     P6M1        =   0xcb;
sfr     P7M0        =   0xe2;
sfr     P7M1        =   0xe1;
//---------------------------------------------------//
sbit ad9833_sdata   =P2^2;
sbit ad9833_sclk    =P2^3;
sbit ad9833_fsync   =P2^4;
//---------------------------------------------------//
//延时程序
//---------------------------------------------------//
void delay(unsigned int m)
{
unsigned int  n,tt;
for (n=0;n<=m;n++)
{
	for (tt=0;tt<=10;tt++);
}
}
//---------------------------------------------------//
//向AD9833写16位数据
//---------------------------------------------------//
void write_ad9833_d16(unsigned int x)
{
int i,w;
	
ad9833_sclk=1;
ad9833_fsync=1;
ad9833_fsync=0;
//写16位数据
w=x;
for(i=0;i<16;i++)
{
ad9833_sdata=w&0x8000;
ad9833_sclk=0;
ad9833_sclk=1;
w=w<<1;
}
ad9833_fsync=1;
ad9833_sclk=0;
}
//---------------------------------------------------//
//                   主程序                          //
//---------------------------------------------------//
main()
{
	int i;
	P0M0=0x00;
	P0M1=0x00;
	P1M0=0x00;
	P1M1=0x00;
	P2M0=0x00;
	P2M1=0x00;
	P3M0=0x00;
	P3M1=0x00;
	P0=0XFF;
	P1=0XFF;
	P2=0XFF;
	P3=0XFF;	
while(1)
{
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
//寄存器频率0输出1KHz波形
	//第一步:复位
	//0000 0001 0000 0000
	write_ad9833_d16(0x0100); //D8=1,复位AD9833
	for(i=0;i<16;i++);
	//第二步,设置一次写入的模式
	//D15D14=00,选择控制寄存器
	//0010 0001 0000 0000
	write_ad9833_d16(0x2100); //选择数据一次写入,将D13=1,D12=0
	for(i=0;i<16;i++);
	//选择频率0寄存器
	//第三步,写入低14位
	//01 10 1001 1111 0001  D15D14=01,选择频率寄存器0 ;D13-D0 MSB14
write_ad9833_d16(0x69F1); //L14  先写LSB14
for(i=0;i<16;i++);//延时一下
	//第四步,写入高14位
	//01 00 0000 0000 0000
	write_ad9833_d16(0x4000); //H14  写MSB14,频率寄存器0为1KHz
	for(i=0;i<16;i++);
	//选择频率1寄存器
	//第五步,写入低14位
//1001 0011	1110 0011  D15D14=10选择频率寄存器0,01001111100011
	write_ad9833_d16(0x93E3); //L14
	for(i=0;i<16;i++);
	write_ad9833_d16(0x8001); //H14 频率寄存器1为2KHz
	for(i=0;i<16;i++);
	write_ad9833_d16(0x2000); //芯片进入工作状态,寄存器频率0输出1KHz波形
//寄存器频率1输出2KHz波形
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	write_ad9833_d16(0x2800); 
//寄存器频率0输出1KHz三角波波形
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	write_ad9833_d16(0x2002); 
//寄存器频率0输出1KHz方波波形
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	write_ad9833_d16(0x2020); 
	for(i=0;i<16;i++);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	delay(100000);
	}
}
```![在这里插入图片描述](https://img-blog.csdnimg.cn/2020070516373087.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtZjY2Ng==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200705163754360.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtZjY2Ng==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200705163809694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtZjY2Ng==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200705163826545.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtZjY2Ng==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200705163839242.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtZjY2Ng==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020070516384846.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtZjY2Ng==,size_16,color_FFFFFF,t_70)

猜你喜欢

转载自blog.csdn.net/lmf666/article/details/107140845