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

📄 t10a2_drive.c

📁 AVR单片机基础程序实例! 十个程序源代码。
💻 C
📖 第 1 页 / 共 2 页
字号:
			ram_1[j]-=1;
			if(ram_1[j]>70)ram_1[j]=0;
			bdata2_flag|=BIT(VOL_CHANGE_F);
		}
		j++;
		if(!(bdata1_flag&BIT(CHANNLE_2AND5_F)))
		{
			if(j==2)j=5;
		}
	}while(j<6);
}
void ht_vol_disposal(void)//处理HT模式 音量
{
	uchar j=0;
	do
	{
		if(ram[0]+ram_ht[9*mode_select_ht+j+1]<10)
		{
			ram_ht[9*mode_select_ht+j+1]=10-ram[0];
			bdata2_flag|=BIT(VOL_CHANGE_F);
		}
		if(ram_1[j]<(ram[0]+ram_ht[9*mode_select_ht+j+1]-10))
		{
			ram_1[j]+=1;
			if(ram_1[j]>70)ram_1[j]=70;
			bdata2_flag|=BIT(VOL_CHANGE_F);
		}
		if(ram_1[j]>(ram[0]+ram_ht[9*mode_select_ht+j+1]-10))
		{
			ram_1[j]-=1;
			if(ram_1[j]>70)ram_1[j]=0;
			bdata2_flag|=BIT(VOL_CHANGE_F);

		}
		j++;
		if(!(bdata1_flag&BIT(CHANNLE_2AND5_F)))
		{
			if(j==2)j=5;
		}
	}while(j<6);
}
void cd_vol_disposal(void)//处理CD模式 音量
{
	uchar j=0;
	do
	{
		if(ram[0]+ram_cd[j+1]<10)
		{
			ram_cd[j+1]=10-ram[0];
			bdata2_flag|=BIT(VOL_CHANGE_F);
		}
		if(ram_1[j]<(ram[0]+ram_cd[j+1]-10))
		{
			ram_1[j]+=1;
			if(ram_1[j]>70)ram_1[j]=70;
			bdata2_flag|=BIT(VOL_CHANGE_F);
		}
		if(ram_1[j]>(ram[0]+ram_cd[j+1]-10))
		{
			ram_1[j]-=1;
			if(ram_1[j]>70)ram_1[j]=0;
			bdata2_flag|=BIT(VOL_CHANGE_F);
		}
		j++;
		if(!(bdata1_flag&BIT(CHANNLE_2AND5_F)))
		{
			if(j==2)j=5;
		}
	}while(j<6);
}

