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

📄 main.c

📁 w77e58 双串口 液晶显示源程序 c语言编写
💻 C
📖 第 1 页 / 共 2 页
字号:
                                } break;
                     case 0x07:{
                               set_flag=3;
                               dis_data(set_vari[2],1,8,0x89);
                               }break;
                     case 0x08:{
                               set_flag=4;
                               dis_data(back,1,12,0x99);
                               }break;
                     default:break;
                 }
             } break;
         case 0x09:                     //设置参数闪烁
            {
             dis_flag=0;
             switch(set_flag)
                 {
                     case 0x01: {
                                set_flag=4;
                                dis_data(key_buf,1,2,0x80);
                                //dis_data(set_vari[0],1,8,0x81);
                                dis_data(space,1,4,0x85);
                                dis_data(dis_buf3,1,1,0x85);
                                } break;
                     case 0x02: {
                                set_flag=5;
                                dis_data(key_buf,1,2,0x90);
                                dis_data(space,1,4,0x95);
                                dis_data(dis_buf3,1,1,0x95);
                                 } break;
                     case 0x03: {
                                set_flag=6;
                                dis_data(key_buf,1,2,0x88);
                                dis_data(space,1,4,0x8d);
                                dis_data(dis_buf3,1,1,0x8d);
                                }break;
                     case 0x04: {
                                 set_flag=1;
                                 dis_data(key_buf,1,2,0x80);
                                 //dis_data(set_vari[0],1,8,0x81);
                                 dis_data(ov_buf,1,4,0x85);
                                 dis_data(dis_buf3,1,1,0x85);
                                 } break;
                     case 0x05: {
                                 set_flag=2;
                                 dis_data(key_buf,1,2,0x90);
                                 dis_data(lv_buf,1,4,0x95);
                                 dis_data(dis_buf3,1,1,0x95);
                                } break;
                     case 0x06:{
                                set_flag=3;
                                dis_data(key_buf,1,2,0x88);
                                dis_data(vot_buf,1,4,0x8d);
                                dis_data(dis_buf3,1,1,0x8d);
                               }break;
                    default:break;
                 }

             } break;
           default: break;
         }
       } break;
    case 0x02:if(led_flag)
               {if(sys_temp!=0x02)
                   {sys_temp=0x02; write_command(0x01,1);}     //清显示屏
                if(sys_time)                                   //更新显示屏
                   {sys_time=0; dis_data(sys_wait,1,16,0x90);}
                 led_flag=0;GREEN=!GREEN;YELLOW=0;RED=0;} break;
    case 0x03:if(led_flag)
               {if(sys_temp!=0x03)
                   {sys_temp=0x03; write_command(0x01,1);}     //清显示屏
                if(sys_time)                                   //更新显示屏
                   {sys_time=0;dis_data(cd_err,1,9,0x80);dis_data(cd_err1,1,10,0x91);  }
                led_flag=0;GREEN=0;YELLOW=0;RED=0;} break;
    case 0x04:if(led_flag)
               {if(sys_temp!=0x04)
                   {sys_temp=0x04; write_command(0x01,1);}     //清显示屏
                if(sys_time)                                 //更新显示品
                   {sys_time=0; dis_data(cd_err,1,9,0x80);dis_data(cd_err2,1,10,0x91);}
                led_flag=0;GREEN=0;YELLOW=!YELLOW;RED=0;} break;
    case 0x05:if(led_flag)
               {if(sys_temp!=0x05)
                   {sys_temp=0x05; write_command(0x01,1);}     //清显示屏
                if(sys_time)                                 //更新显示屏
                   {sys_time=0;dis_data(nb_err,1,9,0x80);dis_data(nb_err1,1,8,0x91); }
                led_flag=0;GREEN=0;YELLOW=0;RED=0;} break;
    case 0x06:if(led_flag)
               {if(sys_temp!=0x06)
                    {sys_temp=0x06; write_command(0x01,1);}     //清显示屏
                if(sys_time)                                 //更新显示屏
                   {sys_time=0;dis_data(nb_err,1,9,0x80);dis_data(nb_err2,1,8,0x91); }
                led_flag=6;GREEN=0;YELLOW=0;RED=!RED;} break;
    default:break;}
   if(otime_flag)
    {
      otime_flag=0;
      switch(key_set)
       {
        case 0x01:
           if(++key_err1>=3)
             {
              key_set=0;
              ov_buf[1]=ov_temp[1];
              ov_buf[2]=ov_temp[2];
              ov_buf[3]=ov_temp[3];
             }
           else {tx1_data(0x10,tx_mudi);t_temp3=0;}break;
       case 0x02:
           if(++key_err2>=3)
             {
              key_set=0;
              lv_buf[1]=lv_temp[1];
              lv_buf[2]=lv_temp[2];
              lv_buf[3]=lv_temp[3];
             }
            else {tx1_data(0x12,tx_mudi);t_temp3=0;} break;
       case 0x03:
           if(++key_err3>=3)
             {
              key_set=0;
              vot_buf[1]=vot_temp[1];
              vot_buf[2]=vot_temp[2];
              vot_buf[3]=vot_temp[3];
             }
            else {tx1_data(0x14,tx_mudi);t_temp3=0;} break;
       default: break;
    }
   }
 }
}

