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

📄 newlcdtest_1127.c

📁 8051f020的屏显和控制文件包含头文件。开发环境可选用KEIL
💻 C
📖 第 1 页 / 共 5 页
字号:
			        freq_clk=buf[3];
			        if(en_power==2)LEDSTATE=LEDSTATE&0xdf;
			        else LEDSTATE=LEDSTATE|0x20;
			        sent(EN_RF,0x00,0x00,en_power|freq_clk);
			        str_right();
			    }
			else   //数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	        }
		   	 }
		  else    //读取工作状态
		  {
		  	SBUF0=(en_power|freq_clk);
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		   	}
                 break;
             case 0x06:                         //载波频率,FREQ
		if((buf[1]&0x80)==0)//设置工作参数
		{
			unite(buf[3],buf[4]);
			if((ml_data<=2100)&&(ml_data>=0))
			{ 
				freq_carry=ml_data;
			     	freq_div(freq_carry);
			     	dispart(freq_msb);
	                        sent(FREQ_M,0x00,msb,lsb);
	                        dispart(freq_lsb);
	                        sent(FREQ_L,0x00,msb,lsb);
	                        str_right();
	                     }	
			else //数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		  }
	        else   //读取工作状态
		{
			dispart(freq_carry);
		   	SBUF0=msb;
		   	while(!TI0);
		   	TI0=0;
		   	SBUF0=lsb;
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		  }
		break;
	     case 0x07:                        //音频输入,TUNNEL
		if((buf[1]&0x80)==0)//设置工作参数
		{
			if((buf[4]>=0)&&(buf[4]<=2))
			{
				tunnel_choice=buf[4];
	                        sent(TUNNEL,0x00,0x00,tunnel_choice);
	                        str_right();
	                      }
	                else //数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		   }
		else    //读取工作状态
		{
			SBUF0=tunnel_choice;
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		  }
		break;
	    case 0x08:                         //工作模式,MODE
		if((buf[1]&0x80)==0)//设置工作参数
		{
			if((buf[4]==0)||(buf[4]==1))
			{
				mode_operate=buf[4];
		                sent(MODE,0x00,0x00,mode_operate);
		                str_right();
		             }
		        else //数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		  }
		else   //读取工作状态
		{
		   	SBUF0=mode_operate;
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		  } 
		break;
	    case 0x09:                         //预加重时间,TIME
		if((buf[1]&0x80)==0)//设置工作参数
		{
			if((buf[4]<=3)&&(buf[4]>=0))
			{
				time_choice=buf[4];
		   	     	sent(TIME,0x00,0x00,time_choice);
		   	     	str_right();
		   	      }
		   	else //数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		  }
		else   //读取工作状态
		{
		   	SBUF0=time_choice;
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		  }
		break;
	     case 0x0A:                         //音频延时,DELAY
		if((buf[1]&0x80)==0)//设置工作参数
		{
			unite24(buf[2],buf[3],buf[4]);
			if((mil_data<=500000)&&(mil_data>=0))
			{  
				delay_audio=mil_data;
			     	delay_div(delay_audio);
	                        dispart(delay_quo);
                                sent(DELAY,0x00,msb,lsb);
                                dispart(delay_res);
                                sent(DELAY1,0x00,msb,lsb);
                                str_right();
		   	       }
		   	 else//数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		  }
		  else    //读取工作状态
		  {
		  	dispart24(delay_audio);
		   	SBUF0=msb;
		   	while(!TI0);
		   	TI0=0;
		   	SBUF0=isb;
		   	while(!TI0);
		   	TI0=0;
		   	SBUF0=lsb;
		        while(!TI0);
		   	TI0=0;
		   	str_right();
		   }
	         break;
	     case 0x0B:                         //导频,DELAY_19K
	         if((buf[1]&0x80)==0)//设置工作参数
	         {
	         	unite(buf[3],buf[4]);
			if((ml_data<=360)&&(ml_data>=0))
			{
				delay_pilot=ml_data;
                   		delay19k_div(delay_pilot);
                   		dispart(delay_19k);     
	         	        sent(DELAY_19K,0x00,msb,lsb);
	         	        str_right();
		   	      }
		   	else //数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		  }
		  else     //读取工作状态
		  {
		  	dispart(delay_pilot);
		   	SBUF0=msb;
		   	while(!TI0);
		   	TI0=0;
		   	SBUF0=lsb;
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		  }
		 break;
	     case 0x0C:                             //静音设置
		if((buf[1]&0x80)==0)//设置工作参数
		{
			if((buf[4]==0)||(buf[4]==1))
			{
				if((en_audio==0)&&(buf[4]==1))//非静音变静音
	     	                {
	     	                	laudio_signal_1=laudio_signal;
	     	                        raudio_signal_1=raudio_signal;
	     	                        sent(LAUDIO,0x00,0x00,0x00);
	     	                        sent(RAUDIO,0x00,0x00,0x00);
	     	                      }
	     	                if((en_audio==1)&&(buf[4]==0))//静音变非静音
	   	                {
	   	                	laudio_signal=laudio_signal_1;
	   		                raudio_signal=raudio_signal_1;
	                                if(flag_symbol&0x01)  //左声道为正
                                        {
                                               if((laudio_signal%10)==0)lweight=lsignal[10-laudio_signal/10];
	                                       else
	                                       {
	                                           k=(lsignal[9-laudio_signal/10]-lsignal[10-laudio_signal/10])/10;
	                                           lweight=lsignal[10-laudio_signal/10]+k*(laudio_signal%10);
	                                          }
                                              }
                                        else   //左声道为负
                                        {
	                                       if((laudio_signal%10)==0)lweight=lsignal[10+laudio_signal/10];
	                                       else
	                                       {
	                                            k=(lsignal[10+laudio_signal/10]-lsignal[11+laudio_signal/10])/10;
	                                            lweight=lsignal[10+laudio_signal/10]-k*(laudio_signal%10);
	                                          }
	                                        }
	                                dispart24(lweight);
		                        sent(LAUDIO,msb,isb,lsb);
	   		                if(flag_symbol&0x02)  //右声道为正
	                                {
	                                        if((raudio_signal%10)==0)rweight=rsignal[10-raudio_signal/10];
	                                        else
	                                        {
	                                              k=(rsignal[9-raudio_signal/10]-rsignal[10-raudio_signal/10])/10;
	                                              rweight=rsignal[10-raudio_signal/10]+k*(raudio_signal%10);
	                                           }
                                               }
                                        else   //右声道为负
                                        {
	                                         if((raudio_signal%10)==0)rweight=rsignal[10+raudio_signal/10];
	                                         else
	                                         {
	                                              k=(rsignal[10+raudio_signal/10]-rsignal[11+raudio_signal/10])/10;
	                                              rweight=rsignal[10+raudio_signal/10]-k*(raudio_signal%10);
	                                             }
	                                    }
	                               dispart24(rweight);
		                       sent(RAUDIO,msb,isb,lsb);
		                           }
	                            en_audio=buf[4];
	                            str_right();
	                            }
	               else //数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		  }
		  else  //读取工作状态
		  {
		  	SBUF0=en_audio;
			while(!TI0);
			TI0=0;
			str_right();
			}    
		  break;
	       case 0x0D:               //日期:buf[2]为年,buf[3]高四位为星期,低四位为月,buf[4]为日
		  if((buf[1]&0x80)==0)//设置工作参数
		  {
		  	if((buf[2]<=99)&&(buf[2]>=0)&&((buf[3]&0xf0)<=7)&&((buf[3]&0xf0)>=1)&&
			      	     ((buf[3]&0x0f)>=1)&&((buf[3]&0x0f)<=12)&&(buf[4]<=31)&&(buf[4]>=1))
			{
				year=buf[2];
			      	week=(buf[3]&0xf0)>>4;
			      	month=buf[3]&0x0f;
			      	day=buf[4];
			      	year=((year/10)<<4)|(year%10);
       		    	        month=((month/10)<<4)|(month%10);
       		    	        day=((day/10)<<4)|(day%10);
       		    	        hour=((hour/10)<<4)|(hour%10);
       		    	        minute=((minute/10)<<4)|(minute%10);
       		    	        second=((second/10)<<4)|(second%10);
       		    	        initial_DS1302(year,month,day,week,hour,minute,second);
			        en_ds=1;
			        str_right();
			     }
			else//数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		     }
		   else  //读取工作状态
		   {
		   	disp_clk_regs();
		   	SBUF0=year;
		   	while(!TI0);
		   	TI0=0;
		   	SBUF0=(week<<4)||month;
		   	while(!TI0);
		   	TI0=0;
		   	SBUF0=day;
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		   	}
		   break;
		case 0x0E:               //时间:buf[2]为小时,buf[3]为分钟,buf[4]为秒
		   if((buf[1]&0x80)==0)//设置工作参数
		   {
		   	if((buf[2]<=23)&&(buf[2]>=0)&&(buf[3]<=59)&&(buf[3]>=0)&&(buf[4]<=59)&&(buf[4]>=0))
			{
				hour=buf[2];
				minute=buf[3];
			      	second=buf[4];
			      	year=((year/10)<<4)|(year%10);
       		    	        month=((month/10)<<4)|(month%10);
       		    	        day=((day/10)<<4)|(day%10);
       		    	        hour=((hour/10)<<4)|(hour%10);
       		    	        minute=((minute/10)<<4)|(minute%10);
       		    	        second=((second/10)<<4)|(second%10);
       		    	        initial_DS1302(year,month,day,week,hour,minute,second);
			        en_ds=1;
			        str_right();
			    }
			else//数据非法
		   	{       SBUF0=ERR_DATA;
			        while(!TI0);
			        TI0=0;
		   	    }
		     }
		    else  //读取工作状态
		    {
		    	disp_clk_regs();
		   	SBUF0=hour;
		   	while(!TI0);
		   	TI0=0;
		        SBUF0=minute;
		   	while(!TI0);
		   	TI0=0;
		   	SBUF0=second;
		   	while(!TI0);
		   	TI0=0;
		   	str_right();
		   	 }
		   break;
	       case 0x0F:   //功放控制设置:控制电压,输出功率
	           if(flag_rf==2)
	           {
	           	if((buf[1]&0x80)==0)  //设置工作参数
	                {
	                	unite(buf[3],buf[4]);
	           		if((ml_data<=819)&&(ml_data>=0))
	           	        {
	           	        	if((ml_data-ctr_vol)<=100)
	           		        {
	           		        	if(power_out>=3000) //ERR_POW:功率不能再增加
	           			        {
	           				        SBUF0=ERR_POW;
		   	                                while(!TI0);
		   	                                TI0=0;
		   	                        }
		   	                        else
		   	                        {
		   	                        	ctr_vol=ml_data;
		   	                        	voltemp=ctr_vol*5;
	                

⌨️ 快捷键说明

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