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

📄 pt6911chmodelok.c

📁 通过AVR atmega128控制LCD模块显示频率。而且频率把旋转编码器的信号通过采集
💻 C
📖 第 1 页 / 共 5 页
字号:
								PORTE&=!_BV(PE3);
								m1=100;
								m0=100;
								MD_Key_Flag=1;
							}

					}
					

					if(m0==90)
					m0=0;
				}
				/*		for(m0=0;m0<=100;m0++)
						{
						
							Key4= PIND;
							Key4 = Key4 & 0x1F; 
							DelayMs(20);
							Key5 = PIND;
							Key5 = Key5 & 0x1F;	
							if((Key4==Key5)&&(Key4==0x1F))
							{
								Turn_Display_Flag++;
								break;
							}
							if(m0==90)
							m0=0;
						}*/
}

void Save_Fre_CH_Model(void)
{

	if(Display_Dir_Model_Flag==1)
	{
		Save_Dir_Model();
		Save_to_EEprom();
	}	
	if(Display_Fre_Model_Flag==1)
	{
		Save_Fre_Model();		//此时保存的的数字实际是以前已经保存的的数据只是把频率覆盖了通道不变
		Save_to_EEprom();	
	}
}


void Save_CH_fugai_EEprom(void)					//覆盖频率
{
	i=0;
	for(i1=Display_Ch_Model_Temp_Adress;i1<=(15+Display_Ch_Model_Temp_Adress);i1++)
	{
	
		cli();
		eeprom_is_ready();
		eeprom_busy_wait();
		
		eeprom_write_word(i1,Save_Fre_Channel[i]);   // 把此时的数据保存到不为空的那个地址中
		//eeprom_is_ready();
		//eeprom_busy_wait();
		eeprom_write_word(i,Save_Fre_Channel[i]);    // 并且保存到第一个地址中,保证开机可以找到最后保存的那个数据
		i++;											
		sei();
	}
}
void Save_CH_Model(void)
{
	
	Save_Channel_Model();
	Save_CH_fugai_EEprom();

}
void Turn_Display_CH_Flash(void)
{
	//uint8_t Fre_No_enable_Timess;

	
	if(Ch_model_sto_enable==0)
	{
	
		for(j=1;j<=CH_Flash_Times;j++)
		{
			if(Delay_300ms==1)
			{
			
				Display_Ch_Model_Temp_CH[4]=0x43;
				Display_Ch_Model_Temp_CH[5]=0x48;
				LCD_Display(Display_Ch_Model_Temp_Fre,1);
				LCD_Display(Display_Ch_Model_Temp_CH,2);
			}
		}	
		for(j=1;j<=CH_Flash_Times;j++)
		{
			if(Delay_300ms==1)
			{	
				Display_Ch_Model_Temp_CH[4]=0x20;			//CH Flash.F No Flash.
				Display_Ch_Model_Temp_CH[5]=0x20;					
				LCD_Display(Display_Ch_Model_Temp_Fre,1);
				LCD_Display(Display_Ch_Model_Temp_CH,2);
			}
		}		
	}	
	if(Ch_model_sto_enable==1)
	{
	
	}

/*		for(Fre_No_enable_Timess=1;Fre_No_enable_Timess<=6;Fre_No_enable_Timess++)
		{
			if(Fre_No_enbale==1)
			{
				//Caiji_shuju();
				if(Switch_in==0)
				break;
			}
		}
		LCD_Display(Display_Channel_Data,2);
		Key=Key_Scan();
		DelayMs(10);
		if((Key==3)&&(Key!=0))
		{
			j=0;
			Display_Frequency_Data[3]=0x46;
			Display_Frequency_Data[4]=0x43;
			Display_Frequency_Data[5]=0x48;
			LCD_Display(Display_Ch_Model_Temp_Fre,1);
			LCD_Display(Display_Channel_Data,2);				
			Save_CH_Model();
			//Save_CH_fugai_EEprom();
			DelayMs(600);
			Display_Ch_Model_Flag=1;
			break;
		}
		if(i==90)
		i=0;
	}*/

}
void Ch_temp_time(void)
{
	uint8_t temp1_dengyu=0;
	uint8_t e;
	uint8_t f;
			for(Channel_Temp_Count=0;Channel_Temp_Count<=99;Channel_Temp_Count++)
			{
				//Display_Channel_Yunsuan1(Channel_Temp_Count);
				temp1_dengyu=0;
				for(i=0;i<=7;i++)
				{
					e=Display_Ch_Model_Temp_CH[i];
					f=Display_Channel_Temp_Count[i];
					if(e==f)
					{
						temp1_dengyu++;
					}
					if(temp1_dengyu==8)
					{
						Channel_Count=Channel_Temp_Count;
						Channel_Temp_Count=99;
						break;
					}
					//if(e!=f)
					//break;				
				}

			}	
}
void Bijiao_Daxiao(void)
{
	uint8_t n10,n11,n12,n13;
	//bits=0;
	for(n10=0;n10<=CH_temp_Count_Time*32;)	
	{
		for(n11=0;n11<=7;n11++)
		{
			eeprom_is_ready();								//忙监测
			eeprom_busy_wait(); 							//等待EEPROM 读写就绪
			Read_Fre_Channel[n11]=eeprom_read_word(n10+n11);
			if(n11==6)
			{
				n12=eeprom_read_word(n10+6);
			}
			if(n11==7)
			{
				n13=eeprom_read_word(n10+7);
			}
		}
		n11=0;
		n11=((n12-0x30)*10+(n13-0x30));				//EEPROM保存对应的通道数目
		if(Channel_Count!=n11)
		{
			n10=n10+32;								//没有找到找下一个
		}	

		if(n11==Channel_Count)
		{
			Is_F_Flag=1;
			break;
			//n0=3168;
		}
		if((n10>CH_temp_Count_Time*32)&&(n11!=Channel_Count))
		{
			Is_F_Flag=0;
			break;
		}//n0=n0+32;
	}
}