void time_int(void) interrupt 1  using 3 //定时器0中断处理程序,10ms
{
   uchar i=0;
   TL0=0x5c;
   TH0=0x95;
   t_temp=t_temp+1;
   t_temp2=t_temp2+1;
   t_temp3=t_temp3+1;
   time_flag=1;

   //if((t_temp%50)==0)
    //{DE=0; SBUF=0x55; }
   //{tx_data(0x20,0x00);}

}



void time_set(void)
{
 uchar temp,i=0;

  switch(key_temp)
   {
   case 0:{key_val=P2&0xf0;             //有键按下 ,下个中断判断是否抖动
           if(key_val!=0xf0)
              {light_led(); key_temp=1;} }break;
   case 1:{if(key_val!=(P2&0xf0))      //判断是否抖动,当有两个键按下而有一个键是抖动时,仍然
              key_temp=0;              //跳到第一步处理
           else
              {
              if(!KEY1)
                {key_temp=2;key_flag=1;key1_temp=1;i++;}
              if(!KEY2)
                {key_temp=3;key_flag=2;key2_temp=1;i++;}
              if(!KEY3)
                {key_temp=4;key_flag=3;key3_temp=1;i++;}
              if(!KEY4)
                {key_temp=5;key_flag=4;key4_temp=1;i++;}
              if(i>1)
                {key_temp=6,key_flag=0;light_led();}
              }
            } break;
   case 2:     if(KEY1)
                 {key_temp=0;key1_temp=0;} break;
   case 3:     if(KEY2)
                 {key_temp=0;key2_temp=0;} break;
   case 4:     if(KEY3)
                 {key_temp=0;key3_temp=0;} break;
   case 5:     if(KEY4)
                 {key_temp=0;key_temp=0;} break;
   case 6:    {
              if(key1_temp)
                   {if(KEY1)
                       key1_temp=0;
                     else
                       {key_temp=2;key_flag=1;i++;}}
              if(key2_temp)
                   {if(KEY2)
                       key2_temp=0;
                     else
                       {key_temp=3;key_flag=2;i++;}}
              if(key3_temp)
                   {if(KEY3)
                       key3_temp=0;
                    else
                       {key_temp=4;key_flag=3;key3_temp=1;i++;}}
              if(key4_temp)
                   {if(KEY4)
                        key4_temp=0;
                     else
                        {key_temp=5;key_flag=4;key4_temp=1;i++;}}
              if(i>1)
                    {key_temp=6,key_flag=0;light_led();}
              if(i==0)
                    {key_temp=0;}
              }break;
   default:  break;
   }
    if((t_temp%50)==0)     //time=0.5s,dis_temp=2,
    {
     led_flag=1;
     switch(dis_temp)
     {
     case 2:dis_flag=0x03;break;
     case 3:dis_flag=0x05;break;
     case 4:dis_flag=0x05;break;
     case 5:dis_flag=0x08;break;
     case 6:dis_flag=0x09;break;
     default:break;
     }
    }
   if((t_temp%200)==0&&(dis_temp==1))     //time=1s,dis_temp=1,显示运行状态     {
    {
       dis_flag=0x01;
       switch(ping)
       {
        case 1: get_shuzi(0); break;
        case 2: get_shuzi(1); break;
        case 3: get_shuzi(2); break;
        default: break;
       }
    }
   if(t_temp2%500==0)
   {
   sys_time=1;
    }
  if(t_temp2>=6000)                    //time=1min,没有按键按下,关LCD背光,显示运行状态
    {
      t_temp2=0;
      LED=0;
      dis_flag=1;
      dis_temp=1;
      ping=0;
      t_temp=0;
    }
  if(t_temp3>=2000)
    {
    t_temp3=0;
    otime_flag=1;
    }
}



⌨️ 快捷键说明

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