我想要做一辆带有四个红外检测器和两个驱动电机以及型号为STC8H8K64X的芯片的智能红外循迹小车电池为两节74V2200mAh的锂电池编程软件为Keil我想得到这个小车实现的整体代码要求利用PWM可以控制小车的转弯和转速整体小车运行能够快速代码需标明文件区块
#include <reg52.h> //引用STC8系列单片机的头文件 #include <intrins.h> //引用STC8系列单片机的内部函数库 #define uchar unsigned char #define uint unsigned int
sbit IR1 = P1 ^ 0; //红外传感器1 sbit IR2 = P1 ^ 1; //红外传感器2 sbit IR3 = P1 ^ 2; //红外传感器3 sbit IR4 = P1 ^ 3; //红外传感器4
sbit ENA = P2 ^ 1; //电机A使能 sbit IN1 = P2 ^ 2; //电机A正转 sbit IN2 = P2 ^ 3; //电机A反转
sbit ENB = P2 ^ 4; //电机B使能 sbit IN3 = P2 ^ 5; //电机B正转 sbit IN4 = P2 ^ 6; //电机B反转
void delay(uint xms) //延时函数 { uint i, j; for (i = xms; i > 0; i--) for (j = 110; j > 0; j--) ; }
void main() { uchar IR_status = 0; //红外传感器状态 ENA = 1; //电机A使能 ENB = 1; //电机B使能 while (1) { IR_status = IR1 + IR2 * 2 + IR3 * 4 + IR4 * 8; //获取红外传感器状态 switch (IR_status) //根据红外传感器状态控制小车运动 { case 1: IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 1; break; case 2: IN1 = 0; IN2 = 1; IN3 = 1; IN4 = 0; break; case 3: IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 0; break; case 4: IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 1; break; case 5: IN1 = 0; IN2 = 1; IN3 = 0; IN4 = 1; break; case 6: IN1 = 1; IN2 = 0; IN3 = 1; IN4 = 0; break; case 7: IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 0; break; case 8: IN1 = 1; IN2 = 0; IN3 = 0; IN4 = 1; break; case 9: IN1 = 1; IN2 = 0; IN3 = 1; IN4 = 1; break; case 10: IN1 = 1; IN2 = 1; IN3 = 0; IN4 = 1; break; case 11: IN1 = 1; IN2 = 1; IN3 = 1; IN4 = 0; break; case 12: IN1 = 1; IN2 = 1; IN3 = 0; IN4 = 0; break; default: IN1 = 0; IN2 = 0; IN3 = 0; IN4 = 0; break; } }
原文地址: https://www.cveoy.top/t/topic/dw0H 著作权归作者所有。请勿转载和采集!