////////////////////////////////////////////////////////////
void Read_temp_CH_time(void)
{
	uint8_t n0,n14,n2,n3;
	for(n0=0;n0<=7;n0++)
	{
		if(n0==6)
		n14=Display_Ch_Model_Temp_CH[6];
		if(n0==7)
		{
			n2=Display_Ch_Model_Temp_CH[7];
			n3=((n14-0x30)*10+(n2-0x30));
			Channel_Count=n3;//((j-0x30)*10+(k-0x30));
		}
	}
}
void Turn_Display_Dir_Flash (void)
{
	uint8_t t1;
	uint8_t yanshi_sishu=0;
	LCD_Display(Display_Dir_Model_Temp_Fre,1);
	
	for(i=0;i<=100;i++)
	{
		//Channel_Count=Channel_Temp_Count;//**************************************

			for(j=1;j<=CH_Flash_Times;j++)
			{
				if(Delay_300ms==1)
				{
					Display_Ch_Model_Temp_CH[4]=0x43;
					Display_Ch_Model_Temp_CH[5]=0x48;
					LCD_Display(Display_Dir_Model_Temp_Fre,1);
					LCD_Display(Display_Ch_Model_Temp_CH,2);
				}
			}	
			for(j=1;j<=CH_Flash_Times;j++)
			{
				if(Delay_300ms==1)
				{	
					Display_Ch_Model_Temp_CH[4]=0x20;			//CH Flash.F No Flash.
					Display_Ch_Model_Temp_CH[5]=0x20;					
					LCD_Display(Display_Dir_Model_Temp_Fre,1);
					LCD_Display(Display_Ch_Model_Temp_CH,2);
				}
			}		
		//Display_Channel_Count(Channel_Count);
		//Display_Channel_Yunsuan(Channel_Count);	
			Read_temp_CH_time();
			//Display_Channel0();
			for(yanshi_sishu=0;yanshi_sishu<=10;yanshi_sishu++)
			{
				Bijiao_Daxiao();
			}
			if(Is_F_Flag==1)
			Display_Ch_Model_Temp_CH[3]=0x46;
			if(Is_F_Flag==0)
			Display_Ch_Model_Temp_CH[3]=0x20;		
		//Display_Channel();
		for(t1=0;t1<=7;t1++)
		{
			Display_Ch_Model_Temp_CH[t1]=Display_Channel_Data[t1];
		}

			LCD_Display(Display_Dir_Model_Temp_Fre,1);
			LCD_Display(Display_Ch_Model_Temp_CH,2);
		
		Key=Key_Scan();
		DelayMs(10);
		if(Key==3)
		{
			j=0;
			for(j1=0;j1<=100;j1++)
			{
				Key=Key_Scan();
				if(Key==0)
				{
					Display_Ch_Model_Temp_CH[3]=0x20;
					Display_Ch_Model_Temp_CH[4]=0x43;
					Display_Ch_Model_Temp_CH[5]=0x48;
					LCD_Display(Display_Ch_Model_Temp_CH,2);					
					k=0;
					//如果没有采集数据那么显示第一个数据
					for(i=0;i<8;)
					{
						Save_Fre_Channel[k]=Display_Ch_Model_Temp_CH[i];	//通道在Save_Fre_Channel数组的地位
						i++;
						k++;
					}
					for(j=0;j<8;)
					{
						k=8+j;
						Save_Fre_Channel[k]=Display_Dir_Model_Temp_Fre[j];			//通道在Save_Fre_Channel数组的高位
						j++;
					}			
					for(yanshi_sishu=0;yanshi_sishu<=10;yanshi_sishu++)
					{
						if(Time_jiesheng_flag==1)
						Save_to_EEprom();
					}
					yanshi_sishu=0;
					Dir_model_sto_enable=0;
					Display_Dir_Model_Flag=0;			
					Display_Fre_Model_Flag=0;
					Display_Ch_Model_Flag=1;
					//Channel_Count=0;
					Display_Eeprom0_address(0);
					LCD_Write(0x01,0);		
					DelayMs(600);
					i=100;
					j1=100;
					break;
				}
			}
		}	
		if(i==90)
		i=0;
	}

}


