AD9833程序,信号发生器,正弦波,方波,三角波输出程序
更新时间:2023-06-09 06:41:01 阅读量: 实用文档 文档下载
- ad9833程序推荐度:
- 相关推荐
# include <reg51.h>
# include <stdio.h>
# include <intrins.h>
/********************************************/
sbit ad9833_sdata =P1^0;
sbit ad9833_sclk =P1^1;
sbit ad9833_fsync =P1^2;
/*****************定义全局变量*********************/
/*************************************************/
//延时程序
/**************************************************/
void delay(unsigned int m)
{
unsigned int n;
for (n=0;n<=m;n++)
{
}
}
/*****************************************************/
/**向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;
}
/**************************************************/
/*************计算AD9833的28位数据值***************/
/*****************************************************/
/**变量frequence就是频率值,单位Hz,比如输入100Hz,则 frequence为100,需要特别注意的是不能超过12MHz;/*****变量frequence_SFR是设置频率寄存器选择0为频率寄存器0,1为频率寄存器1;*******/
/*****变量WAVE_MODE是设置输出波形选择0为三角波,1为方波,2为正弦波;*******/
/*****变量Phase是设置波形相位值*******/
void ad9833_data(double frequence,unsigned int frequence_SFR,unsigned int WAVE_MODE,unsigned int Phase ){
int frequence_LSB,frequence_MSB,Phs_data;
double frequence_mid,frequence_DATA;
long int frequence_hex;
/*********************************计算频率的16进制值***********************************/
frequence_mid=268435456/25;//适合25M晶振
//如果时钟频率不为25MHZ,修改该处的频率值,单位MHz ,AD9833最大支持25MHz
frequence_DATA=frequence;
frequence_DATA=frequence_DATA/1000000;
frequence_DATA=frequence_DATA*frequence_mid;
frequence_hex=frequence_DATA; //这个frequence_hex的值是32位的一个很大的数字,需要拆分成两个14位进行处理;
frequence_LSB=frequence_hex; //frequence_hex低16位送给frequence_LSB
frequence_LSB=frequence_LSB&0x3fff;//去除最高两位,16位数换去掉高位后变成了14位
frequence_MSB=frequence_hex>>14; //frequence_hex高16位送给frequence_HSB
frequence_MSB=frequence_MSB&0x3fff;//去除最高两位,16位数换去掉高位后变成了14位
/****************************************************************************/
/******************************相位值*************************************/
Phs_data=Phase|0xC000;
/*****************************************************************************/
if(frequence_SFR==0) {
frequence_LSB=frequence_LSB|0x4000; //把数据设置到设置频率寄存器0
frequence_MSB=frequence_MSB|0x4000;
//使用频率寄存器0输出波形
/*************************************************/
write_ad9833_d16(0x0100); //复位AD9833,即RESET位为1
write_ad9833_d16(0x2100); //选择数据一次写入,B28位和RESET位为1
write_ad9833_d16(frequence_LSB); //L14,选择频率寄存器0的低14位数据输入
write_ad9833_d16(frequence_MSB); //H14 频率寄存器的高14位数据输入
write_ad9833_d16(Phs_data); //设置相位//write_ad9833_d16(0x2000); /**设置FSELECT位为0,芯片进入工作状态,频率寄存器0输出波形**/
}
/************************************************************************************/
if(frequence_SFR==1) //把数据设置到设置频率寄存器1 {
frequence_LSB=frequence_LSB|0x8000;
frequence_MSB=frequence_MSB|0x8000;
//使用频率寄存器1输出波形
/*************************************************/
write_ad9833_d16(0x0100); //复位AD9833,即RESET位为1
write_ad9833_d16(0x2100); //选择数据一次写入,B28位和RESET位为1
write_ad9833_d16(frequence_LSB); //L14,选择频率寄存器1的低14位输入
write_ad9833_d16(frequence_MSB); //H14 频率寄存器1为
write_ad9833_d16(Phs_data); //设置相位//write_ad9833_d16(0x2800); /**设置FSELECT位为0,设置FSELECT位为1,即使用频率寄存器1的值,芯片进入工作状态,频率寄存器1输出波形**/
}
/****************************************************************************************/
if(WAVE_MODE==0)
{
//频率寄存器输出三角波波形
/***************************************************/
delay(100000);
write_ad9833_d16(0x2002); //设置MODE位为1,输出三角波模式
}
/***************************************************/
if(WAVE_MODE==1)
{
//频率寄存器输出方波波形
/***************************************************/
delay(100000);
write_ad9833_d16(0x2028); //设置OPBITEN位为1,方波输出模式
}
/***************************************************/
if(WAVE_MODE==2)
{
//频率寄存器输出正弦波波形
/***************************************************/
delay(100000);
write_ad9833_d16(0x2000); //设置MODE位为0,输出正弦波模式
}
/***************************************************/
}
/**************************************************/
/*********************主程序***********************/
/**************************************************/
main()
{
P0=0XFF;
P1=0XFF;
P2=0XFF;
P3=0XFF;
ad9833_data(100000,0,2,0 ); //100KHz,频率寄存器0,三角波输出
/*
write_ad9833_d16(0x0100); //复位AD9833,即RESET位为1
write_ad9833_d16(0x2100); //选择数据一次写入,B28位和RESET位为1
write_ad9833_d16(0x69F1); //L14,选择频率寄存器0的低14位输入
write_ad9833_d16(0x4000); //H14 频率寄存器0为(两行组成28位数据表示1KHz)
write_ad9833_d16(0x93E3); //L14选择频率寄存器1的低14位输入
write_ad9833_d16(0x8001); //H14 频率寄存器1为2KHz
write_ad9833_d16(0x2000); //设置FSELECT位为0,芯片进入工作状态,频率寄存器0输出1KHz正弦波形//write_ad9833_d16(0x2002); //设置MODE位为1,输出三角波模式
//write_ad9833_d16(0x2020); //设置OPBITEN位为1,方波输出模式
*/
while(1)
{
delay(100000);
}
}
正在阅读:
AD9833程序,信号发生器,正弦波,方波,三角波输出程序06-09
农业非点源污染的控制与生态调节技术04-19
美术教案103-06
永明工程监理竣工资料组卷目录02-29
数电——第六章 时序逻辑电路08-30
开题报告 上海大众汽车营销策略研究05-17
2021部编版七年级语文下册教案04-30
混凝土搅拌站冬季施工措施02-20
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 程序
- 信号发生器
- 正弦
- 三角
- 输出
- AD9833
- 方波
- Nonlinear Least Squares Optimisation of Unit Quaternion Functions for Pose Estimation from
- 2014-2019年中国太阳能电动车行业分析与发展前景预测报告
- Implementation of Multi-Linear Gain Prior to Image Compression System...(IJIGSP-V7-N3-8)
- 八年级下unit4 Section B
- 安德路甲36楼门窗施工方案
- ch6 微生物在自然界物质转化和分解中的作用
- 优化评价机制对促进高中健美操教学的实践研究
- 第十三章30年代小说沈从文
- 2005b The primate amygdala neuronal representations of the viscosity, fat texture, grittine
- 岩石破裂过程的数值模拟研究
- 东莞市主要客运站场一览表
- CAD2008第四讲基本绘图命令
- 游戏活动:好玩的气球
- 油库施工作业危险源辨识评价汇总表
- 导数与函数的极值、最值
- 有机合成化学试题 2
- 上海市崇明区小学数学六年级上学期期末数学试卷
- 药物过敏性休克应急预案演练脚本
- 汽车火灾探测研究现状及发展趋势
- 东海大学环境科学与工程学系