📄 main.lst
字号:
329 1 LcdWC((XPOS+0x40)|0x80);
330 1 else if(YPOS==0x02)
331 1 LcdWC((XPOS+0x10)|0x80);
332 1 }
333
334 /*****************************************************************************/
335 //lcd初始化
336 void InitLcd(void)
337 {
338 1 LCDEPIN=0;
339 1 delay(150); LcdWCN(0x38); /*设置8位格式,2行,2*16*/
340 1
341 1 LcdWC(0x08); /*清除显示*/
342 1 LcdWC(0x06); /*设定输入方式,增量不移位*/
343 1 LcdWC(0x0c); /*整体显示,关光标,不闪烁*/
344 1 }
345
346 /*****************************************************************************/
347 //字符串显示
348 void LcdWDA(unsigned char x,unsigned char y,unsigned char *s) //写显示
349 {
350 1 YPOS=y;
351 1 for(XPOS=x;XPOS<16 && *s != 0;XPOS++)
352 1 { LcdPos();
353 2 LcdWD(*s);
354 2 s++;
355 2 }
356 1 }
357
358 /*****************************************************************************/
359 //数字-》一位数字显示
360 void Lcd_ONENO(int x,int y,int i)
361 {
362 1
363 1 char LS[2];
364 1 LS[0]=i+'0';
365 1 LS[1]='\0';
C51 COMPILER V8.05a MAIN 03/01/2009 15:15:54 PAGE 7
366 1 LcdWDA(x,y,LS);
367 1 }
368
369
370
371 /*****************************************************************************/
372 //数字-》三位数字显示
373 void Lcd_THREENO(int x,int y,int i)
374 {
375 1 char g,s,b,l;
376 1 char LS[4];
377 1 g=i%10;
378 1 l=i/10;
379 1 s=l%10;
380 1 l=l/10;
381 1 b=l%10;
382 1 LS[0]=b+'0';
383 1 LS[1]=s+'0';
384 1 LS[2]=g+'0';
385 1 LS[3]='\0';
386 1 LcdWDA(x,y,LS);
387 1 }
388
389 /*****************************************************************************/
390 //数字-》四位数字显示
391 void Lcd_FOURNO(int x,int y,int i)
392 {
393 1 char g,s,b,q,l;
394 1 char LS[4];
395 1 g=i%10;
396 1 l=i/10;
397 1 s=l%10;
398 1 l=l/10;
399 1 b=l%10;
400 1 l=l/10;
401 1 q=l%10;
402 1 LS[0]=q+'0';
403 1 LS[1]=b+'0';
404 1 LS[2]=s+'0';
405 1 LS[3]=g+'0';
406 1 LS[4]='\0';
407 1 LcdWDA(x,y,LS);
408 1 }
409
410
411 /*****************************************************************************/
412 //lcd显示
413 Lcdshow()
414 {
415 1 LcdWDA(0,0,COMPANY);
416 1 Lcd_FOURNO(9,0,COUNT);
417 1 LcdWDA(13,0,CPS);
418 1 LcdWDA(0,1,SPD);
419 1 LcdWDA(7,1,R);
420 1 LcdWDA(9,1,L);
421 1 LcdWDA(14,1,MM);
422 1 Lcd_ONENO(6,1,SPEED);
423 1 Lcd_THREENO(11,1,LENGTH);
424 1 }
425
426 /*****************************************************************************/
427 //光标显示
C51 COMPILER V8.05a MAIN 03/01/2009 15:15:54 PAGE 8
428 void Lcdflash()
429 {
430 1 if(MANU==1)
431 1 {
432 2 LcdWDA(6,1,PLACE);
433 2 delay(4000);
434 2 Lcdshow();
435 2 delay(4000);
436 2 }
437 1
438 1 if(MANU==2&&LEFT==0)
439 1 {
440 2 LcdWDA(13,1,PLACE);
441 2 delay(4000);
442 2 Lcdshow();
443 2 delay(4000);
444 2 }
445 1 if(MANU==2&&LEFT==1)
446 1 {
447 2 LcdWDA(12,1,PLACE);
448 2 delay(4000);
449 2 Lcdshow();
450 2 delay(4000);
451 2 }
452 1 if(MANU==2&&LEFT==2)
453 1 {
454 2 LcdWDA(11,1,PLACE);
455 2 delay(4000);
456 2 Lcdshow();
457 2 delay(4000);
458 2 }
459 1 if(MANU==2&&LEFT>2)
460 1 {
461 2 LEFT=0;
462 2 }
463 1
464 1 if(MANU==3)
465 1 {
466 2 LcdWDA(12,0,PLACE);
467 2 LcdWDA(11,0,PLACE);
468 2 LcdWDA(10,0,PLACE);
469 2 LcdWDA(9,0,PLACE);
470 2 delay(4000);
471 2 Lcdshow();
472 2 delay(4000);
473 2 }
474 1 }
475 /*****************************************************************************/
476 //读数据
477 void READ()
478 {
479 1 UCHAR X;
480 1 UCHAR Y;
481 1 IRcvStr(0xA0,0x600,&SPEED,1);
482 1
483 1 IRcvStr(0xA0,0x620,&X,1);
484 1 IRcvStr(0xA0,0x630,&Y,1);
485 1 LENGTH=Y%10*100+X%100;
486 1
487 1 IRcvStr(0xA0,0x640,&X,1);
488 1 IRcvStr(0xA0,0x650,&Y,1);
489 1 COUNT=Y%100*100+X%100;
C51 COMPILER V8.05a MAIN 03/01/2009 15:15:54 PAGE 9
490 1 }
491
492 /*****************************************************************************/
493 //写数据
494 WRIGHT ()
495 {
496 1 UCHAR X;
497 1 UCHAR Y;
498 1 ISendStr(0xA0,0x600,&SPEED,1);
499 1
500 1 X=LENGTH%100;
501 1 Y=LENGTH/100%10;
502 1 ISendStr(0xA0,0x620,&X,1);
503 1 ISendStr(0xA0,0x630,&Y,1);
504 1
505 1 X=COUNT%100;
506 1 Y=COUNT/100%100;
507 1 ISendStr(0xA0,0x640,&X,1);
508 1 ISendStr(0xA0,0x650,&Y,1);
509 1
510 1 Lcdshow();
511 1 RING();
512 1 }
513 /*****************************************************************************/
514 //参数匹配
515 void MADE()
516 {
517 1 if (MANU==1)
518 1 {if (INC==1)
519 2 {SPEED++;
520 3 INC=0;}
521 2 if (DEC==1)
522 2 {SPEED--;
523 3 DEC=0;}
524 2 }
525 1
526 1
527 1 if (MANU==2)
528 1 { if(LEFT>2)
529 2 {
530 3 LEFT=0;
531 3 }
532 2 if(LEFT==0)
533 2 {
534 3 if (INC==1)
535 3 {LENGTH++;
536 4 INC=0;}
537 3 if (DEC==1)
538 3 {LENGTH--;
539 4 DEC=0;}
540 3 }
541 2 if(LEFT==1)
542 2 {
543 3 if (INC==1)
544 3 {LENGTH+=10;
545 4 INC=0;}
546 3 if (DEC==1)
547 3 {LENGTH-=10;
548 4 DEC=0;}
549 3 }
550 2 if(LEFT==2)
551 2 {
C51 COMPILER V8.05a MAIN 03/01/2009 15:15:54 PAGE 10
552 3 if (INC==1)
553 3 {LENGTH+=100;
554 4 INC=0;}
555 3 if (DEC==1)
556 3 {LENGTH-=100;
557 4 DEC=0;}
558 3 }
559 2 }
560 1
561 1 if (MANU==3)
562 1 {
563 2 if (INC==1)
564 2 COUNT=0;
565 2 if (DEC==1)
566 2 COUNT=0;
567 2
568 2
569 2 }
570 1
571 1 if(SPEED<0||SPEED>9)
572 1 SPEED=0;
573 1
574 1 if(LENGTH<0||LENGTH>999)
575 1 LENGTH=0;
576 1 }
577
578 /***************************************************************************/
579 //电机运行
580 MOTOR_RUN()
581 {
582 1 UCHAR WAIT;
583 1 WAIT=10-SPEED; // 脉冲占空比设置
584 1 if(LEFT_BIT==1&&RIGHT_BIT==1&&SAFE==1)
585 1 LcdWDA(11,1,GO);
586 1 for(PLUSE=LENGTH*100;SPEED!=0&&PLUSE>0&&RUN;PLUSE--)// 脉冲量设置
587 1 {
588 2 CW=1;//步进电机正反转设置-》正转
589 2 if(LEFT_BIT==0||RIGHT_BIT==0||SAFE==0)
590 2 {CS=0;RUN=0;}
591 2 else
592 2 CS=1;// 步进电机使能
593 2 CLK=~CLK;
594 2 delay(WAIT);
595 2 }
596 1
597 1 if(LEFT_BIT==1&&RIGHT_BIT==1&&SAFE==1)
598 1 LcdWDA(11,1,BACK);
599 1
600 1 for(PLUSE=LENGTH*100;SPEED!=0&&PLUSE>0&&RUN;PLUSE--)// 脉冲量设置
601 1 {
602 2 CW=0;//步进电机正反转设置-》反转
603 2 if(LEFT_BIT==0||RIGHT_BIT==0||SAFE==0)
604 2 {CS=0;RUN=0;}
605 2 else
606 2 CS=1;// 步进电机使能
607 2 CLK=~CLK;
608 2 delay(WAIT);
609 2 }
610 1 Lcd_THREENO(11,1,LENGTH);
611 1
612 1 COUNT++;
613 1 WRIGHT();
C51 COMPILER V8.05a MAIN 03/01/2009 15:15:54 PAGE 11
614 1
615 1 RUN=0;
616 1 CS=0;
617 1 }
618
619 /*****************************************************************************/
620 //主程序
621 main()
622 {
623 1 sercon();
624 1 InitLcd();
625 1 CS=0;
626 1 LcdWDA(0,0,CLEAR);
627 1 LcdWDA(0,1,CLEAR);
628 1 READ();
629 1 MADE();
630 1 delay(2000);
631 1 LcdWDA(0,0,CLEAR);
632 1 LcdWDA(0,1,CLEAR);
633 1 Lcdshow();
634 1 while(1)
635 1 {
636 2 if(SAVE)
637 2 {
638 3 WRIGHT();
639 3 SAVE=0;
640 3 }
641 2 KEY();
642 2 Lcdflash();
643 2 MADE();
644 2 if(RUN)
645 2 {
646 3 MOTOR_RUN();
647 3 }
648 2 }
649 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1927 ----
CONSTANT SIZE = 54 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 44 27
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 + -