//////////////////////////////////////////////////////////
void Turn_Display_Fre_Flash(void)
//void sudu_moshi1_Fre_model (void)
{
	uint8_t t1;

	LCD_Display(Display_Fre_Model_Temp_Fre,1);
	
	for(i=0;i<=100;i++)
	{
					//Channel_Count=Channel_Temp_Count;//**************************************

			for(j=1;j<=CH_Flash_Times;j++)
			{
				if(Delay_300ms==1)
				{
					Display_Ch_Model_Temp_CH[4]=0x43;
					Display_Ch_Model_Temp_CH[5]=0x48;
					LCD_Display(Display_Fre_Model_Temp_Fre,1);
					LCD_Display(Display_Ch_Model_Temp_CH,2);
				}
			}	
			for(j=1;j<=CH_Flash_Times;j++)
			{
				if(Delay_300ms==1)
				{	
					Display_Ch_Model_Temp_CH[4]=0x20;			//CH Flash.F No Flash.
					Display_Ch_Model_Temp_CH[5]=0x20;					
					LCD_Display(Display_Fre_Model_Temp_Fre,1);
					LCD_Display(Display_Ch_Model_Temp_CH,2);
				}
			}		

		//Display_Channel_Count(Channel_Count);
		//Display_Channel_Yunsuan(Channel_Count);	
		Read_temp_CH_time();
		//Display_Channel0();
		for(yanshi_sishu=0;yanshi_sishu<=10;yanshi_sishu++)
		{
			Bijiao_Daxiao();
		}
		if(Is_F_Flag==1)
		Display_Ch_Model_Temp_CH[3]=0x46;
		if(Is_F_Flag==0)
		Display_Ch_Model_Temp_CH[3]=0x20;
		for(t1=0;t1<=7;t1++)
		{
			Display_Ch_Model_Temp_CH[t1]=Display_Channel_Data[t1];
		}
		if(Display_Fre_Model_Flag==1)
		{
			LCD_Display(Display_Fre_Model_Temp_Fre,1);
			LCD_Display(Display_Ch_Model_Temp_CH,2);
		}
		
		Key=Key_Scan();
		//DelayMs(10);
		if(Key==3)
		{
			Display_Channel_Data[3]=0x20;
			Display_Channel_Data[4]=0x43;
			Display_Channel_Data[5]=0x48;
			LCD_Display(Display_Channel_Data,2);					
			k=0;
			//如果没有采集数据那么显示第一个数据
			Save_to_EEprom();
			DelayMs(600);
			i=100;
			j1=100;
			break;
			
			
		}
	
		if(i==90)
		i=0;
	}

}
void	Read_Eprom_Address(unsigned int Eprom_Temp_Adress)
{
		
	unsigned  char CH_low=0;
	unsigned char  CH_high=0;
	j=0;
	for(i=Eprom_Temp_Adress;i<=Eprom_Temp_Adress+15;i++)			//读EEPROM中的数据
	{
		eeprom_is_ready();
		eeprom_busy_wait(); 
		Temp_Fre_Channel_Place[j]=eeprom_read_word(Eprom_Temp_Adress+j);				
		
		j++;
	}
	j=0;
	for(i=0;i<=15;i++)									//变成可以显示的通道频率
	{	
		if(i<=7)
		{
			Main_Display_CH[i]=Temp_Fre_Channel_Place[i];		//显示通道
		}
		if(i>=8)
		{
			Main_Display_Fre[j]=Temp_Fre_Channel_Place[i];		//显示频率
			j++;
		}
	}	
	for(i=0;i<=7;i++)
	{
		Display_Ch_Model_Temp_Fre[i]=Main_Display_Fre[i];		//保存临时频率
		Display_Ch_Model_Temp_CH[i]=Main_Display_CH[i];		//保存临时通道
		if(i==6)
		CH_high=Main_Display_CH[6];					
		if(i==7)
		CH_low=Main_Display_CH[7];					
		
		Eprom_temp_Times=((CH_low-0x30)+(CH_high-0x30)*10);					//保存临时通道次数
		
		
	}	

}
void In_Fre_Frans(void)

