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

📄 mtv230 test.c

📁 车载显示屏
💻 C
📖 第 1 页 / 共 5 页
字号:
//上下,左右,比例,天线,TFT,SYSTEM,CHANNEL
// 3------->81hz
// 4------->61hz
// 5------->48.8hz
// 6------->40.6hz
// 7------->34.8hz
//		RF = 44.35;
//		RF = RF + 0.35;
//		RF = RF *100;
//		V_test = RF ;


#include "reg51.h"
#include "intrins.h"
#include "math.h"
#include "mtv230.h"
//#include "ir_key1.h"
#include "ir_key2.h"

sbit	clk=P3^4;
sbit	sda=P3^5;
sbit	mode_h=P1^7;
sbit	mode_l=P1^6;



uchar  bdata V_flag_buf;
sbit   B_iic_buf_w=V_flag_buf^7;
sbit   B_iic_buf_r=V_flag_buf^0;
uchar  bdata V_ir_buf;
sbit   B_ir_buf=V_ir_buf^7;
uchar  bdata V_HVSTUS_buf;
sbit   B_HVSTUS_7=V_HVSTUS_buf^7;
sbit   B_HVSTUS_2=V_HVSTUS_buf^2;

uchar  bdata V_sys_flag0;
sbit   B_scan_ad=V_sys_flag0^0;
sbit   B_in_key=V_sys_flag0^1;
sbit   B_has_key=V_sys_flag0^2;
sbit   B_mute=V_sys_flag0^3;
sbit   B_dvd2av=V_sys_flag0^4;
sbit   B_right2left=V_sys_flag0^5;
sbit   B_up2down=V_sys_flag0^6;
sbit   B_has_key_s=V_sys_flag0^7;

uchar  bdata V_sys_flag1;
sbit   B_rtc_1sec=V_sys_flag1^0;
sbit   B_timer_dot=V_sys_flag1^1;
sbit   B_scan_tv=V_sys_flag1^2;
sbit   B_25215=V_sys_flag1^3;
sbit   B_ir_start=V_sys_flag1^4;
sbit   B_ir_bit=V_sys_flag1^5;
sbit   B_ir_key=V_sys_flag1^6;
sbit   B_ir_key_s=V_sys_flag1^7;

uchar  bdata V_sys_flag2;
sbit   B_scan_fm=V_sys_flag2^0;
sbit   B_scan_c2f=V_sys_flag2^1;
sbit   B_chk_syd=V_sys_flag2^2;
sbit   B_channel_100=V_sys_flag2^3;
sbit   B_432169=V_sys_flag2^4;
sbit   B_search_tv=V_sys_flag2^5;
sbit   B_search_fm=V_sys_flag2^6;
sbit   B_chk_v=V_sys_flag2^7;

uchar  bdata V_sys_flag3;
sbit   B_dis_channel=V_sys_flag3^0;
sbit   B_p2n_bak=V_sys_flag3^1;
sbit   B_iic_err=V_sys_flag3^2;
sbit   B_read_sync=V_sys_flag3^3;

uchar  bdata V_sys_option;
sbit   B_antenna=V_sys_option^0;
sbit   B_p2n=V_sys_option^1;

//====
uchar  data  V_lo1_div1;
uchar  data  V_lo1_div2;
uchar  data  V_lo2_div1;
uchar  data  V_lo2_div2;
uchar  data  V_lo2_div3;
uchar  data  V_BW;
unsigned int  data  V_cnt_fm;

uchar  data  V_divider1;
uchar  data  V_divider2;
uchar  data  V_control;
uchar  data  V_band;

uchar  data  V_ch_option0;
uchar  data  V_ch_option1;
uchar  data  V_ch_option2;

uchar  data  V_v_byte3;
uchar  data  V_v_byte4;
uchar  data  V_v_byte5;
uchar  data  V_cnt_channel;
uchar  data  V_t_dis_channel;
uchar  data  V_t_dis_menu;
uchar  data  V_t_dis_volumn;


uchar  data  V_cnt_channel_num;
uchar  data  V_cnt_channel_mode;
uchar  data  V_channel_num_temp;

uchar  data  V_channel_add;

unsigned int  data  V_scan_50ms;

uchar  data  V_aft;
uchar  data  V_t_key;
uchar  data  V_t_key_s;
uchar  data  V_cnt_key;
uchar  data  V_key_val;

unsigned int  data  V_osd_h;

uchar  data  V_osd_l;
uchar  data  V_vcnt1_l;
uchar  data  V_vcnt1_h;
uchar  data  V_cnt_125;
uchar  data  V_cnt_250;

