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

📄 mylib.c

📁 红外抄表系统的源代码。利用非电信号传送控制信息和数据信息
💻 C
📖 第 1 页 / 共 3 页
字号:
         break;
         case 4:
              LightingBits(time, 0x4E); //0100 1110
         break;
         case 5:
              LightingBits(time, 0x5D); //0101 1101
         break;
         case 6:
              LightingBits(time, 0x7D); //0111 1101
         break;
         case 7:
              LightingBits(time, 0x0B); //0000 1011
         break;
         case 8:
              LightingBits(time, 0x7F); //0111 1111
         break;
         case 9:
              LightingBits(time, 0x5F); //0101 1111
         break;
         default:
         break;
    }
}
else
	{
		 LightingBits(time, 0x7B); //0111 1011
	}

/*    if(DisUaNumFlag)
    {
         Disp_fault_num(disnum[1],time);
    }
    else if(DisUbNumFlag)
    {
         Disp_fault_num(disnum[2],time);
    }
    else if(DisUcNumFlag)
    {
         Disp_fault_num(disnum[3],time);
    }
    else if(DisIaNumFlag)
    {
         Disp_fault_num(disnum[4],time);
    }
    else if(DisIcNumFlag)
    {
         Disp_fault_num(disnum[6],time);
    }
    else if(DisIpNumFlag)
    {
         Disp_fault_num(disnum[7],time);
    }

    else
    {
         //display month
         LightingBits(time, 0x7B); //0111 1011
    }*/


    j = *(time+5)%10;
    if(Sx == S12)
        LCD_WD2(6,*(IC2_TB+j)|0x80);     //display S12
    else
        LCD_WD2(6,*(IC2_TB+j));          //not display S12

    //display second
    j = *(time+6)/10;
    if(Sx == S13)
        LCD_WD2(4,*(IC2_TB+j)|0x80);     //display S13
    else
        LCD_WD2(4,*(IC2_TB+j));          //not display S13
    j = *(time+6)%10;
    if(Sx == S14)
        LCD_WD2(2,*(IC2_TB+j)|0x80);     //display S14
    else
        LCD_WD2(2,*(IC2_TB+j));          //not display S14
    KickDog();
}

/*****************************************/
/*                                       */
/* The function change hex to dec        */
/* designed by xl.zhang                  */
/* Date 2007-4-4                         */
/*                                       */
/*****************************************/
uchar hex_to_dec(uchar hex_dat)
{
     uchar k1,k2;
     k1=hex_dat/16;
     k2=hex_dat%16;
     k1=k2+k1*10;
     return(k1);
}
/**************************************************/
/*                                                */
/* The function send display number to IC1 region,*/
/* where Sx is the trouble type to display        */
/* f_time is the trouble start time or stop time  */
/* hour and minute <=255(FFH)                     */
/* designed by xl.zhang                           */
/* Date 2007-4-4                                 */
/**************************************************/
void DispIC1_start_stop(uchar Sx,uchar time[6])  //
{
    uchar B_D;
    int j;
    B_D = 0x0;
    j = 0;
    if(Sx == 0)     //trouble in S1
        LCD_WD1(B_D,*(IC1_TB+j)|0x10);
    else
        LCD_WD1(B_D,*(IC1_TB+j));
    B_D += 2;
    j = 0;
    if(Sx == 1)      //trouble in S2
        LCD_WD1(B_D,*(IC1_TB+j)|0x10);
    else
        LCD_WD1(B_D,*(IC1_TB+j));
    B_D += 2;
    j = time[4]/10;
    if(Sx == 2)      //trouble in S3
        LCD_WD1(B_D,*(IC1_TB+j)|0x10);
    else
        LCD_WD1(B_D,*(IC1_TB+j));
    B_D += 2;
    j =  time[4]%10;
    if(Sx == 3)      //trouble in S4
        LCD_WD1(B_D,*(IC1_TB+j)|0x10);
    else
        LCD_WD1(B_D,*(IC1_TB+j));
    B_D += 2;
    j = time[5]/10;
    if(Sx == 4)      //trouble in S5
        LCD_WD1(B_D,*(IC1_TB+j)|0x10);
    else
        LCD_WD1(B_D,*(IC1_TB+j));
    B_D += 2;
    j = time[5]%10;
    if(Sx == 5)      //trouble in S6
        LCD_WD1(B_D,*(IC1_TB+j)|0x10);
    else
        LCD_WD1(B_D,*(IC1_TB+j));
    KickDog();
}

