51小车雏形制作完成

2020-01-22 12:13发布


  1. #include<intrins.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uchar num;
  5.   //flag实现触发中断时实现不同扥功能
  6. uchar selectflag=0;  //选择 标志
  7. uchar crossflag=0;  //标志小车正在处于  壁障模式
  8. uchar remoteflag=0; //标志小车正在处于  红外遥控模式
  9. uchar pileflag=0;          //标志小车正在处于  过庄模式
  10. uchar modeflag=0;   //标志 确定键按下
  11. uchar yunxingflag=0;//标志小车正在运行  走动
  12. uchar backflag=0;//返回标志

  13. uchar goflag=0;


  14.   //模式选择界面分支
  15. uchar code way1[]="MODEL 1  run?_M ";
  16. uchar code way2[]="MODEL 2  run?_M ";
  17. uchar code way3[]="MODEL 3  run?_M ";
  18. uchar code way3name[]=" __Beat  Pile__ ";
  19. uchar code way1name[]=" __Cross Fire__ ";
  20. uchar code way2name[]="_remote control_";
  21. uchar code speed[]="speed:";





  22. sbit in1=P0^6;
  23. sbit in2=P0^5;
  24. sbit en1=P0^1;
  25. sbit in3=P0^4;
  26. sbit in4=P0^3;
  27. sbit en2=P0^0;
  28. sbit L1=P3^4;
  29. sbit L2=P3^5;


  30. sbit rs=P2^6;                          //定义引脚
  31. sbit rw=P2^5;
  32. sbit e=P2^7;


  33. uchar code init1[]="SELECT a WAY:   ";



  34. sbit IRIN = P3^2;         //红外接收器数据线
  35. uchar IRCOM[7];

  36. void delay(uchar x)    //x*0.14MS
  37.         {
  38.          uchar i;
  39.           while(x--)
  40.          {
  41.           for (i = 0; i<13; i++) {}
  42.          }
  43.         }



  44. /***********1602驱动部分*********************/
  45. void lcd_mang()
  46. {
  47.    rs=0;
  48.    rw=1;
  49.    e=1;
  50.    _nop_();
  51.         _nop_();
  52.         _nop_();
  53.         _nop_();
  54.    while(P1&0x80);
  55.      e=0;
  56. }

  57. //1602的写
  58. void lcdcom(uchar com)        //当i为0的时候为向1602写指令为1写数据
  59. {
  60.     lcd_mang();
  61.         rs=0;
  62.         rw=0;
  63.         e=0;
  64.         _nop_();
  65.         _nop_();       
  66.         e=1;
  67.         _nop_();
  68.         _nop_();
  69.         P1=com;
  70.         _nop_();
  71.         _nop_();
  72.         _nop_();
  73.         _nop_();
  74.         e=0;       
  75. }
  76. void lcddata(uchar date)        //当i为0的时候为向1602写指令为1写数据
  77. {
  78.     lcd_mang();
  79.         rs=1;
  80.         rw=0;
  81.         e=0;
  82.         _nop_();
  83.         _nop_();       
  84.         e=1;
  85.         _nop_();
  86.         _nop_();
  87.         P1=date;
  88.         _nop_();
  89.         _nop_();
  90.         _nop_();
  91.         _nop_();
  92.         e=0;       
  93. }

  94. void lcdinit()
  95.          {
  96.                   lcdcom(0x38);
  97.                   delay(1);  
  98.                   lcdcom(0x0c);
  99.                   delay(1);
  100.                   lcdcom(0x06);
  101.                   delay(1);
  102.                   lcdcom(0x01);
  103.                   delay(1);
  104.           }

  105. void init()
  106. {
  107.          
  108.          ET1=0;
  109.          TR0=1;
  110.          ET0=1;
  111.          TH0=(65536-50000)/256;
  112.          TL0=(65536-50000)%256;
  113.          EX1=1;
  114.          EX0=1;
  115.          IT1=1;
  116.          EA=1;
  117. }
复制代码http://www.tudou.com/v/zWYFYUHFjDM/&rpid=97409639&resourceId=97409639_04_05_99/v.swf

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。