找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1166|回复: 2
打印 上一主题 下一主题

基于c51的AD9854程序

[复制链接]

47

主题

223

帖子

1417

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1417
跳转到指定楼层
1#
发表于 2009-3-20 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
#include<AT89X52.H>  //晶振可以用11.0592MHZ,如果用串口的话
" F) e! ~  c& J" w, s1 _0 k                     //提示:在调试程序的时候晶振用12MHZ
  c) E3 P7 e0 s6 v# @: r$ |#define HC_573_C      P2_75 t! ?- O9 x( U4 B( D1 d, |$ D* \  ~
#define MASTER_RESET  P2_1) }+ Q( v1 E* b: \# [3 {  u$ o
#define IO_UP         P2_6
  f; f+ B# A: A* Y+ }5 L#define WRB_SCLK      P2_5# x2 }% o/ A3 j  R, r( g! Z
#define RDB_CSB       P2_4- X/ d9 K) r% o( q: k6 W/ B5 U
#define FSK_BPSK_HOLD P2_3
8 D( `) r3 ?4 e2 E#define SHAPED_LEYING P2_27 @2 r5 I5 k( j- z" L/ M& F0 Q
void  AD9854_F();
2 C8 H2 n/ C9 Lvoid  AD9854_IO_INT();- {% E3 F" @. x5 J- n
void  DLY_400MS();- U4 c. t& Z2 U- W: u3 N
void  TAB_DataWord();
2 l/ `" n+ Z4 d4 bvoid  F_DataWord();
3 M, P4 z2 i- R- h* ?6 }$ |; T8 Dvoid  V_Int();
2 X/ M% `; R1 j' f) h! Runsigned char temp;
6 P. s( R2 [1 c: L, \7 N* c//unsigned char UPFLAG;( w* X1 z5 c* j7 i: x
unsigned char TAB_Data[40];0 i  w0 j0 K9 m/ |/ J
unsigned char F_Data[6];
; o1 j1 e& A# Q: K  E+ yvoid main()
4 c1 ^, t9 [" e  \9 D5 v, Q { $ F& Z5 ?* ^; ^% P8 ^, H
V_Int();  G' `; w2 v; Y
while(1){
' [6 M  c- r( U" u5 I% Z! t TAB_DataWord();
. Y! s/ E2 |* p; Q0 n$ N/ x7 h F_DataWord();) k& X# v3 l# _" ?
  while(1)8 b- r$ ~7 {; m9 k! s; _& |
    {
8 y5 m" z" K. Y6 R$ v    if(!P1_0)3 v. m5 v( A+ T
    {
( D: N3 B2 M1 Q& m  e& D% \    AD9854_F();) c& P0 y+ K# E3 |# E: V1 U% {
    }  4 J, |) f' M% A' W5 V* H) ^) z& [  g
    if(!P1_1), U, U% m3 Y" U
    {
! Z' A* T4 [. w* s3 \- t; c- F    AD9854_IO_INT();: D, O4 ^8 p3 B, ^
    }, ]+ K5 a- y  L$ \7 t* U
if(!P1_2)$ }; e/ r+ {! V8 Z! l
{
* L1 ^1 c' |  f. V    MASTER_RESET=1;
# }7 j$ X/ }8 S% T( Y7 t        }
( e$ q1 Q' L5 c" i' l5 Y   SHAPED_LEYING=1;7 e# L. h3 C2 P; P
   MASTER_RESET=0;
% G+ \. ~; l! E   HC_573_C=0;# l0 D: b% e" A$ ]0 U
    }* l3 t, Z2 G- L/ ~1 @& }4 Y
                      }% R& E4 }/ k' X& y5 ]
   }5 \* q$ V! n. f* b6 j1 b: M/ ~
