//***************************************************//

//函数1:           ad9851_reset()                    //

//函数2:           ad9851_reset_serial()             //

//函数3:           ad9851_wr_parrel(unsigned char w0,double frequence)//

//函数4:           ad9851_wr_serial(unsigned char w0,double frequence)//

//版本:              V1.1                            //

//***************************************************//

//                  子程序说明                       //

//***************************************************//

//函数1:  ad9851_reset()

//        复位ad9851,之后为并口写入模式

//函数2:  ad9851_reset_serial()

//        复位ad9851,之后为串口写入模式

//函数3:  ad9851_wr_parrel(unsigned char w0,double frequence)

//        并口写ad9851数据,w0为ad9851中w0的数据,frequence

//        为写入的频率

//函数4:  ad9851_wr_serial(unsigned char w0,double frequence)

//        串口写ad9851数据,w0为ad9851中w0的数据,frequence

//        为写入的频率

//需定义的位:

//ad9851_w_clk    ;

//ad9851_fq_up    ;

//ad9851_rest     ;

//ad9851_bit_data ;

//例:

//sbit ad9851_w_clk    =P2^2;

//sbit ad9851_fq_up    =P2^1;

//sbit ad9851_rest     =P2^0;

//sbit ad9851_bit_data =P1^7;

//***************************************************//

//                 写数据说明                        //

//***************************************************//

//写数据例:

//       ad9851_reset()

//       wr_lcd02_data(unsigned char x)

//       ad9851_wr_parrel(0x01,1000)

//       ad9851_wr_serial(0x01,1000)

//***************************************************//

//---------------------------------------------------//

//                   程序                            //

//---------------------------------------------------//

# include

# include

# include

sbit ad9851_w_clk    =P2^2;  //P2.2口接AD9851的w_clk脚/PIN7

sbit ad9851_fq_up    =P2^1;  //P2.1口接AD9851的fq_up脚/PIN8

sbit ad9851_rest     =P2^0;  //P2.0口接AD9851的rest脚/PIN12

sbit ad9851_bit_data =P1^7;  //P1.7口接AD9851的D7脚/PIN25

//P1为8位数据口

//***************************************************//

//              ad9851复位(并口模式)                 //

//---------------------------------------------------//

void ad9851_reset()

{

ad9851_w_clk=0;

ad9851_fq_up=0;

//rest信号

ad9851_rest=0;

ad9851_rest=1;

ad9851_rest=0;

}

//***************************************************//

//              ad9851复位(并口模式)                 //

//---------------------------------------------------//

void ad9851_reset_serial()

{

ad9851_w_clk=0;

ad9851_fq_up=0;

//rest信号

ad9851_rest=0;

ad9851_rest=1;

ad9851_rest=0;

//w_clk信号

ad9851_w_clk=0;

ad9851_w_clk=1;

ad9851_w_clk=0;

//fq_up信号

ad9851_fq_up=0;

ad9851_fq_up=1;

ad9851_fq_up=0;

}

//***************************************************//

//          向ad9851中写命令与数据(并口)             //

//---------------------------------------------------//

void ad9851_wr_parrel(unsigned char w0,double frequence)

{

unsigned char w;

long int y;

double x;

//计算频率的HEX值

x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)

//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!

frequence=frequence/1000000;

frequence=frequence*x;

y=frequence;

//写w0数据

w=w0;

P1=w;      //w0

ad9851_w_clk=1;

ad9851_w_clk=0;

//写w1数据

w=(y>>24);

P1=w;      //w1

ad9851_w_clk=1;

ad9851_w_clk=0;

//写w2数据

w=(y>>16);

P1=w;      //w2

ad9851_w_clk=1;

ad9851_w_clk=0;

//写w3数据

w=(y>>8);

P1=w;      //w3

ad9851_w_clk=1;

ad9851_w_clk=0;

//写w4数据

w=(y>>=0);

P1=w;      //w4

ad9851_w_clk=1;

ad9851_w_clk=0;

//移入始能

ad9851_fq_up=1;

ad9851_fq_up=0;

}

//***************************************************//

//          向ad9851中写命令与数据(串口)             //

//---------------------------------------------------//

void ad9851_wr_serial(unsigned char w0,double frequence)

{

unsigned char i,w;

long int y;

double x;

//计算频率的HEX值

x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)

//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz  !!!

frequence=frequence/1000000;

frequence=frequence*x;

y=frequence;

//写w4数据

w=(y>>=0);

for(i=0;i<8;i++)

{

ad9851_bit_data=(w>>i)&0x01;

ad9851_w_clk=1;

ad9851_w_clk=0;

}

//写w3数据

w=(y>>8);

for(i=0;i<8;i++)

{

ad9851_bit_data=(w>>i)&0x01;

ad9851_w_clk=1;

ad9851_w_clk=0;

}

//写w2数据

w=(y>>16);

for(i=0;i<8;i++)

{

ad9851_bit_data=(w>>i)&0x01;

ad9851_w_clk=1;

ad9851_w_clk=0;

}

//写w1数据

w=(y>>24);

for(i=0;i<8;i++)

{

ad9851_bit_data=(w>>i)&0x01;

ad9851_w_clk=1;

ad9851_w_clk=0;

}

