小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 5067|回复: 4

怎么没传上代码,再来遍

[复制链接]
发表于 2015-9-15 13:55:10 | 显示全部楼层 |阅读模式
  1. /**************************************************
  2.         通过的WIFI小车数据包格式下位机程序
  3.         功能:现在只能执行,前 后 左 右        开大灯 关大灯
  4.                         转向灯指示
  5.         单片机:STC12C5608AD
  6.         晶振:11.0592M
  7.         电机驱动: L298
  8.         作者:苏义江摘编自WIFI机器人工作室
  9. *******************************************************/
  10. #include<reg52.h>
  11. #define uchar unsigned char
  12. #define uint unsigned int

  13. //电机端口设定
  14. sbit in1=P1^2;        //IN1
  15. sbit in2=P1^3;        //IN2
  16. sbit ena=P1^4;         //298使能ENA

  17. sbit in3=P1^5;//IN3
  18. sbit in4=P1^6;        //IN4
  19. sbit enb=P1^7;//298使能ENB

  20. int buffer[3];        //数据暂存
  21. int rec_flag=0;        //标志位
  22. uchar pwm1,pwm2,t=0;//舵机变量
  23. sbit laba       =P3^5;//喇叭
  24. sbit zuozhuanx  =P1^1;//左转向灯
  25. sbit youzhuanx  =P2^7;//右转向灯
  26. sbit zhuangtaideng=P3^7; //状态灯
  27. sbit MainLight  =P3^4; //主大灯
  28. sbit servo0=P2^0; //舵机端口
  29. sbit servo1=P2^1;
  30. sbit servo2=P2^2;
  31. sbit servo3=P2^3;
  32. /*-------------------------------------------------------------*/
  33. //串口初始化
  34. void UART_Init(void)
  35. {
  36.         TMOD |= 0x21;
  37.         PCON = 0x00;
  38.         SCON = 0x50;
  39.         TH1 = 0xFd; //设置波特率 9600 晶振 11.0592M
  40.         TL1 = 0xFd;
  41.         TR1 = 1; //启动定时器1
  42.          
  43.         ES = 1; //开串口中断
  44.         EA = 1; //开总中断
  45.         IT0=0;
  46.         EX0=1;
  47.          
  48. }
  49. /*void pwm_init()
  50. {
  51.          TMOD |= 0x01;
  52.          TH0=(65536-100)/256;
  53.          TL0=(65536-100)%256;
  54.          ET0=1;
  55.          TR0=1;
  56.          EA=1;
  57.          t=0;
  58. }*/
  59. void Delay_1ms(uint i)//ms延时
  60. {
  61.         uint x,j;
  62.         for(j=i;j>0;j--)
  63.         for(x=340;x>0;x--);
  64. }
  65. void qianjin()
  66. {
  67.    in1=1;
  68.    in2=0;
  69.    in3=1;
  70.    in3=0;
  71.    ena=1;
  72.    enb=1;
  73. }
  74. void houtui()
  75. {
  76.    in1=0;
  77.    in2=1;
  78.    in3=0;
  79.    in3=1;
  80.    ena=1;
  81.    enb=1;
  82. }
  83. void zuozhuan()
  84. {
  85.         youzhuanx  =1;
  86.    in1=1;
  87.    in2=0;
  88.    in3=0;
  89.    in3=1;
  90.    ena=1;
  91.    enb=1;
  92.    zuozhuanx  =0;        //左转向灯开
  93.    /*        zuozhuanx  =0;        //左转向灯开
  94.         Delay_1ms(30);
  95.         zuozhuanx  =1;
  96.         Delay_1ms(30); */
  97. }
  98. void youzhuan()
  99. {
  100.         zuozhuanx  =1;
  101.    in1=0;
  102.    in2=1;
  103.    in3=1;
  104.    in3=0;
  105.    ena=1;
  106.    enb=1;
  107.    youzhuanx  =0;//右转向灯开
  108.   /* youzhuanx  =0;//右转向灯开
  109.    Delay_1ms(30);  
  110.    youzhuanx  =1;
  111.    Delay_1ms(30);  */
  112. }
  113. void tingzhi()
  114. {
  115.         zuozhuanx  =1;
  116.         youzhuanx  =1;
  117.    in1=0;
  118.    in2=0;
  119.    in3=0;
  120.    in3=0;
  121.    ena=0;
  122.    enb=0;
  123. }
  124. void zhuangtaizhishi() //状态灯延时30s等WIFI启动
  125. {         uchar i;
  126.         for(i=0;i<130;i++)
  127.         {
  128.         zhuangtaideng=0;
  129.         Delay_1ms(300);
  130.         zhuangtaideng=1;
  131.         Delay_1ms(300);
  132.         }
  133. }
  134. /*-------------------------------------------------------------*/
  135. //主函数
  136. void main(void)
  137. {       
  138.         zhuangtaizhishi(); //延时大约30s
  139.         UART_Init(); //初始化串口
  140. //        pwm_init();
  141.         while(1)
  142.         {
  143.        
  144.         }
  145. }

  146. void Communication_Decode(void)
  147. {
  148.         if(buffer[0]==0x00)        //行走电机控制
  149.         {
  150.                 switch(buffer[1])
  151.                 {
  152.                         case 0x01:qianjin(); return;//101 101 11
  153.                         case 0x02:houtui(); return;//110 110 11
  154.                         case 0x03:zuozhuan(); return;//110 101 11
  155.                         case 0x04:youzhuan(); return;//101 110 11
  156.                         case 0x00:tingzhi(); return;
  157.                         default: return;
  158.                 }
  159.         }
  160. /*        if(buffer[0]==0x01)        //舵机
  161.         {
  162.                 switch(buffer[1])
  163.                 {
  164.                         case 0x00:MainLight  =1; return;//101 101 11
  165.                         case 0x01:MainLight  =0; return;//110 110 11                       
  166.                         default: return;
  167.                 }
  168.         }        */
  169.         if(buffer[0]==0x04)        //大灯
  170.         {
  171.                 switch(buffer[1])
  172.                 {
  173.                         case 0x00:MainLight  =1; return;//关大灯
  174.                         case 0x01:MainLight  =0; return;//开大灯                       
  175.                         default: return;
  176.                 }
  177.         }
  178. /*        else
  179.         {
  180.                 return;
  181.         }  */
  182. }

  183. /*-------------------------------------------------------------*/
  184. //串口接收中断函数
  185. void INT_UartRcv(void) interrupt 4
  186. {
  187.         static int i;

  188.         if(RI==1)
  189.         {
  190.                 RI = 0;
  191.                 if(rec_flag==0)
  192.                 {
  193.                         if(SBUF==0xff)
  194.                         {
  195.                                 rec_flag=1;
  196.                                 i=0;
  197.                         }
  198.                 }
  199.                 else
  200.                 {
  201.                         if(SBUF==0xff)
  202.                         {
  203.                                 rec_flag=0;
  204.                                 if(i==3)
  205.                                 {
  206.                                         Communication_Decode();
  207.                                 }
  208.                                         i=0;
  209.                         }
  210.                         else
  211.                         {
  212.                                 buffer[i]=SBUF;
  213.                                 i++;
  214.                         }
  215.                 }
  216.         }
  217.         else
  218.         {
  219.                 TI = 0;
  220.         }
  221. }
  222. /***************************************************
  223.            PWM中断服务函数
  224. ***********************************************
  225. void to() interrupt 1
  226. {
  227.         TH0=(65536-100)/256;
  228.         TL0=(65536-100)%256;
  229.         t++;
  230.         if(t<=pwm1)
  231.         ena=1;
  232.         else
  233.         ena=0;
  234.         if(t<=pwm2)
  235.         enb=1;
  236.         else
  237.         enb=0;
  238.         if(t>=200)
  239.         t=0;
  240. }*/
复制代码


评分

参与人数 1金钱 +3 贡献 +1 收起 理由
liuviking + 3 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-9-16 08:32:43 | 显示全部楼层
{:soso_e100:}不错!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-16 09:14:27 | 显示全部楼层

谢谢回复,就是在你的程序的基础改动的,打算加进去舵机控制。
回复 支持 反对

使用道具 举报

发表于 2015-9-16 11:41:38 | 显示全部楼层
能加一下你QQ吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-9-16 12:32:08 | 显示全部楼层
1137910038 发表于 2015-9-16 11:41
能加一下你QQ吗?

QQ1074757990
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-5-5 03:45 , Processed in 1.070190 second(s), 19 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表