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

📄 main.c

📁 一个带收音的功放程序, VFD显示驱动用一个非常实用的方法, 稍加修改即可换成不同的VFD, 功放芯片用M61538
💻 C
字号:
/*==================================================================
				    AV解码功率放大器

主控MCU:     		MX10FMAXDPC
显示芯片:    		PT16312
音量控制芯片:		M62429
数字音频接收芯片:  CS8415
AUDIO DAC:          CS4360
AUDIO ADC:          CS5340
音频解码器:        CS493263(不带PROLOGIC II)
功放芯片:          FL,FR采用TDA7265,CENTER采用TDA2050,SUB WOOFER采用TDA7296

===================================================================
作者:        		David.Dong
编写日期:    		2004-11-16
修改日期:          2004-12-17
==================================================================*/
#define     Variable_GLOBE
#include	"reg52.h"
#include 	"intrins.h"
#include 	"..\..\inc\globedef.h"
#include 	"..\..\inc\keydef.h"
#include    "..\..\inc\keyproc.h"
#include 	"..\..\inc\vfddef.h"
#include 	"..\..\inc\intctrl.h"
#include	"..\..\inc\delay.h"
#include	"..\..\inc\m61538.h"
#include	"..\..\inc\tuner.h"
#include	"..\..\inc\i2c.h"


void    	MCU_Init(void);
void 	 	State_Init(void);

/*==================================================================
描述: 完成任务的循环,主要是处理按键输入,根据按键输入调整工作状态
==================================================================*/
void main(void)
{
	
	MCU_Init();							//mcu初始化, 包括定时器,外部中断,I/O等
	DelayX1ms(200);						//延时50ms
	State_Init();						//初始一些状态
	DelayX1ms(50);	
	
	VFD_Init();	
	TR1 = 1;						//VFD芯片初始化
	TR2 = 1;							//定时器1开始计数	
	do
	{
		if(ReadKey_Timer == 20)
		{			
	    	 VFD_SearchKey();			//查询面板按键,飞梭按键在Timer1中断中,	    	 			
			 ReadKey_Timer   = 0;													
		}			
		KEY_Proc();						//按键处理
		if(1 == POWER_Status)			//如果在工作状态
		{
			Tuner_Proc();				//tuner部分处理
			VFD_Task_Proc();			//VFD刷新显示
		}
	}while(1);
}
void MCU_Init(void)
{
	//IE寄存器
	EA  = 0;				//关闭所有中断
	
	ES  = 0;				//禁止串口中断
	ET1 = 1;				//允许Timer1中断
	EX1 = 1;				//允许EX1中断
	ET0 = 1;				//允许Timer0中断
	EX0 = 0;				//允许EX0中断

	Timer2_CntL = 0x18;
	Timer2_CntH = 0xFC;
	RCAP2L = Timer2_CntL;
	RCAP2H = Timer2_CntH;

	ET2 = 1;
	TF2 = 0;
	EXF2 = 0;
	RCLK = 0;
	TCLK = 0;
	EXEN2 = 0;
	C_T2 = 0;
	CP_RL2 = 0;
	TR2 = 1;
	P0 = 0xFF;				//各个端口都初始化为输入状态
	P1 = 0xFF;				//
	P2 = 0xFF;				//
	P3 = 0xFF;				//

	TMOD=0x11;				//置计数/定时器1为16位定时器

	//TCON=0x45;			//外部中断
	TR0 = 0;				//定时器0停止计数	
	TR1 = 1;				//定时器1开始计数	
	TR2 = 1;				//定时器1开始计数	
	IT1 = 1;				//设置外部中断1为下降沿中断
	IT0 = 1;				//设置外部中断0为下降沿中断
	
#ifdef 	USE_STC_MCU
	AUXR |= 0x1;
#endif

	EA=1;					//开中断
}
/*================================================
描述:   工作状态, 音量等的状态初始化
参数:   无
返回:   无
================================================*/
void 	State_Init(void)
{

	AV_STANDBY = 1;
	Current_State 	= STANDBY;				//设置初始状态为STANDBY	
	Current_Key 	= NO_KEY;				//当前无按键输入
	Mute_Switch 	= 1;					//在静音状态	
	CD4053_SELECT   = 1;                    //选择是5.1输入还是2ch输入
	ReadKey_Timer   = 0;
	POWER_Status 	= 0;
	Remote_value    = NO_KEY;
	IR_KeyAct		= 0;
	Jog_Key			= NO_KEY;
	Volume_Key_Dealed = 0;
 	Current_Remote_In = 0;	
	Key_Timer = 0;	
	FMAM_PRESSED = 0;
	TO_MAIN_DISPLAY = 0;
	Auto_Scan_Enable = 0;
	Jog_B_Buffer = 0;
	
	TRI_TUNER_DATA;
	CLEAR_M61538_CLK;
	CLEAR_M61538_DATA;
	FLASH_TEMP = 0;	
	
}

⌨️ 快捷键说明

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