资源简介
51单片机控制AD9834的信号发生器。通过按键可以设置输出方式及输出频率,并通过1602液晶显示
代码片段和文件信息
/*****************************************************
AD9834波形产生程序
*****************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define FCLK 50000000
#define FREQ_0 0
#define FREQ_1 1
sbit FSYNC = P3^4;
sbit SCLK = P3^5;
sbit SDATA = P3^6;
sbit RESET = P3^7;
sbit CHANGE = P3^2;
//液晶接口
sbit rs=P1^0;
sbit rw=P1^1;
sbit en=P1^2;
uchar i=0jkkey10num;
uchar sintrisqu;
ulong freq=0.0;
ulong m;
uchar code tab1[]={0xf70xfb0xfd0xfc}; //键盘
uchar code tab2[]=“frequency:“; //初始化液晶显示
uchar tab[6]; //存储设置值
/**************************
发送控制字
**************************/
void Send_Con(uint Con_word)
{
uchar i;
FSYNC =0; //低电平使数据有效
for(i=0;i<16;i++) //传输16位控制字
{
SDATA =Con_word&0x8000; //最高位不变,最高位赋给SDATA
Con_word<<=1; //控制字左移一位,准备下一次
SCLK =0; //产生下降沿,传输SDATA
SCLK =1;
}
FSYNC =1; //高电平,无效
}
/****************************
发送频率字
****************************/
void Send_Freq(uint Freq_word)
{
uchar i;
FSYNC =0; //低电平使数据有效
for(i=0;i<16;i++) //传输16位频率字
{
SDATA =Freq_word&0x8000; //最高位不变,最高位赋给SDATA
Freq_word<<=1; //频率字左移一位,准备下一次
SCLK =0; //产生下降沿,传输SDATA
SCLK =1;
}
FSYNC =1; //高电平,无效
}
/*****************************
发送相位字
注:根据情况可设定入口参数,设置相位
*****************************/
void Send_Phase()
{
Send_Con(0xC000); //设置初相位为0
}
/*******************************************************
设置频率值
Freq_value(value)=Freq_data(data)*FCLK/2^28
2^28=268435456=0x10000000
*******************************************************/
void writing_Freq(uchar freq_number ulong Freq_value)
{
ulong FREQREG = (ulong)(268435456.0/FCLK*Freq_value);
uint LSB_D = (uint)FREQREG;
uint MSB_D = (uint)(FREQREG>>14);
if(freq_number == FREQ_0)
{
LSB_D &= ~(1U<<15);
LSB_D |= 1<<14;
MSB_D &= ~(1U<<15);
MSB_D |= 1<<14;
}
else
{
LSB_D &= ~(1<<14);
LSB_D |= 1U<<15;
MSB_D &= ~(1<<14);
MSB_D |= 1U<<15;
}
Send_Freq(LSB_D);
Send_Freq(MSB_D);
}
void delay(uint x) /*延时函数*/
{
uint ij;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void wri(uchar com) /*写指令函数*/
{
rs=0;
rw=0;
en=1;
P0=com;
delay(5);
en=0;
}
void wrd(uchar dat) /*写数据函数*/
{
rs=1;
rw=0;
en=1;
P0=dat;
delay(5);
en=0;
}
/**************************************
按键: 0 1 2 3
4 5 6 7
8 9 设置 确定
正弦波 三角波 方波
每次按下设置键后,选择波形,正弦or三角or方波,按下后,再输入频率值,最后按确定键
**
- 上一篇:sublime xm
l插件 - 下一篇:SM4密码算法.pdf
相关资源
- 一个labview仿真的函数信号发生器.vi
- 可编程正弦波信号发生器电路图
- 正弦波信号发生器电路
- 基于protues的信号发生器,protues详细教
- fpga DDS 信号发生器_v2
- 基于FPGA的双通道幅度相位频率可调节
- MSP430信号发生器.rar
- 基于Labview信号发生器设计
- eda信号发生器的设计VHDL
- 基于AT89C51单片机信号发生器设计.pd
- DDS最终版(PCB\\原理图\\源程序)
- 基于AT89C51单片机的多功能函数信号发
- DDS简易信号发生器设计指导
- 【FPGA】信号发生器266361
- 于DDS技术的信号发生器的设计与实现
- multisim仿真10-10KHZ函数信号发生器
- 基于DDS正弦波信号发生器
- 基于LabVIEW的虚拟函数信号发生器的论
- 基于FPGA信号发生器的设计
- 超级全的用AD9850制作信号发生器的资
- vhdl dds 方波 正弦波 信号发生器
- 基于51单片机的高频函数信号发生器
- fpga课程设计-基于并行AD的信号发生器
- FPGA basys2 信号发生器设计
- 基于VERILOG HDL的信号发生器
- 基于Quartus II 的dds信号发生器.rar.rar
- quartus ii verilog hdl 正弦信号发生器
- 基于dds信号发生器的设计
- 基于fpga的dds信号发生器设计
- AD9833信号发生器全
评论
共有 条评论