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

📄 main.c

📁 这是本人有幸收集的最完整的10多级液晶显示程序模块
💻 C
📖 第 1 页 / 共 5 页
字号:
                  default:break;
                }
                 if(arrow_state2>0)
                  arrow_state2--;
              }
              break;
   case downkey:
              if(edit_state==1)
              {
                if(pre_set<=setmin)
                {
                	pre_set=setmin;
                  return;
                }
                if(downcount<10)
                  pre_set=pre_set-1;
                else if(downcount<20)
                {
                  if(pre_set<10)
                     pre_set=setmin;
                  else
                     pre_set=pre_set-10;

                }
                     else if(downcount<30)
                     {
                       if(pre_set<100)
                         pre_set=setmin;
                       else
                        pre_set=pre_set-100;

                     }
                     else
                     {
                        if(pre_set<1000)
                          pre_set=setmin;
                        else
                          pre_set=pre_set-1000;
                     }
              }
              else
              {

                switch (arrow_state2)
                {
                  case 3:
                         dis_number=41;
                         break;
                  case 7:
                         dis_number=43;
                         break;
                  case 11:
                         dis_number=46;
                         break;
                  case 15:
                         dis_number=49;
                         break;
                  case 18:
                         dis_number=51;
                         break;
                  case 20:
                         dis_number=52;
                         break;
                  case 21:
                         dis_number=53;
                         break;
                  case 22:
                         dis_number=187;
                 default:break;
                }
                if(arrow_state2<23) //debug原来22
                arrow_state2++;
              }
              break;
   case esckey:
               if(edit_state==1)
                edit_state=0;
               else
                 dis_number=33;
                 break;

   case enterkey:
               if(edit_state==1)
              {
               set_addh=0x00;
               set_addl=0xa0+arrow_state2;
               set_valueh=(unsigned char)(pre_set>>8);
               set_valuel=(unsigned char)(pre_set);
               WriteData();
               GetData();
               edit_state=0;
              }
              else
              {

                edit_state=1;
                if(dis_number==187)
                  setmax=1;
                else
                  setmax=maxtable[arrow_state2];
                if(dis_number==52)
                  setmin=300;
                else
                setmin=0;
                if(arrow_state2<19)
                  pre_set=union_vlaue.revalue_buf_int[arrow_state2 % 4];
                else if((arrow_state2==19)||(arrow_state2==21)||(arrow_state2==22)||(arrow_state2==23))
                  pre_set=union_vlaue.revalue_buf_int[0];
                else if(arrow_state2==20)
                  pre_set=union_vlaue.revalue_buf_int[1];
              }
              break;


   default:break;
 }

}

