找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1153|回复: 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,如果用串口的话
, ]6 F: F' z1 T; E+ }                     //提示:在调试程序的时候晶振用12MHZ& \2 o0 U, k, M0 k6 }, R& ]
#define HC_573_C      P2_7
5 L( c7 O. I+ c& `2 W$ B#define MASTER_RESET  P2_16 b5 F2 e9 L  w, M  S1 i  N9 a. l
#define IO_UP         P2_6
7 Y- M2 ]) D9 y+ I, ]/ m5 x#define WRB_SCLK      P2_5
) g4 \2 ^  T! i8 s& P" R#define RDB_CSB       P2_4# l+ j, {+ [8 p/ L( [6 s; ^
#define FSK_BPSK_HOLD P2_30 ^; T6 X  l( N4 T& c. o% V3 L
#define SHAPED_LEYING P2_2* M: A, Q; H7 J
void  AD9854_F();; ^, _! {, x9 v6 [/ C
void  AD9854_IO_INT();
- D$ s9 f3 L& W8 n, [8 u) ?$ Gvoid  DLY_400MS();
4 |" c- l0 O) u& m+ p1 V; Uvoid  TAB_DataWord();7 R3 Y  j) I8 a8 l" {: C$ B
void  F_DataWord();  i# X2 p2 B! i+ t
void  V_Int();) C: P8 u; F# i# ?
unsigned char temp;4 k7 `  |4 W5 ]7 q% q
//unsigned char UPFLAG;6 B9 J8 Q* ?4 J0 O7 I
unsigned char TAB_Data[40];6 A' B2 X! n# d0 e) s) J
unsigned char F_Data[6];
5 X; G" B9 U/ [% M- Hvoid main()
" |; S' t1 ~0 t0 |' S% \' N$ P {
5 D1 \0 N8 A9 T; q; z/ I! U V_Int();
4 h6 \, Z0 E( `4 d while(1){2 c- @" T2 q& @( y& v
TAB_DataWord();6 j" s+ {- f8 U- `$ O5 j2 s! @
F_DataWord();5 M! I) `! q5 |" ?8 Y
  while(1)  M6 H' Z1 S1 E3 U( w" W' u: D4 J
    {
  u3 ^- o* t; Q* M) ^    if(!P1_0)8 M& U% k# B5 R. Z# S
    { 6 l1 Q' {" f# k( }; N
    AD9854_F();# d" [- U4 C/ G
    }  
6 i$ o( c5 h& ]( C: J# r" N    if(!P1_1)
; F# _9 u+ U! S9 T( E6 t( [    {
( m' V" u# _! Z6 M$ n# ]    AD9854_IO_INT();
# j8 B; s8 W) l+ O    }4 k  L4 m* [7 n2 K" ]' |$ K( y9 k
if(!P1_2)
" |5 ~# p6 s/ Y" r% ?# { {
1 T( ^! t$ @6 n/ T    MASTER_RESET=1;
2 c0 H, W" J, ?0 [        }/ P+ R3 R6 i( E% [4 C: o. G) k  G
   SHAPED_LEYING=1;/ f1 v8 J) Y  Y4 \. f
   MASTER_RESET=0;2 W: G9 m) B# A# z
   HC_573_C=0;  ^3 s+ m' i6 ]8 P' V; p9 [) R
    }' w- t0 ?2 u8 c7 h' k+ G
                      }1 h, @# G, ]- @8 {7 `+ |7 M% r0 |  Z
   }/ [  L' v4 U7 M" |- M
/***********************************************************************************************/7 l! r4 B  w6 f  H. q. h3 d
void TAB_DataWord(): S) W: t; k9 \1 X, D% K( A+ z
{
2 l- a4 c* w- Y- w1 d1 c8 w TAB_Data[0]=0X00;
9 P6 T/ z! T  m9 y$ ~. P TAB_Data[1]=0X00;       //00H Phase Adjust Register #1 <13:8> (Bits 15, 14 don’t care) Phase #1 相位为0
9 j, P  ~% a' `, a* j    //01H Phase Adjust Register #1 <7:0> 01H
7 Q# e4 s8 W3 Y" {  A TAB_Data[2]=0X00;  //02H Phase Adjust Register #2 <13:8> (Bits 15, 14 don’t care) Phase #2 相位为0
* B+ L' ?7 F6 G( F2 y1 G/ P* q7 r TAB_Data[3]=0X00;       //03H Phase Adjust Register #1 <7:0> 03H
% N4 n; Y; w0 E; k; j     $ D! \! s( }' r# N+ Q
TAB_Data[4]=0X00;  //Frequency Tuning Word 1 <47:40>//0000431BDE83        
1 \( _4 }9 G6 X0 R) o: T; b TAB_Data[5]=0X10;  //Frequency Tuning Word 1 <39:32>% U$ V. ~0 i9 v, E0 k
TAB_Data[6]=0X43;  //Frequency Tuning Word 1 <31:24>2 f0 _* S4 t& F9 j
TAB_Data[7]=0X1B;  //Frequency Tuning Word 1 <23:16> 9 [5 t+ z+ J9 ?8 A! `! v! {8 Y
TAB_Data[8]=0XDE;  //Frequency Tuning Word 1 <15:8>' K" C9 H# V$ i  t* @' c
TAB_Data[9]=0X83;       //Frequency Tuning Word 1 <7:0>4 X0 ~# F- w" E) H# s
  
; @1 s, d1 P2 M& D$ @1 W TAB_Data[10]=0X00;  //Frequency Tuning Word 2 <47:40
5 l6 X1 c, X9 ^* V* M: B TAB_Data[11]=0X00;  //Frequency Tuning Word 2 <39:32>" b+ g) g& v! [! R( D% E4 x
TAB_Data[12]=0X43;  //Frequency Tuning Word 2 <31:24>+ Q$ Y4 W- Q% ^; A9 ~  t) E9 _# y
TAB_Data[13]=0X1B;  //Frequency Tuning Word 2 <23:16>
) v! J% y: M- b2 q TAB_Data[14]=0XDE;  //Frequency Tuning Word 2 <15:8>
2 U* w# q0 g* d0 R! s" z. J TAB_Data[15]=0X83;  //Frequency Tuning Word 2 <7:0> //500KHZ9 C7 N" d  t7 l" `' T; ~
TAB_Data[16]=0X01;  //Delta Frequency Word <47:40>5 D0 T  }$ a2 B" U1 p" o( x
TAB_Data[17]=0X47;  //Delta Frequency Word <39:32>
5 @4 i0 b& f" i7 h TAB_Data[18]=0XAE;  //Delta Frequency Word <31:24>
, B* I- c6 F+ a4 J3 r( q0 G  J TAB_Data[19]=0X14;  //Delta Frequency Word <23:16>
& d. X6 [0 _  |  c2 w6 J* ^ TAB_Data[20]=0X7A;  //Delta Frequency Word <15:8>7 s  A8 r4 {" h* c- A
TAB_Data[21]=0XE1;  //Delta Frequency Word <7:0> 三角波  //频率为0
0 C$ o8 [3 c( @( u" |# L2 @) YTAB_Data[22]=0X00;  //Update Clock <31:24>
! M; I' f9 x/ k. H( _TAB_Data[23]=0X00;  //Update Clock <23:16>& w' A) _. ]  Y- C- B$ B9 A
TAB_Data[24]=0X00;  //Update Clock <15:8>
- }6 p9 n( z( K3 C4 }$ p* y% v; Y0 G% oTAB_Data[25]=0XF0;  //Update Clock <7:0>         //系统出现寄存器更新信号reg. Int Update Clk.=0;外部更新
$ c  b. C6 L" O; \2 }0 O5 ETAB_Data[26]=0X00;  //Ramp Rate Clock <19:16> (Bits 23, 22, 21, 20 don’t care)
/ ?6 z" v4 f' RTAB_Data[27]=0X00;  //Ramp Rate Clock <15:8>
. J+ b3 Z. {+ c. N7 r3 U! U# `; {TAB_Data[28]=0X00;  //Ramp Rate Clock <7:0>6 s3 Y& F3 N/ q+ b
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).
2 K3 s+ h1 @: Q( ?6 W; ?% KTAB_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).9 \. L/ j% i* J+ k/ t
TAB_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). 注意
- r: l8 c' }( ZTAB_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).
1 z& Q8 \4 N: J* I3 bTAB_Data[33]=0X00;  //Output Shape Key I Mult <11:8> (Bits 15, 14, 13, 12 don’t care)
- V; p: ~8 ^1 ]" P- E" S- gTAB_Data[34]=0X0F;  //Output Shape Key I Mult <7:0>/ q0 {5 S/ o) Z" Z
                       ( x. X0 w! D8 X- }: f( \
TAB_Data[35]=0X00;       //Output Shape Key Q Mult <11:8> (Bits 15, 14, 13, 12 don’t care)8 g8 M$ g9 K* U) K" P
TAB_Data[36]=0X0F;       //Output Shape Key Q Mult <7:0>
5 B) D' F; _, o5 B5 yTAB_Data[37]=0X0F;       //Output Shape Key Ramp Rate <7:0>
* R8 C2 X- P+ s5 a7 E4 p* a / j( q# J' H% w
TAB_Data[38]=0X00;       //QDAC <11:8> (Bits 15, 14, 13, 12 don’t care). d# u$ A% h! n3 J' x1 [; E
TAB_Data[39]=0X0F;       //QDAC <7:0> (Data is required to be in twos complement format)
/ m) u1 M2 o2 w1 S2 f+ S2 i- r}
  j1 L# ]2 W) d- r, u/**********************************************************************************************/
