找回密码
 注册
关于网站域名变更的通知
查看: 1592|回复: 2
打印 上一主题 下一主题

基于c51的AD9854程序

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
#include<AT89X52.H>  //晶振可以用11.0592MHZ,如果用串口的话5 X# Y- A( K. K5 n
                     //提示:在调试程序的时候晶振用12MHZ( `) s2 \( j0 Z( ?
#define HC_573_C      P2_71 w2 D. V: I- z6 f+ m9 Z# P
#define MASTER_RESET  P2_11 J  b) S& g, y- a3 {% l
#define IO_UP         P2_6$ [% O8 {1 T6 V
#define WRB_SCLK      P2_5
/ t, B# A* R9 X+ f/ y; L#define RDB_CSB       P2_4
( W7 g3 ~0 ~# `0 u! ~" y- X#define FSK_BPSK_HOLD P2_3+ b) ~+ O) K% q/ B/ E' C5 a
#define SHAPED_LEYING P2_2
4 ]5 Y- `/ ^+ f* P& |. Uvoid  AD9854_F();1 @6 c& d+ k, y! g3 D
void  AD9854_IO_INT();% Y5 F  F! `: A
void  DLY_400MS();
7 g: ^! U( e$ n0 P( K, ?+ L4 ivoid  TAB_DataWord();
/ B2 X( w3 N& p6 t# t$ ], t7 pvoid  F_DataWord();
& P  _, N& R. C0 e9 s4 zvoid  V_Int();* N7 Z/ B" U+ P6 r- `
unsigned char temp;
1 C7 R& l4 `: ]: y. n//unsigned char UPFLAG;
) k2 G- H+ j+ N8 t5 m" V1 Z* M9 nunsigned char TAB_Data[40];
. B4 H: K5 Y# v: g' O7 x- Qunsigned char F_Data[6];
2 q  U! W6 }- q; [, ovoid main()1 D7 I. x: F2 Q
{ , s8 U7 ~5 G; Y
V_Int();
' N  @7 O% E9 E/ O  \8 V* C( {3 F while(1){' P9 }8 c6 p% z) R/ ^3 e% L( w
TAB_DataWord();
- ~% x8 J  i6 o3 D F_DataWord();5 N0 w6 a. h  |; P+ ?' X+ E& O
  while(1): U: X; m2 l8 b3 S4 L8 s
    {! N( b1 _4 V$ F+ I: B
    if(!P1_0)8 C0 c. l$ ~% r& ]4 h! n
    { 4 u8 I: M! M! l0 Y
    AD9854_F();1 x% l$ k3 p7 C1 W# U' W3 n7 r
    }  ) b! y2 o. w* D5 W9 |2 y
    if(!P1_1)$ Y8 i4 s  }4 y) O% }  S
    {
: K1 t0 E+ V% I$ r/ M1 o    AD9854_IO_INT();/ B+ ]* }  C8 c& j
    }
# y' J- V8 @4 C+ z6 k6 P if(!P1_2)
% G5 G8 K# g4 A6 i! ~ {
3 p) x( M1 n7 b' {& [    MASTER_RESET=1;& n+ r$ P7 F0 A/ T6 [2 G  D
        }6 U0 w; ], N5 g' S1 H: L$ s) f
   SHAPED_LEYING=1;
& S8 \) F( S1 a+ O/ [7 B5 Z/ m   MASTER_RESET=0;
9 E) c3 H: d; V/ x* d   HC_573_C=0;
0 u7 c: d% m5 I" B3 a( m    }
+ F; |% H2 {& K- p                      }
. J0 U0 c+ e$ x: @. e4 e   }
, Q( q' u. Q3 \1 u; }' V/***********************************************************************************************/
' n  l3 \" g* Z9 P7 l. X5 o( dvoid TAB_DataWord()
: E2 Z! Z$ K' ?{5 G; V4 n0 q+ t. C
TAB_Data[0]=0X00;% |4 `% Y( A8 Y' }
TAB_Data[1]=0X00;       //00H Phase Adjust Register #1 <13:8> (Bits 15, 14 don’t care) Phase #1 相位为0
$ t4 W9 ~9 j, N* U" e. ^    //01H Phase Adjust Register #1 <7:0> 01H
+ g, |) x3 w3 t! ]" g TAB_Data[2]=0X00;  //02H Phase Adjust Register #2 <13:8> (Bits 15, 14 don’t care) Phase #2 相位为06 m2 E! I7 W  v( u. g6 x5 |( v" G
TAB_Data[3]=0X00;       //03H Phase Adjust Register #1 <7:0> 03H( g( s" ]1 c1 Y" \( Z" t! q. W
     / G& N/ u+ P, Z
TAB_Data[4]=0X00;  //Frequency Tuning Word 1 <47:40>//0000431BDE83        ! V+ O1 Q8 f; T. ~5 K
TAB_Data[5]=0X10;  //Frequency Tuning Word 1 <39:32>: n4 M9 w5 j0 ?9 ~) M9 K7 J
TAB_Data[6]=0X43;  //Frequency Tuning Word 1 <31:24>' |& p& c! r* N/ Z
TAB_Data[7]=0X1B;  //Frequency Tuning Word 1 <23:16>
. E4 h8 p2 ?6 B6 t; p% p TAB_Data[8]=0XDE;  //Frequency Tuning Word 1 <15:8>6 {( k, o, q5 ^
TAB_Data[9]=0X83;       //Frequency Tuning Word 1 <7:0>
3 {. a+ v( t$ B7 r  " K! y4 ~1 T- W7 ^
TAB_Data[10]=0X00;  //Frequency Tuning Word 2 <47:40
4 M& X1 a" ^3 p5 J TAB_Data[11]=0X00;  //Frequency Tuning Word 2 <39:32>3 S! ?9 w( L# A! V
TAB_Data[12]=0X43;  //Frequency Tuning Word 2 <31:24>
& [" Z& T2 [+ a& G! z TAB_Data[13]=0X1B;  //Frequency Tuning Word 2 <23:16>, h8 z# M9 K* ]3 h0 v- p
TAB_Data[14]=0XDE;  //Frequency Tuning Word 2 <15:8>
" o8 C/ [: V3 |3 a1 S' L1 L- b4 T TAB_Data[15]=0X83;  //Frequency Tuning Word 2 <7:0> //500KHZ
4 P& a( y, n  @/ k; y) E# d5 V2 L TAB_Data[16]=0X01;  //Delta Frequency Word <47:40>& Q0 p3 C3 v  _! ?- P
TAB_Data[17]=0X47;  //Delta Frequency Word <39:32>' ~, ~: _, [$ }# }5 M, T
TAB_Data[18]=0XAE;  //Delta Frequency Word <31:24>1 e8 z" |) C( \& Y
TAB_Data[19]=0X14;  //Delta Frequency Word <23:16>
1 |# @& v/ w( _- s( o, t; @& ~  Z TAB_Data[20]=0X7A;  //Delta Frequency Word <15:8>
$ ]; X$ i, s" [ TAB_Data[21]=0XE1;  //Delta Frequency Word <7:0> 三角波  //频率为0
; y: Y  Z/ Q! LTAB_Data[22]=0X00;  //Update Clock <31:24>
0 ~6 ?4 W+ c- s$ U4 `! p7 ^TAB_Data[23]=0X00;  //Update Clock <23:16>0 ?- p6 y& D9 V1 q% C
TAB_Data[24]=0X00;  //Update Clock <15:8>: k! Z% q* }7 G0 D
TAB_Data[25]=0XF0;  //Update Clock <7:0>         //系统出现寄存器更新信号reg. Int Update Clk.=0;外部更新. x, D. T. U. [; v# F8 S8 m8 _& W( n
TAB_Data[26]=0X00;  //Ramp Rate Clock <19:16> (Bits 23, 22, 21, 20 don’t care)# `; m) @7 h  B# Z
TAB_Data[27]=0X00;  //Ramp Rate Clock <15:8>- \7 t7 O1 \, h7 i4 J7 p
TAB_Data[28]=0X00;  //Ramp Rate Clock <7:0>
7 R; i, U# K+ z8 u/ @. fTAB_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).
; N5 [0 H+ ?; f1 ]7 QTAB_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).
( O) |% P: Q) g) MTAB_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). 注意: a+ h/ C) [; U6 ~
TAB_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).
  h, y0 C  t# G7 W/ V7 h, G7 vTAB_Data[33]=0X00;  //Output Shape Key I Mult <11:8> (Bits 15, 14, 13, 12 don’t care)+ l( B* |% L' T+ T1 Y8 E