{
	//uint8_t t5;
	//	Channel_Count=Channel_Temp_Count;	
	uint8_t t4;
	LCD_Display(Dir_Frequency_Temp,2);	
	LCD_Display(Display_Dir_Model_Temp_Fre,1);	
	
	//Freq_Count=Freq_Count0;
	for(i=0;i<=100;i++)
	{
		Key=Key_Scan();
		if((Key==2)&&(Jiaohuan_flag==0))
		{
			Key=Key_Scan();
			if(Key==0)
			{
				LCD_Display(Dir_Frequency_Temp,1);	
				LCD_Display(Display_Dir_Model_Temp_Fre,2);
				Jiaohuan_flag=1;
			}
		}
		if((Key==2)&&(Jiaohuan_flag==1))
		{
			Key=Key_Scan();
			if(Key==0)
			{
				LCD_Display(Dir_Frequency_Temp,2);	
				LCD_Display(Display_Dir_Model_Temp_Fre,1);
				Jiaohuan_flag=0;
			}
		}		
		if(Key==3)
		{	
			Key=0;
			for(j1=0;j1<=100;j1++)
			{	
				for(j=1;j<=CH_Flash_Times;j++)
				{
					if(Delay_300ms==1)
					{
						Display_Ch_Model_Temp_CH[4]=0x43;
						Display_Ch_Model_Temp_CH[5]=0x48;
						//LCD_Display(Display_Dir_Model_Temp_Fre,1);
						LCD_Display(Display_Ch_Model_Temp_CH,2);
					}
				}	
				for(j=1;j<=CH_Flash_Times;j++)
				{
					if(Delay_300ms==1)
					{	
						Display_Ch_Model_Temp_CH[4]=0x20;			//CH Flash.F No Flash.
						Display_Ch_Model_Temp_CH[5]=0x20;					
						//LCD_Display(Display_Dir_Model_Temp_Fre,1);
						LCD_Display(Display_Ch_Model_Temp_CH,2);
					}
				}	
				Read_temp_CH_time();
				//Display_Channel0();
			for(yanshi_sishu=0;yanshi_sishu<=10;yanshi_sishu++)
			{
				Bijiao_Daxiao();
			}
			if(Is_F_Flag==1)
			Display_Ch_Model_Temp_CH[3]=0x46;
			if(Is_F_Flag==0)
			Display_Ch_Model_Temp_CH[3]=0x20;				
				for(t4=0;t4<=7;t4++)
				{
					Display_Ch_Model_Temp_CH[t4]=Display_Channel_Data[t4];
				}
				//if(Is_F_Flag==1)
				//Display_Ch_Model_Temp_CH[3]=0x46;
				//if(Is_F_Flag==0)
				Display_Ch_Model_Temp_CH[3]=0x20;	
				LCD_Display(Display_Dir_Model_Temp_Fre,1);
				LCD_Display(Display_Ch_Model_Temp_CH,2);
				Key=Key_Scan();
				if(Key==3)
				{	
					Key=Key_Scan();
					if(Key==0)
					{
						j=0;
						Display_Ch_Model_Temp_CH[3]=0x20;
						Display_Ch_Model_Temp_CH[4]=0x43;
						Display_Ch_Model_Temp_CH[5]=0x48;
						LCD_Display(Display_Dir_Model_Temp_Fre,1);
						LCD_Display(Display_Ch_Model_Temp_CH,2);					
						k=0;
						//如果没有采集数据那么显示第一个数据
						for(i=0;i<8;)
						{
							Save_Fre_Channel[k]=Display_Ch_Model_Temp_CH[i];	//通道在Save_Fre_Channel数组的地位
							i++;
							k++;
						}
						for(j=0;j<8;)
						{
							k=8+j;
							Save_Fre_Channel[k]=Display_Dir_Model_Temp_Fre[j];			//通道在Save_Fre_Channel数组的高位
							j++;
						}				
						Save_to_EEprom();
						Read_Eprom_Address(0);
						DelayMs(600);

⌨️ 快捷键说明

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