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

📄 51

📁 51单片机大量源码
💻
📖 第 1 页 / 共 2 页
字号:
 225   2             lcd_pos(0x0c+m);    //显示方向符号
 226   2                   lcd_wdat(0x3e);
 227   2          }
 228   1      
 229   1      }
 230          /********************************************************/
 231          /*
 232          /*数据转换子程序
 233          /*
 234          /********************************************************/
 235          void  data_conv() 
 236           {
 237   1           data_temP1=data_temp/10;       //高位
 238   1        if(data_temP1==0)
 239   1        {data_temP1=0x20;}             //高位为0不显示
 240   1           else 
 241   1        {data_temP1=data_temP1+0x30;}
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 5   

 242   1      
 243   1         data_temp2=data_temp%10;       //低位
 244   1           data_temp2=data_temp2+0x30;
 245   1       }
 246          
 247          /********************************************************/
 248          /*
 249          /*数据显示子程序
 250          /*
 251          /********************************************************/
 252          void  data_dis()
 253          {
 254   1          data_temp = snum;        //显示圈数
 255   1          data_conv();
 256   1             lcd_pos(0x44); 
 257   1             lcd_wdat(data_temP1);
 258   1             lcd_pos(0x45); 
 259   1             lcd_wdat(data_temp2);
 260   1          
 261   1          data_temp = rate;         //显示速率
 262   1          data_conv();
 263   1             lcd_pos(0x4d); 
 264   1             lcd_wdat(data_temP1);
 265   1             lcd_pos(0x4e); 
 266   1             lcd_wdat(data_temp2);
 267   1      }
 268          /********************************************************
 269          /*
 270          /* 显示运行方向符号
 271          /*
 272          /********************************************************/
 273          void  motor_DR()
 274            {
 275   1             if(direction==1)           //正转方向标志
 276   1              { for(m=0;m<2;m++)
 277   2                { 
 278   3            lcd_pos(0x0c+m);      //显示方向符号
 279   3                  lcd_wdat(0x3e);
 280   3           }
 281   2         }
 282   1              else
 283   1               { for(m=0;m<2;m++)       //反转方向标志
 284   2                 { 
 285   3                lcd_pos(0x0c+m);     //显示方向符号 
 286   3                   lcd_wdat(0x3c);
 287   3           }
 288   2         }
 289   1        }
 290          
 291          /********************************************************
 292          /*
 293          /* 显示运行状态
 294          /*
 295          /********************************************************/
 296          void  motor_RUN()
 297           {
 298   1            if(on_off==1)
 299   1          { TR0=1; 
 300   2            lcd_pos(0);     //设置显示位置为第一行的第1个字符
 301   2               m = 0;
 302   2               while(cdis5[m] != '\0')
 303   2                { lcd_wdat(cdis5[m]);      //RUNNING
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 6   

 304   3                  m++;   }
 305   2                  motor_DR();              //
 306   2          }  
 307   1            else  
 308   1          { TR0=0; P1 =0x0f; 
 309   2         lcd_pos(0);     //设置显示位置为第一行的第1个字符
 310   2               m = 0;
 311   2               while(cdis3[m] != '\0')
 312   2                { lcd_wdat(cdis3[m]);      //STOP
 313   3                  m++;   }
 314   2                  motor_DR();              //
 315   2         snum=snum1;             //
 316   2         number1=0;              //清圈数计数器
 317   2               }
 318   1        }
 319          
 320          /********************************************************
 321          *                                                       
 322          *  主程序                                               
 323          *                                                      
 324          *********************************************************/
 325          
 326          main()
 327           { 
 328   1               LCD_init_DIS();
 329   1        
 330   1         TMOD = 0x01;       //T0定时方式1
 331   1         TL0  = 0x33;
 332   1         TH0  = 0xf5;
 333   1         EA   = 1;
 334   1         ET0  = 1; 
 335   1          P1   = 0x0f;
 336   1        
 337   1         while(1)
 338   1          {  
 339   2             if(K1==0)
 340   2          {
 341   3               beep();
 342   3            while(K1==0);       //等待键释放
 343   3            on_off=~on_off;       
 344   3               motor_RUN();  
 345   3              }   //K1 end
 346   2      /********************************************************/
 347   2            if(K2==0)    
 348   2             {
 349   3            beep();
 350   3         if(snum_dr==1)
 351   3          { snum++;
 352   4              snum1=snum;
 353   4            if(snum==0x14)
 354   4                  { snum_dr=~snum_dr;}
 355   4          }
 356   3         else  
 357   3           {snum--;
 358   4         snum1=snum;
 359   4            if(snum==0x01)
 360   4         { snum_dr=~snum_dr; }
 361   4           }
 362   3         
 363   3          } //K2  end
 364   2      /********************************************************/
 365   2              if(K3==0)    
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 7   

 366   2            {
 367   3            beep();
 368   3         direction=~direction; 
 369   3               motor_DR();
 370   3            }//K3 end
 371   2      
 372   2      /********************************************************/
 373   2              if(K4==0)    
 374   2             {
 375   3            beep();
 376   3         if(rate_dr==1)
 377   3          { rate++;
 378   4            if(rate==0x10)
 379   4                  { rate_dr=~rate_dr;}
 380   4          }
 381   3          else  
 382   3           { 
 383   4            rate--;
 384   4            if(rate==0x01)
 385   4         { rate_dr=~rate_dr; }
 386   4           }
 387   3        } //K4 end
 388   2          
 389   2      /********************************************************/
 390   2            if(number1==snum1)   //与设定圈数是否相等  
 391   2           { number1=0; 
 392   3               on_off=0;
 393   3               TR0=0;
 394   3              snum=snum1;
 395   3         P1=0x0f;
 396   3          motor_RUN();
 397   3          }         
 398   2               data_dis();
 399   2       }  // while(1) end
 400   1       }  //main end
 401          
 402          /********************************************************/
 403          /*
 404          /*  定时器 0 中断 
 405          /*
 406          /********************************************************/
 407          
 408          void  motor_onoff()  interrupt  1  
 409           {     
 410   1             TL0  = 0x33;
 411   1             TH0  = 0xf5; 
 412   1             q++;
 413   1          if(q < rate)
 414   1              { return; }
 415   1          else 
 416   1             {  q=0;    
 417   2             number++;                  //脉冲计数
 418   2              
 419   2            if(number==4096)              //64个脉冲电机转一圈
 420   2             { snum--;
 421   3            number=0;
 422   3                  number1++; }          //电机转动圈数
 423   2          
 424   2      
 425   2               if(direction==1)            //方向标志
 426   2             { if(v<8)  
 427   3               {P1 = FFW[v];v++;}       //取数据,正转
C51 COMPILER V8.18   BJDJ1602                                                              12/15/2009 19:50:09 PAGE 8   

 428   3              if(v==8) 
 429   3              { v=0; } 
 430   3                }
 431   2         
 432   2            else
 433   2             { if(v<8)  
 434   3               {P1 = REV[v];v++;}       //取数据,反转
 435   3               if(v==8) 
 436   3               { v=0; } 
 437   3                }
 438   2          }
 439   1       } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    811    ----
   CONSTANT SIZE    =    101    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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