/***********************************************************************************************/# H8 E! k, \7 u4 w$ i" s
void TAB_DataWord()
( y, @8 R4 Q" K{
0 ]! n8 Q$ L0 U" k1 } TAB_Data[0]=0X00;
6 Y/ U4 M4 T3 K0 [) a0 z* \1 g TAB_Data[1]=0X00;       //00H Phase Adjust Register #1 <13:8> (Bits 15, 14 don’t care) Phase #1 相位为0
0 o/ {1 F) c& o/ o    //01H Phase Adjust Register #1 <7:0> 01H4 q) E4 h1 L6 S9 \
TAB_Data[2]=0X00;  //02H Phase Adjust Register #2 <13:8> (Bits 15, 14 don’t care) Phase #2 相位为0, X% G! i/ X: J+ e& d3 X' B  c
TAB_Data[3]=0X00;       //03H Phase Adjust Register #1 <7:0> 03H
$ h$ L* E' A, E     
8 H) ~9 u4 Q5 V- a TAB_Data[4]=0X00;  //Frequency Tuning Word 1 <47:40>//0000431BDE83        
8 Y7 [2 q2 t. y6 M TAB_Data[5]=0X10;  //Frequency Tuning Word 1 <39:32>
7 L  W' c9 q  a* Q TAB_Data[6]=0X43;  //Frequency Tuning Word 1 <31:24>
) x) h/ [) O5 M% r TAB_Data[7]=0X1B;  //Frequency Tuning Word 1 <23:16>
3 T" C* p" W" b# m8 X. H TAB_Data[8]=0XDE;  //Frequency Tuning Word 1 <15:8>
+ j6 B. g; ~1 ]* a9 o) _ TAB_Data[9]=0X83;       //Frequency Tuning Word 1 <7:0>4 _% p6 w, \. i
  " `! s' v4 C, q