TAB_Data[34]=0X0F;  //Output Shape Key I Mult <7:0>
1 f  K* }+ @. x                       . R" y' k+ {5 d" w
TAB_Data[35]=0X00;       //Output Shape Key Q Mult <11:8> (Bits 15, 14, 13, 12 don’t care)2 o: D- p' c' u6 C6 {- W3 F5 I
TAB_Data[36]=0X0F;       //Output Shape Key Q Mult <7:0>
- S! p2 p) ^+ hTAB_Data[37]=0X0F;       //Output Shape Key Ramp Rate <7:0>
% H+ ]" q% t4 e! E. i& ~ + @- `  q9 Y3 O
TAB_Data[38]=0X00;       //QDAC <11:8> (Bits 15, 14, 13, 12 don’t care)& `7 \$ e: b. D* {
TAB_Data[39]=0X0F;       //QDAC <7:0> (Data is required to be in twos complement format)
; l5 Z7 J" ?; I}
5 s1 k6 r9 X/ I" A7 j0 ^5 L4 ]/**********************************************************************************************/& M/ T3 x7 o$ s1 I2 c" P& ]- n' p
void F_DataWord()
! s3 y3 W4 J) E) q- O6 F2 U/ a! d{
0 ?, O9 _: \3 u; B8 P' k F_Data[0]=0X00; //Frequency Tuning Word 1 <47:40>//00029F16B11C//0000A7C5AC47
& i8 N. k; R# o5 ^; I) [, |6 v+ J. m' q F_Data[1]=0X02; //Frequency Tuning Word 1 <39:32>' f' }. e1 ]* S) \5 U5 L8 Y* i2 F
F_Data[2]=0X9F; //Frequency Tuning Word 1 <31:24>
( F' @! U, r3 Z2 q F_Data[3]=0X16; //Frequency Tuning Word 1 <23:16>
; l6 x; m* T2 t4 p: w F_Data[4]=0XB1; //Frequency Tuning Word 1 <15:8>
3 V) s: K( g" | F_Data[5]=0X1C;        //Frequency Tuning Word 1 <7:0> //+ L5 V+ k& P1 m* n9 k
}/ R. c$ ]+ K. e$ ]! N
/***********************************************************************************************/
! N8 S4 S6 {5 b4 _# o& B; _/ ~void  AD9854_F() 8 [7 g+ J, n, G! c7 s$ u
{   0 \+ h  D1 o9 n" o' c
  unsigned char i;           3 L( }1 j2 z' `7 Z1 |
  unsigned char tempf;  //   HC_573_C=0 ;选通
. X( U$ B  i( O; L" Y; G  MASTER_RESET=0;
; a7 F5 Z/ s5 c- U2 e  RDB_CSB=1;
& I$ C# E& F# \4 k' z8 G# f! \  WRB_SCLK=0;
( G0 D1 J; H; E6 B1 {+ `+ Q* I  IO_UP=0;
+ v" z6 A" f3 ^% G4 |  tempf="4";5 g3 }/ v) q6 h/ G
  for(i=0;i<6;i++)
4 S4 X4 r; [, w5 X, ~ {     
  u6 D! z+ M9 h  L& K% w  HC_573_C=1;          //选通地址
8 M! s: N3 F) h' ]: m  P0=tempf;
9 A" J4 S) ~: W- T: n2 x# J8 a  HC_573_C=0;          //关闭HC573
* T& {- d! w6 u9 a# z( K- Y/ t  ACC="F"_Data[i];    0 n. T$ X/ _: o4 s9 K/ u7 |! [
  P0=ACC;     
0 T- {7 g" n% C+ Q  WRB_SCLK=0;; E; {( j$ A# q( J
  WRB_SCLK=1;, I: U) P2 S- g6 t; K* S: }
  tempf++;8 O5 S4 i/ C7 ~
          }     
: s3 p7 B! D9 [* k: t8 _ 2 j  x, t4 a7 k* h5 \1 r  p
  WRB_SCLK=1;
5 u( V5 `! M( I; e) p  & j  {7 p& [0 g; ^; _# b  ^) }
  IO_UP=0;
* }3 H  g( @# J$ F0 s+ ?; T/ j: _# p  IO_UP=1;             # ]( U2 B$ d3 [; y7 a, G2 H" U; l
  }   
8 O7 P5 E+ H) `4 X: l& Q/************************************************************************************************/
* X/ `0 `% D6 l( e8 I, V5 S& m, Qvoid AD9854_IO_INT(): h0 u; S$ i" d
{ & _% o; Y( w+ \5 B3 g( l+ {" j
  unsigned char i;7 R$ j( {, [6 j
  DLY_400MS();
2 K. j" c- z5 s4 Q$ F  x  i, @5 H  MASTER_RESET=0;) e, T( Q+ E; m, [! N3 D
  MASTER_RESET=0;0 q- l2 m" C8 ^4 ~$ @3 K+ r
  FSK_BPSK_HOLD =1; //多功能管脚
/ p+ z* M! b$ n9 ~  SHAPED_LEYING =1;     //Must First Be Selected in the Programming Control Register
0 G7 p; a3 K0 L; m& a3 u) `          //to Function. A logic high will cause the I and Q DAC outputs 1 Q* U$ M5 j# @: B" @2 n) C2 h( A: w6 p
   //to ramp-up from zero-scale to full-scale amplitude at a preprogrammed
3 R  e$ g# C( }6 D   //rate.Logic low causes the full-scale output to ramp-down
# V+ I9 W/ L2 h' X8 J" T& b" ]          //to zero-scale at the preprogrammed rate.
9 Q5 P$ H! y# t. S  RDB_CSB=1;            //Active LOW. This pin is shared with RDB when
& D7 s3 d2 O  y6 i( k  WRB_SCLK=0;           //并行写数据时钟.低电平有效8 {/ p8 ~/ h" X& f
  IO_UP=0;              //数据写入准备
' K. A- Q% n, k% q  temp="0";         //表格首数据地址
$ I1 p! H& A7 w% `          //AD9854 寄存器首地址, C/ g* @3 E; V; K
  for(i=0;i<40;i++)- w; h$ q- T! m/ A: k
{  
  z+ R" M3 o7 T  HC_573_C=1;
: L1 h, f; Z1 Z! W1 X. ?  P0=temp;  //送地址
+ l; T) C1 z* p2 j$ p5 D8 R3 \  HC_573_C=0;* n+ T4 u; y& N% f  e
                //取对应地址的数据0 K; e7 A- `! j+ `
  ACC="TAB"_Data[i];
3 e+ v2 N/ _4 F- v2 S# o  P0=ACC;
$ B: n( }' w( b. }! Z6 d5 [  WRB_SCLK=0;
, l4 n# j5 a! B  ?  WRB_SCLK=1;
. z: y) b  r; u+ {/ d  temp++;5 }% v  ]  o5 T
  }
! [+ {6 `  w8 x% I/ R  WRB_SCLK=1;         //关闭数据接收0 g) \8 g" S+ K6 p
  IO_UP=0;
" p( y) N8 o8 t, f7 u% g3 w- K  IO_UP=1;2 A1 R+ {) R' v
   }( R( O' Q- y0 G
/**********************************************************************/
" y) e8 u' D8 P* w& b$ T3 Q% Rvoid V_Int()$ K, N5 T5 G8 K! c
{         
1 M0 _+ Z' `# n! j% P, W3 p  unsigned char tempf;  //   HC_573_C=0 ;选通
6 X" Z9 O3 U3 c" F2 f  MASTER_RESET=0;
) f6 ^9 S9 w) J' M  RDB_CSB=1;7 [- v" J/ E6 g+ B7 U$ o/ U* Q1 y
  WRB_SCLK=0;
4 N* [1 z1 [" e  tempf="0X1F";    % S" o4 F# O/ C5 I( d$ _; ]
  HC_573_C=1;          //选通地址8 ^  N6 y( z9 E6 u0 W3 n0 c
  P0=tempf;4 R) A) ]( ]7 W) r
  HC_573_C=0;          //关闭HC573
' f& z) ?2 V  S( O  ACC="0X00";    $ ^( ~7 c% s+ X
  P0=ACC;     $ Q  I) p) J; m. |( Q
  WRB_SCLK=0;
0 @6 S/ L; Z' k4 J6 {  WRB_SCLK=1;
# S! G, B" d1 Z4 |: E& U  DLY_400MS();: I; k1 ]/ h( w+ V
  WRB_SCLK=1;; P  Y, e* y+ ~) u, h
  DLY_400MS();             . o3 o7 Z+ b- o/ N* E- U3 e
  }   
- e) p  c: B2 |! ?2 K# p
8 c- J+ s; p* ^: g1 v/**************************************************************************/" _! Y+ |& E( x  M8 m( p8 g
void DLY_400MS()8 i1 l1 v1 i! I6 p( {
{
  H0 F0 X( j6 U0 L. j4 y  P unsigned char i,j;( ~1 l  }1 }' t; P/ {6 {
for(i=0;i<90;i++)5 i& d2 t9 F. L9 o5 i& K/ F' s2 ]2 H
{4 }$ ~6 w. n6 M+ F8 k
for(j=0;j<60;j++);
  \$ N6 w8 T& z8 ~2 n3 z }
% S+ O% K2 ]/ ]! \/ P  ^2 P5 \% a9 I }

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 14:37 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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