uchar  data  V_cnt_aft;

uchar  data  V_cnt_hand_fine;
uchar  data  V_cnt_scan_key;
uchar  data  V_key_temp;


uchar  data  V_t_ir;
uchar  data  V_t_ir_s;
uchar  data  V_ir_val;
uchar  data  V_ir_val_s;
uchar  data  V_cnt_ir_bit;
uchar  data  V_cnt_ir;
uchar  data  V_ir_buf0;
uchar  data  V_ir_buf1;
uchar  data  V_ir_buf2;
uchar  data  V_ir_buf3;

uchar  data  V_initial0;
uchar  data  V_initial1;
uchar  data  V_initial2;
uchar  data  V_initial3;

uchar  data  V_cnt_pp;
uchar  data  V_total_channel;
uchar  data  V_total_fm_channel;
uchar  data  V_dis_channel;
uchar  data  V_dis_channel_bak;
uchar  data  V_dis_fm_channel;
uchar  data  V_dis_fm_channel_bak;
uchar  data  V_cnt_sys_mute;
uchar  idata  V_bright;
uchar  idata  V_color;
uchar  idata  V_contrast;
uchar  idata  V_volumn;

uchar  idata  V_sys_mode;


uchar  idata  V_cnt_key_2;
uchar  idata  V_cnt_ir_2;
uchar  idata  V_read_sync;
		
uchar  idata  V_cnt_stu;
uchar  idata  V_v_stu;
uchar  idata  V_v_stu_bak;
uchar  idata  V_t_v;
uchar  idata  V_cnt_no_signal;
unsigned int   idata  V_t_cnt_sync;
float  idata  RF;

uchar  idata  Eeprom[5];
unsigned int  idata  V_t_test;

uchar  idata  V_cnt_dis_scan;
uchar  idata  V_cnt_scan_fine;
uchar  idata  V_channel_slave;

uchar  idata  V_cnt_menu;
uchar  idata  V_cnt_sub_menu;
uchar  idata  V_t_sr;
uchar  idata  V_t_y2k;
uchar  idata  V_t_dw;
uchar  idata  V_t_yr;
uchar  idata  V_t_mo;
uchar  idata  V_t_dt;
uchar  idata  V_t_hr_h;
uchar  idata  V_t_hr_l;
uchar  idata  V_t_mn_h;
uchar  idata  V_t_mn_l;
uchar  idata  V_t_sc;
uchar  idata  V_cnt_timer;

uchar  idata  V_temp0;
uchar  idata  V_temp1;
uchar  idata  V_temp2;
uchar  idata  V_temp3;
uchar  idata  V_temp4;

uchar  idata  V_read_fm;
uchar  idata  V_read_aft_0;
uchar  idata  V_read_aft_1;
unsigned int  idata  V_test;

#define IF0 		38.900 //pure US tuner:45.75, Global tuner:38.90
#define IF1 		1220.750
#define RF_start 	44.000
#define RF_end	 	863.250

//#define RF_fm_start 	76.000
#define RF_fm_start 	87.000
#define RF_fm_end 	108.000


//#define RF_start 	224.25

#define RF_step1 	0.400
#define RF_step2 	0.050
#define RF_step3 	5.000
#define C_aft 		2

#define EEWP		Port50
#define HB_v_l		Port52	//电压1
#define HB_v_h		Port53	//电压2

#define HB_dvd2av	Port47	//dvd/av
#define HB_p2n		Port46
#define sclk_4137	Port45
#define data_4137	Port44
#define load_4137	Port43
#define HB_25215	Port40


#define	C_addr_Col	0x81
#define	C_addr_Con	0x83
#define	C_addr_Bri	0x8e



#define	C_max_tv_channel	125
#define	C_min_tv_channel	1

#define	C_max_fm_channel	96
#define	C_min_fm_channel	1

#define C_t_key			40
#define C_t_key_s		150

#define C_key_auto		0x21
#define C_key_mode		0x11
#define C_key_menu		0x22
#define C_key_ch1		0x12
#define C_key_vol1		0x24
#define C_key_ch0		0x14
#define C_key_vol0		0x28
#define C_key_432169	0x18

#define C_t_aft		300
#define C_tuner_add	0xc0
#define C_start_add	0x01
#define C_tuner_add_s	0x86
#define C_start_add_s	0x00
#define C_pwm_start	0x04
#define C_sys_start	0x09
#define C_sys_add	0x00
#define C_5p006_add	0x07