TAB_Data[10]=0X00;  //Frequency Tuning Word 2 <47:40
9 Z/ A- p7 s" X! r3 l, J* Z. | TAB_Data[11]=0X00;  //Frequency Tuning Word 2 <39:32>
, O% r  T( P2 y7 Q& j TAB_Data[12]=0X43;  //Frequency Tuning Word 2 <31:24>
( Q& H5 x3 d3 D TAB_Data[13]=0X1B;  //Frequency Tuning Word 2 <23:16>
" ]$ ~% Y, E$ i: J. L" n TAB_Data[14]=0XDE;  //Frequency Tuning Word 2 <15:8>/ i8 A) p9 l- z& s  x
TAB_Data[15]=0X83;  //Frequency Tuning Word 2 <7:0> //500KHZ
2 Y; R- \6 j% d TAB_Data[16]=0X01;  //Delta Frequency Word <47:40>- q% s  @& p% E; D  ^
TAB_Data[17]=0X47;  //Delta Frequency Word <39:32>
  C7 c9 Z" B, X* ]1 M: \8 S TAB_Data[18]=0XAE;  //Delta Frequency Word <31:24>7 O5 Q; ~2 ^! a/ T3 E' t2 N% c, M2 X
TAB_Data[19]=0X14;  //Delta Frequency Word <23:16>- a+ _% n0 r; v* Y; j- Q4 H
TAB_Data[20]=0X7A;  //Delta Frequency Word <15:8>' p' r. G" `+ x! \( g0 v
TAB_Data[21]=0XE1;  //Delta Frequency Word <7:0> 三角波  //频率为04 t% s# t& h+ b9 p% Q
TAB_Data[22]=0X00;  //Update Clock <31:24>* w  O2 S  ?4 e2 F3 B( Z
TAB_Data[23]=0X00;  //Update Clock <23:16>
' Z+ f2 L* s% \4 S& jTAB_Data[24]=0X00;  //Update Clock <15:8>
8 G: @/ H7 l; i1 b( KTAB_Data[25]=0XF0;  //Update Clock <7:0>         //系统出现寄存器更新信号reg. Int Update Clk.=0;外部更新
1 b0 z" E) Y/ h% OTAB_Data[26]=0X00;  //Ramp Rate Clock <19:16> (Bits 23, 22, 21, 20 don’t care)3 T4 V; h; u7 u! B: m6 f
TAB_Data[27]=0X00;  //Ramp Rate Clock <15:8>
& }7 V8 p/ O! O  S( R* C6 c  iTAB_Data[28]=0X00;  //Ramp Rate Clock <7:0>
, s. u* b5 N6 z3 ~TAB_Data[29]=0X00;  //Don't Care(0),Don't Care(0),Don't Care(0),Comp PD(0),Reserved_Always Low(0),QDAC PD(0),DAC PD(0),DIG PD(0).
/ E$ V% I. g  Y4 D) ?9 w& }TAB_Data[30]=0X60;       //Don't Care(0),PLL Range(1),Bypass PLL(1),Ref Mult 4(0),Ref Mult 3(0),Ref Mult 2(0),Ref Mult 1(0),Ref Mult 0(0).
# A2 o4 c6 C$ BTAB_Data[31]=0X00;  //CLR ACC1(0),CLR ACC2(0),Triangle(0)(三角波),SRC QDAC(0),Mode 2(0),Mode 1(0),Mode 0(0),Int Update Clk(0). 注意
+ Q. v, \6 _2 R, U* e* sTAB_Data[32]=0X40;  //Don't Care(0),Bypass_Inv_Sinc(0),OSK EN(0),OSK INT(0),Don't Care(0),Don't Care(0),LSB First(0),SDO_Active(0)./ A" @! w! S( P6 k0 L7 ]
TAB_Data[33]=0X00;  //Output Shape Key I Mult <11:8> (Bits 15, 14, 13, 12 don’t care)7 |; |$ e- d1 U' b5 W5 g2 y
TAB_Data[34]=0X0F;  //Output Shape Key I Mult <7:0>
! h$ a! o& C/ _; k                       
" ]( z2 V' x+ V- K2 v" UTAB_Data[35]=0X00;       //Output Shape Key Q Mult <11:8> (Bits 15, 14, 13, 12 don’t care)
4 K8 g, C( f! WTAB_Data[36]=0X0F;       //Output Shape Key Q Mult <7:0>
9 j% }$ H; U9 O, s$ Q- a% l0 f) r: F" h+ yTAB_Data[37]=0X0F;       //Output Shape Key Ramp Rate <7:0>
0 }4 j; ^2 F$ N, u, \: q+ U
' L* ^+ Q* y5 O3 H; \TAB_Data[38]=0X00;       //QDAC <11:8> (Bits 15, 14, 13, 12 don’t care)
3 Z3 ~* c# i. q/ g5 D* H7 ^TAB_Data[39]=0X0F;       //QDAC <7:0> (Data is required to be in twos complement format)2 m9 J5 c1 A1 x7 h+ O" e' i+ w8 n
}
  h, f+ @; L3 p5 t0 j! Q( |/**********************************************************************************************/
9 _: Y  S4 t# ~5 Z# R+ Tvoid F_DataWord()
( V1 J( R3 j0 m+ K2 x) e{
6 e  w6 w: X. r3 p F_Data[0]=0X00; //Frequency Tuning Word 1 <47:40>//00029F16B11C//0000A7C5AC47
) z  l. p- m3 J& U) `5 | F_Data[1]=0X02; //Frequency Tuning Word 1 <39:32>% [1 R( l# d! {
F_Data[2]=0X9F; //Frequency Tuning Word 1 <31:24>8 W# W6 ^* G4 @' T
F_Data[3]=0X16; //Frequency Tuning Word 1 <23:16>
$ B: s+ H6 L2 u) _; y* R F_Data[4]=0XB1; //Frequency Tuning Word 1 <15:8>
- p0 q: x  d# F/ M  U1 f: n F_Data[5]=0X1C;        //Frequency Tuning Word 1 <7:0> //: y3 C: C& [  d3 ]$ y
}
5 E' e  |: C8 A( G# B1 C; R/***********************************************************************************************/4 C3 @' N/ t+ Y- G) p- S1 c0 U
void  AD9854_F()
) _2 R; q# f- j9 Z {   
8 ~/ C+ y  g9 s6 I4 @$ s  unsigned char i;           / r0 B2 p5 l7 T
  unsigned char tempf;  //   HC_573_C=0 ;选通
' f6 }, h* v6 Y0 v; Y+ j6 A  MASTER_RESET=0;0 H+ K7 r& j" M; X4 J- x
  RDB_CSB=1;
7 I. K' G0 K& s9 u1 `  WRB_SCLK=0;
/ [7 S9 c, P* m& O- |, l  U- p  IO_UP=0;
4 K  f' w" }% ~7 O) V  tempf="4";. k: a& T- ~% N2 `6 `+ A4 y( O
  for(i=0;i<6;i++)' j4 |9 s7 N" x: }4 m# f) s. J) C
{     / X$ h' [6 n  l4 u3 |& f
  HC_573_C=1;          //选通地址
: w! V# q% j; u7 W  P0=tempf;
" z, |* s$ j9 W; u! O  HC_573_C=0;          //关闭HC573- M. P, A4 f0 Q( b
  ACC="F"_Data[i];    + s( {9 P! Z5 o" u7 c3 u9 R
  P0=ACC;     
) T* f! k/ R; P' g- e0 ]* u  WRB_SCLK=0;
. R/ l: }( ^9 H( G  WRB_SCLK=1;
- F7 T( W' M, G% \  tempf++;2 t5 r' H/ d. k. w
          }     9 T; \5 H! _9 o* u/ t
/ n3 K; ]. M* c3 h
  WRB_SCLK=1;8 D) T. m; w' J2 J3 v
  
3 p/ W  O, D( Q7 {4 I) h, h5 j  IO_UP=0;5 V5 R, m6 \* Q9 N
  IO_UP=1;             1 R3 U$ x  [4 ~; E9 Z7 A
  }   
4 Z9 b' ~! b7 h; F! C6 M' F" _! P& C/************************************************************************************************/
  T+ A; i  O$ x0 X: ~- Q% \void AD9854_IO_INT()
2 t  l; }# y8 {) O. ]{
4 p  H2 n! X3 u1 E  g9 }  unsigned char i;2 A, H5 c& G4 l
  DLY_400MS();
' o5 {/ M1 W2 e; r  MASTER_RESET=0;- Q+ N  ~; o' S! s' r
  MASTER_RESET=0;. E4 m5 t9 O3 h" z8 L
  FSK_BPSK_HOLD =1; //多功能管脚8 p6 J5 s- ^: r7 `8 a2 a
  SHAPED_LEYING =1;     //Must First Be Selected in the Programming Control Register
6 N0 {2 I) m! _5 Y* B1 v& t          //to Function. A logic high will cause the I and Q DAC outputs 3 g1 D: \% o( U! c6 `8 U2 U
   //to ramp-up from zero-scale to full-scale amplitude at a preprogrammed
( J( N: Z4 ~- ^. v, T# M7 q& T5 X   //rate.Logic low causes the full-scale output to ramp-down $ D& l6 h- X$ r. c3 g; [, N
          //to zero-scale at the preprogrammed rate.: c* o; K2 u. w+ Q! D* O
  RDB_CSB=1;            //Active LOW. This pin is shared with RDB when
: y1 ]+ c4 M& R- g  WRB_SCLK=0;           //并行写数据时钟.低电平有效
# ~4 D+ E  H) ?# @  IO_UP=0;              //数据写入准备, P2 f( j: t6 M7 I
  temp="0";         //表格首数据地址
8 J& T/ T1 x; d! I3 l          //AD9854 寄存器首地址
. O0 y% x* ]+ V9 Y/ _  for(i=0;i<40;i++)
2 [) ?  p7 |# z" T: m% [$ E: \ {  + c, h6 ~' G" U4 ?: f
  HC_573_C=1;0 Z8 t: b9 `4 Q( x, q7 \7 h( O2 S; e
  P0=temp;  //送地址
" f2 g4 P" ?2 O- l+ _  _  HC_573_C=0;# R7 f6 I+ Z* Q+ T, r
                //取对应地址的数据
' \4 ?5 U5 x- [* o, y( q  ACC="TAB"_Data[i];! J, b2 y! Y. f
  P0=ACC;& v6 V  B0 l7 L6 ]! A0 t% p  G
  WRB_SCLK=0;4 m  L4 N( X  E7 c& i) _* D& t7 m
  WRB_SCLK=1;
* {1 o# n& u. l5 E- a  temp++;
( T7 w- D3 j. Q7 U0 E: `  }" T/ Q! q# V2 k
  WRB_SCLK=1;         //关闭数据接收. o: B( f& {- A! M, o; v& Z" [
  IO_UP=0;0 C0 W- J" g5 l, M$ }) D
  IO_UP=1;: x5 v6 X, x& `  C
   }
1 A) k  V: P( `+ I+ l/**********************************************************************/) D: \( A# R5 W- z: _3 Y; Y: d0 p
void V_Int()4 J& Z$ U$ B* `: V
{         
: G* v. [. Q; C) S0 @  unsigned char tempf;  //   HC_573_C=0 ;选通
, @: O$ N8 ~9 Y: d9 \! E$ g  MASTER_RESET=0;2 Z! H2 [3 d+ n/ B1 A" e+ W9 g
  RDB_CSB=1;
% _, O" W. D+ n  WRB_SCLK=0;
. \& J9 W' `* v' G( w, P8 c0 l8 x' n  tempf="0X1F";    7 S! C2 J( v6 s
  HC_573_C=1;          //选通地址
/ r$ o; r( D0 W0 X+ P  P0=tempf;
. [3 H+ i9 l+ x4 ?  U4 Y6 Y  HC_573_C=0;          //关闭HC5732 i3 {" Z2 x' _! c6 R0 Q9 `
  ACC="0X00";   
# F1 O6 T* t; [  E5 X) O1 `  P0=ACC;     ) X- K" c! V& ~$ b3 R5 c* U
  WRB_SCLK=0;0 R* Z7 d& w# E9 c" ?6 L) @
  WRB_SCLK=1;
6 w0 F% l! a: u" ]; L+ v* j) ~  DLY_400MS();
) T. o2 ]- _% _" x# O# e  WRB_SCLK=1;5 @% L! s1 h$ u/ f
  DLY_400MS();            
. \% O1 R5 t0 r! K" P  }    ; O9 Z( D- n7 n) [& I1 x
7 V% |+ j' ?1 `" D7 @6 F+ f+ D* }
/**************************************************************************/
% u, }5 m! j* ?( M8 o; Bvoid DLY_400MS()
- ?% L, B/ y/ H2 y{ " ]4 n5 C, x/ f
unsigned char i,j;
- w7 N0 ~8 [% I% k2 |' ^9 V% U  R for(i=0;i<90;i++)
$ B5 d+ `0 l2 i, Z; y  p  G" U {- G2 Q1 O  z/ \. l, K& _/ H
for(j=0;j<60;j++);- i5 Y, ?) T, ]' k
}
# Y1 x* z: B" b, R* o }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

45

主题

175

帖子

-8969

积分

未知游客(0)

积分
-8969
2#
发表于 2009-3-25 11:40 | 只看该作者
ss

2

主题

61

帖子

-8970

积分

未知游客(0)

积分
-8970
3#
发表于 2010-2-13 20:42 | 只看该作者
没原压缩代码啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-5-26 09:05 , Processed in 0.056627 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表