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

📄 key.c

📁 T112 MCU源程码,用于T112外接MCU篇程,用来驱动模拟屏
💻 C
📖 第 1 页 / 共 2 页
字号:
	}
	swtich(Standard)
	{
		case 0:
			TV_total_turn=turn_pal_uhf2;				/////有待定义参数
			Fre_tab=0;
			m_cStandard=S_PAL;
			m_cChroma=S_PAL;
			break;
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		case 6:
			break;
	}
	SetSignalStd();
	////写高频头
}

/**********************************************************************
			自动搜查参数处理
**********************************************************************/
			
void auto_turn_set(void)
{								////全频段搜查
	if(!auto_turn)
	{	
		CB_tvnum=0;					////从最低起点搜查				
		hand_turn	=	1;			////在Tmier0和meun中清0
		auto_turn	=	0;
	}
}
/**********************************************************************
			自动搜查TV台
**********************************************************************/
void auto_turn_go(void)
{
	CB_tvnum++;
	if(CB_tvnum>TV_total_turn)
	{
		auto_turn	=	0;
		CB_tvnum	=	0;
		break;
	}
	////初始化Tmier0			/////搜查TV时时间较长,不可关OSD
	////写高频头
	////读状态
	if(TV_found)				////在Tmier0和meun中清0
	{
		////保存频道	
		////台号加????	
		////OSD_show
	}					
}
/**********************************************************************
			手动搜查TV台
**********************************************************************/
void hand_turn_up_go(void)
{									
	CB_tvnum++;
	if(CB_tvnum>TV_total_turn)
	{
		hand_turn	=	0;
		CB_tvnum	=	0;
		break;
	}
	if(!TV_found)				////		搜查到有台,不动,没台时或继续搜查时才执行下面
	{
		////初始化Tmier0		////		搜查TV时时间较长,不可关OSD
		////写高频头
		////读状态
	}
	if(TV_found)				////		应在主程序处理处清0	
	////OSD_show
}
/***********************************************************************
			      手动搜查参数处理(UP)
***********************************************************************/
void hand_turn_up_set(void)					
{
	if(!hand_turn)									////		判断是否已经在手动搜查
	{
		hand_turn	=	1;						////		不是,置手动搜查已执行标志,在Tmier0和meun中清0
		auto_turn	=	0;						////		清自动搜查标志
		switch(CB_Fre)								////		选择锁设定的频率段值		////CB_Fre保存值
		{
			case 0:								////		高频段
				CB_tvnum=0;	
				break;							////		从头开始搜查(高频段起始地址
			case 1:								////		甚高频段
				switch(m_cStandard)					////		判断所选择的信号制式
				{
					case S_PAL:					////		不同的制式,搜查的起点不同
							CB_tvnum=turn_apl_vhf1;		////vhfl1/vhf2__vhfh1/vhfh2__uhf1/uhf2
							break;
					case S_PAL_N:
							CB_tvnum=turn_pal_n_vhf1;
							break;
					case S_PAL_M:
							CB_tvnum=turn_pal_m_vhf1;
							break;
					case S_NTSC:
							CB_tvnum=turn_ntsc_vhf1;
							break;
				}
				break;
			case 2:								////		超高频
				switch(m_cStandard)
				{
					case S_PAL:
							CB_tvnum=turn_pal_uhf1;		
							break;
					case S_PAL_N:
							CB_tvnum=turn_pal_n_uhf1;
							break;
					case S_PAL_M:
							CB_tvnum=turn_pal_m_uhf1;
							break;
					case S_NTSC:
							CB_tvnum=turn_ntsc1_uhf1;
							break;
				}								
				break;
		}
	}	
	else
	{	
		again_go	=	1;
	}
}
/***********************************************************************
				加键处理程序
***********************************************************************/
void Key_upEvent(void)
{
	if(power_control&&(hand_turn|auto_turn))				////		待机状态下及审查TV时无效
		break;
	//初始化Tmier0	
	if(OSD_open)								////		如果菜单打开,则调节相应参数和设置
	{
		switch(Menu_OSD)						////		不同的菜单设置不同
		{
			case 0:							////		菜单1
				switch(Menu_row)				////		不同的调节项,调节不同
				{
					case 0:					////		调节项1:亮度
						bright++;			
						if(bright>adjust_max1)
						{
							bright=adjust_max1;
						}
						////写T112
						////OSD_show
						break;
					case 1:					////		调节项2:对比度
						comp++;
						if(comp>adjust_num1)
						{
							comp=adjust_max1;
						}
						////写T112
						////OSD_show
						break;	
					case 2:					////		调节项3:色度
						color++;
						if(color>adjust_num1)
						{
							color=adjust_max1;
						}
						////写T112
						////OSD_show
						break;
					case 3: 				////		调节项4:色调
						hue++;
						if(hue>adjust_num2)
						{
							hue=adjust_max2;
						}
						////写T112
						////OSD_show
						break;
					default:
						break;
				}
					
				break;
			case 1:							////		菜单2
				switch(Menu_row)
				{
					case 0:					////		选台/用于排台、微调
						TV_num++;
						if(TV_num>TV_total)		////		注意,没定义
						{
							TV_num	=	0;
						}
						////写高频头
						////OSD_show			////		主要显示该调节参数
						break;
					case 1:					////		频段设置,用于搜查TV
						CB_Fre++;
						if(CB_Fre>2);
						{
							CB_Fre=0;
						}
						////OSD_show
						break;
					case 2:					////		微调
						////读出当前台的台频DB_Fre=readEProm(TV_num)
						DB_Fre+=small_turn_step;
						////写高频头			////		注意,当调节好时如等待菜单退出时,则保存该值	
						////OSD_show				
						break;
					case 3:
						hand_turn_up_set();		////		设定手动搜查参数及开其搜查标志位				
						break;
					case 4:					
						auto_turn_set();		////		设定自动搜查参数及开其搜查标志位
						break;
					case 5:
						felt_set();			////		制式选择处理
						break;						
					default:
						break;
				}
				break;
			case 2:
				switch(Menu_row)
				{
					switch(Menu_row)
					{
						case 0:
							left_right=~left_right;
							if(left_right)
							{
								Dis_Mode=TOP_LEFT;
							}
							else
							{
								Dis_Mode=TOP_RIGHT;
							}							
							///OSD_show
							SET_Dismod();
							break;
						case 1:
							top_down=~top_down;
							if(top_down)
							{
								Dis_Mode=BOTTOM_LEFT;
							}
							else
							{
								Dis_Mode=BOTTOM_RIGHT;
							}
							///OSD_show
							SET_Dismod();
							break;
						case 2:
							auto_power=~auto_power;
							break;
						default:
							break;
					}
				}
				break;
			case 3:
				///退出OSD
				break;
			default:
				break;
		}
	}
	else
	{
		vol_num++;
		if(vol_num>vol_max)
		{
			vol_num=vol_max;
		}
	////OSD_show
	////控制音量
	}
}
/***********************************************************************
				菜单处理程序
***********************************************************************/
void MenuEvent(void)
{
	if(power_control)							////		待机状态下无效
		break;
	else
	{
		power_key_unlock		=	0;			////		非待机下清power/avt键锁态
		atv_key_unlock			=	0;
		if(!meum_key_unlock)						////		menu键在非锁态才有效
		{
			//初始化Tmier0
			Menu_OSD++;						////		菜单界面选择及停止TV搜查
			OSD_open		=	1;			////		OSD打开标志
			if(source_gate==0)					////		判断锁选择的视频源
			{							////		TV
				if(Menu_OSD==1&&(hand_turn|auto_turn))		////		当当前的是第二个菜单时,并且正在搜查TV
				{
					hand_turn	=	0;		////		停止搜查TV
					aotu_turn	=	0;
					TV_found	=	0;		////		但是这里不保存该频道
					Menu_OSD--;				////		返回原值
					///OSD_show				////		tingzi		
				}
				else						////		否则,执行菜单切换
				{
				if(Menu_OSD>3)					////		包括空的有4个
					{
						Menu_OSD=0;
				  	}
				}
							  	
			}
			else							////		AV1/AV2
			{
				if(Menu_OSD==1)					////		当选择了第二个菜单时跳到第三个菜单
				{
					Menu_OSD=2;
				}
				if(Menu_OSD>3)
					{
						Menu_OSD=0;
				  	}
			}
		//显示相应的菜单						////		显示相应的菜单,应线确定是否为菜单切换			
		}
		if(~(key_data|0xf7))						////		一直按线,设定在锁态
			meum_key_unlock		=	1;
		else
			meum_key_unlock		=	0;			////		否则非锁
	}	
}
/***********************************************************************
				AV_TV切换程序
***********************************************************************/
void TAvEvent(void)
{
	
	if(power_control&&(hand_turn|auto_turn))			////		待机状态下及审查TV时无效
	{
		break;
	}
	//初始化Tmier0							////		重新设置Tmier0,有键动作
	OSD_open			=	0;			////		菜单开标志清0
	power_key_unlock		=	0;			////		清楚相应键锁态
	meum_key_unlock			=	0;
	if(!atv_key_unlock)						////		在非锁态执行下面步骤
	{
		source_gate++;						////		通道循环加
		if(source_gate>2)					////		最多3路通道
		{
			source_gate=0;
		}
		//“关屏”						////		首先关屏?,
		//写T112选择相应的通道					////		选择相应设置通道
		//显示通道OSD						////		显示相应通道OSD(右上角)
		//“开屏”						////		开屏
	}
	if(~(key_data|0xbf))						////		判断键是否放开
		atv_key_unlock		=	1;			////		没有,锁住键
	else
		atv_key_unlock		=	0;			////		有,放开键
 }
