📄 pt6911chmodelok.c
字号:
i=100;
j1=100;
break;
}
}
if(j1==90)
j1=0;
}
}
if(Key==4)
{
LCD_Display(Dir_Frequency_Temp,1);
LCD_Display(Dir_Frequency_Temp,2);
Display_Fre_Model_Flag=1;
i=100;
//break;
}
if(i==90)
i=0;
}
}
/*************************************************************************************************
**************************************************************************************************/
void Key_Handing(uint8_t temp)
{
/*uint8_t m0=0;
uint8_t m1=0;
uint8_t m2;
uint8_t m3;
uint8_t m4;
uint8_t m5;
uint8_t Count_eeprom=0;
uint8_t m6;
uint8_t m7;
uint8_t m8;
//uint8_t m5;
// uint8_t m8;
uint8_t m9;
uint8_t m10;
uint8_t m11;
uint8_t m12;*/
switch(temp)
{
case 1: //Set F/CH
{
PORTE|=_BV(PE3);
// LED_Flash();
/*if(Turn_Display_Flag==2)
{
MHZ_model_Flag=1;
break;
}
if(Turn_Display_Flag==3)
{
KHZ_model_Flag=1;
break;
} */
/*Freq_Count=0;
if(Turn_Display_Flag==1)
{
for(Max_Eprom_Place=32;Max_Eprom_Place<=3168;Max_Eprom_Place+=32)
{
//for(m10=0;m10<=100;m10++)
//{
LCD_Write(0x01,0);
j=0; //累加器清0
for(k1=Max_Eprom_Place;k1<=(Max_Eprom_Place+15);k1++)
{
eeprom_is_ready();
eeprom_busy_wait();
Temp_Fre_Channel_Place[j]=eeprom_read_word(k1);
j++;
}
//如果到第一个没有保存数据的空间时候把前面一个的保存的数据继续显示。
j=0;
for(i=0;i<=15;i++)
{
m8=Temp_Fre_Channel_Place[i];
if(i==2)
m9=m8;
if(m9==0xFF)
{
for(k1=Max_Eprom_Place-32;k1<=(Max_Eprom_Place+15);k1++)
{
eeprom_is_ready();
eeprom_busy_wait();
Temp_Fre_Channel_Place[j]=eeprom_read_word(k1);
j++;
}
}
}*/
/*for(i=0;i<=15;i++)
{
eeprom_is_ready(); //忙监测
eeprom_busy_wait(); //等待EEPROM 读写就绪
Read_Fre_Channel[i]=eeprom_read_word(i);
//Temp_Eprom_Place++;
}*/
/*j=0;
for(i=0;i<=15;i++)
{
if(i<=7)
{
Display_Str2[i]=Temp_Fre_Channel_Place[i]; //显示通道
if(i==2)
j1=Display_Str2[i];
}
if(i>=8)
{
Display_Str0[j]=Temp_Fre_Channel_Place[i]; //显示频率
if(j==2)
j2=Display_Str0[j];
j++;
}
}
if(j1==0xFF)
{
LCD_Display(Display_Frequency_Data1,1);
LCD_Display(Display_Channel_Data1,2);
}
else
{
LCD_Display(Display_Str0,1); //写第一行第一个
// Display_Str2[3]=0x20;
LCD_Display(Display_Str2,2); //写第一行第一个
}
if(j1=0xFF)
m1=32;
else
m1=48;
for(m10=0;m10<=100;m10++)
{
Caiji_shuju();
Count_add();
DelayMs(10);
if(Freq_Count>99)
Freq_Count=0;
if(Freq_Count>0)
{
for(Max_Eprom_Place=m1;Max_Eprom_Place<=3168;Max_Eprom_Place+=32)
{
LCD_Write(0x01,0);
j=0; //累加器清0
for(k1=Max_Eprom_Place;k1<=(Max_Eprom_Place+15);k1++)
{
eeprom_is_ready();
eeprom_busy_wait();
Temp_Fre_Channel_Place[j]=eeprom_read_word(k1);
if(j==2)
j1=Temp_Fre_Channel_Place[j];
j++;
}
if(j1==0x0FF)
{
Max_Eprom_Place=3168;
m10=100;
break;
}*/
/*j=0;
for(i=0;i<=15;i++)
{
if(i<=7)
{
Display_Str2[i]=Temp_Fre_Channel_Place[i]; //显示通道
}
if(i>=8)
{
Display_Str0[j]=Temp_Fre_Channel_Place[i]; //显示频率
j++;
}
}
LCD_Display(Display_Str0,1); //写第一行第一个
//Display_Str2[3]=0x20;
LCD_Display(Display_Str2,2); //写第一行第一个
}
Max_Eprom_Place=3168;
}
m7=0;
for(m6=0;m6<=10;m6++)
{
DelayMs(90);
//Switch_in=PINF;
//Switch_in=Switch_in&0x03;
Caiji_shuju();
if(Switch_in==0x03) //如果没有按键累加到了就推到主程序
m7++;
if(Switch_in!=0x03)
{
m6=10;
m10=100;
}
if(m7==10)
{
PORTE&=!_BV(PE3);
m6=10;
m10=100;
Max_Eprom_Place=3168;
}
}
if(m10==90)
m10=0;
}
//if(Max_Eprom_Place=3168)
//Max_Eprom_Place=16;
}
}*/
break;
}
case 2: //TRANS
{
//LED_Flash();
//PORTE|=_BV(PE3);
if(Display_Fre_Model_Flag==1) //如果是在频率模式的时候交换第一第二行
{
PORTE|=_BV(PE3);
Ch_temp_time();
In_Fre_Frans();
Display_Ch_Model_Flag=1;
Display_Dir_Model_Flag=0;
Display_Fre_Model_Flag=0;
//Channel_Count=0;
//if(Fre_y==1) //关闭第一次进入频率标志。
//Fre_x=0;
//LCD_Display(Jiaohuan_Fre2_hang,1); //临时显示第一行
//LCD_Display(Jiaohuan_Fre1_hang,2); //如果是频率模式按TRANS交换第一第二行
//DelayMs(2000);
//Display_Fre_Model_Flag=2;
//Display_Ch_Model_Flag_Trans=1;
break;
}
/*if(Display_Ch_Model_Flag==1) // 如果是通道模式按TRANS变到频率模式
{
Display_Fre_Model_Flag=1;
Display_Ch_Model_Flag=0;
}
if(Display_Dir_Model_Flag==1) //如果是直接模式按TRANS变到频率模式
{
Display_Fre_Model_Flag=1;
Display_Dir_Model_Flag=0;
}*/
////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
/*if(Turn_Display_Flag==2)
{
Trans_Fre_Display();
Turn_Display_Flag=3;
break;
}
if(Turn_Display_Flag==1)
{
Trans_Fre_Display();
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=3;
break;
}
if(m0==90)
m0=0;
}
//LCD_Display(Temp_Display_use,1);
//LCD_Display(Temp_Display_stby,2);
//Turn_Display_Flag=2;
break;
}
if((MD_Key_Flag==1)&&(Turn_Display_Flag==3)) //如果TRANS按键1行2行呼唤
{
LCD_Display(Display_Frequency_Data,1); //不增加这初始化的地址数据显示会一直按FRANS按键假患
for(i=0;i<=15;i++) //交换后第二行是118.000,此时是最后保存的那个地址数据
{
eeprom_is_ready();
eeprom_busy_wait();
Read_Fre_Channel[i]=eeprom_read_word(i);
//Temp_Eprom_Place++;
}
j=0;
for(i=0;i<=15;i++)
{
if(i>=8)
{
Display_Str0[j]=Read_Fre_Channel[i];
Temp_Display_Fre[j]=Display_Str0[j];
j++;
}
}
j=0;
j1=Display_Str0[j];
if(j1==0xFF)
LCD_Display(Display_Frequency_Data1,2);
else
LCD_Display(Display_Str0,2);
for(m3=0;m3<=100;m3++)
{
m4=Key_Scan();
if(m4==4)
{
LCD_Write(0x01,0);
DelayMs(20);
LCD_Display(Display_Frequency_Data,1);
Display_Channel_Data[3] = 0x20;
LCD_Display(Display_Channel_Data,2); //最开始的通道数目
for(m5=0;m5<=100;m5++)
{
m7=0; //如果在循环里面有按键退出了累加器要付初值
Display_Channel();
//DelayMs(5);
LCD_Display(Display_Channel_Data,2); //采集的通道数目
for(m6=0;m6<=100;m6++)
{
DelayMs(20);
Caiji_shuju();
if(Switch_in==0x03) //如果没有按键累加到了就推到主程序
m7++;
if(Switch_in!=0x03)
m6=100;
if(m7==100)
{
PORTE&=!_BV(PE3);
m6=100;
m5=100;
m3=100;
MD_Key_Flag=2;
}
}
if(m5==90)
m5=0;
}
}
if(m3==90)
m3=0;
}
}*/
break;
}
case 3: //STO
{
// LED_Flash();
if(Display_Ch_Model_Flag==1)
{
Key=0;
LCD_Display(Display_Ch_Model_Temp_Fre,1);
LCD_Display(Display_Ch_Model_Temp_CH,2);
Ch_model_sto_enable=1;
Read_temp_CH_time(); //读当前通道数对应数目
LCD_Write(0x01,0);
Display_Ch_Model_Flag=1;
Display_Dir_Model_Flag=0;
Display_Fre_Model_Flag=0;
break;
}
if(Display_Dir_Model_Flag==1) //保证退出保存是通道模式Key=Key_Scan();
{
Key=0;
Key=Key_Scan();
if(Key==0)
{
LCD_Write(0x01,0);
LCD_Display(Display_Dir_Model_Temp_Fre,1);
Display_Ch_Model_Temp_CH[3]=0x20;
LCD_Display(Display_Ch_Model_Temp_CH,2);
Ch_temp_time(); //记录通道次数
//Dir_model_sto_enable=1;
Turn_Display_Dir_Flash();
//Display_Ch_Model_Flag=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);
}
break;
//Display_Channel_Yunsuan();
}
if(Display_Fre_Model_Flag==1) //保证退出保存是通道模式
{
Key=0;
LCD_Display(Jiaohuan_Fre2_hang,1);
LCD_Display(Jiaohuan_Fre1_hang,2);
Ch_temp_time();
Turn_Display_Fre_Flash();
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);
break;
}
///////////////////////////////////////////////////////////////
/*if((Display_Ch_Model_Flag==1)||(Display_Dir_Model_Flag==1)||(Display_Fre_Model_Flag==1))
{
if(Display_Ch_Model_Flag==1)
{
Max_Eprom_Place=Display_Ch_Model_Temp_Adress;
}
//如果1-4没有保存数据就不是自由通道所以F不闪CH闪,若果是5个eeprom的数据保存那么F闪动
for(Max_Eprom_Place=32;Max_Eprom_Place<=160;Max_Eprom_Place+=32)
{
j=0; //累加器清0
for(k1=Max_Eprom_Place;k1<=(Max_Eprom_Place+15);k1++)
{
eeprom_is_ready();
eeprom_busy_wait();
Temp_Fre_Channel_Place[j]=eeprom_read_word(Max_Eprom_Place);
if(j==2)
{
j1=Temp_Fre_Channel_Place[j];
break;
}
j++;
}
if(j1!=0xFF)
Count_eeprom++;
else
{
Count_eeprom++;
break;
}
}
if(Count_eeprom<=4)
{
Display_Channel_Data[3] = 0x46;
LCD_Display(Display_Channel_Data,2);
DelayMs(300);
for(i=0;i<=1;i++)
{
//DelayMs(500);
Display_Channel_Data[4]=0x20;
Display_Channel_Data[5]=0x20;
LCD_Display(Display_Channel_Data,2);
DelayMs(300);
Display_Channel_Data[4]=0x43;
Display_Channel_Data[5]=0x48;
LCD_Display(Display_Channel_Data,2);
DelayMs(300);
}
}
else
{
//Display_Channel_Data[3] = 0x46;
LCD_Display(Display_Channel_Data,2);
DelayMs(300);
for(i=0;i<=1;i++)
{
//DelayMs(500);
Display_Channel_Data[3]=0x20;
LCD_Display(Display_Channel_Data,2);
DelayMs(300);
Display_Channel_Data[3]=0x46;
LCD_Display(Display_Channel_Data,2);
DelayMs(300);
}
}
LCD_Display(Display_Channel_Data,2);
if(Display_Ch_Model_Flag==1)
Save_Channel_Model();
if(Display_Dir_Model_Flag==1)
Save_Dir_Model();
if(Display_Fre_Model_Flag==1)
{
//频率通道调整适合保存
Save_Fre_Model(); //此时保存的的数字实际是以前已经保存的的数据只是把频率覆盖了通道不变
}
Save_to_EEprom();
PORTE|=_BV(PE3);
}*/
break;
}
case 4: //MD
{
//Key_Work_Flag=0;
//LED_Flash();
//增加按键弹起保证按键不会重复,不然可能按键采集2-3次可以跳过某个模式了。
/***************************************************************
进入模式3第一行显示频率第二行显示空格
****************************************************************/
if(Display_Ch_Model_Flag==1)
{
Display_Ch_Model_Flag=0; // 关闭通道模式
Display_Fre_Model_Flag=0;
Display_Dir_Model_Flag=1;
LCD_Write(0x01,0);
break;
}
if(Display_Dir_Model_Flag==1)
{
Display_Ch_Model_Flag=0;
Display_Dir_Model_Flag=0; //打开直接模式
Display_Fre_Model_Flag=1;
LCD_Write(0x01,0);
break;
}
if(Display_Fre_Model_Flag==1)
{
Display_Dir_Model_Flag=0;
Display_Fre_Model_Flag=0;
Display_Ch_Model_Flag=1;
LCD_Write(0x01,0);
break;
}
/*************************************************************************
再显示一次,为第二次和以后的FRANS按键工作1和2行调换找到第一行呼唤的证据
实际就是把保留到EEPROM的数据重新显示了一次,不然每次按FRANS时候都显示118.000
*************************************************************************/
/*for(m0=0;m0<=100;m0++)
{
m2=0;
//Display_Change();
Display_Fre();
DelayMs(20);
LCD_Display(Display_Frequency_Data,2);
for(m1=0;m1<=10;m1++)
{
DelayMs(40);
Switch_in=PINF;
Switch_in=Switch_in&0x01;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -