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

📄 text1.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
📖 第 1 页 / 共 2 页
字号:
 300   3                  else if(temp==0x0e)//判断第3列是否有键按下
 301   3                  {
 302   4                      keycode=i*4+3;
 303   4                      break;
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 15:23:53 PAGE 6   

 304   4                  }
 305   3                  P1=(P1<<1)|0x1;
 306   3              }
 307   2      
 308   2               while((P1&0x0f)!=0x0f)   //等待释放
 309   2               {
 310   3                   P1=0x0f;
 311   3               }
 312   2          //   beep=1;                                             
 313   2              
 314   2           }
 315   1           return keycode;
 316   1      }
 317          
 318          /**********lcd1602 测试程序**********************/
 319          //上电后lcd1602 显示  
 320          //            "System of P.H.Y"      
 321          //             "   Welcome!"
 322          //
 323          //分别按矩阵最右下角的三个按键 分别出现下面几个显示界面:
 324          //   key=0 显示
 325          //              "    2005/7/28";
 326          //                      "      20:27";
 327          //   key=1 显示
 328          //              "<>?+-*/()="    
 329          //              "`-=\[]/.,;"    
 330          //   key=2 显示
 331          //         "!@#$%^&*()_+|~"
 332          //         "!@#$%^&*()_+|~"
 333          
 334          void xianshu(unsigned long a)
 335          {          unsigned long c,p=0;
 336   1                                      if (a!=0) 
 337   1                              {       
 338   2                      
 339   2                                      c=a/10000;
 340   2                                      if(c!=0)
 341   2                      {lcd1602_wrdata(c+0x30);
 342   3                                   p=1;
 343   3                                       }
 344   2                      
 345   2                      
 346   2                      c=(a%10000)/1000;
 347   2                      if(c!=0 || p==1)
 348   2                       {lcd1602_wrdata(c+0x30);
 349   3                                    }
 350   2                      
 351   2                                      c=(a%1000)/100;
 352   2                      if(c!=0 || p==1)
 353   2                       {lcd1602_wrdata(c+0x30);
 354   3                                    }
 355   2                      
 356   2                                      c=(a%100)/10;
 357   2                      if(c!=0 || p==1)
 358   2                       {lcd1602_wrdata(c+0x30);
 359   3                                    }
 360   2                      
 361   2                          c=a%10+0x30;
 362   2                          lcd1602_wrdata(c);   
 363   2                                      
 364   2                  }
 365   1      }
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 15:23:53 PAGE 7   

 366          
 367          
 368          void xianshi(uchar j)
 369          {       uchar str[][9]={{"1.temp "},{"2.date "},{"3.tsx  "},{"4.four "},{"1.temp "}};   
 370   1          uchar i;
 371   1          unsigned char offset=0x80;
 372   1                lcd1602_clear();
 373   1                          lcd1602_wrcmd(offset+0x00);
 374   1      
 375   1                   lcd1602_wrcmd(offset+0x00);
 376   1                   lcd1602_wrdata('#');
 377   1                      for(i=0;i<7;i++)   lcd1602_wrdata(str[j+0][i]);    
 378   1         
 379   1                      lcd1602_wrcmd(offset+0x40);
 380   1                               lcd1602_wrdata(' ');
 381   1                   for(i=0;i<7;i++)   lcd1602_wrdata(str[j+1][i]);               
 382   1      }
 383          
 384          void main()                                                                                                                                                      
 385          {       
 386   1         
 387   1          uchar i;
 388   1      //      uint t;
 389   1      
 390   1          unsigned char a=30;
 391   1       
 392   1              uchar j=0;     //标记
 393   1              
 394   1              uchar d[]="2007/07/18";
 395   1          uchar w[]="warning";
 396   1      
 397   1              uchar str0='7';
 398   1              uchar str1='4';
 399   1              uchar str2='1';
 400   1          uchar str3=' ';
 401   1              uchar str4='8';
 402   1              uchar str5='5';
 403   1          uchar str6='2';
 404   1              uchar str7='0';
 405   1              uchar str8='9';
 406   1          uchar str9='6';
 407   1              uchar str10='3';
 408   1      
 409   1              
 410   1      
 411   1              unsigned char offset=0x80;   //定义一个偏移地址变量,lcd1602 写入控制字时用到
 412   1              unsigned char key;
 413   1      
 414   1              delay(2);
 415   1              lcd1602_bus=0xff;
 416   1              lcd1602_init();
 417   1          lcd1602_wrcmd(offset+0x00);
 418   1          xianshi(0);  
 419   1         
 420   1              
 421   1          
 422   1      
 423   1      
 424   1      //      lcd1602_clear();
 425   1          while(1)
 426   1              {       
 427   2                 
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 15:23:53 PAGE 8   

 428   2                         key=getkey_ii();
 429   2      
 430   2                        if(key==4)
 431   2                              { 
 432   3                                      j=j+1;
 433   3                                      if(j>3)j=0;
 434   3                                   xianshi(j);      
 435   3                               
 436   3                               }
 437   2                         if (key==0)
 438   2                              {                        
 439   3                                  if (j==0) j=4;
 440   3                                      j=j-1;
 441   3                                  
 442   3      
 443   3                                      xianshi(j);
 444   3      
 445   3                               } 
 446   2                        if(key==2  || ((j==0)&&(key==3)))
 447   2                      {
 448   3                      while(key==2 || key==0xff || key==3)
 449   3                             {key=getkey_ii(); 
 450   4                           
 451   4                         gettemp();              
 452   4                     lcd1602_clear();
 453   4                             xianshu(temp);
 454   4                             tempx=tempx*10000/16;
 455   4                                      
 456   4                      
 457   4                             lcd1602_wrdata('.');
 458   4                         xianshu(tempx);
 459   4                                 lcd1602_wrdata(' ');
 460   4                                 lcd1602_wrdata('*');
 461   4                                 lcd1602_wrdata('C');
 462   4                                 if (temp>=a)
 463   4                                 {
 464   5                                   alarm=0;
 465   5                       lcd1602_wrcmd(offset+0x40);
 466   5                                   for(i=0;i<8;i++){lcd1602_wrdata(w[i]);delay(10);}
 467   5                                   delay(1000);
 468   5                                       alarm=1;
 469   5                                      }
 470   4                         delay(1000);
 471   4                   }  
 472   3                      }
 473   2                if(key==6  || ((j==1)&&(key==3)))
 474   2                        {
 475   3                lcd1602_init();
 476   3                lcd1602_clear();
 477   3                    for(i=0;i<10;i++) lcd1602_wrdata(d[i]);
 478   3                        }
 479   2                        if(key==10 || ((j==2)&&(key==3)))
 480   2                        { a=0;
 481   3                          lcd1602_clear();
 482   3                              
 483   3                          while(key!=15 )
 484   3                          {
 485   4                            key=getkey_ii();
 486   4      
 487   4      
 488   4                              if(key==0)
 489   4                              { 
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 15:23:53 PAGE 9   

 490   5                                      lcd1602_clear();
 491   5                          lcd1602_wrcmd(offset+0x00);//换行
 492   5                                         
 493   5                                  a=a*10+7;
 494   5                          xianshu(a);  
 495   5                              //lcd1602_wrcmd(offset+0x40);
 496   5                              //      for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
 497   5                               }
 498   4                          else if (key==1)
 499   4                              { 
 500   5                                      lcd1602_clear();
 501   5                          lcd1602_wrcmd(offset+0x00);
 502   5                                                                      
 503   5                          
 504   5                                       a=a*10+4;
 505   5                                       xianshu(a);  
 506   5                              //lcd1602_wrcmd(offset+0x40);
 507   5                                      //for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
 508   5                               }
 509   4                         else if (key==2)
 510   4                               {
 511   5                                      lcd1602_clear();
 512   5                          lcd1602_wrcmd(offset+0x00);
 513   5                            
 514   5                      a=a*10+1;
 515   5                                      xianshu(a);  
 516   5                            //  lcd1602_wrcmd(offset+0x40);
 517   5                              //      for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
 518   5                               }
 519   4      
 520   4                 else if (key==4)
 521   4                               {
 522   5                                      lcd1602_clear();
 523   5                          lcd1602_wrcmd(offset+0x00);
 524   5                                      a=a*10+8;
 525   5                          xianshu(a);  
 526   5                     }
 527   4                  else if (key==5)
 528   4                               {
 529   5                                      lcd1602_clear();
 530   5                          lcd1602_wrcmd(offset+0x00);
 531   5                                      a=a*10+5;
 532   5                          xianshu(a);  
 533   5                     }
 534   4                  else if (key==6)
 535   4                               {
 536   5                                      lcd1602_clear();
 537   5                          lcd1602_wrcmd(offset+0x00);
 538   5                                      a=a*10+2;
 539   5                          xianshu(a);  
 540   5                      }
 541   4                              else if (key==7)
 542   4                               {
 543   5                                      lcd1602_clear();
 544   5                          lcd1602_wrcmd(offset+0x00);
 545   5                                      
 546   5                                      a=a*10+0;
 547   5                          xianshu(a);  
 548   5                      }
 549   4                              else if (key==8)
 550   4                               {
 551   5                                      lcd1602_clear();
C51 COMPILER V7.20   TEXT1                                                                 08/11/2007 15:23:53 PAGE 10  

 552   5                          lcd1602_wrcmd(offset+0x00);
 553   5                                      a=a*10+9;
 554   5                         xianshu(a);  
 555   5                       }
 556   4                              else if (key==9)
 557   4                               {
 558   5                                      lcd1602_clear();
 559   5                          lcd1602_wrcmd(offset+0x00);
 560   5                                      a=a*10+6;
 561   5                         xianshu(a);  
 562   5                      }
 563   4                              else if (key==10)
 564   4                               {
 565   5                                      lcd1602_clear();
 566   5                          lcd1602_wrcmd(offset+0x00);
 567   5                                      a=a*10+3;
 568   5                         xianshu(a);  
 569   5                       }
 570   4                   
 571   4                    }
 572   3                          
 573   3                       xianshi(0);
 574   3                               j=0;
 575   3                      }
 576   2              
 577   2                      
 578   2      
 579   2      
 580   2      
 581   2      
 582   2      
 583   2                         
 584   2      
 585   2                        
 586   2              
 587   2           }
 588   1      
 589   1      }
 590          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1620    ----
   CONSTANT SIZE    =     64    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      93
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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