void Set1302(uchar time[7])
{
  uchar i;
  uchar ucAddr = 0x80;
  W1302(0x8e,0x00);
  for(i =0;i<7;i++)
  {
    W1302(ucAddr,time[6-i]);
    ucAddr +=2;
  }
  W1302(0x8e,0x80);
  KickDog();
}
/*****************************************/
/*                                       */
/* The function change dec to  hex       */
/* designed by xl.zhang                  */
/* Date 2007-4-11                        */
/*                                       */
/*****************************************/
uchar dec_to_hex(uchar dec_dat)
{
     uchar k1,k2;
     k1=dec_dat/10;
     k2=dec_dat%10;
     k1=k2+k1*16;
     return(k1);
}
/*****************************************/
/*                                       */
/* The function use to init TIMER0       */
/* designed by xl.zhang                  */
/* Date 2007-4-11                        */
/*                                       */
/*****************************************/
/*void InitTimer0()
{
    TMOD |= 0x01;       //TMOD: timer 0, mode 1, 16 - bit
    PCON |= 0x00;       //SMOD=0;
    TH0   = 0x4C;       // Interrupt interval is 50ms for fosc=11.0592
    TL0   = 0x00;       //Baud:9600  fosc=11.0592MHz    mode1
    IE   |= 0x02;       //Enable Timer 0 Interrupt
    TR0   = 0;          // start timer 0 run
}*/

/**************************************************/
/*****************************************/
/*                                       */
/* The function use to init TIMER0       */
/* designed by xl.zhang                  */
/* Date 2007-4-11                        */
/*                                       */
/*****************************************/
void InitTimer2()
{

    RCLK=0;  // timer 2, 16 - bit
    TCLK=0;
    CP_RL2=0;
    TR2=0;
    TH2= 0x4C;       // Interrupt interval is 50ms for fosc=11.0592
    TL2= 0x00;       //
    ET2=1;       //Enable Timer 2 Interrupt
    TR2=1;          // start timer 2 run
}

/**************************************************/
/*                                                */
/* The function set the year,month,day,hour,minute,*/
/*second*/
/* where Sx is the trouble type to display        */
/* f_time is the trouble start time or stop time  */
/* hour and minute <=255(FFH)                     */
/* designed by ht.guan                           */
/* Date 2007-4-10                                */
/**************************************************/

