光电开关和超声波小车。。。

2019-07-15 12:36发布

左右两个光电开关检测小车前方是否有障碍墙(光电开关用键控代替)。超声波让小车微调,走赛道的正中间。舵机控制小车前轮的左右转动(两个程序通过控制舵机左右蔽障),两个程序分开都能用,但和在一起后舵机不动了(keil软件提示没有警告和错误)。求大神看看我的程序是不是有哪里不对~~

PS:单片机用的是89c52.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
禾苗m
1楼-- · 2019-07-15 14:41
以下是程序:

舵机和超声波2.rar 下载积分: 积分 -1 分

39.42 KB, 下载次数: 6, 下载积分: 积分 -1 分

禾苗m
2楼-- · 2019-07-15 15:16
到底哪里错了?!!!!
禾苗m
3楼-- · 2019-07-15 19:14
急求回复!
禾苗m
4楼-- · 2019-07-15 21:25
 精彩回答 2  元偷偷看……
李春明
5楼-- · 2019-07-15 23:54
现在的坛友非常珍惜自己的积分 楼主还是将程序截图上传吧
禾苗m
6楼-- · 2019-07-16 05:30
主程序:
#include <reg52.H>                //器件配置文件
#include <intrins.h>
#include "delay.h"
#include"count.h"
#include"duozhuan.h"

sbit P1_0 = P1^0;   // PWM  脉冲输出
unsigned char counter = 0;  // 计数的
unsigned char Set_PWM0=14;
unsigned char flag;
unsigned char tt1;
uint S,time;

/********************************************************/
void time1()interrupt 3 using 2
{
TH1=(65536-100)/256; //100US定时
TL1=(65536-100)%256;
counter++;
  if(counter >= 200) counter=0;   // PWM  16级  可以修改
  if(counter >= Set_PWM0) P1_0 = 0; else P1_0 = 1;
}
/********************************************************/
     void Timer0() interrupt 1                  //T0中断用来计数器溢出,超过测距范围
  {
    flag=1;                                                         //中断溢出标志
  }

/*********************************************************/
void main(void)
{               
        while(1)
        {
         TMOD=0x11;                   //设T0为方式1,GATE=1;
         TH0=0;
         TL0=0;
         TH1=(65536-100)/256;
         TL1=(65536-100)%256;
     TR1= 1;
     ET1= 1;
     ET0= 1;
     EA = 1;
    delay(100);       
        Set_PWM0=14; //舵机归中
        while(1)
          {
          leftrun();
          rightrun();
          zheng();
          COMM();
         }         
        }
}

一周热门 更多>