#define C_ir_t_head_0   80	//头宽度 时间下限
#define C_ir_t_head_1   140	//头宽度 时间上限
#define C_ir_t_bit_0    15	//位宽度 时间界限
#define C_ir_t_heads_0  80	//连续码头宽度 时间下限
#define C_ir_t_heads_1  104	//连续码头宽度 时间上限
#define C_t_ir_s_0      90	//
#define C_t_ir_s_1      135	//
#define C_has_ir_o      150	//V_t_ir   超时时间
#define C_has_ir_s_o    180	//V_t_ir_s 超时时间
//定义颜色
#define	BLACK		0x00
#define	BLUE		0x01
#define	GREEN		0x02
#define	CYAN		0x03
#define	RED		0x04
#define	MAGENTA      	0x05
#define	YELLOW		0x06
#define	WHITE		0x07
#define	B_BLACK		0x00
#define	B_BLUE		0x10
#define	B_GREEN		0x20
#define	B_CYAN		0x30
#define	B_RED		0x40
#define	B_MAGENTA      	0x50
#define	B_YELLOW	0x60
#define	B_WHITE		0x70
#define	F_0		0x01
#define	F_1		0x02
#define	F_2		0x03
#define	F_3		0x04
#define	F_4		0x05
#define	F_5		0x06
#define	F_6		0x07
#define	F_7		0x08
#define	F_8		0x09
#define	F_9		0x0a
#define	F_A		0x0b
#define	F_B		0x0c
#define	F_C		0x0d
#define	F_D		0x0e
#define	F_E		0x0f
#define	F_F		0x10
#define	F_G		0x11
#define	F_H		0x12
#define	F_I		0x13
#define	F_J		0x14
#define	F_K		0x15
#define	F_L		0x16
#define	F_M		0x17
#define	F_N		0x18
#define	F_O		0x01
#define	F_P		0x19
#define	F_Q		0x1a
#define	F_R		0x1b
#define	F_S		0x1c
#define	F_T		0x1d
#define	F_U		0x1e
#define	F_V		0x1f
#define	F_W		0x20
#define	F_X		0x21
#define	F_Y		0x22
#define	F_Z		0x23
#define	F_a		0x24
#define	F_b		0x25
#define	F_c		0x26
#define	F_d		0x27
#define	F_e		0x28
#define	F_f		0x29
#define	F_g		0x2a
#define	F_h		0x2b
#define	F_i		0x2c
#define	F_j		0x2d
#define	F_k		0x2e
#define	F_l		0x2f
#define	F_m		0x30
#define	F_n		0x31
#define	F_o		0x32
#define	F_p		0x33
#define	F_q		0x34
#define	F_r		0x35
#define	F_s		0x36
#define	F_t		0x37
#define	F_u		0x38
#define	F_v		0x39
#define	F_w		0x3a
#define	F_x		0x3b
#define	F_y		0x3c
#define	F_z		0x3d
#define	F_II		0x47

#define	C_add_sw	0x20
#define	C_add_pic	0x21
#define	C_add_col	0x22
#define	C_add_phase	0x23
#define	C_add_con	0x24
#define	C_add_bri	0x25
#define	C_add_gama0	0x26
#define	C_add_gama2	0x27
#define	C_add_out	0x28
#define	C_add_rgb	0x29
#define	C_add_sr	0x2a
#define	C_add_sb	0x2b
#define	C_add_com_amp	0x2c
#define	C_add_com_blk	0x2d
#define	C_add_dac_out	0x2e
#define	C_add_tint	0x2f

