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

FM8000模块(GS1615)制作FM发射机 单片机仿真 程序 PPT教程都有

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-21 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
FM8000模块(GS1615)制作FM发射机 单片机仿真 程序 PPT教程都有( F4 Q1 m. J# }. `! {5 x

8 L" ^$ V: H) N! f( i$ w
: y% e9 {% E3 S+ P: Q
FM8000B发射模块制作FM发射机,以前做的,为了换其他文件,所以贡献出来,含仿真、单片机程序、PPT
7 }) @! s* F: Y% |7 ?FM8000模块(GS1615)制作FM发射机的单片机仿真原理图:
- h- k! k' P/ P1 Y2 F
3 A  Q( l6 y, m# F, t( @4 W! n
% X6 H' u. s( `8 w8 f/ _3 GGS1615FM发射机 ppt内容预览:6 a/ x: `9 U9 p, z! }
3 E# i& ?- m/ i  J8 }
模块工作电压:2.4-3.6V
+ \/ l  Z9 y/ I' N参考时钟:12MHZ
! r% }* C4 \- Y' i. W" H工作温度范围:-20——85摄氏度. [4 ]* N) R) {& I2 x' b- d, X7 ]
调频方式:I2C总线端口选频
7 H; L; f, w* E
' g5 S" E+ E7 D; w. R
' L) V( m7 q* w$ T - h5 y: Z) V# `+ f; b5 m
至此可知:寄存器0x00的bit1 bit0是频率参数的最高两位,+寄存器0x01的8位,共十位为频率参数1 ]$ A' }1 k; `8 A$ u% O2 H
模块频率范围76MHz-108MHz,中间为92MHz,本人想开机即为此值。根据频率计算公式freq=CH*0.05+76可知,要求CH=01 0100 0000(即320),因为freq = 320*0.05 + 76 = 92MHz。
, U- K- Y3 S  M6 r在设置FM8000时应首先使寄存器0x00设置为00100001(即0x21,第一个1是进入发射状态,最后01是CH高位)1 z/ X! c) Y, A! O% V8 T, V* D
再设置寄存器0x01为01000000(即0x40)( R* d& a" ^9 q3 w! C3 F, R
此时CH=01 0100 0000(即320)。
( @9 A! I3 H' j注:计算知,76MHz-108MHz对应CH值000-640。
9 [( c, z. B* f; Z2 o  }0 K) A2 f2 u' Q2 m6 ?/ [
FM8000模块(GS1615)制作FM发射机源程序中的SETCH()函数的讲解:

6 K" G3 y5 e& x; ]9 e根据频率计算公式:freq=CH*0.05+76# R+ M" P- Y" h/ h8 X7 B
模块可发射的频率范围为76MHz-108MHz,对应CH的范围为000-640% f4 }; [5 E) B( D8 S% S
按二进制则为00 0000 0000—10 1000 0000
3 m* {) |! p5 Q. e5 L可以把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)
& L5 V& D$ }( S所以,CH的高两位只可能为00、01、10(分别对应值0、256、512),存入寄存器00h中。上面蓝色的要存入寄存器01h中, 你该理解为什么程序中有count-256、 count-512 语句了。5 @3 W- ^0 c, _& |1 D3 R
, X5 _% n7 g4 h
思考与改进3 {$ u9 y) |' h
按键长按时频率变化的能否更快?并且仍可以区别是长按或是短按。
) G: [% W6 Z9 ~1 ^按键长按时数码管显示的能否更稳定?
+ r4 R- C9 R. o. r增加一个记忆功能,开机时自动调整到上次关机时的频率,加24C01等,程序怎改
2 p+ S" d" t- Y- }
5 @# B; u0 q  v+ O, L* f单片机源程序:
. I  g% w8 o6 c5 ^
#include<intrins.h>    //包含 _nop_()4 s- u0 K  ~+ d- z- F
#include<reg51.h>
/ ]6 I) d7 [# D% l! i#define uchar unsigned char  ], z$ V: x8 J1 e
#define uint unsigned int( q0 P% H. T1 E$ w$ P
//---------------------------! K7 M$ y$ B" G9 l
//-------定义变量端口--------
% Z, ]1 P( x  ?* Fsbit sda=P2^1;
/ c- l+ |$ T# I' q# W6 n' isbit scl=P2^0;
, z) H: q+ w$ Y) K9 ]6 [% n- J" Asbit DIN=P0^5;   //小数点
$ b- J. j1 B% o  g/ N5 _2 Hsbit K1=P2^7;+ w/ O9 k) j" }- e
sbit K2=P2^6;' M- Q  o$ t/ ?+ D& V. v
sbit K3=P2^5;0 g$ Z! ^2 e5 v2 D) c2 f  ]  S, F
sbit K4=P2^4;
* _8 M+ z, I! w2 \- Iunsigned long count;1 K- c  {  A. q" s) B& ?$ W7 {
uchar i,j;
8 U/ T5 w- w) T( puchar a,b;6 ~( ^5 `7 R( [$ q6 w
uchar temp;
; U2 Y. Y9 w5 D5 wunsigned long freq[8];
% {6 q8 X' E/ ?3 i/ B8 runsigned long f;$ v) \! q; ~: E6 V
unsigned char  code table1[ ]={0xd7,0x14,0xcd,0x5d,0x1e,0x5b,0xdb,0x15,0xdf,0x5f,0x9F,0xDA,0xC3,0xDC,0xCB,0x8B,0x00}; 0 v  Y; U: v& P
               /**左边LED四位  "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "A"  "B"  "C"  "D"  "E"  "F" "不亮"
* s7 N/ {1 S) K8 q) H                共阴数码管段码表 (按图接法的编码)**/
& e9 Q" X' }: h" y# Lunsigned char  code table2[ ]={0x5F,0x41,0x9D,0xd5,0xC3,0xD6,0xDE,0x45,0xDF,0xD7,0xCF,0xDA,0x1E,0xD9,0x9E,0x8E,0x00};- \" E% O4 d4 D8 R+ F+ h
               /**右边LED四位  "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "A"  "B"  "C"  "D"  "E"  "F" "不亮" - V/ n1 U! K, c2 q* Q2 p$ H
                 共阴数码管段码表 (按图接法的编码)**/
. R' I% G. ^  V( z* _- |. n# z8 v
; ^  g4 p6 }( L4 ^" N. I$ o" T% {7 a

) Y$ g% t  b; S+ W6 p) E9 L//----- 函数声明-------------* z0 h/ _+ G& j2 J& K, b( m
void FM8000_init(); //初始化函数
3 h5 w/ Q$ R* ~/ ~' K6 K2 svoid start();      //开始函数
7 T: x* F8 s( F7 Wvoid stop();       //终止函数2 x! Z$ {; Q9 ~9 @1 V2 o* @
void respon();    //应答信号+ o' }: M1 g+ x' E& B8 W5 H5 Y5 m
void write_byte(uchar);   //写字节函数
. t2 e) N- E+ zuchar read_byte();        //读字节函数3 R# U: L& }5 L
void write_add(uchar,uchar); //指定地址写一字节数据$ i2 S) Z7 v4 B7 ~3 f9 j! ~2 p: Z
uchar read_add(uchar);        //指定地址读一字节数据6 O* u# @: Y0 }# g& T( b
void delay();9 ~+ N; M! G5 g% J" n: t
void delay_i2c(uint x);
$ m! \* [6 q& v. i  g* @% Ovoid SetCH();
$ `" u; Y& |& I' Vvoid addfreq();
: i) g5 ]! M. @void decfreq();  X7 }, Z0 A' l; z0 O6 @) |
void fastadd();
& E3 `. j6 x% b  D- Nvoid fastdec();
8 v) M1 [* i# Vvoid delay10ms();
( C8 ?! a0 N6 [7 ^7 hvoid display();   0 T' |/ U! ^* g
//----------------------------------------
6 ^+ r$ e1 L0 \1 a" U- p- D# ]//----------------------, l6 y3 C& }. w/ S
void delay()
# ?' L2 f- u% @) e5 y* M; L( i{
& M( r! X! \5 b  p. l_nop_();
; U4 T9 s$ _" w% i_nop_();
/ o; O. s: e% [) |_nop_();
; g9 Z5 b" L+ v, B6 e! v( ?% Z_nop_();
! U( A+ \7 x( D: \( `! k0 z% l_nop_();
  V% X$ W0 R" W9 X2 d5 G}