/***********************************************************************
				电源键处理程序
***********************************************************************/
void PowerEvent(void)
{									////		待机,应初始化相应的参数,以便再开机初始化
	//禁止Tmier0
	OSD_open			=	0;			////		OSD没开		
	Menu_OSD			=	0;			////		菜单回到0
	meum_key_unlock			=	0;			
	atv_key_unlock			=	0;
	hand_turn			=	0;			////		手动搜查禁止
	auto_turn			=	0;			////		自动搜查禁止
	if(!power_key_unlock)						////		该键是否锁住
	{
		power_control		=	~power_control;		////		不是,控制电源
	}
	if(~(key_data|0xfe))						////		再读该键是否还按下
		power_key_unlock	=	1;			////		是,锁住
	else
		power_key_unlock	=	0;			////		不是,开锁
}

/***********************************************************************
				键盘扫描程序
***********************************************************************/
void key_scan(void)
{
	oldkey	=	key_data&0x7f;					////读键值
	twdDelay1(1800);						////延时20ms,防振,时间应根据实际相应调整
	oldkey	=	key_data&0x7f;					////再读值
	if((oldkey=newkey) && (newkey!=0x7f))				////两次读写值相等,并有键按下
	{
		switch(newkey)
			{
				case 0x7e:
							PowerEvent();
							break;
				case 0x7d:
							Key_upEvent();
							break;
				case 0x7b:
							Key_downEvent();
							break;
				case 0x77:
							MenuEvent();
							break;
				case 0x6f:
							Ch_inEvent();
							break;
				case 0x5f:
							Ch_deEvent();
							break;
				case 0x3f:
							TAvEvent();
							break;
				default:	break;
			}
	}
}
/************************************************************************/
					

⌨️ 快捷键说明

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