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

📄 gj3.c

📁 用AT89C52并口连接LM128645液晶块的有用的汽车ABS故障检测仪程序,LM128645总共20管脚.
💻 C
📖 第 1 页 / 共 2 页
字号:
                 key_last2=key1;    //key_last2 is final read P2 data
                 have_key=1;        //there is  the pushed key
             }
         } //if(key1==key2)
         key2=key1;          //第二次采样P2数据
     }    //if(aaa<0x0f)去抖动处理
     else                  // p20--p23 is  all high level
     {
         key1=0;
         key2=0;
         have_key=0;
     }
}
/************************************************************* */
move_cursor(unsigned char hang1) //write tubiao for hang1
{
     hang1=hang1 & 0x3;         //only keep 0,1,2,3 hang
     ansi();
     PBYTE[0X00]=0X87;
     ansi();
     PBYTE[0X01]=spac;
     ansi();
     PBYTE[0X01]=spac;
     //
     ansi();
     PBYTE[0X00]=0X8f;
     ansi();
     PBYTE[0X01]=spac;
     ansi();
     PBYTE[0X01]=spac;
     //
     ansi();
     PBYTE[0X00]=0X97;
     ansi();
     PBYTE[0X01]=spac;
     ansi();
     PBYTE[0X01]=spac;
     //
     ansi();
     PBYTE[0X00]=0X9f;
     ansi();
     PBYTE[0X01]=spac;
     ansi();
     PBYTE[0X01]=spac;
     //
     if(hang1==0)
     {
         ansi();
         PBYTE[0X00]=0X87;
     }
     if(hang1==1)
     {
         ansi();
         PBYTE[0X00]=0X97;
     }
     if(hang1==2)
     {
         ansi();
         PBYTE[0X00]=0X8f;
     }
     if(hang1==3)
     {
         ansi();
         PBYTE[0X00]=0X9f;
     }
     ansi();
     PBYTE[0X01]=0x11;
     ansi();
     PBYTE[0X01]=0x11;
}
/************************************************************* */
back_lamp_contrl(bit ifon)
{
     //
     ansi();
     PBYTE[0X00]=0X9d;
     if(ifon)
     {
         ansi();
         PBYTE[0X01]=0xbf;
         ansi();
         PBYTE[0X01]=0xaa;
         P11=0;
     }
     else
     {
         ansi();
         PBYTE[0X01]=0xb9;
         ansi();
         PBYTE[0X01]=0xd8;
         P11=1;
     }

}
/************************************************************* */
set_lcd_page()               //set page ,cursor_hang configue relative
{
    switch(cursor_hang)
    {  // unsigned char num;
      // unsigned char i5,err_ansr;
        case 120:
            menu_page=120;
            break;
        case 0:
            menu_page=0;
            break;
        case 1:
            menu_page=0;
            break;
        case 2:
            menu_page=0;
            break;
        case 3:
            menu_page=0;
            break;
        case 4:
            menu_page=1;
            break;
        case 5:
            menu_page=1;
            break;
        case 0x10:
            menu_page=no_menu;   //#define no_menu 250
            dis_err1(dis_mod1);
            break;
     /*  case 0x11:
             menu_page=no_menu;
             break;
       case 0x12:
             menu_page=no_menu;
             break;
       case 0x13:
             menu_page=no_menu;
             break;   */
       case 0x14:
                menu_page=no_menu1;
                dis_err2(dis_mod2);
                break;
        case 0x20:
            menu_page=no_menu2;   //#define no_menu 250
            dis_err3(dis_mod3);
            break;
        case 0x24:
                menu_page=no_menu3;
                dis_err4(dis_mod4);
            break;
        case 0x30:
        case 0x31:
        case 0x32:
        case 0x33:
            menu_page=no_menu4;   //#define no_menu 250
            dis_err5(dis_mod5);
            break;
      /*  case 0x34:
             menu_page=no_menu5;
             dis_err6(dis_mod6);
             break;       */
        case 0x50:                //显示:正在联机测试 请稍等...
            menu_page=no_menu6;
            p_renew=&test_dis_file[0];
            renew_led(p_renew);
            break;
        case 0x54:                //显示:联机测试完毕
            menu_page=no_menu6;
            p_renew=&test_ok_file[0];
            renew_led(p_renew);
            break;
         case 0x60:                //显示:ABS正忙

            menu_page=no_menu6;
            p_renew=&test_busy_file[0];
            renew_led(p_renew);
            break;
        case 0x64:    //显示:正在下载故障 请稍等...
            menu_page=no_menu6;
            p_renew=&tx_dis_file[0];
            renew_led(p_renew);
            break;
        case 0x70:                //显示:故障数据下载完毕
            menu_page=no_menu6;
            p_renew=&rx_ok_file[0];
            renew_led(p_renew);
            err_num(max_wei); 
            break;
         case 0x74:                //(0x74)无故障显示!
            menu_page=no_menu6;
            need_move_cursor=0;
            p_renew=&no_err_file[0];
            renew_led(p_renew);
            break;
         case 0x90:               // 通信失败!
            menu_page=no_menu6;
            need_move_cursor=0;
            p_renew=&test_fail_file[0];
            renew_led(p_renew);
            break;
    }
}
/************************************************************* */
cursor_up_proc()
{
    if(cursor_hang!=120)    //outside of huitu page
    {   need_move_cursor=1;
        cursor_hang--;
       switch (cursor_hang)
      {

        case 0xff:   //max of char hang is 0xff
          {
            cursor_hang=0;
            break;
          }
        case 0xf:
          {
           cursor_hang=0x10;
           break;
          }

      }

     }//if(cursor_hang!=120)
}
/************************************************************* */
cursor_down_proc()
{
   if(cursor_hang!=120)
   {   need_move_cursor=1;
       cursor_hang++;
       switch (cursor_hang)
      {
        case 0x14:
            need_renew_lcd=1;
            need_move_cursor=1;
            break;
        case 0x18:
           // t_tx(datacomm2[1]);
            cursor_hang=cursor_hang+8;
            need_move_cursor=1;
            need_renew_lcd=1;
            break;
        case 0x24:
            need_move_cursor=1;
            need_renew_lcd=1;
            break;
        case 0x28:
           // t_tx(datacomm2[2]);
            cursor_hang=cursor_hang+8;
            need_move_cursor=1;
            need_renew_lcd=1;
            break;
        case 0x34:
            cursor_hang=0x33;
            need_move_cursor=1;
            need_renew_lcd=1;
            break;
       /* case 0x38:
           // t_tx(datacomm2[2]);
            cursor_hang=0x37;
            need_move_cursor=0;
            need_renew_lcd=1;
            break;   */
      }
    }
}
/************************************************************* */
renew_hang(unsigned char hang1,unsigned char * p_rom) //write display_code(* p_rom) to hang1
{   unsigned char err_i1,hang2;                                                  //as hang write display_code(* p_rom)
    ansi();
    hang2=hang1%4;
   /* t_tx(hang1);
    t_tx(hang2); */
 switch (hang2)
 {
case 0:

    PBYTE[0X00]=0X80;
    for(err_i1=0;err_i1<16;err_i1++)
    {
       ansi();
       PBYTE[0X01]=* p_rom;
       p_rom++;
    }
 break;
    //
case 1:

    PBYTE[0X00]=0X90;
    for(err_i1=0;err_i1<16;err_i1++)
    {
       ansi();
       PBYTE[0X01]=* p_rom;
       p_rom++;
    }
break;
    //
case 2:

    PBYTE[0X00]=0X88;
    for(err_i1=0;err_i1<16;err_i1++)
    {
       ansi();
       PBYTE[0X01]=* p_rom;
       p_rom++;
    }
break;
    //
case 3:

    PBYTE[0X00]=0X98;
    for(err_i1=0;err_i1<16;err_i1++)
    {
       ansi();
       PBYTE[0X01]=* p_rom;
       p_rom++;
    }
 break;
 }
}//renew_hang
/***********************************************************/
 read_err_to_struct(rx_data_p)
 unsigned char *rx_data_p;
{
     unsigned char err_i1,err_i2;
     unsigned char err_temp1[3];
     unsigned char err_temp2,err_temp3;
     for (err_i2=0;err_i2<3;err_i2++)
         err_temp1[err_i2]=*(rx_data_p+err_i2);
     for(err_i1=0;err_i1<24;err_i1++)
    {
         err[err_i1].err_num=0;
         err[err_i1].err_wei=0;
    }
          err_temp2=0;
	  err_temp3=0;
          //
        //  t_tx(err_temp1[0]);
     for(err_i1=0;err_i1<8;err_i1++)
		{
			err[err_i1].err_num=err_temp2;
                        err_temp2++;
                 if (err_temp1[0] & 0x01)
		   {
                        err[err_i1].err_wei=err_temp3;
			err_temp3++;
		   }
		   else
			err[err_i1].err_wei=err_temp3;
                        err_temp1[0]=(err_temp1[0]>>1);
		}
         /* t_tx(err_temp2);
          t_tx(err_temp3);
          t_tx(err_temp1[1]);      */
     for(err_i1=8;err_i1<16;err_i1++)
		{
			err[err_i1].err_num=err_temp2;
                        err_temp2++;
                 if (err_temp1[1] & 0x01)
		   {
                        err[err_i1].err_wei=err_temp3;
			err_temp3++;
		   }
		   else
			err[err_i1].err_wei=err_temp3;
                        err_temp1[1]=(err_temp1[1]>>1);
		}
        /*  t_tx(err_temp2);
          t_tx(err_temp3);
          t_tx(err_temp1[2]);   */
     for(err_i1=16;err_i1<24;err_i1++)
		{
			err[err_i1].err_num=err_temp2;
                        err_temp2++;
                 if (err_temp1[2] & 0x01)
		   {
                        err[err_i1].err_wei=err_temp3;
			err_temp3++;
		   }
		   else
			err[err_i1].err_wei=err_temp3;
                        err_temp1[2]=(err_temp1[2]>>1);
		}
        /*   t_tx(err_temp2);
           t_tx(err_temp3);          */

                if (err_temp3<=0)
                    { dis_mod1=0;dis_mod2=0;dis_mod3=0;
                     dis_mod4=0;dis_mod5=0;dis_mod6=0;}
                else if (err_temp3>0&&err_temp3<=4)
                     { dis_mod1=1;dis_mod2=0;dis_mod3=0;
                     dis_mod4=0;dis_mod5=0;dis_mod6=0;}
                else if (err_temp3>4&&err_temp3<=8)
                     { dis_mod1=2;dis_mod2=1;dis_mod3=0;
                     dis_mod4=0;dis_mod5=0;dis_mod6=0;}
                else if (err_temp3>8&&err_temp3<=12)
                     { dis_mod1=2;dis_mod2=2;dis_mod3=1;
                     dis_mod4=0;dis_mod5=0;dis_mod6=0;}
                else if (err_temp3>12&&err_temp3<=16)
                     { dis_mod1=2;dis_mod2=2;dis_mod3=2;
                     dis_mod4=1;dis_mod5=0;dis_mod6=0;}
                else if (err_temp3>16&&err_temp3<=20)
                     { dis_mod1=2;dis_mod2=2;dis_mod3=2;
                     dis_mod4=2;dis_mod5=1;dis_mod6=0;}
                else if (err_temp3>20&&err_temp3<=24)
                     { dis_mod1=2;dis_mod2=2;dis_mod3=2;
                     dis_mod4=2;dis_mod5=2;dis_mod6=1;}
                else
                     { dis_mod1=2;dis_mod2=2;dis_mod3=2;
                     dis_mod4=2;dis_mod5=2;dis_mod6=2;}
                  /*    t_tx(dis_mod1);
                      t_tx(dis_mod2);
                      t_tx(dis_mod3);
                      t_tx(dis_mod4);
                      t_tx(dis_mod5);
                      t_tx(dis_mod6);   */
              return(err_temp3);
     // }
}//read_err_to_struct
/************************************************************* */
show_picture(unsigned char * p_picture)
{
     unsigned char i1,i2;
     unsigned char pic_hang;
     pic_hang=0x80;
     //pic_lie=0x80;
     ansi();
     PBYTE[0X00]=0x80;   //设绘图垂直位址
     ansi();
     PBYTE[0X00]=0x82;   //设绘图水平地址,打开控制绘图显示的位元G(2)
     for(i1=0;i1<32;i1++)         //32个垂直位址
     {
         for(i2=0;i2<9;i2++)     //i2水平位元
         {
             ansi();
             PBYTE[0X01]=*p_picture;
             p_picture++;
             //ansi();
             //PBYTE[0X01]=*p_picture;
             //p_picture++;
         }
         pic_hang++;
         ansi();
         PBYTE[0X00]=pic_hang;   //设绘图地址
         ansi();
         PBYTE[0X00]=0x82;   //设绘图水平地址
     }
} // show_picture
/************************************************************* */
 void t_tx(unsigned char send_temp)
 {
  //ES=0;
   if (TI==1)
    { TI=0;

    SBUF= send_temp;
    while (TI==0);
     }
      TI=1;
    //ES=1;

  }//void t_tx
void tx_download()
   {
     int i,j;
     unsigned char rcv_temp1,rcv_temp2;
     rcvdata[0]=0;
     rcvdata[1]=0;
     rcvdata[2]=0;
     datacomm1=0x0a;  //发送数据

⌨️ 快捷键说明

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