|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
#include<AT89X52.H> //晶振可以用11.0592MHZ,如果用串口的话/ y. A1 @- c% D+ r7 o
//提示:在调试程序的时候晶振用12MHZ) e. z" Z: C+ t
#define HC_573_C P2_74 [; P; V4 J5 r9 M$ d! M2 k! o
#define MASTER_RESET P2_1
9 G" h. |2 w8 |9 l1 S' R% {7 P#define IO_UP P2_6
3 y0 G" T6 n+ ]! C$ b7 z1 n#define WRB_SCLK P2_5
! C* `5 B. }: D# A#define RDB_CSB P2_4 L6 h) F+ l$ n3 j/ ?
#define FSK_BPSK_HOLD P2_3: E9 ^4 D% r' n) C( K5 ?8 Z
#define SHAPED_LEYING P2_2' a4 s U& D' T0 Z; Y8 o
void AD9854_F();* G0 ]8 ~& z, C- _2 }0 V: `
void AD9854_IO_INT();( J' N1 k$ C& K3 Q, m- C
void DLY_400MS();
0 s4 L5 ]) w! W4 T0 @! uvoid TAB_DataWord();: |8 P# [% H0 N8 ]- O
void F_DataWord();
8 I: d9 C4 X2 _, J' C" H; s1 H! Evoid V_Int();
7 `( K+ t$ ~' D8 K7 i, j- sunsigned char temp;8 ?6 w4 i+ H K
//unsigned char UPFLAG; O! K: a1 b, R. I/ a' a
unsigned char TAB_Data[40];
' n& a, d" I4 r+ D# e; V% Qunsigned char F_Data[6];
1 t4 a& Z9 K, Qvoid main()* r9 B& g q2 q9 I% h
{ R1 f! Q+ h6 F' O$ p/ d+ ^
V_Int(); {0 _7 K8 ]% c( u
while(1){, n' S5 L$ w) z2 M5 `) _
TAB_DataWord();" P; b, J) K y3 ]( [# T; V1 s
F_DataWord();
3 a4 P" U9 N& g% M while(1)
! U% k+ z6 b/ u' h% c: `* { {2 j" z; b8 ?9 _- I
if(!P1_0)
+ u$ V' E+ U3 ~4 o$ p6 _+ b { : |9 W, o/ z8 Y9 _
AD9854_F();
+ q9 B9 l* N7 R1 i( s$ q }
: z# E# d; N# L4 i0 F2 H) O+ | if(!P1_1)! [* I1 X0 u6 k
{ " f. G _4 K5 e8 O& M, o
AD9854_IO_INT();7 t2 [4 s9 R! r k% j) Y: [
}
8 m2 J. O/ E, G5 X- I- g if(!P1_2)
+ Z, T7 k7 Y7 e, j- C" } {
, d- {7 I' a1 D+ K8 H MASTER_RESET=1;+ S* I4 y3 ]5 x% o
}
( g( I. j; j6 y SHAPED_LEYING=1;
6 t' [: v' M. L2 p MASTER_RESET=0;3 _1 N% h& H* M. b
HC_573_C=0;0 r6 _& t. r" x* R1 @6 v4 L. q
}
t/ T7 C# D! Y+ Q }. Y l! s2 W2 e4 \% I7 Y
}. j g( f% \& O: K Q: {) j
/***********************************************************************************************/# O$ E# E& C$ b5 ^! s1 U. Z
void TAB_DataWord()7 T# f' U8 B K2 D, ^4 C
{
! G/ b$ m7 m5 [ C# m0 M TAB_Data[0]=0X00;2 w! t9 v4 q t- \
TAB_Data[1]=0X00; //00H Phase Adjust Register #1 <13:8> (Bits 15, 14 don’t care) Phase #1 相位为0* ^6 N ?& d) Y' G
//01H Phase Adjust Register #1 <7:0> 01H& ] k- \9 D/ t. E8 @6 r
TAB_Data[2]=0X00; //02H Phase Adjust Register #2 <13:8> (Bits 15, 14 don’t care) Phase #2 相位为0& ?6 `3 X) E5 c
TAB_Data[3]=0X00; //03H Phase Adjust Register #1 <7:0> 03H
" A& O3 J$ g7 |1 @. G+ W
9 w3 v+ C8 c! N/ Z* }/ ] TAB_Data[4]=0X00; //Frequency Tuning Word 1 <47:40>//0000431BDE83
/ Y6 V: z) x" e: k% @ TAB_Data[5]=0X10; //Frequency Tuning Word 1 <39:32>
$ L+ v2 ]3 m6 d# @ TAB_Data[6]=0X43; //Frequency Tuning Word 1 <31:24>, l3 G" e7 C/ L% z1 q
TAB_Data[7]=0X1B; //Frequency Tuning Word 1 <23:16>
0 T$ e; U0 K! ]' U$ t1 D TAB_Data[8]=0XDE; //Frequency Tuning Word 1 <15:8>
. p7 A" T5 b0 |- h TAB_Data[9]=0X83; //Frequency Tuning Word 1 <7:0> W- B4 D% R/ W" ^
$ ^1 H# A& D2 L+ z$ L# m
TAB_Data[10]=0X00; //Frequency Tuning Word 2 <47:40
- N) }) v* d8 ]( ~1 S TAB_Data[11]=0X00; //Frequency Tuning Word 2 <39:32>
, t/ ], c A, P/ D- j TAB_Data[12]=0X43; //Frequency Tuning Word 2 <31:24>
9 ]; G0 |: q2 m, D. y' }% r o8 _5 u TAB_Data[13]=0X1B; //Frequency Tuning Word 2 <23:16>* ~8 u7 P1 @' \$ k
TAB_Data[14]=0XDE; //Frequency Tuning Word 2 <15:8>
$ @6 z( S% r' B; x TAB_Data[15]=0X83; //Frequency Tuning Word 2 <7:0> //500KHZ
2 Q9 p" `6 N/ T2 ~4 f TAB_Data[16]=0X01; //Delta Frequency Word <47:40>: V# p; ]/ e9 J% w" Q
TAB_Data[17]=0X47; //Delta Frequency Word <39:32>
, T: ^2 T0 {; W% k- L TAB_Data[18]=0XAE; //Delta Frequency Word <31:24>
' |$ ]. [% D" k. @; t9 w TAB_Data[19]=0X14; //Delta Frequency Word <23:16>
, @3 ]) \" X- E: a" @ TAB_Data[20]=0X7A; //Delta Frequency Word <15:8>6 l* o" n0 c! B8 }" L
TAB_Data[21]=0XE1; //Delta Frequency Word <7:0> 三角波 //频率为04 P8 w9 P- ^; H7 Y' u# e
TAB_Data[22]=0X00; //Update Clock <31:24>
# C) R1 x. G* c( w K6 CTAB_Data[23]=0X00; //Update Clock <23:16>+ y* m7 R m7 q f- v, c
TAB_Data[24]=0X00; //Update Clock <15:8>1 _8 d* M8 I% g- V0 Q
TAB_Data[25]=0XF0; //Update Clock <7:0> //系统出现寄存器更新信号reg. Int Update Clk.=0;外部更新' G# ^% I& }" I( {4 w( y
TAB_Data[26]=0X00; //Ramp Rate Clock <19:16> (Bits 23, 22, 21, 20 don’t care)
6 g1 u8 O( Q& |. Z0 ? K; D6 }# GTAB_Data[27]=0X00; //Ramp Rate Clock <15:8>) w; s j9 f; p. A
TAB_Data[28]=0X00; //Ramp Rate Clock <7:0>
* q' d$ v" M: `* m3 E8 _2 rTAB_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).% M0 d" P! X8 B. B. i! S/ P* u( e# b$ N
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).
# j. U) K# f) K) V9 J6 VTAB_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). 注意% ?7 y9 o. L3 F
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)., h0 L% z0 j: g- b5 [/ u( U) c
TAB_Data[33]=0X00; //Output Shape Key I Mult <11:8> (Bits 15, 14, 13, 12 don’t care)
$ o! f, X. K8 Z j. l5 b/ r' tTAB_Data[34]=0X0F; //Output Shape Key I Mult <7:0>/ `$ [- A1 Y+ k8 X; H9 e3 r# l
+ W# v& ^- L8 {) I( QTAB_Data[35]=0X00; //Output Shape Key Q Mult <11:8> (Bits 15, 14, 13, 12 don’t care)9 h, ?3 u2 u" i# P
TAB_Data[36]=0X0F; //Output Shape Key Q Mult <7:0>
- {) k A: X8 |- kTAB_Data[37]=0X0F; //Output Shape Key Ramp Rate <7:0>) B) X% @# A! w4 N# g" D' J
9 r0 ^$ c$ _- p' u% w5 `' PTAB_Data[38]=0X00; //QDAC <11:8> (Bits 15, 14, 13, 12 don’t care)
6 g# n, ]& w) p" q% PTAB_Data[39]=0X0F; //QDAC <7:0> (Data is required to be in twos complement format)
9 l9 K9 U' l7 g% o, @}8 {: G3 z5 C8 k/ S
/**********************************************************************************************/+ R; h6 y7 `+ y& Q0 a$ ^
void F_DataWord()9 `1 Q- l$ U, g
{
% }! |$ k% h8 t F_Data[0]=0X00; //Frequency Tuning Word 1 <47:40>//00029F16B11C//0000A7C5AC473 l" ~& X! G7 I1 V+ q
F_Data[1]=0X02; //Frequency Tuning Word 1 <39:32>
j$ V& m. K# G6 U% i" [ F_Data[2]=0X9F; //Frequency Tuning Word 1 <31:24>
4 f; V& J* B' i" Z F_Data[3]=0X16; //Frequency Tuning Word 1 <23:16>
' J9 y1 U4 |5 f( ]% O F_Data[4]=0XB1; //Frequency Tuning Word 1 <15:8>
- ~, g) y- @+ `8 _% n. V/ F5 {# B F_Data[5]=0X1C; //Frequency Tuning Word 1 <7:0> //6 V/ J" `" p7 g/ T, [8 L
}
; z! H# \- k4 f% m. e7 b- H) H/***********************************************************************************************/
3 t3 Z3 D: s% }4 p6 N7 E2 {& lvoid AD9854_F() . |2 _4 Y" d: z0 ~: ~! w( |* x
{ 6 j3 M+ g1 k7 J K* o( ~2 G- {6 _$ a1 D
unsigned char i; 4 [7 C4 ^0 r* ~* @
unsigned char tempf; // HC_573_C=0 ;选通
^3 j* t& G1 \6 T5 O8 T( ]0 \# ? MASTER_RESET=0;
! l Y4 a/ D, Z6 H I RDB_CSB=1;6 \- D. @' _, c ]2 [. W# ^0 r
WRB_SCLK=0;. M1 b; [. l& [. d
IO_UP=0;
1 K- ~+ s/ `& u. [5 X6 B tempf="4";
8 D& S. r8 ~: O for(i=0;i<6;i++)) O* L, k4 ? [7 a0 e6 }/ D
{ ( |' m. S5 T$ c- p1 d: |4 _
HC_573_C=1; //选通地址 _! H' }7 W& a. Q( E; b( p
P0=tempf;& V, e* d" a) F8 Z+ R( W- F
HC_573_C=0; //关闭HC573& ~: c! x. a( _) v
ACC="F"_Data[i]; : B2 P) q) R- c: T( _2 y) V
P0=ACC; 3 w, j+ a$ L5 q z& |3 h' Q/ O
WRB_SCLK=0;% b$ O- r7 o7 E; |% b: b
WRB_SCLK=1;
+ D- l. i5 z: K" ?% v tempf++;
6 D0 `# L. x8 r9 J/ r7 A }
& Q( W3 l! ~; Q4 I: `) P# E 4 I$ l: F& c% ?* w- R+ P
WRB_SCLK=1;
4 }5 W- z; }2 X. k# @ , E- C) ~( I! h2 ?" }! j) r
IO_UP=0;
- v( M* |0 k. ?$ W# i IO_UP=1; / [" P' u+ b) G% {5 Q: V
}
2 m2 B5 C" C d2 v/************************************************************************************************// S4 N) X. {: c6 g( n
void AD9854_IO_INT()* M% e' o) y7 q- w+ t
{
7 g Z' h* R& E2 S1 ?% b4 D unsigned char i;- I& ~7 B( b' r
DLY_400MS();* Z) M) T" @* n
MASTER_RESET=0;
' P4 g2 H- ^5 o9 c- t) b MASTER_RESET=0;9 U3 ?% g* Z; b' G( [8 Z
FSK_BPSK_HOLD =1; //多功能管脚
" p' O u7 A- C0 T8 j* u SHAPED_LEYING =1; //Must First Be Selected in the Programming Control Register; E8 c& H2 F2 y, i
//to Function. A logic high will cause the I and Q DAC outputs
b0 B T" A- i+ P" X //to ramp-up from zero-scale to full-scale amplitude at a preprogrammed
" d+ ^# j* @2 m9 t //rate.Logic low causes the full-scale output to ramp-down " e5 K, L+ D% u( b6 [
//to zero-scale at the preprogrammed rate.+ o4 w% r1 Z0 h8 {6 i( p% e
RDB_CSB=1; //Active LOW. This pin is shared with RDB when8 p5 y, \6 U5 w; b) o* I
WRB_SCLK=0; //并行写数据时钟.低电平有效
- j! B/ b+ P" a* T0 R7 \7 s* U. g. K IO_UP=0; //数据写入准备
m3 @6 L9 k1 O3 U! S! R8 `) m6 P. z temp="0"; //表格首数据地址
5 ]4 n6 `8 B/ V8 |- r U8 R C //AD9854 寄存器首地址
' x- s+ ^2 O+ [" D( k$ q" O for(i=0;i<40;i++)
- h. p/ _$ h% v' ]$ s+ m { 9 F* T0 t$ H# Q6 h$ w* Y
HC_573_C=1;
( e/ `- F" _' e/ Y7 P* X# t0 W P0=temp; //送地址 ( l( r+ f% I7 i, Y( l: n0 m
HC_573_C=0;# M! t" Y/ N1 ~( `+ }1 O2 T
//取对应地址的数据: ^) ^1 I2 C1 v P
ACC="TAB"_Data[i];
, G8 C; V4 b9 J" h P0=ACC;
+ O% W) J7 O( B9 J! D WRB_SCLK=0;: Q) g# X. V/ `& T: o6 d2 Z
WRB_SCLK=1;
$ f1 c! L! f% @9 A temp++;: v; T7 l0 h- I; B2 Q8 l
}2 F$ v3 E, |/ \
WRB_SCLK=1; //关闭数据接收& z! X' V% s4 v
IO_UP=0; }' I& v" C0 o4 ^, w/ E/ y. _
IO_UP=1;; G+ r3 c7 f7 U& ]; b0 `# Y
}) z6 o% p% F& Z: o9 ~ d3 Y
/**********************************************************************/- U# L$ y/ E' v+ F( q8 ]. ]3 z2 R5 P
void V_Int()' z) `& E% m- P. `5 j. [/ O
{
+ j5 D" U1 I9 Q. V unsigned char tempf; // HC_573_C=0 ;选通( i' R7 V1 T2 z, }0 u% S
MASTER_RESET=0;
- w/ `" ], d g+ R, Z7 w RDB_CSB=1;3 H" U. P: V! L% V1 i
WRB_SCLK=0;
2 D( \: O% W8 ~0 k tempf="0X1F";
/ \' _; T, q y0 a; p HC_573_C=1; //选通地址% g/ V9 s9 A* B) Q
P0=tempf;! L Y- U f3 t" I( C1 `- D
HC_573_C=0; //关闭HC5739 u& R5 w8 @$ d
ACC="0X00"; / e9 K' A2 b" m C" u
P0=ACC;
6 e3 C* W& N7 m# ? WRB_SCLK=0;# Q* `" E& Q6 R5 f5 i/ M, W
WRB_SCLK=1;
8 @& ]2 c" T+ ~( k" T: I0 | DLY_400MS();- L1 y4 U+ z Q$ {4 p# M
WRB_SCLK=1;
8 [1 T# D0 x2 U8 i K+ \: E DLY_400MS();
! o8 T2 C: `; Q0 m) y }
" o9 c2 d% i$ r9 H* a. f' N 0 q6 O) Y5 I2 L4 L
/**************************************************************************/
3 N3 A" q) x; g5 @void DLY_400MS()! j- V+ k+ I8 |2 u r
{
! Y9 q0 L) m/ g) z0 N; [, ~, W1 `4 R, E unsigned char i,j;. c9 I0 U4 G* i8 G" v. t, v
for(i=0;i<90;i++)
8 l2 b6 `" R9 N$ t {
9 m1 F& \, [* O5 n# S8 k1 I+ S8 M for(j=0;j<60;j++);3 X6 R# g: g& x! P
}
6 U) J! z2 ^" ^/ B* S } |
|