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

📄 text1.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
📖 第 1 页 / 共 3 页
字号:
 228   2                       {lcd1602_wrdata(c+0x30);
 229   3                                    }
 230   2                      
 231   2                                      c=(a%100)/10;
 232   2                      if(c!=0 || p==1)
 233   2                       {lcd1602_wrdata(c+0x30);
 234   3                                    }
 235   2                      
 236   2                          c=a%10+0x30;
 237   2                          lcd1602_wrdata(c);   
 238   2                                      
 239   2                  }
 240   1      }
 241          
C51 COMPILER V7.20   TEXT1                                                                 07/24/2007 21:33:14 PAGE 5   

 242          
 243          void xianshi(uchar j)
 244          {       uchar str[][9]={{"1.sin   "},{"2.date  "},{"3.set F "},{"4.set dF"},{"1.sin   "}};   
 245   1          uchar i;
 246   1          unsigned char offset=0x80;
 247   1                lcd1602_clear();
 248   1                          lcd1602_wrcmd(offset+0x00);
 249   1      
 250   1                   lcd1602_wrcmd(offset+0x00);
 251   1                   lcd1602_wrdata('-');
 252   1                               lcd1602_wrdata('>');
 253   1                   for(i=0;i<8;i++)   lcd1602_wrdata(str[j+0][i]);    
 254   1         
 255   1                       lcd1602_wrcmd(offset+0x40);
 256   1                               lcd1602_wrdata(' ');
 257   1                               lcd1602_wrdata(' ');
 258   1                   for(i=0;i<8;i++)   lcd1602_wrdata(str[j+1][i]);               
 259   1      }
 260          
 261          
 262          void ad9850(ulong f)
 263          { 
 264   1        uint i,ch;    
 265   1         delay_1ms(100);
 266   1         W_CLK=0;PQ_UD=0;
 267   1      
 268   1            if(P2^3==0)   //step up
 269   1            {ch++;delay_1ms(500);}
 270   1             else if(P2^4==0){ch--;delay_1ms(500);}    //step down
 271   1        
 272   1           data=00;                  //5个字节数据的第一个,高5位控制相位A(0-32) 所以初相位大小为360/A 最小分辨率为11。
             -25度;
 273   1           W_CLK=1;_nop_();
 274   1           W_CLK=0;_nop_();
 275   1          
 276   1      /*       data=f>>24;                    //第1个数据 取最32位中的高8位
 277   1           W_CLK=1;_nop_();
 278   1           W_CLK=0;_nop_();
 279   1      
 280   1           f=f<<8;                                    //第2个数据 取最32位中的高9-16位
 281   1               data=f>>24
 282   1           W_CLK=1;_nop_();
 283   1           W_CLK=0;_nop_();
 284   1      
 285   1               f=f<<8;                                                //第3个数据 取最32位中的高17-24位
 286   1           data=f>>24;
 287   1           W_CLK=1;_nop_();
 288   1           W_CLK=0;_nop_();
 289   1               
 290   1               f=f<<8;                                           //第4个数据 取最32位中的底8位
 291   1               data=f>>24;
 292   1           W_CLK=1;_nop_();
 293   1           W_CLK=0;_nop_();                      //用下面的FOR语言描写更方便巧妙
 294   1        */
 295   1      
 296   1         for(i=0;i<4;i++)      //32bit control words
 297   1            {
 298   2           data=f>>24;
 299   2               f=f<<8;
 300   2           W_CLK=1;_nop_();
 301   2           W_CLK=0;_nop_();
 302   2             }
C51 COMPILER V7.20   TEXT1                                                                 07/24/2007 21:33:14 PAGE 6   

 303   1          PQ_UD=1;_nop_();  //   update fre word
 304   1          PQ_UD=0;_nop_();
 305   1       
 306   1      
 307   1       
 308   1      
 309   1      
 310   1        
 311   1        lcd1602_clear();
 312   1        xianshu(f);
 313   1        lcd1602_wrdata('H');
 314   1        lcd1602_wrdata('Z');
 315   1        
 316   1      
 317   1      
 318   1      
 319   1      }
 320          
 321          
 322          
 323          void main()                                                                                                                                                      
 324          {       
 325   1         
 326   1          uchar i;
 327   1      //      uint t;
 328   1      
 329   1         
 330   1       
 331   1              uchar j=0;     //标记
 332   1              ulong a,b=1000 ;  //a用来记录频率;b用来记录频率间隔(开始是为1000HZ)
 333   1              
 334   1              
 335   1          uchar d[]="please insert F:";
 336   1              uchar w[]="please insert dF:" ;
 337   1      
 338   1      
 339   1              uchar str0='7';
 340   1              uchar str1='4';
 341   1              uchar str2='1';
 342   1          uchar str3=' ';
 343   1              uchar str4='8';
 344   1              uchar str5='5';
 345   1          uchar str6='2';
 346   1              uchar str7='0';
 347   1              uchar str8='9';
 348   1          uchar str9='6';
 349   1              uchar str10='3';
 350   1      
 351   1              
 352   1      
 353   1              unsigned char offset=0x80;   //定义一个偏移地址变量,lcd1602 写入控制字时用到
 354   1              unsigned char key;
 355   1      
 356   1              delay(2);
 357   1              lcd1602_bus=0xff;
 358   1              lcd1602_init();
 359   1          lcd1602_wrcmd(offset+0x00);
 360   1          xianshi(0);  
 361   1         
 362   1              
 363   1          
 364   1      
C51 COMPILER V7.20   TEXT1                                                                 07/24/2007 21:33:14 PAGE 7   

 365   1      
 366   1      //      lcd1602_clear();
 367   1          while(1)
 368   1              {       
 369   2                 
 370   2                         key=getkey_ii();
 371   2      
 372   2                        if(key==4)
 373   2                              { 
 374   3                                      j=j+1;
 375   3                                      if(j>3)j=0;
 376   3                                   xianshi(j);      
 377   3                               
 378   3                               }
 379   2                         if (key==0)
 380   2                              {                        
 381   3                                  if (j==0) j=4;
 382   3                                      j=j-1;
 383   3                                  
 384   3      
 385   3                                      xianshi(j);
 386   3      
 387   3                               } 
 388   2                        if(key==2  || ((j==0)&&(key==3)))
 389   2                      {
 390   3                     while(key==2 || key==0xff || key==3)
 391   3                             {key=getkey_ii(); 
 392   4                           
 393   4              
 394   4                      lcd1602_clear();
 395   4      
 396   4                              ad9850(a);              
 397   4                      
 398   4       
 399   4                         delay(1000);
 400   4                   }  
 401   3                      }
 402   2                if(key==6  || ((j==1)&&(key==3)))
 403   2                        {
 404   3                lcd1602_init();
 405   3                lcd1602_clear();
 406   3                    for(i=0;i<10;i++) lcd1602_wrdata(d[i]);
 407   3                        }
 408   2      
 409   2      
 410   2      
 411   2                        if(key==10 || ((j==2)&&(key==3)))
 412   2                        { a=0;
 413   3                          lcd1602_clear();
 414   3                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 415   3                                     
 416   3                              
 417   3                          while(key!=15 )
 418   3                          {
 419   4                            key=getkey_ii();
 420   4      
 421   4      
 422   4                      if(key==0)
 423   4                              { 
 424   5                                      lcd1602_clear();
 425   5                          lcd1602_wrcmd(offset+0x00);
 426   5                                         
C51 COMPILER V7.20   TEXT1                                                                 07/24/2007 21:33:14 PAGE 8   

 427   5                                  a=a*10+7;
 428   5      
 429   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 430   5                      lcd1602_wrcmd(offset+0x40);   //换行
 431   5                          xianshu(a);  
 432   5                              //lcd1602_wrcmd(offset+0x40);
 433   5                              //      for(i=0;i<11;i++) lcd1602_wrdata(str12[i]);
 434   5                               }
 435   4                          else if (key==1)
 436   4                              { 
 437   5                                      lcd1602_clear();
 438   5                          lcd1602_wrcmd(offset+0x00);
 439   5      
 440   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 441   5                                      lcd1602_wrcmd(offset+0x40);   //换行 
 442   5                                      a=a*10+4;
 443   5                                       xianshu(a);  
 444   5                              //lcd1602_wrcmd(offset+0x40);
 445   5                                      //for(i=0;i<15;i++) lcd1602_wrdata(str22[i]);
 446   5                               }
 447   4                         else if (key==2)
 448   4                               {
 449   5                                      lcd1602_clear();
 450   5                          lcd1602_wrcmd(offset+0x00);
 451   5                          
 452   5                      for(i=0;i<16;i++) lcd1602_wrdata(d[i]);
 453   5                      lcd1602_wrcmd(offset+0x40);   //换行
 454   5                      a=a*10+1;
 455   5                                      xianshu(a);  
 456   5                            //  lcd1602_wrcmd(offset+0x40);
 457   5                              //      for(i=0;i<15;i++) lcd1602_wrdata(str31[i]);
 458   5                               }
 459   4      
 460   4                 else if (key==4)

⌨️ 快捷键说明

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