c51单片机小车代码解释

总结流程:
1.对每个引脚位定义,后面好用
2.宏定义了红外传感器的2个引脚对应的名字
3.宏定义小车的速度speed,方便后期修改
4.对左右电机的pwm分别进行了宏定义
5.宏定义小车左右2个电机的转动方向
6.定义左右电机pwm_value用来调控电机的转速,设置drive_value用来接接收小车的speed
7.设置延时函数方便后期调用,设置小车行驶方式函数(以左转为例实际上就是让drive_value=speed,然后调用相应的宏定义,让左边电机向前或者向后转),注意以左边电机为例:实际上每个电机由3个引脚共同控制,假设px_1对应前转,px_2对应后转, px_3对应pwm,那么速度加实际上是pwm=1,速度会一直加,而px_1和px_2控制的是准备往前还是往后转。
8.设置电机pwm调节函数,这个函数由定时器0中断函数调用,函数内容是设置对应电机判断pwm_value是否大于dirve_value,如果pwm_value>drive_value就把对应电机的pwm置为0,如果pwm_value<drive_value就把对应电机的pwm置为1;并且在后续会判断pwm_value是否大于20,是就把pwm_value置为0从同再来;实际上就是控制pwm为0和为1的占用时间
9.设置定时器初始化函数。TMOD设置工作模式,TH0,TL0设置定时间隔;TR0置为1开始定时器0计数,ET0置为1开启定时器0中断,EA置为1开启总中断;
10,设置定时器0中断函数,每次中断pwm_value++;然后调用pwm调节函数,控制小车速度;

#include <reg51.h>
//位定义
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P3_3=P3^3;
sbit P3_4=P3^4;
sbit P3_7=P3^7;
//宏定义
#define uchar unsigned char
#define uint  unsigned int
//左右红外传感器引脚
#define Left_IRSenor_Track   P3_4   
#define Right_IRSenor_Track  P3_3
//速度值和左右电机PWM输入引脚  
#define SPEED              10	  //速度值0-20
#define Left_Motor_PWM	   P1_4	
#define Right_Motor_PWM	   P1_5
//左右车轮运动方向	
#define Left_Motor_Go      {
     P1_2=0,P1_3=1;} 
#define Left_Motor_Back    {
     P1_2=1,P1_3=0;}
#
  • 9
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值