void vol_up_slowly_disposal(void)
{
	if(bdata4_flag&BIT(AUTO_SEARCH_F))return;//自动搜索状态,不打开音量
	//if(bdata6_flag&BIT(OUT_PUT_FLAG0))return;//2007/5/6  解码第一次进OUTPUT方式未送之前静音
	if((bdata0_flag&BIT(VOL_UP_FLAG))&&(!(bdata0_flag&BIT(MUTE_F)))&&(!(bdata2_flag&BIT(TURN_OFF_F)))/*&&(!(bdata4_flag&BIT(EDITOR_ADD_F)))*/)//VOL_UP_FLAG&!MUTE_F//更改//新加,标志位
	{
		//mute=0;//静音开关打开
		if(bdata1_flag&BIT(CHANNLE_2AND5_F))//CHANNLE_2AND5_F=1
		{
		
			switch(theatre_mode)		//处理5.1ch音量
			{
				case 0:
				tv_vol_disposal();
				break;
				case 1:
				ht_vol_disposal();
				break;
				case 2:
				cd_vol_disposal();
				break;
				default:
				break;
			}
		}
		else //CHANNLE_2AND5_F=0	 处理2.1ch音量
		{
		
			if(sl_vol_bak!=0)
			{
				sl_vol_bak=0;
				bdata2_flag|=BIT(VOL_CHANGE_F);
			}
			if(sr_vol_bak!=0)
			{
				sr_vol_bak=0;
				bdata2_flag|=BIT(VOL_CHANGE_F);
			}
			if(ce_vol_bak!=0)
			{
				ce_vol_bak=0;
				bdata2_flag|=BIT(VOL_CHANGE_F);
			}
			switch(theatre_mode)
			{
				case 0:
				tv_vol_disposal();
				break;
				case 1:
				ht_vol_disposal();
				break;
				case 2:
				cd_vol_disposal();
				break;
				default:
				break;
			}
		}
		if(bdata2_flag&BIT(VOL_CHANGE_F))//VOL_CHANGE_F=1;写音量
		{
			bdata2_flag&=~BIT(VOL_CHANGE_F);			
			sendbyte1_r2s15902();//bass,treble
			sendbyte2_r2s15902();//fl,fr
			sendbyte3_r2s15902();//cen,sw,
			sendbyte4_r2s15902();//sl,sr
		}
	}
}
void reset_disposal(void)//出厂设置,  改
{
	uchar i,j;
	ram[0]=30;
	for(j=0;j<10;j++)//检测读数
	{
		for(i=1;i<3;i++)
		{
			ram[10*j+i]=10;//电视影院
		}
		ram[10*j+5]=10;
		ram[10*j+6]=10;

		//ram[j*10+7]=5;

		ram[10*j+3]=tv_mode_parameter[ram[j*10+7]][0];
		ram[10*j+4]=tv_mode_parameter[ram[j*10+7]][1];
		ram[10*j+8]=tv_mode_parameter[ram[j*10+7]][2];
		ram[10*j+9]=tv_mode_parameter[ram[j*10+7]][3];
		//ram[j*10+7]=5;//模式不清?		//ram[j*10+8]=7;//bass	//要对应相应模式
		//ram[j*10+9]=7;//treable
		ram[j*10+10]=0;//输出5.1
	}
	
	tv_input_f|=BIT(TV_5CH1_ON);
	tv_input_f|=BIT(TV_COAXIAL_ON);
	ht_input_f|=BIT(HT_5CH1_ON);
	ht_input_f&=~BIT(HT_COAXIAL_ON);
	system_setup|=BIT(TONGBU_5CH1);/*要随时修改,跟上面一定要对应*/
	system_setup&=~BIT(TONGBU_COAXIAL_ON);
	ram_ht[0]=5;//mode
	for(j=0;j<6;j++)
	{
		for(i=1;i<7;i++)
		{
			ram_ht[j*9+i]=10;
		}
		ram_ht[j*9+7]=7;
		ram_ht[j*9+8]=7;
		ram_ht[j*9+9]=0;//输出5.1
	}
	for(j=0;j<6;j++)//家庭影院调模式
	{
		ram_ht[j*9+3]=ht_mode_parameter[j][0];
		ram_ht[j*9+4]=ht_mode_parameter[j][1];
		ram_ht[j*9+7]=ht_mode_parameter[j][2];
		ram_ht[j*9+8]=ht_mode_parameter[j][3];
	}
	for(i=1;i<7;i++)
	{
		ram_cd[i]=10;
	}
	ram_cd[7]=7;
	ram_cd[8]=7;
	ram_cd[9]=0;//输出5.1
	bdata6_flag&=~BIT(SPEAKER_BIG_FLAG);//恢复成小喇叭	
	bdata6_flag|=BIT(CHANGE_SPEAKER);
	
	ram[112]=20;//mic_vol1=20;
	ram[113]=20;//mic_vol2=20;
	
	mic_echo=6;
	mic_echo_user=6;	
	mic_delay=8;
	mic_delay_user = 8;
	mic_treble=4;
	mic_treble_user=4;
	mic_bass=4;
	mic_bass_user=4;
		
//	PORTB&=~BIT(SPEAKER_SELECT);		//	1204
	//卡拉OK复位没有写
	sendbyte1_r2s15902();
	sendbyte2_r2s15902();
	sendbyte3_r2s15902();
	sendbyte4_r2s15902();
	bdata0_flag|=BIT(VOL_DOWN_FLAG);
	vol_max();
	write_2313_page();/*kalaok 未写*/
	write_mic_delay();//kalaok delay	
	bdata2_flag|=BIT(EEPROM_SAVE_F);
}