* A' \" x- ~+ L0 c0 Uvoid F_DataWord()
% p2 Q7 J6 I& R: T( l5 f{
( Y- p: l% G, E" D) ]& H7 U# E F_Data[0]=0X00; //Frequency Tuning Word 1 <47:40>//00029F16B11C//0000A7C5AC47. G3 \  |; }# e1 d
F_Data[1]=0X02; //Frequency Tuning Word 1 <39:32>
. T6 W+ @4 h: m$ s# A/ H* Z( T8 R F_Data[2]=0X9F; //Frequency Tuning Word 1 <31:24>
  |4 s' `& `* D3 z+ } F_Data[3]=0X16; //Frequency Tuning Word 1 <23:16>
8 M9 g# w# b, W( [8 V' A5 y& \; x F_Data[4]=0XB1; //Frequency Tuning Word 1 <15:8>* Y) N; p% B0 d9 c. N1 i$ M
F_Data[5]=0X1C;        //Frequency Tuning Word 1 <7:0> //  ?+ k: |! M8 T5 E5 ]& F' H' ]' Q
}
! H' }/ [5 B6 _! `) o4 ~/***********************************************************************************************/: Q( W+ B# i$ Z: b
void  AD9854_F()
8 W/ Z* _& G* n& ] {   : W7 p9 O( a3 l5 Q
  unsigned char i;           4 ^( m% M. v+ ]1 d8 t0 L
  unsigned char tempf;  //   HC_573_C=0 ;选通8 ^' ^9 h  V( ?- X/ f0 \1 I
  MASTER_RESET=0;5 s. ]  c+ o  ]# H- d% I
  RDB_CSB=1;
3 q' E" F2 ]! P0 D3 R4 I' O  WRB_SCLK=0;
0 r4 x' W3 r; c* }  J' B  IO_UP=0;
" b5 A; [9 o! H0 ?0 U. S$ A  tempf="4";
; u: `" q* x% E# [: P  for(i=0;i<6;i++)
, I+ n! ]5 M8 `/ j$ Q# l# q {     ( |6 \5 _- q! @" C
  HC_573_C=1;          //选通地址
$ f+ i& d% T) r6 X6 [5 I. ^# V  P0=tempf;
. n4 q0 z# @) P& M1 I2 [  HC_573_C=0;          //关闭HC573: g5 w$ C- _3 i/ `! {3 |/ T
  ACC="F"_Data[i];   
# G; C- ?. B5 J7 W" q9 C  P0=ACC;     
/ x7 K' c  V/ s2 i; U& f  WRB_SCLK=0;1 A$ \. U: k- @, |9 F. T+ F
  WRB_SCLK=1;
8 b; P+ [# M* o# _# U  tempf++;
" P, F3 h- `" P" u" p3 r8 f          }     6 |( G: O( d# r  ]: S

; g" j8 E, {: [$ y+ x! U3 v4 ]  WRB_SCLK=1;0 Z; t  c, o# n5 y, N
  
  ^+ {: v% m) p. x+ `5 G4 U  IO_UP=0;
; u! D; C2 @# x$ G& ?  IO_UP=1;             3 i/ m% ~2 l2 S
  }   
+ ?8 s6 A7 ]) d9 O* l. r/************************************************************************************************/
; R( x7 T0 d/ o" zvoid AD9854_IO_INT()( m' {0 K/ m) P. e6 G
{
" b" q8 w" u  G# s0 `  unsigned char i;
8 t4 S1 d* f, I' G1 q1 J  DLY_400MS();
" ]6 f" l, L$ V) E" P6 L  MASTER_RESET=0;
7 L1 [' n7 F( J# V; Y, {  MASTER_RESET=0;/ ]& L. V" b2 g6 D# v  u
  FSK_BPSK_HOLD =1; //多功能管脚$ G8 o2 V4 x( H9 d* n/ Z! ~
  SHAPED_LEYING =1;     //Must First Be Selected in the Programming Control Register1 P( z" a% ^7 B
          //to Function. A logic high will cause the I and Q DAC outputs
3 |3 B( L# Y2 w; \1 z7 Z0 B   //to ramp-up from zero-scale to full-scale amplitude at a preprogrammed/ e: g2 i& B& G' N7 J
   //rate.Logic low causes the full-scale output to ramp-down * U0 i# k. H3 i8 y& N! R, B
          //to zero-scale at the preprogrammed rate.* {0 k6 R3 d1 u* M: }; S
  RDB_CSB=1;            //Active LOW. This pin is shared with RDB when; n1 k& N" D/ I. |/ t
  WRB_SCLK=0;           //并行写数据时钟.低电平有效. }' ?4 x% i* H
  IO_UP=0;              //数据写入准备
. y# @7 u5 a+ z3 U2 ]  `  temp="0";         //表格首数据地址; |. ?/ Q! R2 \' S; }- m
          //AD9854 寄存器首地址, M: B$ D2 a* c2 I; N, y
  for(i=0;i<40;i++)
2 E7 k- J4 G- v {  # q) j$ S4 ~2 r
  HC_573_C=1;
& G  f8 ]1 I7 }2 T0 I5 }  P0=temp;  //送地址 ! }  a1 Y5 u2 H
  HC_573_C=0;
6 J& e% t6 i+ q( a% @                //取对应地址的数据
' t/ V" M" x4 z6 e$ |- P  ACC="TAB"_Data[i];
5 J3 T, U3 `& M  P0=ACC;
# n% z3 r& w+ J+ A+ L5 h% G5 R" Q  WRB_SCLK=0;
  {* f7 T' p; t4 Y% B3 Z- i  WRB_SCLK=1;: ?/ J1 m2 Q) L, T4 ~+ m# q
  temp++;
( s8 O( o) p5 b! }9 x  }+ @1 f9 Y4 {! u# S* h& G# |
  WRB_SCLK=1;         //关闭数据接收% X2 S7 ~& R  u7 ^: w* T% T
  IO_UP=0;, s) d$ V# o; e' J
  IO_UP=1;5 E* D  e( f6 T
   }
% G" @3 O9 a5 U9 G# r/**********************************************************************/
4 v/ h( _% D- ~2 W: R( U4 ?0 hvoid V_Int()
5 {7 w! `: ?, Y- y; R$ f9 w {         
; M& V! ~' j0 c' @6 G; c* n  unsigned char tempf;  //   HC_573_C=0 ;选通6 N+ v; [! y) V7 r/ y) `0 S( v1 N
  MASTER_RESET=0;! f' T6 a* i5 _
  RDB_CSB=1;
; x" \: E- B% w9 t  WRB_SCLK=0;+ `! v) @  e7 w0 m; s: m
  tempf="0X1F";    . x4 l  `% R0 s: i# [, c- n: i
  HC_573_C=1;          //选通地址% t% {3 S  `) y' A5 W% y8 n
  P0=tempf;2 d& p4 _7 H# W7 D
  HC_573_C=0;          //关闭HC573
* D( W: Q% I' {  ACC="0X00";    # a7 j6 `. |1 s* H
  P0=ACC;     4 h% Y8 \$ H5 H5 X, T% o
  WRB_SCLK=0;/ k# g) h4 N5 o2 {3 t0 Q4 ]
  WRB_SCLK=1;4 b- p, P8 V" P% ]# m1 w2 b0 {
  DLY_400MS();) _+ Z. Z) \2 c0 o/ k9 N
  WRB_SCLK=1;
+ U! H0 Z* ^2 Y- k" c  n  DLY_400MS();            
8 E' D3 m/ l& K$ E9 t% i& X; o  }   
5 A! l* l5 O6 S( g+ a
" M  A. R6 Z3 B. d3 Y/**************************************************************************/9 r* X/ e; _1 e9 m$ [& A3 w
void DLY_400MS()  z& Z3 G& c$ s8 j' |  c
{
/ x6 k# S4 Y0 C6 g unsigned char i,j;- _! u- @9 R6 D# W) z1 E
for(i=0;i<90;i++)  [( Z0 D; t2 P0 V, K
{
# f& x* l# b2 T4 q- p: M: A for(j=0;j<60;j++);9 s' ~; F9 q7 O* e) k1 F, t, O
} 0 ?# E, c  N- r& Q$ p1 {! ?  ]! E. k
}
分享到:  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, 2024-10-23 17:25 , Processed in 0.056903 second(s), 33 queries , Gzip On.

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

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

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