|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
FM8000模块(GS1615)制作FM发射机 单片机仿真 程序 PPT教程都有
" ]4 r2 ]' t2 Z6 [
# S$ \2 k& I6 s/ Y" i( ?3 T7 j
2 z" t0 R, z" P6 a4 YFM8000B发射模块制作FM发射机,以前做的,为了换其他文件,所以贡献出来,含仿真、单片机程序、PPT9 B1 T$ p1 t# h7 o
FM8000模块(GS1615)制作FM发射机的单片机仿真原理图:
( g0 u, u7 W' c3 }- G8 _6 A5 j& u![]() 8 L+ `( W7 ]) T8 E$ r
7 @; o, \# e$ [, F+ J0 n
GS1615FM发射机 ppt内容预览:) |3 v* h! y9 v/ T# {; F! I
0 n' c' G, l) f- ?& p
模块工作电压:2.4-3.6V
* r* }! M9 u7 W; h" y1 [- z参考时钟:12MHZ k" o: u) k. S# R- W4 [+ G8 o0 G
工作温度范围:-20——85摄氏度
! j ?& K( ]8 j7 _4 `3 ^( l5 u调频方式:I2C总线端口选频
1 Q) A/ z: P M4 F5 r ) l4 F" L5 c2 \$ l$ ?% a/ \6 k
) d$ |3 ~0 |' m- f; j+ p
+ f( O& e8 W1 k* i: x至此可知:寄存器0x00的bit1 bit0是频率参数的最高两位,+寄存器0x01的8位,共十位为频率参数0 o4 c: V6 `' {& T# I& S9 `9 a
模块频率范围76MHz-108MHz,中间为92MHz,本人想开机即为此值。根据频率计算公式freq=CH*0.05+76可知,要求CH=01 0100 0000(即320),因为freq = 320*0.05 + 76 = 92MHz。9 T B4 t. | Q) g) \1 o
在设置FM8000时应首先使寄存器0x00设置为00100001(即0x21,第一个1是进入发射状态,最后01是CH高位)! h$ X4 F8 s" i# |
再设置寄存器0x01为01000000(即0x40) J8 n& Q3 f5 O1 W" p; M0 A
此时CH=01 0100 0000(即320)。% t0 k7 J$ Y0 a1 N, F
注:计算知,76MHz-108MHz对应CH值000-640。( L: b; S. B4 `% z" U. y
8 `2 I# _- L( d! E6 n0 B) OFM8000模块(GS1615)制作FM发射机源程序中的SETCH()函数的讲解:6 E3 X: Y( g0 B: W. }
根据频率计算公式:freq=CH*0.05+76
; ?6 w" W) g4 V% F6 n模块可发射的频率范围为76MHz-108MHz,对应CH的范围为000-640
+ ?, H+ F; Q! G$ }/ F( {& x按二进制则为00 0000 0000—10 1000 0000( s" @+ U- f5 h7 H( O
可以把CH(程序中为count)按寄存器位分为三段: 00 0000 0000—00 1111 1111 (000-255) 01 0000 0000—01 1111 1111 (256-511) 10 0000 0000—10 1000 0000 (512-640)
Y2 l* s: f h2 |" b' m, L9 u) D7 E8 a所以,CH的高两位只可能为00、01、10(分别对应值0、256、512),存入寄存器00h中。上面蓝色的要存入寄存器01h中,你该理解为什么程序中有count-256、 count-512 语句了。
4 t t; y4 i% L; s
! W9 O' Z- ? H* v思考与改进
, k& L" m# l* \& H0 Y9 I+ q按键长按时频率变化的能否更快?并且仍可以区别是长按或是短按。+ ~$ R4 L0 a, V& z, E
按键长按时数码管显示的能否更稳定?7 z% D3 }+ Y* a$ W* P
增加一个记忆功能,开机时自动调整到上次关机时的频率,加24C01等,程序怎改
$ R& |: C+ A8 |( V7 Q1 j- F9 k6 d
. n9 B+ b+ }: Q( k单片机源程序:
4 ~, N& d' o# l# i7 E3 a" q2 U' w#include<intrins.h> //包含 _nop_()
9 j9 l; W4 ~3 P#include<reg51.h>
& O1 e- d" ]% I- ?- s4 n- Q" P#define uchar unsigned char: X7 } N- _# u# X: G J
#define uint unsigned int
* j9 V1 W6 ^- h+ |9 }& R* n//---------------------------- H5 u& s& f# z8 T4 X5 Z7 d3 F, r
//-------定义变量端口--------& l( r0 K$ n, \# T' m z* q: J
sbit sda=P2^1;6 i8 D! a- ]( X! ]& x( g5 W
sbit scl=P2^0;
5 P/ j$ F2 H4 I A! j9 _0 Msbit DIN=P0^5; //小数点
/ F# s P$ O, xsbit K1=P2^7;
# e C' T m( ysbit K2=P2^6;
' y3 l3 w* [, Z. X1 Nsbit K3=P2^5;- |" M, O) v$ O
sbit K4=P2^4;5 D9 K) z" V7 s% \6 g" U
unsigned long count;
* O$ W) B( b. Huchar i,j;
& ], L" [% m# E3 Puchar a,b;
1 {2 d& j0 f S5 d+ _" R( ]% @uchar temp;
6 E& S& K4 m$ d% k, Lunsigned long freq[8];/ ]! [! n. F6 h0 K3 J: U J
unsigned long f;
" l$ I; ?% r2 |8 qunsigned char code table1[ ]={0xd7,0x14,0xcd,0x5d,0x1e,0x5b,0xdb,0x15,0xdf,0x5f,0x9F,0xDA,0xC3,0xDC,0xCB,0x8B,0x00};
6 v5 N* W8 p" B) R# _ /**左边LED四位 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" "不亮" / |0 q4 |* \: M2 P- h+ W5 D
共阴数码管段码表 (按图接法的编码)**/* f$ e Y t& g, [
unsigned char code table2[ ]={0x5F,0x41,0x9D,0xd5,0xC3,0xD6,0xDE,0x45,0xDF,0xD7,0xCF,0xDA,0x1E,0xD9,0x9E,0x8E,0x00};$ s9 D/ e$ V% k) s( d
/**右边LED四位 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "A" "B" "C" "D" "E" "F" "不亮" 8 x' G* b8 b9 g8 \0 p: e
共阴数码管段码表 (按图接法的编码)**/. {, d1 m8 i& i3 S
' j" v" t6 ]0 k/ \3 s) w2 r5 \
4 g# b" w) ?( p, Z7 `5 @% e//----- 函数声明-------------
, [+ l5 N- t0 @. {void FM8000_init(); //初始化函数
6 w+ y5 V- D( b7 _% A! V/ b* C. D$ kvoid start(); //开始函数
$ @3 d: J2 m" T/ m' zvoid stop(); //终止函数
" D& Y2 h9 k6 k$ t9 L N4 avoid respon(); //应答信号( S' t+ `, y! [5 z
void write_byte(uchar); //写字节函数
' o& F+ e6 `1 M' Z& Puchar read_byte(); //读字节函数7 z& q z3 P% C$ j3 c* X6 i) }
void write_add(uchar,uchar); //指定地址写一字节数据: W/ A4 ?0 U+ q, I3 S+ |% Z
uchar read_add(uchar); //指定地址读一字节数据
) w7 _$ l5 ~0 S. ]void delay();4 R6 J9 E9 F" R, c/ {9 l" H
void delay_i2c(uint x);
" O8 C# \, x9 D( |void SetCH();
& N1 {7 F' A0 Z2 Ivoid addfreq();; C' i6 e/ x# n5 g9 i* E
void decfreq();! l# M/ n" A% v1 f0 V3 e3 c+ X3 D* G
void fastadd();) n5 }7 g+ x* B1 }+ F
void fastdec();% u! F4 i& _1 a, X+ ~- q& o- M0 O( x# q
void delay10ms();8 U2 ?" X2 q' U8 @5 k. M2 V0 M: D
void display();
: T& X/ O, o& h b9 f" l5 Z//----------------------------------------& v' B6 Z3 L- S4 T1 a- y" X$ ~
//----------------------
0 H$ U. S+ f, ^1 ?void delay()
/ U9 n3 m) D# D: x. ~- B9 q$ ?{
" c% A$ ]! i9 S_nop_();% Z4 \: }! l3 W8 K1 L
_nop_();0 Y1 u, m: j3 R; d
_nop_();9 h2 T/ y4 S. [% b! ]; L( f
_nop_();# M1 X; \* \4 }+ p2 X$ z
_nop_();
0 S$ x$ e8 @6 ^$ K}
8 h9 h2 `' o b/ J! q2 o2 R1 W//----------------------------------------/ M+ ~8 k- w. U
void FM8000_init() //初始化函数! @3 O3 d) H8 u" c
{+ s/ G) z5 f: @6 g. z( K6 A
scl=1;' q. T: X6 k" h& v( `
delay();
# b# R3 g' y- W: e6 b) usda=1;4 K: k) Q6 f2 |6 A4 O. Y# S2 X1 S H; u
delay();
: ~4 Z3 H; C, w}( x" q# g$ k$ G) f5 u, _
# w! D% g, C$ D3 L5 e* H3 ~5 x* P, n" \, M3 t2 g
//----------------------------/ U' T; z( O' H$ d: O* S
( {6 M7 H. n& L, o$ Y# Q& \
" U3 O: H+ E# j- @ E4 o; t0 ?
void start(void) //开始函数9 Z3 j P/ K% e V! s( U% k- r
{
$ @* u# ]- _) V6 [sda=1;
/ N* I: G" T: b+ F6 F, e0 ~( uscl=1;
# ]" u* L9 v; T: e7 H. T2 mdelay();: x5 [1 E4 K: i+ c* {7 t2 i
sda=0; //拉低电平
7 C1 S6 v8 @0 P0 n* B" n% ?% h! A' j2 ldelay();. x& P3 G+ j2 G7 `5 B
scl=0;
( b3 b1 v6 A5 `) I2 p2 U/ f}, j! D+ u9 v/ F3 x2 F1 B* k
& r6 f5 E2 P- h5 h6 Y$ N
" [* O# P1 G) s! X, [9 m( ^//--------------------------------
8 a3 t/ q* ]7 `" W0 @void stop(void) //终止函数# ]2 ]5 b4 H/ j9 E O1 n
{# |! I) y1 R9 F, V3 A
sda=0;* w& z7 s3 q3 r# B
scl=1;+ c. W2 W6 s5 `8 X' V, K
delay();& \1 w0 P$ Z% i+ r
sda=1; //拉高电平& A/ x g4 J5 U& K
delay();0 Q+ {' X% |5 d$ X! `2 @% {. U0 I
scl=0;
8 T& h) ?6 s) U" [# Y4 O. q}
& W" F* \2 T' `# B( L0 v% ]
1 m8 ~' L: d. L% |" z5 ~$ m4 J/ X( `6 l
//---------------------------------
. D% H9 I* y3 y) g! o- Q* n! g1 c6 k& C. v$ K
2 j: p0 f+ Q" V g$ o) Fvoid respon() //应答0 M6 |. G) d7 R0 M8 i
{/ T, ^( \* }1 S( z: n5 T
uchar i;
: K5 }8 ?. I$ b0 ?scl=1;
* N! \" m) K/ ~* v2 `9 Qdelay();
7 ?% I& L$ Q+ z3 W" e) e& N4 Twhile((sda==1)&&(i<250))i++;
' a* v" Q n: i3 ]6 [9 Gscl=0;
m: w1 n/ ?$ [2 O/ o, Q; n) G3 U7 ndelay();' G* x; X7 `! i$ b9 I
}
; G. L" x" ?$ B3 D3 y: `: \9 ]/ }& z( A U: d
# ?1 X) K- I0 v* g//-------------------------------
* G0 k" n& y5 [; ~8 G; j) k r3 \9 Evoid write_byte(uchar dat) //写字节0 N& F$ P$ x( o% |# q" b u
{& J* e3 l7 a2 E3 s }! j |0 f
uchar i,temp;
4 W+ @/ d8 j* v2 ]% o7 O0 E, mtemp=dat;
- [) n+ e4 b# B G* Sfor(i=0;i<8;i++)' X" S# i# W( J- `2 b D
{
. A P, z8 `. t# t7 I: a) @1 n( Q R temp=temp<<1; //循环右移
* U; ~8 D+ Q( O' O* E: [ scl=0;
% p$ `" V$ H& E" Y delay();
7 m4 v! K' B2 L/ U; ^ sda=CY; //CY为进位标志" T s/ Y% z3 h1 f; y2 o' q
delay();8 c; j) e* }# Q8 c" H- i
scl=1; //拉高SCL
4 K; y; B& s# { delay();1 C v: D9 e2 B/ P8 w
}
: o( u2 E6 W P8 a9 j1 \. Y! wscl=0; 3 t9 V. ]4 i1 _) F
delay();
" J3 F% {" G1 qsda=1; K+ l' v* G: N) b
delay();5 \; M" i. c; L$ W7 e- R: O1 i( G, }% N" }
}
' J7 ~, W& W0 q
6 Z) V' n) I5 ^ V4 Q4 |1 a4 o& ~2 J, G
//------------------------------------+ B. T, L. [) ?( s
uchar read_byte() //读字节9 \; f2 z. ^! {5 z/ ~
{
1 ], R3 d7 O. Huchar i,k;
' g U3 D6 N7 Y4 x5 C# `1 wscl=0;* I; t/ R! w. o" v5 q1 {0 w, T
delay();1 E7 n2 D) ^6 s( R4 h* v3 w" L
sda=1;- ?$ p$ t$ ?8 {( @8 X
delay();% i( v/ b2 s X, B
for(i=0;i<8;i++), O- W9 W( m; e: A
{ r1 O- ~& W2 o2 p6 X- K) c5 s3 Q
scl=1;
# ~; h1 g# r2 v; Idelay();& t9 V3 W3 x" G% N# y$ N0 x
k=(k<<1)|sda;9 R0 J* z* n4 d! |2 B8 z3 `
scl=0;
: p* _8 n U; ]/ adelay();
* j) I q& p: B. L' i5 m! z}
5 F1 Q' @# Z4 S$ o d) k0 Ireturn k;
% w* p9 O/ q( y" A& g}2 L! C, `5 z0 r, Y- Q0 U* N
, K5 w0 D, D2 O+ Y6 |
; F$ U1 ~! g# ?//------------------------------------ a5 R+ e7 M( k8 J$ v
//------------------------------------
; N. Y! h8 R1 s2 `* w$ n% X+ B3 G6 U# a# S( V3 g
+ }) S" F* H2 c4 I9 @9 `//-----指定地址写入一字节数据-------, A" Z/ I7 A2 p) \
void write_add(uchar add,uchar dat); ^6 n" J7 @& k: z0 Z" o
{! p4 a" `. q0 j4 U& G
start(); //开始 r; ~7 k0 v7 b0 j# F
write_byte(0x58); //写 器件地址及写信号
; |3 K8 R. S3 t5 M4 g4 J( G$ grespon();
, z, H' `7 E; Y: S! Ywrite_byte(add); //写字地址 `' ^7 ^" |2 C7 R! N! |
respon();+ \' E9 S! g0 Y7 Y
write_byte(dat); //写数据
, u7 ~+ E% o& F1 a r2 a2 irespon();$ n+ [* F9 c2 e: v7 T: s+ j
stop(); //终止
" Y! }+ D' O$ O6 Z. l( j}
- B2 i* l3 Z6 Z//---------------------------------
9 f* l; b3 C# Y0 i8 ~ W
' b$ K" x+ T8 s/ q2 D# u' ?! a2 m4 m) I
//------指定地址读一字节数据-------; x4 P9 J0 B. r1 ^
uchar read_add(uchar add)
f7 N1 g3 z! H$ [2 M{0 `4 F m8 s3 c+ p4 B4 s
uchar date;
, @0 Q, o% L. c# }* S2 Q# J9 ustart();& n. P# v. L9 A+ I/ ?+ h
write_byte(0x58); //写 器件地址- ^6 \$ R4 M8 `- d$ i8 u" h# C
respon();' k" B" J8 J7 N( H1 l# L
write_byte(add); //字节地址' \# `6 k9 t0 l. f
respon();
5 s& Y4 j% o" J0 h9 @8 jstart();
2 E0 o2 D5 A: `& O7 t! pwrite_byte(0x59);
8 N: R1 R9 N q: Nrespon();5 `. {' ?% q+ w/ G& W
date=read_byte();
+ L- q4 M% `3 e1 C1 {1 O1 jstop();, y) @: K& u* }+ H1 h1 G( H3 E* Q
return date;
/ K& S& `5 w" n* ^4 g) O}
) x& b4 W8 X' b. n0 S7 Y( x! T$ t, m1 Q# O
7 E8 f: \8 q' \, O& v/ I9 t6 ^
- Y( Z' A/ C; S5 V) G, U0 N) ^9 ]( N- T& j/ b4 `% J3 v
//------延时函数-------; b- K( c3 y* q3 q- p& }$ x
void delay_i2c(uint x)//延时函数, M% e. A& x1 \# y' e6 M4 @
{
5 K" ? I% G% l" X: E& @9 k7 S1 ^uchar a,b;
2 S$ k7 `/ D9 d( S' o2 X6 `for(a=x;a>0;a--);
* d/ v8 n* s; m! X* I9 v8 V% [//for(b=100;b>0;b--); //速度较慢,去掉加快点
0 L1 s7 A4 g+ }( c( \5 i% r}
8 T" u; c' d% c% v" g) f) q3 h# c5 ?' r t1 V% m
: A/ d+ s. u4 x7 {4 z2 C- E# Lvoid delay10ms(void) //延时10毫秒
@+ X& S- z) O+ t# ?1 t/ q4 l{ % X( W$ Y( V5 n
unsigned char i,j;% X9 E7 [! z# |. C
for(i=20;i>0;i--)
6 |- C- ]) [" X+ R6 ?* t+ L" F for(j=248;j>0;j--);( n& |1 r+ U Z/ R D
}: s; t1 U9 ~" G" O! F/ b
- {9 W& M: g+ s+ T
. u. |) [+ m1 q( }/ e+ m3 c6 u
* S) L" E0 K4 k- a; |$ Z* A3 ?3 R. g# S
/***********************************************************) [) w5 s- ~- N% b9 I* a
+ ]- R* B7 P; j
9 Q+ {$ L5 G; u9 v3 A+ J. y
0.1增加频率, H9 n- `& D& i
void addfreq()
& V8 o: Z# r9 p" {, m5 Z- V8 M4 W) ]4 g; V0 p% U9 {( K
7 P2 a$ `0 x0 k2 c6 `
**********************************************************/) T- N: Z- n6 ^3 E+ \
void addfreq()
8 |9 a; k. p- t6 ]. z$ |; W{
) }3 j; o$ ?' r q3 w7 X
$ Q# d, n8 ~2 V: B* W delay10ms();; E- W3 C( S: d9 N1 ?, m
if(K2==0) ) I9 o( k( e& j! {9 M2 o; ?$ o
{
8 V2 n3 q& M3 T0 |( q! V* X count+=2;
4 f* m* n1 K8 z* T b0 q; E: `, g2 P, `
- o' L" t( t6 m8 y2 n: c: j) d3 O if(count==642) //count=0对应76.0MHz,count=640对应108.0MHz,/ J1 u) m" G2 |7 U' r1 o
{7 A3 x0 \4 w( w- B( {
count=0;
8 F( @. i# N1 c% a9 O3 i- V6 c* C. z }
2 N g4 J' Q2 F8 |6 ~- p }+ A' ~4 F. f! |, Z. _
P0=0; //写入时关闭LED,使LED显示亮度一样% I0 J2 |$ y; }( o
SetCH();; U8 S5 ] `6 R3 @2 e. l4 y
do {display();}* j6 c8 D( ^3 b% b. Q
while(K2==0); //等松手,此时LED仍显示
( F" M4 O4 x+ f- U; H ? } * f! R& i7 {- f' @3 p3 n( F
/****************************************************************, r1 v) t% \$ F9 e Z* g+ D
0 G, O: X& v9 [4 g2 U
5 Z1 M! q* e; \4 p+ H Y( M 0.1减小频率* K2 ^/ D! |$ k I
void decfreq()
) i5 m+ s W6 n% Y$ V6 C' S" z+ m******************************************************************/2 }9 C+ r5 b* `7 R- q2 H+ X
void decfreq()
& I0 s" x+ S% B0 T0 F$ l {8 d% w! h+ E- {8 W& R ^
delay10ms();
% Y! j3 ^' C+ w' O! y% C if(K1==0)' D1 S+ i/ W3 T3 N2 S+ F/ U8 A2 |
{4 E# v* T! b7 k! ?2 ^' |
if(count==0)
8 y, i2 O! ^ j7 g: J/ I {
- K( @. {* h6 r8 a5 u* `9 ]& y& Y' ~ count=640;
' \' G7 [( r5 n } ! t! b/ C+ D* O( w
6 E, s" b$ b( m5 e) ` q9 d6 d
count-=2;
5 B1 w, y2 h% H: Z. y- Z4 L P0=0; //写入时关闭LED,使LED显示亮度一样
$ x: w9 J" k5 L SetCH();3 I6 k% S9 F& T2 z
do {display();}; w3 B' P& q% _( S; [- m7 T5 A
while(K1==0); //等松手,此时LED仍显示2 ~" h9 v& m- E& g# X9 e
}
' z1 T) l# v( q ]0 r } 6 i3 Q0 ^2 R4 p% u
4 ^; |7 x+ {: T' I1 S
8 d' B4 F* E! F( Z. j% k8 R$ x- U/ i* C8 A" x7 |# W
4 [, P8 I- r/ W6 w0 P
/***********************************************************
5 }! F) }5 j. L' T/ e+ p$ a4 ?5 z5 \
& |$ C2 L0 g, N6 k$ |" j+ a2 }
快速增加频率) _1 D! m' Z1 Y, U# F9 S1 [3 A
void fastadd()
1 ]% s. T5 U! @% R- V ^7 p, i5 m; B1 M6 m* s5 l, D$ G, K
* K" g) j# ?& S3 M, `/ H% J**********************************************************/
5 G0 F$ }: ~( U( B& \! V" Y4 Q void fastadd()
- X* |- C5 k r" c{; ^% Y5 N4 f: Q! k) x. K
1 o0 H6 W8 o, t! W4 J0 L" q; ~* W delay10ms();8 \- i T# J# ]3 H7 j8 K
if(K4==0) * i5 d/ }& g7 N# u' y [
{% U6 i* x! |. i5 `2 g6 h4 t# s
count+=2;; K4 S6 w/ W3 S1 h
, H0 j% q/ v ]# _% d( r* b
; H5 o. K8 S% n$ u
if(count==642)1 d! A5 C4 `, v4 |- F7 O
{
Q) w; l. x0 V3 @4 e" S0 f; t count=0;
% p j& e2 t0 [: c9 ~* b }7 g5 n- \5 [+ K8 l. K9 q( T' P
}
8 W1 q! q. u* n7 Z! G" ~7 K' ? P0=0; //写入时关闭LED,使LED显示亮度一样 z3 x# c' L! W+ B. I8 |, M
SetCH();- A# b" L; [# }5 A' P
// while(K4==0); //等松手
! z( y! i9 }4 X$ Y } ! z3 N. a* a5 G# f% X
/****************************************************************
& k9 s7 U0 y4 w' [- a/ k# z7 ]" m' V5 { \6 R, B
8 G6 Q1 Z2 f1 R, ` 快速减小频率/ v5 X" Q1 I* F; A: i. f2 g: ?
void fastdec()
- K3 `5 f( P. f. |******************************************************************/
/ w( g# k4 O# d: Q2 ?$ j; ?( w# x void fastdec() . \( o/ x6 r! y6 q
{
, y& W) o6 ]7 \: z8 @ I delay10ms();4 S3 ~; J" c; N: ?; f) `
if(K3==0)& ~ ?1 i7 A3 |1 p: E2 u
{! J9 `' P+ }- x9 |: R
if(count==0), `; g, h& o/ F1 W( s
{ K! T4 v2 U+ p
count=640;/ e5 K( p } R M" Q
} ( U, G. J5 q; b9 q# ]* T
3 c6 P& h) F( O: I7 q: T3 c, y* \ M count-=2;
3 g3 g! K5 u: p( J0 R) P. O P0=0; //写入时关闭LED,使LED显示亮度一样
$ v9 W2 ?9 O) m SetCH();& a: f( Q l% ]) R, B5 g
// while(K3==0); //等松手
8 N+ ~, @9 {1 e. C; M! K$ L }8 U0 C5 O+ a+ k. H a0 C0 d
} ' a# x/ w$ P5 K) N9 B1 m
( p' i; {6 y) @) e% ^
9 I' d' k# k; s8 |/*********************************************************+ g9 }0 R0 x; B) i! U) @
1 {# n% H% I9 c6 b
- N' o# u1 t" b/ _* g" D* c 显示函数) _: O- ~; p: P9 p# v) T
void display(void)
9 a, C2 q! C8 X3 m# I( _
: P; Y& z0 E* J+ r9 F7 ~+ @: d* {3 y2 O( F. E) D+ H; f+ i
*********************************************************/
$ n. @" ^" } N9 j0 U" t void display(void)& \- e: T5 [$ c7 Q6 X, {" n
{8 U* M1 M" p* }& |: D6 _2 ]
{2 z5 Y% F, A, f5 D! ]7 ?# G4 M
f = (count*5+7600);
, ~( N$ `4 _8 ^1 [( C6 e freq[7]=f/10000;
% Z7 n* ], d0 L) `% |8 e1 j freq[6]=(f%10000)/1000;5 \, k8 ]6 O! M ?$ }
freq[5]=(f%1000)/100;4 N! b8 g, D2 o& d: h
freq[4]=(f%100)/10;
4 [" w' @( z" F5 w2 s/ H- S# n* n( a: N freq[3]=f%10;
+ }& c, _4 L3 r" r freq[1]=11;
5 Y& I+ N% R: f* W$ h freq[2]=10;" o4 Q) s, ^3 g2 o6 P
freq[0]=12;
& Z) o$ u) ?. y temp=0;
$ E! x$ z8 ]: x/ @, X9 l0 T for(i=0;i<5;i++) //后四位不显3 l7 l% q- \$ A. ~: J
{3 r* K- a4 |2 R5 z( X. t9 s
P1=temp;
! }7 K9 @, [( _ if (i<4)
+ C! L7 k4 Z$ ]: w a: C% a0 {2 u$ h6 P4 N {P0=table1[freq[7-i]];
( c2 p9 d `! n p0 O) s if (i==2) DIN=1; //加小数点 # H6 X' T1 U+ v- G. W
}
) j; c2 f6 r) R: i" F else 3 P+ \3 j2 I: [5 d3 ^
{P0=table2[freq[7-i]];
$ I8 J/ Z3 T" C4 o# Q if (i==6) DIN=1; //加小数点
% T) X/ J$ k) w" a( l( D) C' k/ m }, M, g! Y; z5 i: |: R0 ` u8 l8 x6 m+ w
temp=temp+1; ~7 |" m! b3 B% t& Y
if (i==4)P0=0; //第5位不显' G) T' Q, r9 J9 {1 h4 `3 E4 y
for(a=10;a>0;a--) //延时
2 @% C$ d& M. |- O' @# w for(b=248;b>0;b--);
1 L* l9 T! e" s& X& `, j( n }! H/ j5 j- M( ?. w* B8 W% ?( Y: V
}! J) S" y* k8 y' n% K4 D
}
2 x( j# a4 ~* ~" ~
. \2 b0 P9 _6 z; q# X7 p, y9 S3 d! \5 W
/*************************************************************% w- x6 K( k" }' R, k
& V% Y5 B6 Q4 `
' y+ Z: R6 M+ X7 Q9 F% B- h 设置发射频率
+ ^/ l+ d5 f5 t void SetCH()
; u5 \0 C) {. q( ^: F9 Z! Z4 u) w. G9 K: {+ Z( X, t
1 e0 C% {+ z8 V) E! x$ D, ]
************************************************************/8 R8 q4 ^3 @. i3 i B5 O( |
void SetCH() 0 ]. L, i% Y; i8 \
{
; k; V! K0 S4 i7 O% r FM8000_init();
+ p1 V w5 b/ r8 ^+ ^% g if(count<=255)
e; s# V4 V! L$ _* Y write_add(0x00,0x20); / x( W! S6 Y# E4 F' j; |
delay_i2c(100);
$ j' m" m. [8 ^6 `( B d write_add(0x01,count); ; [" `$ L) z5 @
delay_i2c(100); % x0 |! c" k. n& C; j
/* write_add(0x04,0x32); //是否把F8000内部晶振设为12MHz,自己决定 : J0 ^; k7 b+ L* [+ D3 l1 _
delay_i2c(100);*/
* E* u3 y {/ K8 q9 ? ?7 @ if((count>=256) && (count<=511))
; B9 ?3 ] s% N+ H: |4 N* L, n {
9 H/ d u8 f. R% m; e write_add(0x00,0x21);
0 [3 x D9 p6 v. x0 @ delay_i2c(100);# r% O2 w* K3 H) e# ^
write_add(0x01,count-256);
* F. E0 c2 J& i: g4 C+ p9 _ delay_i2c(100);" S3 M; M6 P. f/ w, E, _2 g
/* write_add(0x04,0x32); //是否把F8000内部晶振设为12MHz,自己决定
+ d* j% X- `( |6 C! _8 R8 G delay_i2c(100);*/
9 U7 g7 b5 H x, H8 \ }4 F9 S+ m" }9 x! E. N% _; S
if(count>=512) ) M8 Z0 B8 i8 M8 g( s+ T8 B
{ write_add(0x00,0x22); 8 q' o& d) [" y$ f8 e9 S
delay_i2c(100);- Q$ O+ h0 B2 p9 Q a5 O
write_add(0x01,count-512); 7 Z: j8 J5 H. e% n; `$ `
delay_i2c(100);6 e2 J( V6 N, d f9 S
/* write_add(0x04,0x32); //是否把F8000内部晶振设为12MHz,自己决定 5 O x3 @0 ^: F: A) W% G
delay_i2c(100);*/
( d. i4 w& p2 g+ d9 o5 x4 c) U! ~ }, t0 D6 N' Z! w$ Q( \. i
/ i9 {: [8 }) v5 z0 e/ ~7 B
/ I( n7 P" n/ p: h) @+ @7 `7 X
………………余下程序请下载附件……
9 u Y) k& r; e下载:
, D2 k2 t+ w' V7 ?% `
& t- Y8 B9 y! z$ t3 o+ F5 T% _9 \- ?5 D6 m' H( G) U9 J
|
|