当前位置:首页 > 基于AT89C52控制的FM收音机
3 FM收音机电路图:
4 FM收音机实物图:
如图,工作在105.1MHz
5.FM收音机核心程序:
#pragma SMALL
#include
#define uchar unsigned char #define uint unsigned int sbit SDA =P1^1; sbit SCL=P1^0; sbit LEDG=P3^5; sbit LEDR=P3^7; sbit S1=P1^4 ;
unsigned long PLL; uint FG[5];
bit RF=0X08; bit BLF=0X09; bit STERE0=0X0A; uchar MRD[5],MTD[5];
uchar display[10]={ 0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; /*IIC总线程序*/ void clr() { MRD[0]=0X00;
MRD[1]=0X00; MRD[2]=0X00; MRD[3]=0X00; MRD[4]=0X00; PLL=0;
}
void del240() {
int i,j; }
void FM_WT( ) { int i; L2: do
{
sta();
wrbyt(0xc0); cack();
} while(F0==1) ; for(i=240;i>0;i--)
for(j=110;j>0;j--) ;
for(i=0;i<5;i++) {wrbyt(MTD[i]) ; cack();
while(F0==1) goto L2 ; }
stop(); }
void FM_RD () {
int i;
uchar data0;
do{ sta();
wrbyt(0xc1) ; cack();
} while(F0==1) ; for (i=0;i<5;i++) {
data0=rdbyt(); MRD[i]=data0;
if(i<4)mack(); }
mnack(); stop();
RF=MRD[0]/2/2/2/2/2/2 ; BLF=MRD[0]/2/2/2/2/2%2;
PLL=(MRD[0]&0X3F)*16*16+MRD[1];
STERE0=MRD[2]/2/2/2/2/2/2;
}
void PLLDIS() {
unsigned long F;
int i ;
F=(PLL*8192+225000)/10000; FG[0]=F/10000; FG[1]=(F000)/1000; FG[2]=(F00)/100; FG[3]=(F0)/10; FG[4]=F;
if (FG[4]>5)FG[3]=FG[3]+1; if(FG[3]>9) {
FG[2]=FG[2]+1;
FG[3]=0; }
if (FG[2]>9) {
FG[1]=FG[1]+1; FG[2]=0;}
if(FG[1]>9) {
FG[0]=1; FG[1]=0; }
for (i=3;i>=0;i--) { if(i!=2)
{ SBUF=display[FG[i]]; } else SBUF=display[FG[i]]&0xfe ; while (TI==0); } }
void main() {
uint i=1; SCON=0x00; BLF=0; RF=0;
STERE0=0; LEDG=1; LEDR=1;
MTD[0]=0X2A; MTD[1]=0X9E; MTD[2]=0XC0; MTD[3]=0X17; MTD[4]=0X00; FM_WT(); del240(); clr(); FM_RD(); PLLDIS();
//if(STERE0==1)LEDG=0; L1:if(i==1) {
TI=0;
共分享92篇相关文档