久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5508|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

可用VB控制的單片機遙控小車

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:133790 發(fā)表于 2018-12-22 15:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
之前做的一個循跡小車,最后變成了一個遙控小車,可以采用電腦VB編寫的畫面控制,也可以采用在淘寶上買購買的串口觸摸屏控制。小車已經(jīng)被我拆了給我女做了一輛遙控小車。
附件中是程序代碼。
VB控制智能小車.zip (8.44 KB, 下載次數(shù): 26)
智能小車遙控器.zip (1.07 MB, 下載次數(shù): 13)
智能小車C51.zip (127.21 KB, 下載次數(shù): 13)
YL-40 AD模塊使用說明.pdf (204.13 KB, 下載次數(shù): 12)
串口HMI入門指南.pdf (814.13 KB, 下載次數(shù): 14)

單片機源程序如下:
  1.                         /**************************************
  2. #define N 1            //可一次接收數(shù)據(jù)量
  3. 中斷0        外部中斷
  4. 中斷1        定時器/計數(shù)器0中斷
  5. 中斷2        外部中斷1
  6. 中斷3        定時器/計數(shù)器1中斷
  7. 中斷4        串口中斷
  8. 中斷5        定時器/計數(shù)器2中斷
  9. 中斷6        外部中斷2(僅STC增強型8051系列單片機)
  10. 中斷7        外部中斷3(僅STC增強型8051系列單片機)
  11. 左轉(zhuǎn)++    右轉(zhuǎn)--
  12. **************************************/
  13. #include <reg52.h>
  14. #include <intrins.h>
  15. #define uchar unsigned char                // 0~255
  16. #define uint unsigned int                  //0~65535
  17. #define  AddWr1 0x90    //AddWr1 地址        10010000
  18. #define  AddRd1        0x91    //AddRd1 地址   10010001
  19. #define  AddWr2 0x94    //AddWr2 地址        10010100
  20. #define  AddRd2 0x95        //AddRd2 地址   10010101
  21. #define N 5            //可一次接收數(shù)據(jù)量
  22. void rs232_init(); //定義串口通信函數(shù)
  23. uchar flag,i;        //刪除無用變量                           
  24. uchar table[N];     //接收緩存數(shù)組
  25. uchar j=0;      //接收計數(shù)器

  26. /*********總線端口********/
  27. sbit SCL1=P0^6; //串行時鐘輸入端
  28. sbit SDA1=P0^7; //串行數(shù)據(jù)輸入端

  29. /*********功能端口********/
  30. sbit XJB=P0^5; //循跡開關(guān)

  31. /*********遙控端口********/
  32. sbit F=P1^0;//前進         
  33. sbit SCB=P1^2;//剎車/后退   
  34. sbit L=P1^3;//左轉(zhuǎn)         
  35. sbit R=P1^1;//右轉(zhuǎn)

  36. /*********循跡端口********/      
  37. sbit QL=P3^6;//前左雷達
  38. sbit QR=P3^5;//前右雷達
  39. sbit QM=P3^4;//前中雷達
  40. sbit XJL1=P3^7;//循跡L1
  41. sbit XJR1=P3^2;//循跡R1
  42. sbit XJL2=P1^6;//循跡L2
  43. sbit XJR2=P1^5;//循跡R2

  44. /*********驅(qū)動端口********/
  45. sbit ZFL=P0^0;//正反轉(zhuǎn)L
  46. sbit SCL=P0^1;//剎車L
  47. sbit ZFR=P0^2;//正反轉(zhuǎn)R
  48. sbit SCR =P0^3;//剎車R

  49. /*********轉(zhuǎn)向端口********/
  50. sbit ZX=P2^7;     //轉(zhuǎn)向端口
  51. sbit SN=P2^6;     //定義使能端口
  52. sbit OUT=P2^2;    //定義OUT輸出端口
  53. sbit HOME=P3^3;   //方向回正標志

  54. signed int a=0,a1,a2;//當前位置,設(shè)定位置1,設(shè)定位置2         有符號        + -
  55. char code a3[]={0,67,111,222,333,444,556,667,778,889,1111,2000,
  56.                                 -67,-111,-222,-333,-444,-556,-667,-778,-889,-1111,-2000};//位置數(shù)組
  57. uchar code jy[]={0x00,0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
  58.                                       0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
  59.                                           0x01,0x02,0x05,0x0b,0x0f,0xf0,0xf1,0xf2,0xf3};
  60. uchar b;//差補值
  61. uchar c=0;//回正標志位
  62. uchar dir1;//方向判斷開始標志
  63. uchar scb1;//剎車完成標志
  64. uchar snButton=0;//使能開關(guān):0,自動;1,使能關(guān)閉
  65. uchar d1=0,d2=0,d=0;//左邊速度
  66. uchar e1=0,e=0;//右邊速度
  67. uchar forward=0,back=0; //前進后退標志位
  68. uint t1=0,t2=0,t3=0,t4=0,t5=0,t6=0,t7=0,t8=0,t9,t10,t11,t12;//定時器
  69. uchar z1,z2,z3,z4,z5,z6,z7,z8,z9,z10,z11,z12;
  70. uchar table2;//串口數(shù)據(jù)儲存
  71. uchar jy1,jy2;//校驗數(shù)據(jù)大小
  72. uchar autoN=0; //自動續(xù)航
  73. /*********************************
  74. t1 方向使能保時
  75. t2 前進鎖定保時
  76. t3 后退鎖定保時
  77. t4 備用
  78. t5 前進剎車保時
  79. t6 后退剎車保時
  80. t7
  81. t8
  82. t9
  83. t10
  84. t11
  85. *********************************/

  86. /********自動巡航狀態(tài)*************/
  87. uchar l0,l1,l2,l3;//L雷達
  88. uchar m0,m1,m2,m3;//M雷達
  89. uchar r0,r1,r2,r3;//R雷達
  90. uchar lm0,lm1,lm2,lm3;//LM雷達
  91. uchar mr0,mr1,mr2,mr3;//MR雷達
  92. uchar lr0,lr1,lr2,lr3;//LR雷達
  93. uchar lmr0,lmr1,lmr2,lmr3;//LMR雷達
  94. uchar gear;//檔位
  95. uchar speed;//速度
  96. uchar s1,s2,s3;//檔位標志位
  97. uchar FS,BS;//前進剎車標志,后退剎車標志



  98. /*********延時4-5us********/
  99. void delay1()       
  100. {;;}


  101. /*********延時    ********/
  102. void delay_1ms(uint z)
  103. {
  104. uint x,y;
  105. for(x=z;x>0;x--)
  106. for(y=speed;y>0;y--);
  107. }



  108. /*********開始信號********/
  109. void start()                //開始信號
  110. {
  111. SDA1=1;  //先把數(shù)據(jù)置1,再把時鐘置1,后把數(shù)據(jù)置0. 以保證在時鐘為1時,數(shù)據(jù)由高變低。
  112. delay1();
  113. SCL1=1;        //時鐘信號為1
  114. delay1();
  115. SDA1=0;        //數(shù)據(jù)在時鐘高電平時1-0則為開始信號。
  116. delay1();
  117. }
  118. /********* 停止信號   ********/
  119. void stop()                        //停止信號
  120. {
  121. SDA1=0; //先把數(shù)據(jù)置0,再把時鐘置1,后把數(shù)據(jù)置1. 以保證在時鐘為1時,數(shù)據(jù)由低變高。
  122. delay1();
  123. SCL1=1;          //時鐘信號為1
  124. delay1();
  125. SDA1=1;           //數(shù)據(jù)在時鐘高電平時0-1則為停止信號。
  126. delay1();
  127. }

  128. /*********應(yīng)答    ********/
  129. void respons()//應(yīng)答         相當于一個智能的延時函數(shù)
  130. {
  131. uchar i;
  132. SCL1=1;//scl高電平期間接收信號
  133. delay1();
  134. while((SDA1==1)&&(i<220))
  135. i++;
  136. SCL1=0;
  137. delay1();
  138. }
  139.         /********* 初始化   ********/
  140.         //void init()        //初始化
  141.         //{
  142.         //SDA1=1;
  143.         //delay1();
  144.         //SCL1=1;
  145.         //delay1();
  146.         //}

  147. /*********用移位溢出的方式逐位輸出數(shù)據(jù)********/
  148. void write_byte(uchar date)        //寫一字節(jié)數(shù)據(jù)
  149. {
  150. uchar i,temp;
  151. temp=date;
  152. for(i=0;i<8;i++)
  153. {
  154. temp=temp<<1;        //左移一位 移出的一位在 CY 中
  155. SCL1=0;
  156. delay1();
  157. SDA1=CY;
  158. delay1();
  159. SCL1=1;//此時讀取總線數(shù)據(jù)
  160. delay1();
  161. }
  162. SCL1=0;
  163. delay1();
  164. SDA1=1;
  165. delay1();
  166. }


  167. /*********L速度模擬量模塊驅(qū)動 ********/
  168. void write_add(uchar address,uchar date)
  169. {
  170. start();
  171. write_byte(AddWr1);        //10010000
  172. respons();
  173. write_byte(address);
  174. respons();
  175. write_byte(date);
  176. respons();
  177. stop();
  178. }
  179. /********R速度模擬量模塊驅(qū)動 ********/
  180. void write_add1(uchar address,uchar date)
  181. {
  182. start(); //調(diào)用中斷
  183. write_byte(AddWr2);        //10010100
  184. respons();
  185. write_byte(address);
  186. respons();
  187. write_byte(date);
  188. respons();
  189. stop();
  190. }



  191. /***********初始化串口通信參數(shù)設(shè)定************/
  192. void rs232_init() //初始化串口通信參數(shù)設(shè)定
  193. {
  194.       TMOD=0x20;
  195.       TH1=0xfd;
  196.       TL1=0xfd;
  197.       TR1=1;

  198.       SM0=0;//
  199.       SM1=1;// SM0 SM1 0 1 工作方式1 10位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)

  200.       REN=1;//先設(shè)定號工作方式,在打開允許接收
  201.       EA=1;
  202.       ES=1;        
  203. }
  204. /***************************************************************************
  205. (1)SM0 SM1:串行口工作方式選擇位。
  206.         SM0 SM1 0 0 工作方式0 同步移位寄存器輸入/輸出,波特率固定為fosc/12
  207.         SM0 SM1 0 1 工作方式1 10位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)
  208.         SM0 SM1 1 0 工作方式2 11位異步收發(fā),波特率固定為fosc/n,n=64或32)
  209.         SM0 SM1 1 1 工作方式3 11位異步收發(fā),波特率可變(T1溢出率/n,n=32或16)

  210. (2)SM2:多機通信控制器位。在方式0中,SM2必須設(shè)成0。在方式1中,當處于接收狀態(tài)時,若
  211.         SM2=1,則只有接收到有效的停止位“1”時,RI才能被激活成“1”(產(chǎn)生中斷請求)。在方式2和方式
  212.         3中,若SM2=0,串行口以單機發(fā)送或接收方式工作,TI和RI以正常方式被激活并產(chǎn)生中斷請求;若
  213.         SM2=1,RB8=1時,RI被激活并產(chǎn)生中斷請求。

  214. (3)REN:串行接受允許控制位。該位由軟件置位或復(fù)位。當REN=1,允許接收;當REN=0,禁止接收。

  215. (4)TB0:方式2和方式3中要發(fā)送的第9位數(shù)據(jù)。該位由軟件置位或復(fù)位。在方式2和方式3時,
  216.         TB8是發(fā)送的第9位數(shù)據(jù)。在多機通信中,以TB8位的狀態(tài)表示主機發(fā)送的是地址還是數(shù)據(jù) :
  217.         TB8=1表示地址,TB8=0表示數(shù)據(jù)。TB8還可用作奇偶校驗位。

  218. (5)RB8:接收數(shù)據(jù)第9位。在方式2和方式3時,RB8存放接收到的第9位數(shù)據(jù)。RB8也可用作奇偶校驗位。
  219.         在方式1中,若SM2=0,則RB8是接收到的停止位。在方式0中,該位未用。

  220. (6)TI:發(fā)送中斷標志位。TI=1,表示已結(jié)束一幀數(shù)據(jù)發(fā)送,可由軟件查詢TI位標志,也可以向CPU申請
  221.         中斷。

  222.         注意:TI在任何工作方式下都必須由軟件清0。
  223. (7)RI:接收中斷標志位。RI=1,表示一幀數(shù)據(jù)接收結(jié)束。可由軟件查詢RI位標志,也可以向CPU申請中斷。
  224.        
  225.         注意:RI在任何工作方式下也都必須由軟件清0。
  226.         在AT89C51中,串行發(fā)送中斷TI和接收中斷RI的中斷入口地址是同是0023H,因此在中斷程序中
  227.         必須由軟件查詢TI和RI的狀態(tài)才能確定究竟是接收還是發(fā)送中斷,進而作出相應(yīng)的處理。單片機復(fù)位時,
  228.         SCON所有位均清0。


  229. *****************************************************************************/

  230. /***********左轉(zhuǎn)彎控制***************/
  231. void Lpulse()//左轉(zhuǎn)脈沖輸出計數(shù)
  232. {
  233.         if(a<2000)//左轉(zhuǎn)極限
  234.         {
  235.                 ZX=0;
  236.                 if(a1>a)
  237.                 {
  238.                         a++;
  239.                         OUT=~OUT;
  240.                 }
  241.         }       
  242. }
  243. /***********右轉(zhuǎn)彎控制***************/
  244. void Rpulse()//右轉(zhuǎn)脈沖輸出計數(shù)
  245. {
  246.         if(a>-2000)//右轉(zhuǎn)極限
  247.         {
  248.                 ZX=1;
  249.                 if(a1<a)
  250.                 {
  251.                         a--;
  252.                         OUT=~OUT;
  253.                 }
  254.         }       
  255. }

  256. /****************差速驅(qū)動***************************/
  257. void speed1()//
  258. {
  259.         if(a>0)
  260.         {
  261.                 if(a<2000)
  262.                 {
  263.                         d=speed -a/b;   //a偏角數(shù),b差速倍率
  264.                         e=speed;
  265.                 }
  266.                 else
  267.                 {
  268.                         d=speed;
  269.                         e=speed;
  270.                 }
  271.         }
  272.         if(a<0)
  273.         {
  274.                 if(a>-2000)
  275.                 {
  276.                         d=speed;
  277.                         e=speed +a/b;
  278.                 }
  279.                 else
  280.                 {
  281.                         if(speed<150)
  282.                         {
  283.                                 d=speed+20;
  284.                                 e=0;
  285.                         }
  286.                         else
  287.                         {
  288.                                 d=speed;
  289.                                 e=0;                       
  290.                         }
  291.                 }
  292.         }
  293.         if(a==0)
  294.         {
  295.                 d=speed;
  296.                 e=speed;
  297.         }
  298. }
  299. /*************串口通信數(shù)據(jù)歸零************************/
  300. void table1()
  301. {
  302. table[0]=0;
  303. }
  304. /*****************轉(zhuǎn)向方向運算*****************************/


  305. /*****************前進剎車驅(qū)動*****************************/

  306. /*****************后退剎車驅(qū)動*****************************/


  307. /***************主程序******************/
  308. void main()
  309. {
  310.         TMOD=0X11;//定時器0采用工作方式1
  311.         TH0=(65536-200)/256;
  312.         TL0=(65536-200)%256;//初值,定時
  313.     TH2=(65536-50000)/256;//初值,定時1ms
  314.     TL2=(65536-50000)%256;//
  315.         T2CON=0;
  316.         EA=1;            //總中斷打開
  317.     ET0=1;           //定時器0中斷打開
  318.     ET2=1;           //定時器2中斷打開
  319.         TR0=1;//啟動定時器0
  320.         TR2=1;
  321.     rs232_init();   //調(diào)用串口通信參數(shù)設(shè)定函數(shù)
  322.         speed=90;
  323.         b=22;
  324.         jy1=1;
  325.         while(1)
  326.         {
  327. /*****************指令校驗***************************/
  328. if(table[0]!=0)
  329. {
  330. for(jy1=0;jy1<43;jy1++)
  331. {
  332.          if(jy[jy1]==table[0])
  333.         {
  334.                 jy2=1;       
  335.         }
  336. }       
  337.         if(jy2==1&&jy1==42)//如果串口數(shù)據(jù)在列表中,校驗成功,復(fù)位標志位jy2.
  338.         {
  339.                 table[0]=table[0];
  340.                 SCL=1;
  341.                 SCR=1;
  342.         }
  343.         if(jy2==0&&jy1==42&&table[0]!=0) //如果校驗失敗,啟動剎車
  344.         {
  345.                 table1();
  346.                 F=1;
  347.                 SCB=1;
  348.                 forward=0;
  349.                 back=0;
  350.                 t2=0;
  351.                 t3=0;
  352.                 a1=0;
  353.                 dir1=1;
  354.                 speed=90;//剎車啟動后設(shè)為一檔
  355.                 b=22;//差速系數(shù)       
  356.                 SCL=0;
  357.                 SCR=0;
  358.         }
  359. }

  360. /**************轉(zhuǎn)彎方向判斷********************/
  361.                 if(dir1==1)
  362.                 {
  363.                         c=0;
  364.                         if(a1==a)
  365.                         {
  366.                                 L=1;
  367.                                 R=1;
  368.                                 dir1=0;
  369.                                 table1();
  370.                         }
  371.                         if(a1>a)        //啟動左轉(zhuǎn)
  372.                         {
  373.                                 L=0;
  374.                                 R=1;
  375.                         }
  376.                         if(a1<a)   //啟動右轉(zhuǎn)
  377.                         {
  378.                                 L=1;
  379.                                 R=0;
  380.                         }                       
  381.                 }


  382.                

  383. /***************串口通信*************************/
  384.             if(flag==1)
  385.             {
  386.                 ES=0;
  387.                 for(j=0;j<N;j++)                  //回傳接收數(shù)組
  388.                 {
  389.                           SBUF=table[j];              //把接收到的數(shù)據(jù)重新賦值給串口緩存寄存器
  390.                    while(!TI);
  391.                    TI=0;
  392.                 }
  393.                 j=0;                                           //清零接收計數(shù)器
  394.                 ES=1;
  395.                 flag=0;
  396.             }

  397.                         if(table[0]==0x01)//前進
  398.                         {
  399.                                 F=0;
  400.                                 SCB=1;
  401.                                 t3=0;
  402.                                 back=0;
  403.                                 if(forward==1)//當前進鎖定后,再次按下后退自動回正
  404.                                 {
  405.                                         c=1;//回正
  406.                                 }
  407.                         }
  408.                         if(table[0]==0x02)//后退
  409.                         {
  410.                                 F=1;
  411.                                 SCB=0;
  412.                                 t2=0;
  413.                                 forward=0;
  414.                                 if(back==1)        //當后退鎖定后,再次按下后退自動回正
  415.                                 {
  416.                                         c=1;
  417.                                 }
  418.                         }
  419.                         if(table[0]==0x0f)//剎車
  420.                         {
  421.                                 F=1;
  422.                                 SCB=1;
  423.                                 t2=0;
  424.                                 t3=0;
  425.                                 a1=0;
  426.                                 dir1=1;
  427.                                 speed=90;//剎車啟動后設(shè)為一檔
  428.                                 b=22;//差速系數(shù)
  429.                         }
  430.                         if(table[0]==0xa0)//L3
  431.                         {
  432.                                 a1=67;
  433.                                 dir1=1;//方向判斷
  434.                         }
  435.                         if(table[0]==0xa1)//L5
  436.                         {
  437.                                 a1=111;
  438.                                 dir1=1;//方向判斷
  439.                         }
  440.                         if(table[0]==0xa2)//L10
  441.                         {
  442.                                 a1=222;
  443.                                 dir1=1;//方向判斷
  444.                         }
  445.                         if(table[0]==0xa3)//L15
  446.                         {
  447.                                 a1=333;
  448.                                 dir1=1;//方向判斷
  449.                         }
  450.                         if(table[0]==0xa4)//L20
  451.                         {
  452.                                   a1=444;//設(shè)定角度
  453.                                 dir1=1;//方向判斷
  454.                         }
  455.                         if(table[0]==0xa5)//L25
  456.                         {
  457.                                   a1=556;//設(shè)定角度
  458.                                 dir1=1;//方向判斷
  459.                         }
  460.                         if(table[0]==0xa6)//L30
  461.                         {
  462.                                   a1=667;//設(shè)定角度
  463.                                 dir1=1;//方向判斷
  464.                         }
  465.                         if(table[0]==0xa7)//L35
  466.                         {
  467.                                   a1=778;//設(shè)定角度
  468.                                 dir1=1;//方向判斷
  469.                         }
  470.                         if(table[0]==0xa8)//L40
  471.                         {
  472.                                   a1=889;//設(shè)定角度
  473.                                 dir1=1;//方向判斷
  474.                         }
  475.                         if(table[0]==0xa9)//L45
  476.                         {
  477.                                   a1=1000;//設(shè)定角度
  478.                                 dir1=1;//方向判斷
  479.                         }
  480.                         if(table[0]==0xaa)//L50
  481.                         {
  482.                                   a1=1111;//設(shè)定角度
  483.                                 dir1=1;//方向判斷
  484.                         }
  485.                         if(table[0]==0xab)//L55
  486.                         {
  487.                                   a1=1222;//設(shè)定角度
  488.                                 dir1=1;//方向判斷
  489.                         }
  490.                         if(table[0]==0xac)//L60
  491.                         {
  492.                                   a1=1333;//設(shè)定角度
  493.                                 dir1=1;//方向判斷
  494.                         }
  495.                         if(table[0]==0xab)//L70
  496.                         {
  497.                                   a1=1556;//設(shè)定角度
  498.                                 dir1=1;//方向判斷
  499.                         }
  500.                         if(table[0]==0xae)//L80
  501.                         {
  502.                                   a1=1778;//設(shè)定角度
  503.                                 dir1=1;//方向判斷
  504.                         }
  505.                         if(table[0]==0xaf)//L90
  506.                         {
  507.                                   a1=2000;//設(shè)定角度
  508.                                 dir1=1;//方向判斷
  509.                         }
  510.                         if(table[0]==0x05)//L微調(diào)
  511.                         {
  512.                                 a=a+20;
  513.                                 a1=0;
  514.                                 dir1=1;
  515.                                 table1();
  516.                         }
  517.                         if(table[0]==0x0b)//R微調(diào)
  518.                         {
  519.                                 a=a-20;
  520.                                 a1=0;
  521.                                 dir1=1;
  522.                                 table1();
  523.                         }
  524.                         if(table[0]==0x08)//回正
  525.                         {
  526.                                 a1=0;
  527.                                 dir1=1;
  528.                         }
  529.                         if(table[0]==0xb0)//R3
  530.                         {
  531.                                   a1=-67;//設(shè)定角度
  532.                                 dir1=1;//方向判斷
  533.                         }
  534.                         if(table[0]==0xb1)//R3
  535.                         {
  536.                                   a1=-111;//設(shè)定角度
  537.                                 dir1=1;//方向判斷
  538.                         }
  539.                         if(table[0]==0xb2)//R10
  540.                         {
  541.                                   a1=-222;//設(shè)定角度
  542.                                 dir1=1;//方向判斷
  543.                         }
  544.                         if(table[0]==0xb3)//R15
  545.                         {
  546.                                   a1=-333;//設(shè)定角度
  547.                                 dir1=1;//方向判斷
  548.                         }
  549.                         if(table[0]==0xb4)//R20
  550.                         {
  551.                                   a1=-444;//設(shè)定角度
  552.                                 dir1=1;//方向判斷
  553.                         }
  554.                         if(table[0]==0xb5)//R25
  555.                         {
  556.                                   a1=-556;//設(shè)定角度
  557.                                 dir1=1;//方向判斷
  558.                         }
  559.                         if(table[0]==0xb6)//R30
  560.                         {
  561.                                   a1=-667;//設(shè)定角度
  562.                                 dir1=1;//方向判斷
  563.                         }
  564.                         if(table[0]==0xb7)//R35
  565.                         {
  566.                                   a1=-778;//設(shè)定角度
  567.                                 dir1=1;//方向判斷
  568.                         }
  569.                         if(table[0]==0xb8)//R40
  570.                         {
  571.                                   a1=-889;//設(shè)定角度
  572.                                 dir1=1;//方向判斷
  573.                         }
  574.                         if(table[0]==0xb9)//R45
  575.                         {
  576.                                   a1=-1000;//設(shè)定角度
  577.                                 dir1=1;//方向判斷
  578.                         }
  579.                         if(table[0]==0xba)//R50
  580.                         {
  581.                                   a1=-1111;//設(shè)定角度
  582.                                 dir1=1;//方向判斷
  583.                         }
  584.                         if(table[0]==0xbb)//R55
  585.                         {
  586.                                   a1=-1222;//設(shè)定角度
  587.                                 dir1=1;//方向判斷
  588.                         }
  589.                         if(table[0]==0xbc)//R60
  590.                         {
  591.                                   a1=-1333;//設(shè)定角度
  592.                                 dir1=1;//方向判斷
  593.                         }
  594.                         if(table[0]==0xbd)//R70
  595.                         {
  596.                                   a1=-1556;//設(shè)定角度
  597.                                 dir1=1;//方向判斷
  598.                         }
  599.                         if(table[0]==0xbe)//R80
  600.                         {
  601.                                   a1=-1778;//設(shè)定角度
  602.                                 dir1=1;//方向判斷
  603.                         }
  604.                         if(table[0]==0xbf)//R90
  605.                         {
  606.                                   a1=-2000;//設(shè)定角度
  607.                                 dir1=1;//方向判斷
  608.                         }
  609.                         if(table[0]==0x12)//1檔
  610.                         {
  611.                                 speed=90;
  612.                                 b=22;
  613.                         }
  614.                         if(table[0]==0x13)//2檔
  615.                         {
  616.                                 speed=120;
  617.                                 b=17;
  618.                         }
  619.                         if(table[0]==0x14)//3檔
  620.                         {
  621.                                 speed=150;
  622.                                 b=13;
  623.                         }
  624.                         if(table[0]==0xf0)//自動開始
  625.                         {
  626.                                  autoN=1;
  627.                         }
  628.                         if(table[0]==0xf1)//自動關(guān)閉
  629.                         {
  630.                                 autoN=0;
  631.                         }
  632.                         if(table[0]==0xf2)//使能手動關(guān)閉
  633.                         {
  634.                                 snButton=1;       
  635.                         }
  636.                         if(table[0]==0xf3)//使能自動
  637.                         {
  638.                                 snButton=0;       
  639.                         }

  640. /*************************************************/

  641. /*****************************************************/

  642.                 write_add(0x40,d1);        //調(diào)用函數(shù)write_add(ox40,a)  在前面函數(shù)聲明中,只是聲明了變量并未作賦值
  643.                 write_add1(0x40,e1);        //調(diào)用函數(shù)write_add(ox40,a)  在前面函數(shù)聲明中,只是聲明了變量并未作賦值       
  644.                 d1=d;//左邊速度
  645.                 e1=e;//右邊速度
  646. /**************************************************/
  647. if(autoN==1)
  648. {
  649.         scb1=0;//剎車完成標志rst
  650.         if(QL==0&&QR==1)
  651.         {
  652.                 a1=-1200;//設(shè)定角度
  653.                 dir1=1;//方向判斷
  654.         }
  655.         if(QR==0&&QL==1)
  656.         {
  657.                 a1=1200;//設(shè)定角度
  658.                 dir1=1;//方向判斷
  659.         }
  660.         if(QR==0&&QL==0)
  661.         {
  662.                                 F=1;
  663.                                 SCB=1;
  664.                                 forward=0;
  665.                                 back=0;
  666.                                 t2=0;
  667.                                 t3=0;
  668.                                 a1=0;
  669.                                 dir1=1;
  670.                                 speed=90;//剎車啟動后設(shè)為一檔
  671.                                 b=22;//差速系數(shù)
  672.         }
  673.         if(QM==0)
  674.         {
  675.                                 F=1;
  676.                                 SCB=0;
  677.                                 t2=0;
  678.                                 forward=0;
  679.                                 if(back==1)        //當后退鎖定后,再次按下后退自動回正
  680.                                 {
  681.                                         c=1;
  682.                                 }
  683.         if(QL==0&&QR==1)
  684.         {
  685.                 a1=-1200;//設(shè)定角度
  686.                 dir1=1;//方向判斷
  687.         delay_1ms(400);
  688.         }
  689.         if(QR==0&&QL==1)
  690.         {
  691.                 a1=1200;//設(shè)定角度
  692.                 dir1=1;//方向判斷
  693.         delay_1ms(400);
  694.         }
  695.         delay_1ms(800);

  696.         }
  697.         else
  698.         {
  699.                                 F=0;
  700.                                 SCB=1;
  701.                                 t3=0;
  702.                                 back=0;
  703.                                 if(forward==1)//當前進鎖定后,再次按下后退自動回正
  704.                                 {
  705.                                         c=1;//回正
  706.                                 }       
  707.         }
  708.         if(QL==1&&QR==1&&a!=0)
  709.         {
  710.                 a1=0;
  711.                 dir1=1;
  712.         }
  713. }
  714. /****************************************************/



  715.                         if(F==0||t2>10)
  716.                         {
  717.                                 t3=0;//后退自鎖解除

  718.                                 if((back==0&&XJB==1)||t2<10)//按下F按鈕10以內(nèi)啟動點動模式
  719.                                 {
  720.                                         t3=0; //按壓后退開關(guān)延時自鎖取消
  721.                                         speed1();//差速自動控制
  722.                                         if(t2>10)//當前進按鈕按下10以上時前進標志位置位
  723.                                         {
  724.                                                 forward=1;    //前進標志位置位
  725.                                         }
  726.                                         else //如果沒有超過10,則不啟動前進標志位
  727.                                         {
  728.                                                 forward=0;
  729.                                         }       
  730.                                         SCL=1;
  731.                                         SCR=1;        //關(guān)閉剎車
  732.                                         if(a==0)
  733.                                         {
  734.                                                 ZFL=1;
  735.                                                 ZFR=1;
  736.                                     }
  737.                                         if(a>0)
  738.                                         {
  739.                                                 if(a<2000)
  740.                                                 {

  741.                                                 ZFL=1;
  742.                                                 ZFR=1;                                               
  743.                                                 }
  744.                                                 else
  745.                                                 {
  746.                                                 ZFL=0;
  747.                                                 ZFR=1;
  748.                                                 }
  749.                                     }
  750.                                         if(a<0)
  751.                                         {
  752.                                                 if(a>-2000)
  753.                                                 {
  754.                                                 ZFL=1;
  755.                                                 ZFR=1;
  756.                                                 }

  757.                                     }
  758.                                   }
  759.                                        

  760.                         }

  761. /************倒車**********************/
  762.                         if(SCB==0||t3>10)
  763.                         {
  764.                                 t2=0; //按壓前進開關(guān)延時自鎖取消                                                       
  765.                                 if(forward==0)
  766.                                 {
  767.                                         speed1();//差速自動控制
  768.                                         if(t3>10)
  769.                                         {
  770.                                                 back=1;    //后退標志位置位
  771.                                         }
  772.                                         else
  773.                                         {
  774.                                                 back=0;
  775.                                         }
  776.                                         forward=0; //前進標志位復(fù)位
  777.                                         SCL=1;
  778.                                         SCR=1;
  779.                                         t4=0;
  780.                                         if(a==0)
  781.                                         {
  782.                                                 ZFL=0;
  783.                                                 ZFR=0;
  784.                                     }
  785.                                         if(a>0)
  786.                                         {
  787.                                                 if(a<2000)
  788.                                                 {
  789.                                                 ZFL=0;
  790.                                                 ZFR=0;                                               
  791.                                                 }
  792.                                                 else
  793.                                                 {
  794.                                                 ZFL=1;
  795.                                                 ZFR=0;
  796.                                                 }
  797.                                     }
  798.                                         if(a<0)
  799.                                         {
  800.                                                 if(a>-2000)
  801.                                                 {
  802.                                                 ZFL=0;
  803.                                                 ZFR=0;
  804.                                                 }
  805.                                                 else
  806.                                                 {
  807.                                                 ZFL=0;
  808.                                                 ZFR=0;                                               
  809.                                                 }

  810.                                     }
  811.                                   }

  812.                         }
  813.                 if(F==1&&SCB==1&&t4<20) //當全部按鈕釋放,前進后退自鎖取消時復(fù)位參數(shù)
  814.                 {
  815.                         t2=0;//前進自鎖延時 復(fù)位
  816.                         t3=0;//后退自鎖延時 復(fù)位
  817.                         d=0;//速度歸零
  818.                         e=0;//
  819.                         d1=0;
  820.                         e1=0;
  821.                         if(back==1)
  822.                         {
  823.                                 ZFL=1;
  824.                                 ZFR=1;
  825.                                 forward=0;
  826.                                 back=0;
  827.                         }
  828.                         if(forward==1)
  829.                         {
  830.                                 ZFL=0;
  831.                                 ZFR=0;
  832.                                 forward=0;
  833.                                 back=0;                                                       
  834.                         }
  835.                         SCL=0;
  836.                         SCR=0;

  837.                 }
  838.                 else
  839.                 {
  840.                         if(t4>20)
  841.                         {
  842.                                  SCL=1;
  843.                                 SCR=1;
  844.                                 ZFL=1;
  845.                                 ZFR=1;
  846. ……………………

  847. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2018-12-25 02:39 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

板凳
ID:459215 發(fā)表于 2019-1-1 11:48 | 只看該作者

好資料,51有你更精彩!!!
回復(fù)

使用道具 舉報

地板
ID:667992 發(fā)表于 2019-12-19 09:08 | 只看該作者
感謝樓主分享
回復(fù)

使用道具 舉報

5#
ID:881321 發(fā)表于 2021-1-29 11:19 | 只看該作者
vb的源代碼有嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色必久久 | 国产成人精品免费视频大全最热 | 日韩欧美三区 | 91久久精品日日躁夜夜躁国产 | 在线日韩福利 | 精品国产一区二区三区av片 | 精品久久久久久久久久久 | 国产成人99久久亚洲综合精品 | 免费人成激情视频在线观看冫 | 中文字幕日韩欧美一区二区三区 | 久久午夜国产精品www忘忧草 | 国产在线看片 | 国产区一区二区三区 | 伊人久久伊人 | 国产精品一级 | 毛片入口 | 亚洲免费视频在线观看 | 欧美视频三级 | 欧美日韩精品一区 | 久久99精品国产自在现线小黄鸭 | 精品一区二区三区av | 青青草免费在线视频 | 久久天天综合 | 91不卡| 久久久蜜桃一区二区人 | 美日韩精品 | 在线看av网址 | 精品亚洲一区二区三区四区五区 | 精品伦精品一区二区三区视频 | 欧美激情亚洲激情 | 免费色网址| 国产九九九 | 国产精品亚洲欧美日韩一区在线 | 精品久久国产 | 久艹网站| 精品久久久久一区二区国产 | 久久99视频这里只有精品 | 国产精品一区久久久 | 激情网站在线观看 | 一区二区三区四区在线视频 | 久久中文字幕一区 |