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

📄 hong_jie.lst

📁 红外38k发射和接受代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
 252   1         else if (X==3)
 253   1           {X=0x88;}
 254   1         else if (X==4)
 255   1           {X=0x98;}
 256   1         pos = X+Y ; 
 257   1       
 258   1         send_command(pos);     //显示地址
 259   1      }
 260          
 261          /*********************************************************
 262          *                                                        *
 263          * 图形显示                                               *
 264          *                                                        *
 265          *********************************************************/
 266          void photodisplay(uchar *bmp)   
 267          { 
 268   1        uchar i,j;
 269   1      
 270   1        send_command(0x34);        //写数据时,关闭图形显示
 271   1      
 272   1        for(i=0;i<32;i++)
 273   1        {
 274   2          send_command(0x80+i);    //先写入水平坐标值
 275   2          send_command(0x80);      //写入垂直坐标值
 276   2          for(j=0;j<16;j++)   //再写入两个8位元的数据    
 277   2          send_data(*bmp++);     
 278   2         // delay(1);
 279   2        }
 280   1      
 281   1        for(i=0;i<32;i++)
 282   1        { 
 283   2          send_command(0x80+i);
 284   2          send_command(0x88);
 285   2          for(j=0;j<16;j++)         
 286   2              send_data(*bmp++);    
 287   2      //      delay(1);
 288   2        }
 289   1        send_command(0x36);       //写完数据,开图形显示 
 290   1      }
 291          
 292          
 293          /*****************1ms延时程序****************/
 294          delay1ms(uint t)
 295          {
 296   1              for(i=0;i<t;i++)
 297   1                      for(n=0;n<120;n++)
 298   1                              ;
 299   1      }
 300          //
 301          /************100us延时程序********************/
 302          delay_jingque(uint m)
 303          {
C51 COMPILER V8.02   HONG_JIE                                                              09/06/2008 20:26:15 PAGE 6   

 304   1              TMOD=0x22;
 305   1              TR0=1;
 306   1              while(m!=0)
 307   1              {
 308   2                      TH0=0x9b;
 309   2                      TL0=0x9b;
 310   2                      while(TF0!=1);
 311   2                      TF0=0;
 312   2                      m--;
 313   2              }
 314   1              TR0=0;
 315   1      }
 316          //
 317          /*****************初始化函数******************/
 318          
 319          /********************主函数**************************/
 320          /*main()
 321          {
 322                  IE = 0x81;                 //允许总中断中断,使能 INT0 外部中断
 323              TCON = 0x01;               //触发方式为脉冲负边沿触发
 324                  clearmen();
 325                  while(1);
 326          }        */
 327          /****************外部中断0中断服务程序*********************/
 328          void IR_IN() interrupt 0 using 0
 329          {
 330   1              unsigned char j,k,N=0;
 331   1          EX0 = 0;   
 332   1              delay_jingque(15);
 333   1              if (IRIN==1) 
 334   1          { 
 335   2                      EX0 =1;
 336   2                  return;
 337   2              } 
 338   1                                 //确认IR信号出现
 339   1              while (!IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。
 340   1          {delay_jingque(1);}
 341   1      
 342   1              for (j=0;j<4;j++)         //收集四组数据
 343   1          { 
 344   2              for (k=0;k<8;k++)        //每组数据有8位
 345   2              {
 346   3                      while (IRIN)            //等 IR 变为低电平,跳过4.5ms的前导高电平信号。
 347   3                      {delay_jingque(1);}
 348   3                      while (!IRIN)          //等 IR 变为高电平
 349   3                      {delay_jingque(1);}
 350   3                      while (IRIN)           //计算IR高电平时长
 351   3                      {
 352   4                      delay_jingque(1);
 353   4                      N++;           
 354   4                      if (N>=28)
 355   4                          { 
 356   5                                              EX0=1;
 357   5                              return;
 358   5                                      }                  //0.1ms计数过长自动离开(超过2.8ms)。
 359   4                  }                        //高电平计数完毕                
 360   3                  IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0”
 361   3                  if (N>=12) {IRCOM[j] = IRCOM[j] | 0x80;}  //数据最高位补“1”
 362   3                  N=0;                                  //1.2ms~2.8ms算作"1"
 363   3                      }//end for k
 364   2              }//end for j
 365   1          if (IRCOM[2]!=~IRCOM[3])
C51 COMPILER V8.02   HONG_JIE                                                              09/06/2008 20:26:15 PAGE 7   

 366   1          { 
 367   2                      EX0=1;
 368   2              return;
 369   2              }
 370   1          IRCOM[5]=IRCOM[2] & 0x0F;     //取键码的低四位
 371   1          IRCOM[6]=IRCOM[2] >> 4;       //右移4次,高四位变为低四位
 372   1          if(IRCOM[6]==8)
 373   1          {
 374   2                      key=IRCOM[5]+1;
 375   2          }  //解码后判断的键值1~16
 376   1              if(IRCOM[6]==9)
 377   1              { 
 378   2                      key=IRCOM[5]+17;
 379   2              } //解码后判断的键值17~32
 380   1      
 381   1               lcd_pos(2,2);  
 382   1              send_data(0x30+key/10);
 383   1              send_data(0x30+key%10) ;
 384   1      
 385   1              EX0=1;
 386   1      }
 387          
 388           //矩阵按键程序
 389          void keyscan()
 390          {
 391   1              P0=0xfe;
 392   1              temp=P0;
 393   1              temp&=0xf0;
 394   1              if(temp!=0xf0)
 395   1              {
 396   2                      delay(20);
 397   2                      switch(temp)
 398   2                      {
 399   3                              case 0xe0: kk=0;break;
 400   3                              case 0xd0: kk=1;break;
 401   3                              case 0xb0: kk=2;break;
 402   3                              case 0x70: kk=3;break;
 403   3      
 404   3                      }               
 405   2              }
 406   1              P0=0xfd;
 407   1              temp=P0;
 408   1              temp&=0xf0;
 409   1              if(temp!=0xf0)
 410   1              {
 411   2                      delay(20);
 412   2                      switch(temp)
 413   2                      {
 414   3                              case 0xe0: kk=4;break;
 415   3                              case 0xd0: kk=5;break;
 416   3                              case 0xb0: kk=6;break;
 417   3                              case 0x70: kk=7;break;
 418   3      
 419   3                      }               
 420   2              }
 421   1          P0=0xfb;
 422   1              temp=P0;
 423   1              temp&=0xf0;
 424   1              if(temp!=0xf0)
 425   1              {
 426   2                      delay(20);
 427   2                      switch(temp)
C51 COMPILER V8.02   HONG_JIE                                                              09/06/2008 20:26:15 PAGE 8   

 428   2                      {
 429   3                              case 0xe0: kk=8;break;
 430   3                              case 0xd0: kk=9;break;
 431   3                              case 0xb0: kk=10;break;
 432   3                              case 0x70: kk=11;break;
 433   3      
 434   3                      }               
 435   2              }
 436   1              P0=0xf7;
 437   1              temp=P0;
 438   1              temp&=0xf0;
 439   1              if(temp!=0xf0)
 440   1              {
 441   2                      delay(20);
 442   2                      switch(temp)
 443   2                      {
 444   3                              case 0xe0: kk=12;break;
 445   3                              case 0xd0: kk=13;break;
 446   3                              case 0xb0: kk=14;break;
 447   3                              case 0x70: kk=15;break;
 448   3      
 449   3                      }               
 450   2              }
 451   1               
 452   1      
 453   1      
 454   1      
 455   1      }
 456           main() 
 457          { 
 458   1              uchar command_data; 
 459   1              uchar i;
 460   1         EA=1;
 461   1         EX0=1;
 462   1         IT0=1;
 463   1         IRIN=1;                    //I/O口初始化             
 464   1         lcd_init(); 
 465   1         send_command(0x01);
 466   1        //photodisplay(Photo1);     //显示图片1
 467   1        //lcdflag();
 468   1        //send_command(0x80);
 469   1        //send_data(0xa1);
 470   1        //send_data(0xf8); 
 471   1        //delay(1000);
 472   1        //send_command(0x80);
 473   1       // send_command(0x00); 
 474   1              while(1)
 475   1              {
 476   2              keyscan();
 477   2                      //lcd_pos(2,2); 
 478   2               //     send_data(0x30+key/10);
 479   2              //      send_data(0x30+key%10) ;
 480   2              
 481   2                      
 482   2              }
 483   1        
 484   1      
 485   1                
 486   1        
 487   1        
 488   1          
 489   1      }
C51 COMPILER V8.02   HONG_JIE                                                              09/06/2008 20:26:15 PAGE 9   

*** WARNING C280 IN LINE 458 OF HONG_JIE.C: 'command_data': unreferenced local variable
*** WARNING C280 IN LINE 459 OF HONG_JIE.C: 'i': unreferenced local variable
 490          
 491          //
 492          //
 493          /**********************************END************************************/
 494          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    953    ----
   CONSTANT SIZE    =   1024    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  2 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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