void write4094(uchar data4094)
{
	uchar Bits=0;
	PORTD&=~BIT(stb_4094);
	PORTD&=~BIT(scl_4094);
	for(Bits = 0; Bits < 8; Bits++ )
    {
				if(data4094&0x80)
				PORTD|=BIT(sda_4094);
				else 	PORTD&=~BIT(sda_4094);
				data4094<<=1;
        PORTD|=BIT(scl_4094);
        delay_us(3);
        PORTD&=~BIT(scl_4094);
		}
	PORTD|=BIT(stb_4094);
	delay_us(3);
	PORTD&=~BIT(stb_4094);
}

void Rotary_Proc(void)
{
	static unsigned char Rotary_Code = 0;
	uchar Rotary_Temp = 0;
	
	Rotary_Temp = Rotary_Code;

	//if(!(PINC&BIT(CHECK_SINGLE)))

	if (TEST_BIT(PINB,KEYVOLA))
	{
		Rotary_Temp |= 0x02;
	}
	else
	{
		Rotary_Temp &= 0xFD;
	}
	
	if (TEST_BIT(PINB,KEYVOLB))
	{
		Rotary_Temp |= 0x01;
	}
	else
	{
		Rotary_Temp &= 0xFE;
	}	

	if (Rotary_Temp != Rotary_Code)
	{
		Rotary_Code <<= 1;
		if (TEST_BIT(PINB,KEYVOLA))
		{
			Rotary_Code |= 0x01;
		}
		else
		{
			Rotary_Code &= 0xFE;
		}
		
		Rotary_Code <<= 1;
		if (TEST_BIT(PINB,KEYVOLB))
		{
			Rotary_Code |= 0x01;
		}
		else
		{
			Rotary_Code &= 0xFE;
		}

		if (Rotary_Code == 0xE1)	//0xB4也可以 VOL+
		{
			remote_data2 = 0x15;
		}
		else if (Rotary_Code == 0xD2)		//0xE8也可以 VOL-
		{
			remote_data2 = 0x14;
		}		
	}
}

//====================================================================
void buzzer_ok_rou(void)
{
	OCR0 = 50;
	b_stop_beep_timer = 5;
	po_buzzer_set(1);
}
//--------------------------------------------------------------
void buzzer_fail_rou(void)
{
	OCR0 = 200;
	b_stop_beep_timer = 2;
	po_buzzer_set(1);
}

/******************************************************************************/
/*	Function:	LED漫漫熄灭,慢慢点亮
/*	Input:		none
/*	Output:		none
/******************************************************************************/
void LED_Flash(void)
{	
	static unsigned char LED_Rate = 0;
	static unsigned char F_LED_Flash = 0;
	
	if (!(bdata0_flag&BIT(RUN_F)) && (!(bdata2_flag&BIT(TURN_ON_F))))
	{	
		data_4094&=~BIT(led_blue);
		if (LED_Flash_Timer <= LED_Rate)
		{
			data_4094&=~BIT(led_green);
			write4094(data_4094);		
		}
		else
		{
			data_4094|=BIT(led_green);
			write4094(data_4094);
		}
		
		if (LED_Flash_Timer == 0)
		{
			LED_Flash_Timer = 20;
		}
		
		if (LED_Flash_Timer1 == 1)
		{
			LED_Flash_Timer1 = 0;
			
			if (F_LED_Flash == 0)
			{
				if (LED_Rate < 10)
				{
					LED_Rate = LED_Rate + 1;
				}
				else
				{
					LED_Rate = LED_Rate + 1;
				}
			}
			else
			{
				if (LED_Rate > 10)
				{
					LED_Rate = LED_Rate - 1;
				}
				else
				{
					LED_Rate = LED_Rate - 1;
				}
			}
			
			if ((LED_Rate >= 30)||(LED_Rate <= 0))
			{	
				if (F_LED_Flash == 0)
				{
					F_LED_Flash = 1;
				}
				else
				{
					F_LED_Flash = 0;
				}
			}			
		}
	}
	else
	{
		F_LED_Flash = 1;
		LED_Rate = 30;
		LED_Flash_Timer = 0;
		VFD_isr();
	}
}

⌨️ 快捷键说明

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