uchar Key5(void)
{
   uchar flag=0;
   if(P3_2==0)
	      flag=1;
   else
        flag=0;
   return(flag);
}
uchar Key6(void)
{
   uchar flag=0;
   if(P3_4==0)
        flag=1;
   else flag=0;
   return(flag);
}
void set_time(void)
{
     uint i;
     if(Key5())
         SetTimeFlag = 1;
     while(SetTimeFlag)
     {
         if(Key5())
         {
             delay(DL10ms);
               KickDog();
             if(Key5())
             {
                 modified %= 6;
                 modified ++;
             }
         }
         switch(modified)
         {
             case 1:
                 if(Key6())
                 {
                     delay(DL10ms);
                       KickDog();
                     if(Key6())
                         Curtime[6]++;//sec
                     if(Curtime[6]>59)
                         Curtime[6]=0;
                 }
                 DispIC2_time(S13,Curtime);
                 delay(DL11ms);
                   KickDog();
                 LCD_WD2(4,0x80);     //display S13
                 LCD_WD2(2,0x00);     //display S14
             break;
             case 2:
                 if(Key6())
                 {
                     delay(DL10ms);
                       KickDog();
                     if(Key6())
                         Curtime[5]++;//minute
                     if(Curtime[5]>59)
                         Curtime[5]=0;
                 }
                 DispIC2_time(S13,Curtime);
                 delay(DL11ms);
                   KickDog();
                 LCD_WD2(6,0x00);     //display S13
                 LCD_WD2(8,0x00);     //display S14
             break;
             case 3:
                 if(Key6())
                 {
                     delay(DL10ms);
                       KickDog();
                     if(Key6())
                         Curtime[4]++;
                     if(Curtime[4]>23)//hour
                         Curtime[4]=0;
                 }
                 DispIC2_time(S13,Curtime);
                 delay(DL11ms);
                   KickDog();
                 LCD_WD2(10,0x00);     //display S13
                 LCD_WD2(12,0x00);     //display S14
             break;
             case 4:            //flag of display speed or pwmwidth  or angle
                 if(Key6())
                 {
                     delay(DL10ms);
                       KickDog();
                     if(Key6())
                         Curtime[3]++;//date
                     if(Curtime[3]>31)
                         Curtime[3]=1;
                 }
                 DispIC2_time(S13,Curtime);
                 delay(DL11ms);
                   KickDog();
                 LCD_WD2(14,0x00);     //display S13
                 LCD_WD2(16,0x00);     //display S14
             break;
             case 5:
                 if(Key6())
                 {
                     delay(DL10ms);
                       KickDog();
                     if(Key6())
                         Curtime[2]++;
                     if(Curtime[2]>12)//month
                         Curtime[2]=1;
                 }
                 DispIC2_time(S13,Curtime);
                 delay(DL11ms);
                   KickDog();
                 LCD_WD2(18,0x00);     //display S13
                 LCD_WD2(20,0x00);     //display S14
             break;
             case 6:
                 if(Key6())
                 {
                     delay(DL10ms);
                       KickDog();
                     if(Key6())
                         Curtime[0]++;
                     if(Curtime[0]>99)//year
                         Curtime[0]=0;
                 }
                 DispIC2_time(S13,Curtime);
                 delay(DL11ms);
                   KickDog();
                 LCD_WD2(22,0x80);     //display S13
                 LCD_WD2(24,0x80);     //display S14
             break;
             default:
             break;
         }
         if(Key6() && Key5())
         {
             delay(DL10ms);
               KickDog();
             if(Key6()&& Key5())
             {
                 SetTimeFlag = 0;
                 for(i=0;i<7;i++)
                     Curtime[i] = dec_to_hex(Curtime[i]);
                 Set1302(Curtime);
             }
         }
     }
}
///////////////////////////////////////////
/*void timer0() interrupt 1 using 2
{
	  if(UaDis5Start && a_b==0)
	  {
              TickerUb = 0;
              TickerUc = 0;
              TickerIa = 0;
              TickerIc = 0;
              TickerIp = 0;
              TickerUa++;
	  }
	  if(UbDis5Start && a_b==1)
	  {
              TickerUa = 0;
              TickerUc = 0;
              TickerIa = 0;
              TickerIc = 0;
              TickerIp = 0;
              TickerUb++;
	  }
	  if(UcDis5Start && a_b==2)
	  {
              TickerUa = 0;
              TickerUb = 0;
              TickerIa = 0;
              TickerIc = 0;
              TickerIp = 0;
              TickerUc++;
	  }
	  if(IaDis5Start && a_b==3)
	  {
              TickerUa = 0;
              TickerUb = 0;
              TickerUc = 0;
              TickerIc = 0;
              TickerIp = 0;
              TickerIa++;
	  }
	  if(IcDis5Start && a_b==4)
	  {
              TickerUa = 0;
              TickerUb = 0;
              TickerUc = 0;
              TickerIa = 0;
              TickerIp = 0;
              TickerIc++;
	  }
	  if(IpDis5Start && a_b==5)
	  {
              TickerUa = 0;
              TickerUb = 0;
              TickerUc = 0;
              TickerIc = 0;
              TickerIa = 0;
              TickerIp++;
	  }
}
void Ip_interpret(void)
{
     if(UaDis5Start)
         a_b = 0;
     else if(UbDis5Start)
         a_b = 1;
     else if(UcDis5Start)
         a_b = 2;
     else if(IaDis5Start)
         a_b = 3;
     else if(IcDis5Start)
         a_b = 4;
     else
         a_b = 5;
}
void dispIp(void)
{
     if(IpDis5Start)
     {
     	    if(!UaDis5Start &&!UbDis5Start &&!UcDis5Start&& !IaDis5Start&&!IcDis5Start&&!i_flag)
         {
             a_b = 5;
             i_flag = 1;
             TickerIp = Timing1;
         }
         if(TickerIp>=Timing1 && !Ip_a_flag)
         {
             disp_start5(Ip);
             Ip_a_flag = 1;
             Ip_b_flag = 0;
         }
         if(TickerIp>=Timing2 && !Ip_b_flag)
         {
             disp_fault_time(Ip);
             Ip_b_flag = 1;
             if(!IpDis5Stop)
             {
                 Ip_a_flag = 0;
                 TickerIp = 0;
                 Ip_interpret();
             }
         }
         if(TickerIp>=Timing3)
         {
             disp_stop5(Ip);
             TickerIp = 0;
             Ip_a_flag = 0;
             Ip_interpret();
         }
     }
}

void Ic_interpret(void)
{
     if(IpDis5Start)
         a_b = 5;
     else if(UaDis5Start)
         a_b = 0;
     else if(UbDis5Start)
         a_b = 1;
     else if(UcDis5Start)
         a_b = 2;
     else if(IaDis5Start)
         a_b = 3;
     else
         a_b = 4;
}
void dispIc(void)
{
     if(IcDis5Start)
     {
     	    if(!UaDis5Start &&!UbDis5Start &&!UcDis5Start&& !IaDis5Start&&!i_flag)
         {
             a_b = 4;
             i_flag = 1;
             TickerIc = Timing1;
         }
         if(TickerIc>=Timing1 && !Ic_a_flag)
         {
             disp_start5(Ic);
             Ic_a_flag = 1;
             Ic_b_flag = 0;
         }
         if(TickerIc>=Timing2 && !Ic_b_flag)
         {
             disp_fault_time(Ic);
             Ic_b_flag = 1;
             if(!IcDis5Stop)
             {
                 Ic_a_flag = 0;

⌨️ 快捷键说明

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