//写w0数据

w=w0;

for(i=0;i<8;i++)

{

ad9851_bit_data=(w>>i)&0x01;

ad9851_w_clk=1;

ad9851_w_clk=0;

}

//移入始能

ad9851_fq_up=1;

ad9851_fq_up=0;

}

//***************************************************//

//                   测试程序1000Hz                  //

//---------------------------------------------------//

main()

{

P0=0x00;

P1=0x00;

P2=0x00;

P3=0x00;

//---------------------------------------------------//

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

ad9850c语言编程,AD9850与单片机波形生成程序及设计资料下载相关推荐

  1. ad9850c语言编程,AD9850与单片机波形生成程序及设计

    概述================================================= AD9850/AD9851模块是采用ADI应用最广泛的DDS(AD9850和AD9851)制作的 ...

  2. 基于C语言编程的职工工资管理系统项目的设计与开发

    文章目录 基于C语言编程的职工工资管理系统项目的设计与开发 一.需求分析 二.项目环境 2.1.项目创建过程 2.2.向项目添加头文件与源文件 三.职工工资管理系统模块功能 3.1.系统总体设计框图 ...

  3. 普中tft彩屏驱动程序下载_51单片机 彩屏TFT-SD例程及资料下载 有FAT 红外遥控显示图片...

    EDA365欢迎您登录! 您需要 登录 才可以下载或查看,没有帐号?注册 x 51单片机 彩屏TFT-SD例程及资料下载 有FAT 红外遥控显示图片 9 `  b( o4 r- D. g" ...

  4. 单片机c语言编程教学大纲,《单片机C语言编程》教学大纲

    <单片机C语言编程>教学大纲 课程代码:000002336 课程英文名称:Microcontroller C Programming Language 课程总学时:24 讲课:16 实验: ...

  5. 杜洋单片机C语言编程组成,8051单片机C语言编程模板

    c语言 本文由fan159147贡献 doc文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机查看. <8051 单片机 C 语言编程模板> 杜洋 2009.7 [程 ...

  6. 51单片机c语言编程100,51单片机C语言编程100例.doc

    51单片机C语言编程100例.doc 目 录实例3用单片机控制第一个灯亮3实例4用单片机控制一个灯闪烁认识单片机的工作频率3实例5将 P1口状态分别送入P0.P2.P3口认识I/O口的引脚功能4实例6 ...

  7. c8051f c语言编程,C8051F系列单片机开发与C语言编程

    C8051F系列单片机开发与C语言编程 维普资讯 http://doc.xuehai.net 雎 A 21进行控制,这样可以选择不同的地址,进而控制的读写. S D1 5 E 6对应的内存和寄存器. ...

  8. 单片机的c语言编程教程 pdf,单片机C语言编程教程.pdf

    单片机C语言编程教程 PIC C 11.1 PIC C C C PIC C C PC PC PC C C PIC C PIC Microchip PIC C PIC C Hitech CCS IAR ...

  9. 用C语言编程实现矩形波信号,信号与系统综合设计性实验

    信号与系统综合设计性实验 傅立叶变换性质 实验设备 硬件 电脑软件 MATLAB 实验目的 掌握MATLAB的基本使用方法 掌握MATLAB环境下信号表示及产生方法 掌握MATLAB环境下傅立叶变换方 ...

最新文章

  1. 华人博士生首次尝试用两个Transformer构建一个GAN
  2. 三代测序关键计算技术开发及应用
  3. HTML用a标签出现404,404.html
  4. OpenCASCADE:形状愈合之修复工具
  5. 【视频回放与课件】搭上AI快车-在线公益课堂:基于移动应用的人工智能开发...
  6. mysql 区间/替换/自增/where与having/字段运算/关键词/修改字段
  7. LeetCode 150. Evaluate Reverse Polish Notation
  8. 如何利用数据挖掘结束单身
  9. React Natvie Fetch工具类
  10. 103页PPT带你从浅到深了解什么是PMP项目管理(全)
  11. 基于LM2733升压电路设计
  12. 电力拖动自动控制系统_专插本专业全面分析:电子工程及其自动化
  13. 【Jenkins】的四种插件安装方式
  14. 什么是编程语言,语言之间的区别
  15. Layui数据表格每一行动态显示倒计时
  16. ArcMap导入数据到ArcSDE报000597或者000224的错误
  17. 我的世界java版红石电梯_《我的世界》红石电梯建造教程
  18. 宽依赖和窄依赖_Spark RDD的宽依赖和窄依赖
  19. iOS单元测试之接口测试
  20. Mol文件和SDF文件介绍

热门文章

  1. 智慧校园管理系统让校园多一份平安
  2. 第六周周工作总结及计划表
  3. 用友erp同步输出文件服务器拒绝,用友系统备份帐套,文件拒绝访问怎么办?
  4. 如何去掉PNG的Alpha通道
  5. JavaScript 数据结构——树
  6. 正则表达式------基础
  7. SQL截取字符串合辑
  8. 在线 Go 语言教程 —— Go 语言之旅(gotour)
  9. 用php制作网页留言板的分页
  10. can总线rollingcounter_请问什么是汽车CAN通信中报文中信号checksum和rolling counter,具体有什么用?为什么要加在报文中。...