void Init_230(void)
{
	IE=0;
	IT1 = 0;
	IT0 = 1;	//下降沿触发
	IE1 = 0;
	EX1 = 1;
	EX0 = 1;	//外部中断0使能
	PX0=1;
	ET0 = 1;
	//ET1 = 1;
	OPTION1= 0x82;
	PadMode1=0x80;
	PadMode2=0xf2;
	PadMode3=0x7c;
	PadMode4=0xff;
	
	HV_INTEN  = 0;
	IIC_SLVBADR = 0x80|(0xc6>>1);
	IIC_INTEN = 0xe0;
	//WDT=0xc1;		//2x0.25s
	WDT=0x00;		//2x0.25s
	
	TMOD=0x12;
	//TH1=0xfc;
	//TL1=0x18;
	TH0=0x83;
	TL0=0x83;
	//HVCTR0=0Xc0;	//compsite sync
	HVCTR0=0X80;	//vertical sync
	//HV_INTEN=0X45;
	load_4137=1;
	_nop_();
	_nop_();
	_nop_();
	sclk_4137=0;
	ADC=0x82;
	PCON=0;
	TR0=1;
	TR1=0;
	EA = 1; 		// enable all interrupt
}
void init_row_ctrl(BYTE V_init_row_temp,BYTE row_val)
{
	OSDRA=V_init_row_temp&0x3f;
	OSDCA=30;
	OSDDT0=row_val;
}
void deal_ir_key_s(void)
{
	if(B_ir_key_s)
	{
		B_ir_key_s=0;
		if((V_ir_val_s==C_ir_volumn0||V_ir_val_s==C_ir_volumn1) &&  V_cnt_menu<4)B_ir_key=1;
		if(V_sys_mode==0||V_sys_mode==2)
		{
			if((V_ir_val_s==C_ir_fine0)||(V_ir_val_s==C_ir_fine1))
			{
				V_cnt_ir_2+=1;
				if(V_cnt_ir_2>=2)
				{
					V_cnt_ir_2=0;
					B_ir_key=1;
				}
			}
			
		}
	}
}
void deal_key_s(void)
{
	if(B_has_key_s)
	{
		B_has_key_s=0;
		if((V_key_val==C_key_vol0 || V_key_val==C_key_vol1) &&  V_cnt_menu<4 )B_has_key=1;
		
		if(V_key_val==C_key_auto)
		{
			V_cnt_key_2+=1;
			if(V_cnt_key_2>10)
			{
				V_cnt_key_2=0;
				V_key_val=0xff;
				B_ir_key=1;
				V_ir_val=C_ir_auto;
			}
		}
	}
}
void dis_chara_col(BYTE row_add,BYTE col_add,BYTE chara_code_col)
{
	OSDRA=row_add|0x40;
	OSDCA=col_add;
	OSDDT0=chara_code_col;
}
void dis_chara(BYTE row,BYTE col,BYTE chara_code)
{
	OSDRA=row&0x3f;
	OSDCA=col;
	OSDDT0=chara_code;
}
void init_osd0(void)
{
uchar  i,j;
	OSDCON1=0X06;
	OSDCON1=0X98;
	OSDCON2=0X0c;
	W1ROW=0x0e;		//0~14 line
	W1COL1=0X00;
	W1COL2=0Xf0;
	W2COL1=0X00;
	W3COL1=0X00;
	W4COL1=0X00;
	
	if(B_p2n)VERTD=0X00;
	else VERTD=0X00;
	HORD=25;
	CH=6;
	
	RSPACE=0;
	CHSC=0X00;
	FSSTP=0X00;
	WINSW=0X00;
	WINSH=0X00;
	WINSC=0X00;
	XDEL=0X00;
	for(i=0;i<15;i++)
	{
		init_row_ctrl(i,0x05);
		
		for(j=0;j<31;j++)
		{
			dis_chara_col(i,j,GREEN);
		}
	}
}
void init_osd2(void)
{
uchar  i,j;
	OSDCON1=0X06;
	OSDCON1=0X98;
	OSDCON2=0X0c;
	W1ROW=0x0e;		//0~14 line
	W1COL1=0X00;
	W1COL2=0Xf0;
	W2COL1=0X00;
	W3COL1=0X00;
	W4COL1=0X00;
	
	VERTD=0X00;
	HORD=25;
	CH=6;
	
	RSPACE=0;
	CHSC=0X00;
	FSSTP=0X81;
	WINSW=0X00;
	WINSH=0X00;
	WINSC=0X00;
	XDEL=0X00;
	for(i=0;i<15;i++)
	{
		init_row_ctrl(i,0x05);
		for(j=0;j<31;j++)
		{
			dis_chara_col(i,j,GREEN);
		}
	}
}
void dis_chara_h(BYTE row_h,uchar col_h,BYTE chara_code_h)
{
	
	OSDRA=row_h&0x3f;
	OSDCA=col_h;
	OSDDT1=chara_code_h;
}


void Write_4137_byte(BYTE add_4137,BYTE val_4137)
{
uchar i;
	load_4137=0;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	V_flag_buf=add_4137;
	for(i=0;i<8;i++)
	{
		sclk_4137=0;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		data_4137=B_iic_buf_w;
		V_flag_buf=V_flag_buf<<1;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		sclk_4137=1;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		sclk_4137=0;
	}
	V_flag_buf=val_4137;
	for(i=0;i<8;i++)
	{
		sclk_4137=0;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		data_4137=B_iic_buf_w;
		V_flag_buf=V_flag_buf<<1;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		sclk_4137=1;
		_nop_();
		_nop_();
		_nop_();
		_nop_();
		sclk_4137=0;
	}
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	load_4137=1;////////////////////////////////////////
}

⌨️ 快捷键说明

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