void  menu_adjust_display()
{

  unsigned char *p1;//要求在字库中显示的内容要连续放。
  unsigned int tempre_set;
  data union  pre_type
          {
            unsigned int pre_type[1];
            unsigned long int pre_type_val;
          }pre_deal;
  if(dis_number==187) //三相三线制
  {
    if(edit_state==1)
      tempre_set=pre_set;
    else
      tempre_set= union_vlaue.revalue_buf_int[0];
  }

  clr_fullscreen();
	 if( arrow_state2<16)
	 {
	  if(arrow_state2<4)
            p1=&charrIA;
	  if((3<arrow_state2)&&(arrow_state2<8))
	    p1=&charcharIa;
	  if((7<arrow_state2)&&(arrow_state2<12))
	    p1=&charUa;
      if(11<arrow_state2)
        p1=&charTs;
   lcdwrite(2,4,12,p1);
   p1=p1+12;
   lcdwrite(3,4,12,p1);
   p1=p1+12;
   lcdwrite(0,4,12,p1);
   p1=p1+12;
   lcdwrite(1,4,12,p1);

   if(((arrow_state2%4)==0) && ( edit_state==1)  )
     data_switch_display(pre_set,0,2,60,6);
   else
     data_switch_display(union_vlaue.revalue_buf_int[0],0,2,60,6);
   if(((arrow_state2%4)==1) && ( edit_state==1)  )
     data_switch_display(pre_set,0,3,60,6);
   else
   data_switch_display(union_vlaue.revalue_buf_int[1],0,3,60,6);


   if(((arrow_state2%4)==2) && ( edit_state==1)  )
     data_switch_display(pre_set,0,0,60,6);
   else
   data_switch_display(union_vlaue.revalue_buf_int[2],0,0,60,6);

   if(((arrow_state2%4)==3) && ( edit_state==1)  )
     data_switch_display(pre_set,0,1,60,6);
   else
   data_switch_display(union_vlaue.revalue_buf_int[3],0,1,60,6);
   if(arrow_state2>7)
    data_switch_display(union_vlaue.revalue_buf_int[4],0,2,100,6);
   else
    data_switch_display(union_vlaue.revalue_buf_int[4],1,2,100,6);

   if((arrow_state2!=12)&&(arrow_state2!=13)&&(arrow_state2!=14)&&(arrow_state2!=15))
   {
   	if(arrow_state2>7)
      data_switch_display(union_vlaue.revalue_buf_int[5],0,3,100,6);
    else
      data_switch_display(union_vlaue.revalue_buf_int[5],1,3,100,6);
   }
   if((arrow_state2!=12)&&(arrow_state2!=13)&&(arrow_state2!=14)&&(arrow_state2!=15))
   {
    if(arrow_state2>7)
      data_switch_display(union_vlaue.revalue_buf_int[6],0,0,100,6);
    else
      data_switch_display(union_vlaue.revalue_buf_int[6],1,0,100,6);
    }

   if((arrow_state2==15)||(arrow_state2==14)||(arrow_state2==13)||(arrow_state2==12))
   {
     pre_deal.pre_type[0]= union_vlaue.revalue_buf_int[6];
     pre_deal.pre_type[1]= union_vlaue.revalue_buf_int[5];
    if(pre_deal.pre_type_val<=65535)
     data_switch_display(union_vlaue.revalue_buf_int[5],0,1,100,6);
    else
    {
     pre_deal.pre_type_val/=100;
     union_vlaue.revalue_buf_int[5]= pre_deal.pre_type[1];
     data_switch_display(union_vlaue.revalue_buf_int[5],1,1,100,6);
    }
   }
   else
   {
   	 if(arrow_state2>7)
       data_switch_display(union_vlaue.revalue_buf_int[7],0,1,100,6);
     else
       data_switch_display(union_vlaue.revalue_buf_int[7],1,1,100,6);
   }




   //else
    // data_switch_display(union_vlaue.revalue_buf_int[7],0,1,100,6);
  }//if( arrow_state2<16)
   if((15<arrow_state2)&&(arrow_state2<19))
  {
   lcdwrite(2,4,12,&charPb);
   p1=p1+12;
   lcdwrite(3,4,12,&charPc);

   lcdwrite_chinese(0,4,13,&dian);
   lcdwrite_chinese(0,17,13,&dianya_ya); //电压信号有无
   lcdwrite_chineseN(0,30,2,&xinhaoceliang);


     pre_deal.pre_type[0]= union_vlaue.revalue_buf_int[4];
     pre_deal.pre_type[1]= union_vlaue.revalue_buf_int[3];
    if(pre_deal.pre_type_val<=65535)
     data_switch_display(union_vlaue.revalue_buf_int[3],0,2,100,6);
    else
    {
     pre_deal.pre_type_val/=100;
     data_switch_display(pre_deal.pre_type[1],1,2,100,6);
    }

     pre_deal.pre_type[0]= union_vlaue.revalue_buf_int[4];
     pre_deal.pre_type[1]= union_vlaue.revalue_buf_int[3];
    if(pre_deal.pre_type_val<=65535)
     data_switch_display(union_vlaue.revalue_buf_int[3],0,3,100,6);
    else
    {
     pre_deal.pre_type_val/=100;
     union_vlaue.revalue_buf_int[3]= pre_deal.pre_type[1];
     data_switch_display(union_vlaue.revalue_buf_int[3],1,3,100,6);
    }



   if((arrow_state2==16) && ( edit_state==1)  )
     data_switch_display(pre_set,0,2,60,6);
   else
   data_switch_display(union_vlaue.revalue_buf_int[0],0,2,60,6);
   if((arrow_state2==17) && ( edit_state==1)  )
     data_switch_display(pre_set,0,3,60,6);
   else
   data_switch_display(union_vlaue.revalue_buf_int[1],0,3,60,6);
   if((arrow_state2==18) && ( edit_state==1)  )
     tempre_set=pre_set;
   else
     tempre_set=union_vlaue.revalue_buf_int[2];
   if(tempre_set==1)
      lcdwrite_chineseN(0,80,1,&you);//有
     else
       lcdwrite_chineseN(0,80,1,&wu);//无

  }//else if(15<arrow_state2<19)
  if((18<arrow_state2)&&(arrow_state2<21))
  {


   lcdwrite_chineseN(2,4,1,&lou);//漏
   lcdwrite_chineseN(2,17,1,&dian);//电
   lcdwrite_chineseN(2,30,2,&mo);// 模式

   lcdwrite_chineseN(0,4,2,&huganqi);//互感
   lcdwrite_chineseN(0,30,1,&qi);//器
   lcdwrite_chineseN(0,43,2,&lei);// 类型
   if((arrow_state2==19) && ( edit_state==1)  )
     tempre_set=pre_set;
   else
     tempre_set=union_vlaue.revalue_buf_int[0];
   if(tempre_set==1)
      lcdwrite_chineseN(2,80,1,&wai);//外
   else
       lcdwrite_chineseN(2,80,1,&nei);//内
   if((arrow_state2==20) && ( edit_state==1)  )
     tempre_set=pre_set;
   else
     tempre_set=union_vlaue.revalue_buf_int[1];
   switch(tempre_set)
   {
     case 0:
             p1=&char2A;
             tempre_set=12;
             break;
     case 1:
             p1=&char5A;
             tempre_set=12;
             break;
     case 2:
             p1=&char63A;
             tempre_set=22;
             break;
     case 3:
             p1=&char25A;
             tempre_set=18;
             break;
     case 4:
             p1=&char100A;
             tempre_set=24;
             break;
     case 5:
             p1=&char250A;
             tempre_set=24;
             break;
     case 6:
             p1=&char063A;
             tempre_set=28;
             break;
     default:
             p1=&char45A;
             tempre_set=18;
             break;
   }
    lcdwrite(1,80,(char)tempre_set,p1);

  }//if(18<arrow_state2<21)
  if(arrow_state2==21)
  {
     lcdwrite_chineseN(2,4,1,&lou);//漏
     lcdwrite_chineseN(2,17,1,&dian);//电
     lcdwrite_chineseN(2,30,2,&huganqi);//互感
     lcdwrite_chineseN(2,56,1,&qi);//器

    if( edit_state==1  )
      tempre_set=pre_set;
    else
      tempre_set = union_vlaue.revalue_buf_int[0];
    data_switch_display(tempre_set,0,1,80,6);
  }
  if(arrow_state2==22)
  {
     lcdwrite_chineseN(2,4,1,&gongzuo_gong);//工
     lcdwrite_chineseN(2,17,1,&zuo);//作
     lcdwrite_chineseN(2,30,1,&fang);//方
     lcdwrite_chineseN(2,43,1,&shi);//式
     lcdwrite_chineseN(2,56,2,&xuanze_xuan);//选择
    if(edit_state==1)
      tempre_set=pre_set;
    else
      tempre_set = union_vlaue.revalue_buf_int[0];
    if(tempre_set==0)
      lcdwrite(1,80,30,&wll);
    if(tempre_set==1)
      lcdwrite(1,80,30,&wwl);
    if(tempre_set==2)
      lcdwrite(1,80,30,&wll1);


  }
/*------------------------------debug-----------*/
  if(arrow_state2==23)
  {
    lcdwrite_chineseN(2,4,2,&zhijie_jie);
    lcdwrite_chineseN(2,30,2,&fang);
    if(edit_state==1)
      tempre_set=pre_set;
    else
      tempre_set= union_vlaue.revalue_buf_int[0];
    lcdwrite_chineseN(0,58,1,&san);
    lcdwrite_chineseN(0,71,1,&xiangg);
    lcdwrite_chineseN(0,97,1,&xian);
    if(tempre_set==0)
      lcdwrite_chineseN(0,84,1,&san);
    if(tempre_set==1)
      lcdwrite_chineseN(0,84,1,&sansi);
  }
/*------------------------------debug-----------*/
  lcdwrite_arrow(Arrow2[arrow_state2],115,edit_state);
}
//----e----------


