标题:
程序烧进小车,小车电机不转,驱动连电机那块无电压,感觉连线没错,求大佬看看程....
[打印本页]
作者:
yixia
时间:
2019-11-24 15:55
标题:
程序烧进小车,小车电机不转,驱动连电机那块无电压,感觉连线没错,求大佬看看程....
程序烧进小车,小车电机不转,驱动连电机那块无电压,感觉连线没错,求大佬看看程序哪错了
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1 = P2^0;
sbit IN2 = P2^1;
sbit ENA = P3^6;
sbit IN3 = P2^2;
sbit IN4 = P2^3;
sbit ENB = P3^7;
sbit left1 = P0^0;
sbit left2 = P0^1;
sbit left3 = P0^2;
sbit left4 = P0^3;
sbit left5= P0^4;
sbit might = P0^5;
sbit right5 = P0^6;
sbit right4 = P0^7;
sbit right3 = P1^7;
sbit right2= P1^6;
sbit right1 = P1^5;
unsigned char zkb1 = 0;//you
unsigned char zkb2 = 0;
unsigned char t = 0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
EA = 1;
TMOD |= 0x01;
TH0 =(65536 - 100) / 256;
TL0 = (65536 - 100)% 256;
ET0 = 1;
}
void timer0() interrupt 1
{
TH0 = (65536 - 100) / 256;
TL0 = (65536 - 100) % 256;
if(t < zkb1)
{
ENA = 1;
}
else
{
ENA = 0;
}
if(t < zkb2)
{
ENB =1;
}
else
{
ENB = 0;
}
t++;
if(t >= 50)
{
t = 0;
}
}
void turn_left1()
{
zkb1 = 5;
zkb2 = 26;
}
void turn_left2()
{
zkb1 = 16;
zkb2 =30;
}
void turn_left3()
{
zkb1 = 22;
zkb2 = 32;
}
void turn_left4()
{
zkb1 = 32;
zkb2 = 38;
}
void turn_left5()
{
zkb1 = 37;
zkb2 = 40;
}
void turn_might()
{
zkb1 = 40;
zkb2 = 40;
}
void turn_right5()
{
zkb1 = 40;
zkb2 = 37;
}
void turn_right4()
{
zkb1 = 38;
zkb2 = 32;
}
void turn_right3()
{
zkb1 = 32;
zkb2 = 22;
}
void turn_right2()
{
zkb1 = 30;
zkb2 = 16;
}
void turn_right1()
{
zkb1 = 26;
zkb2 = 5;
}
void xunji()
{
unsigned char flag;
if((left1 == 1)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag = 0;
}
if((left1 == 0)&&(left2 == 1)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag = 1;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 1)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag = 2;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4==1)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag = 3;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 1)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag =4;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 1)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag = 5;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 1)&&(right4 == 0)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag = 6;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 1)&&(right3 == 0)&&(right2 == 0)&&(right1 == 0))
{
flag = 7;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 1)&&(right2 == 0)&&(right1 == 0))
{
flag = 8;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 1)&&(right1 == 0))
{
flag = 9;
}
if((left1 == 0)&&(left2 == 0)&&(left3 == 0)&&(left4== 0)&&(left5 == 0)&&(might == 0)&&(right5 == 0)&&(right4 == 0)&&(right3 == 0)&&(right2 == 1)&&(right1 == 1))
{
flag = 10;
}
switch(flag)
{
case 0:turn_left1();break;
case 1:turn_left2();break;
case 2:turn_left3();break;
case 3:turn_left4();break;
case 4:turn_left5();break;
case 5:turn_might();break;
case 6:turn_right5();break;
case 7:turn_right4();break;
case 8:turn_right3();break;
case 9:turn_right2();break;
default:turn_right1();break;
}
}
void main()
{
unsigned int i = 0;
init();
IN1 = 0;
IN2 = 1;
IN3 = 1;
IN4 = 0;
while(1)
{
TR0 = 1; //Æô¶¯¶¨Ê±Æ÷
xunji();
if((left2 == 1)&&(left1 == 1)&&(right1 == 1)&&(right2 == 1))
{
i++;
}
if(i==2900)
{
TR0 = 0; //Æô¶¯¶¨Ê±Æ÷
IN1 = 0;
IN2 = 0;
IN3 = 0;
IN4 = 0;
while(1)
{
_nop_();
}
}
}
}
复制代码
作者:
man1234567
时间:
2019-11-24 21:07
网上找个能驱动电机的程度烧进去试试究竟是不是软件错,如果是就从简到繁地DEBUG。
作者:
rchfly1
时间:
2019-11-25 16:59
先IO口直接输出驱动电机,看硬件是否正常先。如果不事先确认硬件正常只看软件会很痛苦!! 我也试过“感觉连线没错”非要改程序,结果白忙了一天。请先确认硬件正常。
作者:
无敌的UUZ大人
时间:
2019-11-26 10:58
硬件是软件的基础,最好先确定一下硬件是否正常
作者:
@remember
时间:
2019-11-26 13:46
先用万能表测一下每个位置,看看硬件连线是否有问题,没问题的的话,串口调试看看软件是否有问题
作者:
H1996
时间:
2019-11-26 17:17
你先测试一下硬件的问题
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1