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

📄 hw.lst

📁 红外在单片机上的应用,C语言源码,Keil uVision3工程文件,附原理图及说明学习文档 红外接收电路采用集成红外接收器成品H1
💻 LST
📖 第 1 页 / 共 2 页
字号:
 296   4                                              TR0=1;//打开定时器0
 297   4                                      }
 298   3                                      sound=0;
 299   3                                      code_dis[5]=3;
 300   3                                      display();
 301   3                                      break;
 302   3                              case 4:
C51 COMPILER V8.08   HW                                                                    12/26/2008 22:19:58 PAGE 6   

 303   3                                      if(pulse==26)
 304   3                                      {
 305   4                                              delay(0xff);
 306   4                                              pulse=0;
 307   4                                              memcpy(hw+13,hw_4,12);
 308   4                                              TH0=0xff-hw[pulse];
 309   4                                              TL0=0xe0;
 310   4                                              pulse++;
 311   4                                              hw_send=0;
 312   4                                              EA=1;//允许中断
 313   4                                              TR0=1;//打开定时器0
 314   4                                      }
 315   3                                      sound=0;
 316   3                                      code_dis[5]=4;
 317   3                                      display();
 318   3                                      break;
 319   3                              case 5:
 320   3                                      if(pulse==26)
 321   3                                      {
 322   4                                              delay(0xff);
 323   4                                              pulse=0;
 324   4                                              memcpy(hw+13,hw_5,12);
 325   4                                              TH0=0xff-hw[pulse];
 326   4                                              TL0=0xe0;
 327   4                                              pulse++;
 328   4                                              hw_send=0;
 329   4                                              EA=1;//允许中断
 330   4                                              TR0=1;//打开定时器0
 331   4                                      }
 332   3                                      sound=0;
 333   3                                      code_dis[5]=5;
 334   3                                      display();
 335   3                                      break;
 336   3                              case 6:
 337   3                                      if(pulse==26)
 338   3                                      {
 339   4                                              delay(0xff);
 340   4                                              pulse=0;
 341   4                                              memcpy(hw+13,hw_6,12);
 342   4                                              TH0=0xff-hw[pulse];
 343   4                                              TL0=0xe0;
 344   4                                              pulse++;
 345   4                                              hw_send=0;
 346   4                                              EA=1;//允许中断
 347   4                                              TR0=1;//打开定时器0
 348   4                                      }
 349   3                                      sound=0;
 350   3                                      code_dis[5]=6;
 351   3                                      display();
 352   3                                      break;
 353   3                              case 7:
 354   3                                      if(pulse==26)
 355   3                                      {
 356   4                                              delay(0xff);
 357   4                                              pulse=0;
 358   4                                              memcpy(hw+13,hw_7,12);
 359   4                                              TH0=0xff-hw[pulse];
 360   4                                              TL0=0xe0;
 361   4                                              pulse++;
 362   4                                              hw_send=0;
 363   4                                              EA=1;//允许中断
 364   4                                              TR0=1;//打开定时器0
C51 COMPILER V8.08   HW                                                                    12/26/2008 22:19:58 PAGE 7   

 365   4                                      }
 366   3                                      sound=0;
 367   3                                      code_dis[5]=7;
 368   3                                      display();
 369   3                                      break;
 370   3                              case 8:
 371   3                                      if(pulse==26)
 372   3                                      {
 373   4                                              delay(0xff);
 374   4                                              pulse=0;
 375   4                                              memcpy(hw+13,hw_8,12);
 376   4                                              TH0=0xff-hw[pulse];
 377   4                                              TL0=0xe0;
 378   4                                              pulse++;
 379   4                                              hw_send=0;
 380   4                                              EA=1;//允许中断
 381   4                                              TR0=1;//打开定时器0
 382   4                                      }
 383   3                                      sound=0;
 384   3                                      code_dis[5]=8;
 385   3                                      display();
 386   3                                      break;
 387   3                              default:
 388   3                                      if(pulse==26)
 389   3                                      {
 390   4                                              sound=1;
 391   4                                              hw_send=1;
 392   4                                              TR0=0;//关定时器0
 393   4                                              EA=0;
 394   4                                      }
 395   3                                      break;
 396   3                      }
 397   2              }       
 398   1      }
 399          
 400          void delay(uchar delay_temp)//延时子程序
 401          {
 402   1              uchar i,j;
 403   1              for(i=0;i<delay_temp;i++)
 404   1              {
 405   2                      for(j=0;j<255;j++);
 406   2              }
 407   1      }
 408          
 409          void delaym(uchar delaym_temp)//延时子程序
 410          {
 411   1              uchar i;
 412   1              for(i=0;i<delaym_temp;i++);
 413   1      }
 414          
 415          void disp(uchar dis)//送显示命令子程序
 416          {
 417   1              uchar dis_i,dis_temp;
 418   1              dis_temp=0x01;
 419   1              for(dis_i=0;dis_i<8;dis_i++)
 420   1              {
 421   2                      sm1623_clk=0;
 422   2                      delaym(1);
 423   2                      if((dis&dis_temp)==0){sm1623_din=0;}
 424   2                      else{sm1623_din=1;}
 425   2                      sm1623_clk=1;//上升沿输入数据
 426   2                      delaym(1);
C51 COMPILER V8.08   HW                                                                    12/26/2008 22:19:58 PAGE 8   

 427   2                      dis_temp=dis_temp<<1;
 428   2              }
 429   1      }
 430          
 431          void display()//显示子程序
 432          {
 433   1              uchar code_dis_d[6];
 434   1              uchar i;
 435   1              for(i=0;i<6;i++)//计算显示码
 436   1              {
 437   2                      switch(code_dis[i])
 438   2                      {
 439   3                              case 1:
 440   3                                      code_dis_d[i]=0x06;
 441   3                                      break;
 442   3                              case 2:
 443   3                                      code_dis_d[i]=0x5b;
 444   3                                      break;
 445   3                              case 3:
 446   3                                      code_dis_d[i]=0x4f;
 447   3                                      break;
 448   3                              case 4:
 449   3                                      code_dis_d[i]=0x66;
 450   3                                      break;
 451   3                              case 5:
 452   3                                      code_dis_d[i]=0x6d;
 453   3                                      break;
 454   3                              case 6:
 455   3                                      code_dis_d[i]=0x7d;
 456   3                                      break;
 457   3                              case 7:
 458   3                                      code_dis_d[i]=0x07;
 459   3                                      break;
 460   3                              case 8:
 461   3                                      code_dis_d[i]=0x7f;
 462   3                                      break;
 463   3                              case 9:
 464   3                                      code_dis_d[i]=0x6f;
 465   3                                      break;
 466   3                              case 10://显示黑
 467   3                                      code_dis_d[i]=0x00;
 468   3                                      break;
 469   3                              case 11://显示A
 470   3                                      code_dis_d[i]=0x77;
 471   3                                      break;
 472   3                              case 12://显示d
 473   3                                      code_dis_d[i]=0x5e;
 474   3                                      break;
 475   3                              case 13://显示-
 476   3                                      code_dis_d[i]=0x40;
 477   3                                      break;
 478   3                              case 14://显示8.
 479   3                                      code_dis_d[i]=0xff;
 480   3                                      break;
 481   3                              default://显示0
 482   3                                      code_dis_d[i]=0x3f;
 483   3                                      break;
 484   3                      }
 485   2              }
 486   1              sm1623_stb=0;
 487   1              disp(0x02);//显示模式6位12段
 488   1              sm1623_stb=1;
C51 COMPILER V8.08   HW                                                                    12/26/2008 22:19:58 PAGE 9   

 489   1              delaym(1);
 490   1              sm1623_stb=0;
 491   1              disp(0x40);//设置数据
 492   1              sm1623_stb=1;
 493   1              delaym(1);
 494   1              sm1623_stb=0;
 495   1              disp(0xc0);//设置地址
 496   1              disp(code_dis_d[0]);//1
 497   1              disp(0x00);
 498   1              disp(code_dis_d[1]);//2
 499   1              disp(0x00);
 500   1              disp(code_dis_d[2]);//3
 501   1              disp(0x00);
 502   1              disp(code_dis_d[3]);//4
 503   1              disp(0x00);
 504   1              disp(code_dis_d[4]);//5
 505   1              disp(0x00);
 506   1              disp(code_dis_d[5]);//6
 507   1              disp(0x00);
 508   1              sm1623_stb=1;
 509   1              delaym(1);
 510   1              sm1623_stb=0;
 511   1              disp(0x8a);//控制显示
 512   1              sm1623_stb=1;
 513   1      }
 514          
 515          uchar key(void)//按键读数据子程序
 516          {
 517   1              uchar key_i,key_temp,key_re;
 518   1              key_temp=0x00;
 519   1              for(key_i=0;key_i<8;key_i++)
 520   1              {
 521   2                      sm1623_clk=0;//下降沿输出数据
 522   2                      delaym(1);
 523   2                      if(sm1623_dout==0){key_temp=key_temp&0x7f;}
 524   2                      else{key_temp=key_temp|0x80;}
 525   2                      key_re=key_temp;
 526   2                      sm1623_clk=1;
 527   2                      delaym(1);
 528   2                      key_temp=key_temp>>1;
 529   2              }
 530   1              return key_re;
 531   1      }
 532          
 533          uchar key_deal(void)//按键处理子程序,返回按键编号
 534          {
 535   1              uchar temp_k1,temp_k2;
 536   1              sm1623_stb=0;
 537   1              disp(0x42);//读键扫数据指令
 538   1              temp_k1=key()&0x1b;
 539   1              temp_k2=key()&0x1b;
 540   1              sm1623_stb=1;//取消片选,如果没有此语句按键5时,会出现按键1被按下的现象
 541   1              if(temp_k1!=0x00)
 542   1              {
 543   2                      switch(temp_k1)
 544   2                      {
 545   3                              case 0x01:
 546   3                                      return 0x01;
 547   3                                      break;
 548   3                              case 0x02:
 549   3                                      return 0x02;
 550   3                                      break;
C51 COMPILER V8.08   HW                                                                    12/26/2008 22:19:58 PAGE 10  

 551   3                              case 0x08:
 552   3                                      return 0x03;
 553   3                                      break;
 554   3                              case 0x10:
 555   3                                      return 0x04;
 556   3                                      break;
 557   3                              default:
 558   3                                      return 0x00;
 559   3                                      break;
 560   3                      }
 561   2              }
 562   1              if(temp_k2!=0x00)
 563   1              {
 564   2                      switch(temp_k2)
 565   2                      {
 566   3                              case 0x01:
 567   3                                      return 0x05;
 568   3                                      break;
 569   3                              case 0x02:
 570   3                                      return 0x06;
 571   3                                      break;
 572   3                              case 0x08:
 573   3                                      return 0x07;
 574   3                                      break;
 575   3                              case 0x10:
 576   3                                      return 0x08;
 577   3                                      break;
 578   3                              default:
 579   3                                      return 0x00;
 580   3                                      break;
 581   3                      }
 582   2              }
 583   1              return 0x00;
 584   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1824    ----
   CONSTANT SIZE    =    133    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     46       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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