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

📄 step.lst

📁 基于51的步进电机控制器,含有人机结口程序,软硬件测试都已通过.是不错的参考代码.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 192   3               switch(keytmp)
 193   3               {
 194   4                  case 1:
 195   4                       KEY=5;  break;         //3列1行()
 196   4                  case 2:
 197   4                       KEY=6;  break;         //3列2行()
 198   4                  default :
 199   4                               break;
 200   4               }
 201   3            }
 202   2         }
 203   1         P3=0x8c;                             //扫描第四列
 204   1         temp=P3;                             //读出数据,看是否在此行上的某列键盘被按下
 205   1         keytmp=temp&0x03;                    //P3.0~P3.1
 206   1         if(keytmp!=0x00)
 207   1         {
 208   2            delay(1);
 209   2            P3=0x8c;                          //消抖
 210   2            temp=P3;
 211   2            keytmp=temp&0x03;
 212   2            if(keytmp!=0x00)                  //再次判断是否有键按下
 213   2            { 
 214   3               switch(keytmp)
 215   3               {
 216   4                  case 1:
 217   4                       KEY=7;   break;        //4列1行()
 218   4                  case 2:
 219   4                       KEY=8;   break;        //4列2行()
 220   4                  default :
 221   4                                break;
 222   4               }
 223   3            }
 224   2         }
 225   1      }
 226          //------------------------------------------------------------------------------------
 227          // 函数名称:dispxy()
 228          // 函数功能:数码管显示子程序
 229          //------------------------------------------------------------------------------------
 230          void dispxy(unsigned int i,unsigned int j,unsigned int k)
 231          {
 232   1         P2=i;                                //选通数码管
 233   1         P0=Led_code[j];                      //送段码
 234   1         delay(k);
 235   1      }
 236          //------------------------------------------------------------------------------------
 237          // 函数名称:display()
 238          // 函数功能:数码管显示
 239          //------------------------------------------------------------------------------------
 240          void display(void)
 241          {
C51 COMPILER V7.07   STEP                                                                  11/10/2007 15:35:10 PAGE 5   

 242   1         Key_Scaning();
 243   1        if(FLAG1==1)                         //显示切换标志位1(显示速度)
 244   1         {
 245   2            dispxy(0x01,Led1[0],200-(FLAG==1)*170);
 246   2            dispxy(0x02,Led1[1],200-(FLAG==2)*170);
 247   2            dispxy(0x04,Led1[2],200-(FLAG==3)*170);
 248   2            dispxy(0x08,Led1[3],200-(FLAG==4)*170);
 249   2            dispxy(0x10,Led1[4],200-(FLAG==5)*170);
 250   2            dispxy(0x20,Led1[5],200-(FLAG==6)*170);
 251   2            dispxy(0x40,Led1[6],200-(FLAG==7)*170);
 252   2            dispxy(0x80,Led1[7],200-(FLAG==8)*170);
 253   2         }
 254   1         else                                 //显示切换标志位0(显示坐标)
 255   1        {
 256   2            dispxy(0x01,Led2[0],200-(FLAG==1)*170);
 257   2            dispxy(0x02,Led2[1],200-(FLAG==2)*170);
 258   2            dispxy(0x04,Led2[2],200-(FLAG==3)*170);
 259   2            dispxy(0x08,Led2[3],200-(FLAG==4)*170);
 260   2            dispxy(0x10,Led2[4],200-(FLAG==5)*170);
 261   2            dispxy(0x20,Led2[5],200-(FLAG==6)*170);
 262   2            dispxy(0x40,Led2[6],200-(FLAG==7)*170);
 263   2            dispxy(0x80,Led2[7],200-(FLAG==8)*170);
 264   2         } 
 265   1      }
 266          //------------------------------------------------------------------------------------
 267          // 函数名称:Key_Control()
 268          // 函数功能:键盘控制
 269          //------------------------------------------------------------------------------------
 270          void Key_Control(void)
 271          {
 272   1      
 273   1         unsigned int i;
 274   1         time0_tmp=0xb880;
 275   1         if(KEY==1)
 276   1         {
 277   2            KEY=0;                            //清键值
 278   2            FLAG=0;                           //数码管闪烁标志位0(无闪烁)
 279   2            FLAG1=0;                          //显示切换标志位0(显示坐标)
 280   2            Led1[0]=0;Led1[1]=0;Led1[2]=0;Led1[3]=0;Led1[4]=0;Led1[5]=0;Led1[6]=0;Led1[7]=0;
 281   2            Led2[0]=0;Led2[1]=0;Led2[2]=0;Led2[3]=0;Led2[4]=0;Led2[5]=0;Led2[6]=0;Led2[7]=0;
 282   2            Go_line();                        //前进
 283   2         }
 284   1         else if(KEY==2)
 285   1         {
 286   2            KEY=0;                            //清键值
 287   2            FLAG=0;                           //数码管闪烁标志位0(无闪烁)
 288   2            FLAG1=0;                          //显示切换标志位0(显示坐标)
 289   2            Back_line();                      //回零
 290   2         }
 291   1         else if(KEY==3)
 292   1         {
 293   2            FLAG1=1;                          //显示切换标志位1(显示速度)
 294   2            Led1[0]=SpeedX%10;Led1[1]=(SpeedX%100)/10;Led1[2]=SpeedX/100;Led1[3]=10;//显示当前速度
 295   2            Led1[4]=SpeedY%10;Led1[5]=(SpeedY%100)/10;Led1[6]=SpeedY/100;Led1[7]=10;
 296   2            while(1)
 297   2            {
 298   3               KEY=0;                         //清键值
 299   3               FLAG=1;                        //数码管闪烁标志位1(第1位闪烁)
 300   3               if(KEY==5)
 301   3               {
 302   4                  KEY=0;                      //清键值
 303   4                  Led1[0]+=1;
C51 COMPILER V7.07   STEP                                                                  11/10/2007 15:35:10 PAGE 6   

 304   4                  while(Led1[0]>9)
 305   4                  Led1[0]=0;
 306   4               }
 307   3               else if(KEY==3)
 308   3               break;
 309   3            }
 310   2            while(1)
 311   2            {
 312   3               KEY=0;                         //清键值
 313   3               FLAG=2;                        //数码管闪烁标志位2(第2位闪烁)
 314   3               if(KEY==5)
 315   3               {
 316   4                  KEY=0;                      //清键值
 317   4                  Led1[1]+=1;
 318   4                  while(Led1[1]>9)
 319   4                  Led1[1]=0;
 320   4               }
 321   3               else if(KEY==3)
 322   3               break;
 323   3            }
 324   2            while(1)
 325   2            {
 326   3               KEY=0;                         //清键值
 327   3               FLAG=3;                        //数码管闪烁标志位3(第3位闪烁)
 328   3               if(KEY==5)
 329   3               {
 330   4                  KEY=0;                      //清键值
 331   4                  Led1[2]+=1;
 332   4                  while(Led1[2]>9)
 333   4                  Led1[2]=0;
 334   4               }
 335   3               else if(KEY==3)
 336   3               break;
 337   3            }
 338   2            while(1)
 339   2            {
 340   3               KEY=0;                         //清键值
 341   3               FLAG=5;                        //数码管闪烁标志位5(第5位闪烁)
 342   3               if(KEY==5)
 343   3               {
 344   4                  KEY=0;                      //清键值
 345   4                  Led1[4]+=1;
 346   4                  while(Led1[4]>9)
 347   4                  Led1[4]=0;
 348   4               }
 349   3               else if(KEY==3)
 350   3               break;
 351   3            }
 352   2            while(1)
 353   2            {
 354   3               KEY=0;                         //清键值
 355   3               FLAG=6;                        //数码管闪烁标志位6(第6位闪烁)
 356   3               if(KEY==5)
 357   3               {
 358   4                  KEY=0;                      //清键值
 359   4                  Led1[5]+=1;
 360   4                  while(Led1[5]>9)
 361   4                  Led1[5]=0;
 362   4               }
 363   3               else if(KEY==3)
 364   3               break;
 365   3            }
C51 COMPILER V7.07   STEP                                                                  11/10/2007 15:35:10 PAGE 7   

 366   2            while(1)
 367   2            {
 368   3               KEY=0;                         //清键值
 369   3               FLAG=7;                        //数码管闪烁标志位7(第7位闪烁)
 370   3               if(KEY==5)
 371   3               {
 372   4                  KEY=0;                      //清键值
 373   4                  Led1[6]+=1;
 374   4                  while(Led1[6]>9)
 375   4                  Led1[6]=0;
 376   4               }
 377   3               else if(KEY==3)
 378   3               break;
 379   3            }
 380   2            KEY=0;                            //清键值
 381   2            FLAG=0;                           //数码管闪烁标志位0(无闪烁)
 382   2            SpeedX=Led1[0]+Led1[1]*10+Led1[2]*100;//计算并存储所设速度
 383   2            SpeedY=Led1[4]+Led1[5]*10+Led1[6]*100;
 384   2         }
 385   1         else if(KEY==4)
 386   1         {
 387   2            Led2[0]=Xe%10;Led2[1]=Xe/10;Led2[2]=11;Led2[3]=11;//显示当前坐标
 388   2            Led2[4]=Ye%10;Led2[5]=Ye/10;Led2[6]=11;Led2[7]=11;
 389   2            FLAG1=0;                          //显示切换标志位0(显示坐标)
 390   2            while(1)
 391   2            {

⌨️ 快捷键说明

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