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

📄 text1.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
📖 第 1 页 / 共 4 页
字号:
 271   1                               lcd1602_wrdata('>');
 272   1                   for(i=0;i<8;i++)   lcd1602_wrdata(str[j+0][i]);    
 273   1         
 274   1                       lcd1602_wrcmd(offset+0x40);
 275   1                               lcd1602_wrdata(' ');
 276   1                               lcd1602_wrdata(' ');
 277   1                   for(i=0;i<8;i++)   lcd1602_wrdata(str[j+1][i]);               
 278   1      }
 279          
 280          
 281          
 282          
 283          
 284          
 285          
 286           /***************  AD9850驱动程序  ************/
 287          ad9850(float freq, float dfreq,ulong d4)
 288          {
 289   1         float fw;
 290   1          uchar i,j,temp;
 291   1              uchar s;
 292   1          uchar d[5];
 293   1         fw=freq*34.359738368;                       //d[4]中存放控制字最高位,即相位控制字
 294   1                                                     //Freq=MCLK*FW/2^32
 295   1         d[4]=(unsigned long)(d4/11.25)<<3;
 296   1         d[0]=(unsigned long)fw;
 297   1         d[1]=(unsigned long)fw>>8;
 298   1         d[2]=(unsigned long)fw>>16;
 299   1         d[3]=(unsigned long)fw>>24;
 300   1        
 301   1         
 302   1          load=0; 
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 6   

 303   1          sclk=0; 
 304   1          sclk=1;
 305   1          sclk=0;
 306   1          load=1;
 307   1          load=0;
 308   1          
 309   1          for(i=0;i<5;i++)
 310   1          {
 311   2              temp=d[i];
 312   2              for(j=0;j<8;j++)
 313   2              {
 314   3                  sclk=0;
 315   3                  if(temp&1) sdata=1;
 316   3                  else sdata=0;
 317   3                  sclk=1;
 318   3                  temp=temp>>1;
 319   3               }
 320   2            }
 321   1            load=1;
 322   1            load=0;
 323   1        
 324   1       lcd1602_clear();
 325   1       lcd1602_wrdata(' ');
 326   1       lcd1602_wrdata(' ');
 327   1       lcd1602_wrdata(' ');
 328   1       lcd1602_wrdata(' ');
 329   1       lcd1602_wrdata(' ');
 330   1      
 331   1      if ((unsigned long)freq%1000==0 )
 332   1      {
 333   2        
 334   2         s='K'; freq=freq/1000;
 335   2         if ( (unsigned long) freq%1000==0) {s='M';freq=freq/1000     ;  }
 336   2       }
 337   1       else{ s=' ';}  
 338   1         xianshu(freq);
 339   1       lcd1602_wrdata(s);
 340   1       lcd1602_wrdata('H');
 341   1       lcd1602_wrdata('Z');
 342   1        
 343   1       lcd1602_wrcmd(0x80+0x40);   //换行
 344   1      
 345   1      
 346   1      if ((unsigned long)dfreq%1000==0 )
 347   1      {
 348   2        
 349   2         s='K'; dfreq=dfreq/1000;
 350   2         if ( (unsigned long) dfreq%1000==0) {s='M';dfreq=dfreq/1000  ;  }
 351   2       }
 352   1       else{ s=' ';}  
 353   1      
 354   1      lcd1602_wrdata(0x7e);
 355   1       xianshu(dfreq);
 356   1        lcd1602_wrdata(s);  
 357   1        lcd1602_wrdata('H');
 358   1         lcd1602_wrdata('Z');
 359   1      
 360   1      
 361   1       lcd1602_wrcmd(0x80+0x4b);         //定坐标 控制显示位子 
 362   1         lcd1602_wrdata(0xf2);
 363   1       lcd1602_wrdata(':');
 364   1       xianshu(d4);
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 7   

 365   1      
 366   1      }
 367          
 368          
 369          
 370          
 371           /**********************   按键显示数程序   *************************/
 372          ulong dushu()
 373          {                  
 374   1                  uchar code d[]="please insert XW:";
 375   1      
 376   1      
 377   1                      unsigned char offset=0x80;
 378   1                              uchar key;
 379   1                  ulong i,a=0;
 380   1                          lcd1602_clear();
 381   1                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 382   1                              key=18;     //避免和下面的WHILE语句条件冲突;临时改变KEY 只变一次 
 383   1                              
 384   1                          while(key!=15 )
 385   1                          {
 386   2                            key=getkey_ii();
 387   2      
 388   2      
 389   2                      if(key==0)
 390   2                              { 
 391   3                                      lcd1602_clear();
 392   3                          lcd1602_wrcmd(offset+0x00);
 393   3                                         
 394   3                                  a=a*10+1;
 395   3      
 396   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 397   3                      lcd1602_wrcmd(offset+0x40);   //换行
 398   3                          xianshu(a);  
 399   3                              //lcd1602_wrcmd(offset+0x40);
 400   3                              //      for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
 401   3                               }
 402   2                          else if (key==1)
 403   2                              { 
 404   3                                      lcd1602_clear();
 405   3                          lcd1602_wrcmd(offset+0x00);
 406   3      
 407   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 408   3                                      lcd1602_wrcmd(offset+0x40);   //换行 
 409   3                                      a=a*10+2;
 410   3                                       xianshu(a);  
 411   3                              //lcd1602_wrcmd(offset+0x40);
 412   3                                      //for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
 413   3                               }
 414   2                         else if (key==2)
 415   2                               {
 416   3                                      lcd1602_clear();
 417   3                          lcd1602_wrcmd(offset+0x00);
 418   3                          
 419   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 420   3                      lcd1602_wrcmd(offset+0x40);   //换行
 421   3                      a=a*10+3;
 422   3                                      xianshu(a);  
 423   3                            //  lcd1602_wrcmd(offset+0x40);
 424   3                              //      for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
 425   3                               }
 426   2      
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 8   

 427   2                 else if (key==4)
 428   2                               {
 429   3                                      lcd1602_clear();
 430   3                          lcd1602_wrcmd(offset+0x00);
 431   3                                      a=a*10+4;
 432   3                              
 433   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 434   3                      lcd1602_wrcmd(offset+0x40);   //换行
 435   3                          xianshu(a);  
 436   3                     }
 437   2                  else if (key==5)
 438   2                               {
 439   3                                      lcd1602_clear();
 440   3                          lcd1602_wrcmd(offset+0x00);
 441   3                                      
 442   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 443   3                      lcd1602_wrcmd(offset+0x40);   //换行
 444   3                                      a=a*10+5;
 445   3                          xianshu(a);  
 446   3                     }
 447   2                  else if (key==6)
 448   2                               {
 449   3                                      lcd1602_clear();
 450   3                          lcd1602_wrcmd(offset+0x00);
 451   3                                      
 452   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 453   3                      lcd1602_wrcmd(offset+0x40);   //换行
 454   3                                      a=a*10+6;
 455   3                          xianshu(a);  
 456   3                      }
 457   2                              else if (key==8)
 458   2                               {
 459   3                                      lcd1602_clear();
 460   3                          lcd1602_wrcmd(offset+0x00);
 461   3                                      
 462   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 463   3                     lcd1602_wrcmd(offset+0x40);   //换行
 464   3                                      a=a*10+7;
 465   3                          xianshu(a);  
 466   3                      }
 467   2                              else if (key==9)
 468   2                               {
 469   3                                      lcd1602_clear();
 470   3                          lcd1602_wrcmd(offset+0x00);
 471   3      
 472   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 473   3                                      lcd1602_wrcmd(offset+0x40);   //换行
 474   3                                   a=a*10+8;
 475   3                           xianshu(a);  
 476   3                       }
 477   2                              else if (key==10)
 478   2                               {
 479   3                                      lcd1602_clear();
 480   3                          lcd1602_wrcmd(offset+0x00);
 481   3                                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 482   3                      lcd1602_wrcmd(offset+0x40);   //换行
 483   3                                      a=a*10+9;
 484   3                          xianshu(a);  
 485   3                      }
 486   2                              else if (key==13)
 487   2                               {
 488   3                                      lcd1602_clear();
C51 COMPILER V7.20   TEXT1                                                                 08/13/2007 15:13:36 PAGE 9   

 489   3                          lcd1602_wrcmd(offset+0x00);
 490   3                                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 491   3                      lcd1602_wrcmd(offset+0x40);   //换行
 492   3                                      a=a*10+0;
 493   3                          xianshu(a);  
 494   3                       }
 495   2                    
 496   2                    }
 497   1                          
 498   1                        return a;
 499   1                               
 500   1                              
 501   1                      }                                                   
 502          
 503          
 504          
 505          
 506          
 507          /*****************TLC0838驱动程序***********************/
 508          uint adc_tlc0838(uchar channel)
 509          {
 510   1          uchar t,i;
 511   1              uint Temp1=0,Temp2=0;
 512   1          if (channel==0)     t=0;
 513   1              else if(channel==1) t=1;
 514   1              else if(channel==2) t=4;
 515   1              else if(channel==3) t=5;
 516   1              else if(channel==4) t=2;
 517   1              else if(channel==5) t=3;
 518   1              else if(channel==6) t=6;
 519   1              else if(channel==7) t=7;
 520   1         
 521   1          CS=1;
 522   1         _nop_();_nop_();_nop_();_nop_();
 523   1      
 524   1         
 525   1          CLK=0;
 526   1          CS=0;            //使AD通道打开
 527   1          DI = 1;          //Start bit=1
 528   1          CLK = 1;
 529   1          _nop_();
 530   1          _nop_();
 531   1      
 532   1          CLK=0;
 533   1          CS=0;          
 534   1          DI = 1;          
 535   1          CLK = 1;
 536   1          _nop_();
 537   1          _nop_();
 538   1      
 539   1      
 540   1          for(i=0;i<3;i++)
 541   1              {
 542   2            CLK = 0;
 543   2            _nop_();
 544   2            _nop_();
 545   2            if(t&1)DI=1;
 546   2                else DI=0;
 547   2                t=t>>1;       
 548   2            CLK = 1;
 549   2            _nop_();
 550   2            _nop_();

⌨️ 快捷键说明

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