/*---------------通讯故障界面------------------*/
void  ComunicationFault(void)
{
  clr_fullscreen();
  lcdwrite_chinese(2,32,13,&lian);
  lcdwrite_chinese(2,45,13,&jie);
  lcdwrite_chineseN(2,58,2,&shibai_shi);
}

/*--------------------------------------  界面程序结束   -----------------------------------------*/

/*--------------------------------------   液晶及键盘驱动程序开始   -------------------------------------*/

void key_check(void)
{
   if(delay==0)
    {
       if(key1!=0x00)

       {
         key_temp=key1;
         //key1=0;
         key_scan=0;
         delay=0x01;
       }
       else
       {
          upcount=0;
          downcount=0;
          key_scan=1;
          return;
       }
    }

  switch(delay)
   {
     case  delay3:
                   delay=0;
                    key=key_temp;
                   if(key_temp==upkey)
                   {
                     if(upcount<255)
                     {
                       key_temp=0;
                       upcount++;
                       downcount=0;

                     }
                     else  upcount=255;
                   }
                   else
                   {
                    if(downcount<255)
                     {
                       key_temp=0;
                       downcount++;
                       upcount=0;
                     }
                     else  downcount=255;
                  }
                  break;
     //case  delay11:
     //             delay=0xf0;
     //             break;
    // case  delay10:
    //              delay=0xe0;

⌨️ 快捷键说明

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