: v( w: O) G( D//----------------------------------------  v* S" {5 x3 |6 T$ l9 Y
void FM8000_init() //初始化函数( w8 P: R+ U! c
{: s: K0 C$ m: ]! ~0 ~% T
scl=1;# q, {6 y5 q* D3 S' |
delay();
" H3 Q7 W: U0 i: v# g5 bsda=1;2 V, H- {. p$ p& I
delay();
+ f4 i6 ?7 A) y" [: j, X/ Z2 m3 x5 `}
3 S1 [9 x% p; |7 l5 G3 B! _- @5 k: H- N$ R
3 t4 a2 {# j* B( s& [
//----------------------------
  k' Q6 F9 o4 l& |$ O& c: Q5 {+ v" z! M# Z; l% n# R
  L: E7 A" F, f5 d
void start(void)     //开始函数
5 s% c7 w2 d# o6 M+ ?" r{
$ I6 B% U- z1 esda=1;
8 @% }0 C- o0 Z, W; E+ q7 d% Pscl=1;3 q8 g, d) z& c7 d# j( I) B
delay();6 Q5 J2 [2 ~' E7 u/ p
sda=0;       //拉低电平
* l$ P- R1 N5 d0 e# V3 d6 Mdelay();
* t/ v5 J0 `3 Z  Nscl=0;
5 R0 u# K1 g' \4 b}
+ d' Y8 f2 {* a+ u% S
$ u( y3 g" G* W7 y$ b
- |' i! D6 d2 R0 }: N  S+ t0 j6 g
//--------------------------------
' N9 h% _8 U0 `, j; bvoid stop(void)     //终止函数0 n6 T" D8 I& @3 ?
{( Y0 ^2 ^. d4 N8 I
sda=0;5 A" i3 X4 ~' X9 ~0 ~/ W) T
scl=1;
0 Q% f( H0 d9 w2 e8 h3 Sdelay();
  g# {; J+ o: l9 q3 N+ U( v! A& J/ usda=1;       //拉高电平
! N. [3 N' g% ~$ y! ~, Hdelay();
6 |. R; J: D1 s6 e8 q% ^/ Sscl=0;- N& l7 r- Q5 h0 D
}( l& S0 @+ k( w; Q, r$ K/ `* q

/ L6 D& c) g0 @5 J% ^+ I

3 r2 G+ \0 L" T2 q7 b//---------------------------------
& R: m  `* d9 U+ Z# k' p6 ~+ u" e# M  e6 t/ e9 l  U/ i/ y

0 A- g6 a, W7 a$ ~3 vvoid respon() //应答2 g' ~2 V7 a/ }4 h7 f' m/ H$ C/ T
{/ b% K# m6 T. _/ Y" J) U# V
uchar i;- M+ a% ^% S$ j. h( y4 [
scl=1;0 w8 [* |$ \7 D1 x3 [) T
delay();
6 C3 N' W' x( g7 e  {6 nwhile((sda==1)&&(i<250))i++;
* a% F7 a( Y1 c4 N) |scl=0;6 d/ S2 t0 J7 {1 e' L3 N
delay();
/ V. K1 [2 R* L1 U9 Z}" U% i4 Z+ {4 h7 N6 E4 W

* }! q6 Q, p; q8 ^

4 d2 |! X1 R2 _//-------------------------------- Y4 A" Z( G  k& @
void write_byte(uchar dat)    //写字节- |: C& Q$ y) R0 L: M! i5 c
{+ @# p: z1 B+ @4 @4 B
uchar i,temp;- d% ]4 C2 v/ h5 G+ r; K
temp=dat;7 H2 G% b) H+ K' n
for(i=0;i<8;i++)# ~- W. ]  ~$ y7 k3 [$ ^
{1 R( x4 O0 [/ l& @7 L- \
   temp=temp<<1;    //循环右移
$ R/ `: T5 k8 r% W/ F! @1 W   scl=0;
" M7 k7 L$ w. }/ K' k   delay();- x9 R4 r4 _: d: ]9 m
   sda=CY;      //CY为进位标志/ Y6 x! n$ N5 X
   delay();& O9 r7 u& [% v* C) u# q
   scl=1;       //拉高SCL
6 }. x+ ]! b! D# m   delay();
' \) j3 q5 R# v8 I# ]}1 w, b( C: p. U2 K5 U; r' j7 n
scl=0; 7 z2 h+ F9 X  f; l3 M# n
delay();
4 o9 H- _& h! g) osda=1;
0 m- U( U8 _  A8 t( ^' v! J7 u! fdelay();6 n: V2 N# W' l, H- l% ^+ r5 R! V2 s
}
. |5 z4 T; x" e+ W, M* I0 C% b: T- l1 g% |( e; ]. f! C% G% G1 ^6 a% ^
3 s4 N$ q" a* l7 [9 Q( a
//------------------------------------
0 e5 Z2 m, q8 T! w& ?  @* tuchar read_byte()            //读字节
+ T6 \& s4 Y, j1 B5 s2 F6 p, |{
3 ?" g( y% g2 I: ]5 @uchar i,k;( l" [; e' t+ J
scl=0;
& X/ \; d2 R" o6 _8 X- ydelay();' S6 y) z; p3 F# R7 o
sda=1;' i: c9 T# a9 t' H  T1 U
delay();
; u% o3 Q: y, V" {1 ~) Tfor(i=0;i<8;i++)
  `+ ^4 ?6 }0 C. N- O5 \9 p3 c{. A  e+ M$ y+ B; x* p
scl=1;
" A6 r$ B+ O7 f9 P7 I% P7 ~delay();, j& o6 u0 m3 [+ ~4 |- [# j
k=(k<<1)|sda;
- I+ @0 U: i0 x# fscl=0;) J7 T$ u* S3 T& D% Y
delay();- i1 ^9 t# E7 C2 Q, V
}
6 S9 N. ^) q* y$ Y( @return k;% q& X: [! o+ d1 W* k
}
+ ^! j& r+ n& ?- T  A
) f6 j: X6 d" k9 L
" n: y+ k, E9 C" P+ h
//------------------------------------
; O7 E( A, ]; I! }" k4 G$ j//------------------------------------; z$ }* D& G6 ?! X  a- U
1 F7 W3 Q9 O; v( ~: Q
/ j$ y) E( }( n+ O
//-----指定地址写入一字节数据-------& h3 k3 B. ~. w+ Q- z; S) \  u2 l
void write_add(uchar add,uchar dat)
* P* _# U! E2 x) B) D$ y6 K6 Y{
, i! p1 {2 o# t2 i  B( }; dstart();                //开始- ~+ g- L8 V; e4 x9 v& N
write_byte(0x58);       //写 器件地址及写信号
; K! @+ U- N- z" P: ]respon();     
5 e/ N6 R: w( j! l9 Twrite_byte(add);        //写字地址
7 {! v# s' ?  T( f2 ]: zrespon();
; y8 {/ }* o  B, y4 ]write_byte(dat);        //写数据0 ]* A/ Z0 r& |1 j' _) F: b
respon();
5 E! [- B9 ^& s) t) e7 o2 V8 Bstop();                 //终止
/ |& p4 Q" R# [}/ e! m1 i' C+ a
//---------------------------------8 J  `7 U& u6 ^6 r

4 q. g6 K4 O  c9 u* _  e6 W& f
6 l2 |% }* D2 c) b
//------指定地址读一字节数据-------
8 a" T  I9 V3 c: o: c$ Uuchar read_add(uchar add)
. i- |6 c) k+ K0 J/ [2 O{" I/ T8 L& j) S3 U) L
uchar date;
! ?1 a: L5 B) @6 D; |start();
7 O6 X8 n, A; ]9 h2 `5 z0 _1 {. \write_byte(0x58);     //写 器件地址2 y& m! s8 k7 ^* B9 U2 S. q
respon();0 h  Q1 k9 _5 ]2 `+ m2 X) O* d
write_byte(add);   //字节地址4 K) C  T  }* X1 w) L
respon();
$ I6 Q* l: e$ t% s6 E/ i# zstart();9 p' _' }0 d" O# Q- W
write_byte(0x59);       % B; W* i* F1 m7 |: E
respon();' e3 |* }* A( _  q. ?5 e- j+ Y
date=read_byte();# L) v, S" Q/ }: c: P+ R+ v6 z
stop();; G  l+ w1 i& d
return date;
% l7 y0 G( t- C8 w1 g}
2 _% N; ~+ i) |" i4 G* b$ ]4 o( `7 b! k" J: k  ^/ W

5 s( Z, [6 ]* E4 |, c: R
3 a& a/ y' ~( u5 B1 R3 }4 H% L3 i
  ~8 l5 M/ h/ Q" f, a
//------延时函数-------
9 ?, L' Y: v$ B9 P: Pvoid delay_i2c(uint x)//延时函数$ ]+ q0 |* b" A2 }( {  O
{' a* Y' t% ]+ R+ c. ~
uchar a,b;
2 ~' Y2 @' ?8 A! r* U: rfor(a=x;a>0;a--);- ], |8 v, |8 q: S5 `. K
//for(b=100;b>0;b--);   //速度较慢,去掉加快点8 F7 N8 g9 l% }: {1 H5 u
}, I* S$ w% W( A3 ]% b1 _6 M
" p, A9 i9 {9 _' Q/ |- m4 _

+ R4 J* B% V' s2 ?0 ?6 _( T$ Svoid delay10ms(void) //延时10毫秒, q/ d) _# v. q: h3 X: A- n8 |
{                 
4 n% D" }6 }; c9 U  o          unsigned char i,j;
9 o1 x' W8 ^5 w( g  c2 D3 r4 g5 S          for(i=20;i>0;i--)
: I7 v, U  ^. g0 N& ]+ i          for(j=248;j>0;j--);
' A) l5 |0 W6 x: d3 o$ S) b& q1 u}
5 e0 b( @# o/ K, r8 r5 G& p1 T  w& T
6 r1 X% T7 h1 h0 ~7 D& z) ~

& t/ W  W9 c9 n) ~- ^
+ i8 G" I% ~( N
/***********************************************************+ q( B; |* d' l' j* b
. q% D) t- [, Z+ B* K6 j% p
1 i6 [; Y- a5 g. }: w( ?
                      0.1增加频率
: A% e6 [2 U- b! ]                  void addfreq()! T9 S# S+ X0 T9 t/ a
% I" N1 y& E. ~. s: [; T

9 t/ _6 `5 d, k! {/ Q. g**********************************************************/
& W( T3 Q3 w/ ] void addfreq()          " r) i8 v# A, H- V5 |1 V* P
{3 H- c+ }" R( j' j2 A: A, c" O
      
. A% b" y9 I& T              delay10ms();
% I$ c" \. T% `8 U                  if(K2==0)                    # U, s/ h  V' m( `3 K& _1 u) u! y, l
          {
6 e) N5 _& w0 ~9 v8 ~) g% j                                        count+=2;) R/ q4 \; _  P% t" `

* ?2 {* e8 h7 [! z( Z. u

+ d: U! ?& e7 f5 K5 q                                        if(count==642)  //count=0对应76.0MHz,count=640对应108.0MHz,% r) |' ^/ n  I& _  M1 \
                                        {, U, n. Y. J5 v* J( {
                                           count=0;# F, L/ f+ O# ?1 V7 o9 ~0 M8 a
                                        }
! h6 ]$ {7 q: S- s  K5 s1 _                   }
) h+ j# d; w: X, \* x                  P0=0;     //写入时关闭LED,使LED显示亮度一样
" D4 \$ }3 L/ c6 Z( n! @1 y                    SetCH();# b5 @' Q9 L+ i- h% F/ o
          do {display();}
- K$ _! I2 i4 q  |" K                   while(K2==0);   //等松手,此时LED仍显示
, B; C% f% M/ A% c0 `+ f4 _ }
% b" |/ `( z) K /****************************************************************
" F6 R, s! C# B( S9 q; _! P( c
; o/ X4 }% z( T1 b

% m# K; `  v- U$ W; M* |- x$ H% F                      0.1减小频率! s# d) u2 Q" y0 s% ~3 [
                  void decfreq()1 G! B  D( J" Q  [& E. }) d
******************************************************************/
- t4 m) F# _0 K6 d0 Z void decfreq()                  N. g& d9 ~' i7 I$ f
{
2 J9 p+ `, a( w5 L, l     delay10ms();: {3 O: v3 S; H
                if(K1==0)2 s- H: m- s& `( [, v( l' p8 T
          {) H3 O2 I! @/ I3 q$ c/ R/ j5 ^
                                if(count==0)
9 q* ~* g1 E! H3 z* r4 F1 S                                        {
1 Q5 X  i8 N* I( v- U. E6 y                                           count=640;; `0 \4 D9 }; }2 x, }" S
                                        }          q5 x0 T3 m# i- M
                                 . c2 O" S4 x/ \4 S0 @
                      count-=2;. C9 l* |! ~- d/ u/ l" W
                  P0=0;     //写入时关闭LED,使LED显示亮度一样
& y( E7 t2 g5 K( D0 s8 T+ r                    SetCH();# M. ]' o$ Y. ~$ x
          do {display();}
4 k3 |" o9 ]2 U/ N- B- t                   while(K1==0);   //等松手,此时LED仍显示/ |# F0 F, V0 M3 F
           }" u! ]/ A8 D. q% N5 o
}  ! a$ P7 \3 b5 F2 |, t

& R2 x* F: j3 j& ^  S

1 S" h, W8 U2 _/ [1 X6 c0 m0 U; Y
% [0 B5 ~: |* C% |2 P; n' \- j
/***********************************************************1 r8 {8 f0 M2 a& }9 R  d5 P: l% y1 L
- R9 l& ]" a2 _/ B
9 ^: y) `- P' j8 F; {: h( S9 K
                      快速增加频率
, y" o. Z2 b; ^+ O6 P                  void fastadd()
; i  G3 X$ \) }) W; D- s2 c
! X6 q, p/ J1 r  o2 ?( z
3 x1 c) Y; F9 o
**********************************************************/
4 e1 q( M6 h( ]% W0 T* x void fastadd()         
: E% j3 W: d' B9 v; o% V{3 g8 j8 n3 [* P$ M4 F9 p
      
! c/ A9 D) e$ |2 a& q; E& w              delay10ms();- L- |7 q: o+ [7 K, h
                  if(K4==0)                    
2 O/ y0 Z) R5 V% Z7 s1 r          {# i* {: p9 r% ^& T
                                        count+=2;) }5 `( B; Z& L7 k% X

- M* x. @. q# L) p
0 N' M' O- h% u9 c" t
                                        if(count==642)" j7 k% W1 l! P- @, g8 N; d
                                        {
$ d9 [: o) M: V                                           count=0;
  p. a: F; P) W8 |% L  A                                        }
2 Z! T6 w& _7 c. a! E' N, t0 h                   }. a7 x" d% C$ e: e
                  P0=0;     //写入时关闭LED,使LED显示亮度一样6 ]1 J& h9 |) s* X1 ?" m# H: o" L1 T
                    SetCH();1 c, L2 x8 O% Q  d1 }. K/ O+ ?) w+ I
                 //  while(K4==0);   //等松手4 t  G$ K6 C; p1 e" {, ^
}
) J$ j2 N2 \% _1 P! p* [) i /****************************************************************
) V! x/ ]2 d2 n5 w" B, _
, Y/ _% J# i, n! Y) g' F/ y

6 R1 a$ W0 A: B5 {& ]7 }7 O                      快速减小频率
3 v  h+ u$ q+ I! Q. J                  void fastdec()
7 l- j% S* A: Y5 M! e/ }6 ~8 D$ R******************************************************************/+ O: t- i6 Z$ L* k* n; t
void fastdec()                " G% U+ [9 R* e8 @, D
{
0 a5 o& R# f8 T8 h4 m. b     delay10ms();
; X% b  F3 h+ C& l" B- L                if(K3==0)
' a. W1 ^4 `" F5 a          {
, `: [& x. z& `1 U; L                                if(count==0)5 ~( z$ t6 n( A- s$ F$ N5 c
                                        {
9 x+ I' N" `. y9 j+ o                                           count=640;" b! f) Q3 H6 E# s; Q* c# ~7 q
                                        }        
4 a; r. E* h+ L. `                                 
' i  j- O0 z9 a1 Y8 x! f+ H& A                      count-=2;
- \  K& |, x% o5 M- ~0 ^: k                  P0=0;     //写入时关闭LED,使LED显示亮度一样
* `9 v* E! [4 T# E% l, p' n3 J                    SetCH();
& ]; v9 E$ S- g0 l* Z8 j& z                 //          while(K3==0);   //等松手
  n8 `, [& h1 x& v/ r* R2 n           }2 i. I; {8 j( V& K5 h9 ~2 G
}  
  Y7 |* m' s* m* J5 j% v1 J- O
! e" N5 r3 G) ^+ a 6 F. c. Z4 }! C
/*********************************************************8 z1 ]/ e, E. M4 |, i0 x+ _

+ u# ~/ s1 h  p9 y, x
2 V. B2 G: P9 c* }/ W/ o
                      显示函数6 f, c" t: S# g/ l9 _6 x5 a6 i2 r
                  void display(void)9 B. v2 M5 g$ u8 b  I0 A  V6 o* K1 k/ g

9 H7 P1 |, j' K! X6 [4 P
1 p$ V) r+ w( a
*********************************************************/
  @) K% I5 p, m( L void display(void)7 i7 Q! F; h: c7 g  i* u* F
{
% D; ~) [$ |4 }9 |9 k! Q        {
& ]9 Q+ K: D$ `) {         f = (count*5+7600);               
! ^) y" a- S  c                   freq[7]=f/10000;
% T& L) s* R& q0 k5 N                 freq[6]=(f%10000)/1000;3 v6 O8 L: H$ ]
                 freq[5]=(f%1000)/100;
9 D; f4 z5 Y+ p, l2 f$ V8 ]                 freq[4]=(f%100)/10;
: v% T; \6 i9 K' T                 freq[3]=f%10;
: e- e, j" r% w" V4 @6 ]9 x4 `+ ^                 freq[1]=11;
0 v9 F" b; t0 [- Z5 G  B) G                 freq[2]=10;% C% U+ u% L& ?/ P5 I, f! u
                 freq[0]=12; / T& J$ f+ b" ^' L; b* v) C
                 temp=0;( O# `$ R  x( |* b
                   for(i=0;i<5;i++)      //后四位不显
. g2 @# A' Q5 }                        {
2 e5 A3 ?( [  }                                P1=temp;8 a6 K' H4 ]- z
                                if (i<4)                                
) I- u& z! O2 o$ [. u; v                                   {P0=table1[freq[7-i]]; 7 G9 c' l0 i% s$ P
                                    if (i==2) DIN=1;  //加小数点 ! R: U" W0 p' M% Q. ?1 t6 k' S) Q
                                    }8 ]7 h5 p% A& c0 {+ w
                                else , K& f' A8 e( E2 c1 i0 ]- N) p
                                   {P0=table2[freq[7-i]];                                
! g2 H" _* T+ K* j/ G                                   if (i==6) DIN=1;  //加小数点
$ ^3 R/ u9 m6 `0 g9 v% Q1 }                                   }
2 n+ W9 H9 `( v3 p, a                                temp=temp+1;) s! B) }: [. B; P$ k0 T
                                if (i==4)P0=0;        //第5位不显
1 o3 p' K1 q! H                                for(a=10;a>0;a--)     //延时; E' T# S% D" z4 p. d
                                for(b=248;b>0;b--);
. H) W$ _5 h1 p                          }) o' F$ c  V, M- T8 ?, R2 {
        }
3 X) P# _" \# W0 b6 [} - q6 Z; [& @0 T# r$ o' ]

) W# j3 m! o1 b& V! ^
( V! O5 d$ v# Z7 L# ~! M( b
/*************************************************************
4 [4 [! A, K! P& V. ?* @$ E
7 m6 U- R0 v; ~( k) {# e
# j+ E7 z; g; L: v9 n8 n
                  设置发射频
1 ^) R; n8 w6 y                                  void SetCH()
, W2 q' P8 D" G% \1 e) R( O0 A
1 r$ V& I5 ]4 O( r  x
: X/ ]5 b( c% J& y
************************************************************/# K% v* f$ j$ W2 J# R
void SetCH()
) O& p9 x6 D% {5 c+ D% F1 Y{" Q9 U4 C6 b  u' q  v9 B' f, y; @
    FM8000_init();         
( t# _: k' h3 [1 {        if(count<=255)                % e  n# j2 A3 X+ M! q5 s- W& w$ h* e
                        write_add(0x00,0x20);   4 R( b5 ], M! }/ g- h$ \/ A( Z9 t; U- w3 _
                        delay_i2c(100);
' i7 [+ _) U3 }6 x+ z                        write_add(0x01,count);   6 |* C0 c% L: O) `3 {
                        delay_i2c(100);        
  e+ W' }3 B% i  n/ y, {1 ~                     /* write_add(0x04,0x32); //是否把F8000内部晶振设为12MHz,自己决定  
) A: s3 ]3 D' g* J% f8 [1 Y6 c                        delay_i2c(100);*/; Y: X, ~% n* s) v6 B1 T2 w
         if((count>=256) && (count<=511))3 |( x7 L0 K1 g3 j
                {                + U/ u% j5 t0 e, j# F
                        write_add(0x00,0x21);   
3 a% P8 c& j$ F: H5 Y; f. ~                        delay_i2c(100);7 }# x3 N3 R: B4 W$ Y
                        write_add(0x01,count-256);   
: h7 D8 {, k/ z, u+ k                        delay_i2c(100);
' F7 L6 P  J9 T  {5 J                     /* write_add(0x04,0x32); //是否把F8000内部晶振设为12MHz,自己决定  9 P: E$ p+ i0 T' p
                        delay_i2c(100);*/
- ]! [% d3 T1 n: Y                }, I' s2 D* V4 u3 b
        if(count>=512)                % v$ h: N* j) _! O5 s
                {        write_add(0x00,0x22);   
* O$ U& H- Q* t: M" [4 M% K/ U                        delay_i2c(100);
7 g; v% R0 ^( z9 d& z1 b4 L5 T) V                        write_add(0x01,count-512);   
/ A- p5 d2 `  u4 ?8 {: i                        delay_i2c(100);2 [& ?+ K- t+ _! w3 `1 D5 Y% b0 i  n  }
                     /* write_add(0x04,0x32); //是否把F8000内部晶振设为12MHz,自己决定  * R7 ?+ D& M+ J7 k4 i9 |  d9 I
                        delay_i2c(100);*/
% R9 U3 @" o: w% r5 n' |                }: p, |1 \6 A4 f2 e2 r

- T" D5 W% b2 a: v" d

  c2 L% A# \* B( y( ?………………余下程序请下载附件……8 p$ B' I0 b" W7 e; _# }% m
下载:
" p* N" \- f3 r
游客,如果您要查看本帖隐藏内容请回复
& q* n; `" H& o: b( X( ?0 |: g

0 B( b; h: [2 i8 p( l/ ]8 |) {/ a! e7 l0 r
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-16 21:38 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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