⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radio.c

📁 LC72130+1823程序 void out(uchar dat) ulong in_data(void) void out_data(uchar dat1,uchar dat2,ucha
💻 C
字号:
#include "at8xc51snd1.h"
#include "system.h"
#include "radio.h"
#include "twi.h"
#include "lcd.h"

///////////////////////  发送数据位到收音模块  /////////////////////////////
void out(uchar dat)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		delayus();
		RADI0_CL=0; 	//清收音模块时钟口
		if(dat & 0x01)	//数据口
			RADI0_DI=1;
		else
			RADI0_DI=0;
		delayus();
		RADI0_CL=1;		//收音模块时钟口置高
		dat=dat>>1;
	}
}
////////////////////////////  读中频  /////////////////////////////////////
ulong in_data(void)
{
 	 uchar i=0;
	 ulong temp=0;
	 RADI0_DO=1;
	 RADI0_CE=0; 	//清选择口
	 out(FM_MOD3);
	 RADI0_CE=1;	//置位选择口
	 delayms(5);
	 for(i=0;i<24;i++)
	 {
	  	temp=temp<<1;
	  	RADI0_CL=0;
		delayus();
		if(RADI0_DO)
			temp++;
		RADI0_CL=1;	//时钟口置高
		delayus();
	 }
	 RADI0_CE=0; 	//清选择口
	 return temp;
}
///////////////////////  发送数据位到收音模块  /////////////////////////////
void out_data(uchar dat1,uchar dat2,uchar dat3,uchar dat4)
{
	RADI0_CE=0; 	//清选择口
	out(dat1);		//模式选择-FM_MODE1;FM_MODE2;FM_MODE3;
	RADI0_CE=1;		//置位选择口
	out(dat2);		
	out(dat3);
	out(dat4);
	RADI0_CE=0; 	//清选择口
}

void display_mute(uchar dat)
{
	if(dat)
	{
		Sendlcd(1,12,0x2d);	//M
		Sendlcd(1,13,0x35);	//U
		Sendlcd(1,14,0x34);	//T
		Sendlcd(1,15,0x25);	//E
	}
	else
	{
		Sendlcd(1,12,0x00);
		Sendlcd(1,13,0x00);
		Sendlcd(1,14,0x00);
		Sendlcd(1,15,0x00);
	}
}

void RADI0_DIsplay_VOLUME(uchar volume)
{
	Sendlcd(1,0,0x36);		//V
	Sendlcd(1,1,0x2f);		//O
	Sendlcd(1,2,0x2c);		//L
	Sendlcd(1,3,0x00);		//
	Sendlcd(1,4,(30-volume)/10+0x10);	//音量十位
	Sendlcd(1,5,(30-volume)%10+0x10);	//音量个位
	Sendlcd(1,6,0x0f);		// /
	Sendlcd(1,7,0x13);		//3
	Sendlcd(1,8,0x10);		//0
}

void RADI0_DIsplay(ulong dat)
{
 	
	Sendlcd(2,0,0x26);		//F
	Sendlcd(2,1,0x2d);		//M
	if(mode==fm1mode)	Sendlcd(2,2,fm1mode+16);	//1
	else if(mode==fm2mode)	Sendlcd(2,2,fm2mode+16);//2
	else if(mode==fm3mode)	Sendlcd(2,2,fm3mode+16);//3
	Sendlcd(2,3,0x0d);		//-
	if(mode==fm1mode)
	{
		if(fm1_select>9)
		{
			Sendlcd(2,4,fm1_select/10+16);
			Sendlcd(2,5,fm1_select%10+16);
		}
		else
		{
			Sendlcd(2,4,fm1_select%10+16);
			Sendlcd(2,5,0);
		}
	}
	else if(mode==fm2mode)
	{
		if(fm2_select>9)
		{
			Sendlcd(2,4,fm2_select/10+16);
			Sendlcd(2,5,fm2_select%10+16);
		}
		else
		{
			Sendlcd(2,4,fm2_select%10+16);
			Sendlcd(2,5,0);
		}
	}
	else if(mode==fm3mode)
	{
		if(fm3_select>9)
		{
			Sendlcd(2,4,fm3_select/10+16);
			Sendlcd(2,5,fm3_select%10+16);
		}
		else
		{
			Sendlcd(2,4,fm3_select%10+16);
			Sendlcd(2,5,0);
		}
	}
	if(dat>9999)
		Sendlcd(2,7,dat/10000%10+16);
	else
		Sendlcd(2,7,0);
	Sendlcd(2,8,dat/1000%10+16);
	Sendlcd(2,9,dat/100%10+16);
	Sendlcd(2,10,14);
	Sendlcd(2,11,dat/10%10+16);
	Sendlcd(2,12,dat%10+16);
	Sendlcd(2,13,0x2d);
	Sendlcd(2,14,0x28);
	Sendlcd(2,15,0x5a);
}
void tunner_init(void)
{
 	 out_data(FM_MOD1,188,8,0x2E);
	 delayms(100);
	 out_data(FM_MOD2,0X00,0x10,0x12);
	 delayms(100);
}
void auto_search(void)
{
	uchar i=0;
	uchar m,n;
	out_data(FM_MOD2,0X00,0x10,0x12);
	freq=freq_bot-1;
	in_freq=0;
	while(freq<freq_top)
	{
		while((in_freq<342400)|(in_freq>343000))
		{
			freq++;
			if(freq>freq_top) break;
			m=freq/256;
			n=freq%256;
			out_data(FM_MOD1,n,m,0x2a);
			out_data(FM_MOD1,n,m,0x2e);
			RADI0_DIsplay(freq*5-1070);
			delayms(200);
			in_freq=in_data();
		}
		in_freq=0;
		if(freq<freq_top)
		{
			if(mode==fm1mode)
			{
				freq1[i]=freq;
				fm1_tunners=i+1;
				fm1_select=i+1;
			}
			else if(mode==fm2mode)
			{
				freq2[i]=freq;
				fm2_tunners=i+1;
				fm2_select=i+1;
			}
			else if(mode==fm3mode)
			{
				freq3[i]=freq;
				fm3_tunners=i+1;
				fm3_select=i+1;
			}
		}
		Sendlcd(3,0,i/10+16);
		Sendlcd(3,1,i%10+16);
		i++;
		if(i>20) break;
	}
	if(mode==fm1mode)
	{
		freq=freq1[0];
		fm1_select=1;
	}
	else if(mode==fm2mode)
	{
		freq=freq2[0];
		fm2_select=1;
	}
	else if(mode==fm3mode)
	{
		freq=freq3[0];
		fm3_select=1;
	}
	m=freq/256;
	n=freq%256;
	RADI0_DIsplay(freq*5-1070);
	out_data(FM_MOD1,n,m,0x2e);
	out_data(FM_MOD2,0X40,0x10,0x12);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -