全球旧事资料 分类
单片机C语言模块化编程之双电机驱动篇基于PROTEUS电路仿真;电机通过L298电机驱动模块驱动;通过双定时器完美生成PWM占空比控制电机速度,也可以单独使用一个定时器驱动双电机,方法一样;通过按键扫描的方式控制电机的运动状态前进,后退,开始,停止,左拐,右拐等操作;通过查看此文档,可以让初学者对程序模块化有一个初步认识,对电机驱动原理有一个初步了解。注:在真实遥控小车中能够正常运转,速度可以任意调节通过goucharsped1ucharsped2Proteus仿真图如下:
C语言代码实现:
motorh
if
def_MOTOR_H_defi
e_MOTOR_H_i
cludereg51hdefi
eui
tu
sig
edi
tdefi
eucharu
sig
edchar
f电机控制位sbitIN1P00电机1的控制位IN1,IN2的值控制电机的正转,反转,停止,IN11IN20电机正转,IN10IN21电机反转,IN10IN20电机停止转动;
sbitIN2P01sbitINAP04电机1的使能位INA1,电机开始工作,INA0,电机停止工作sbitIN3P02电机2的控制位IN3,IN4的值控制电机的正转,反转,停止,IN31IN40电机正转,IN30IN41电机反转,IN30IN40电机停止转动;
sbitIN4P03sbitINBP05
电机2的使能位INB1,电机开始工作,INB0,电机停止工作
此处需要注意的地方,关于模块化编程时如果用到全局变量时,全局变量要在MOTORC
中定义,MOTORH中需要exter
声明(不可以再次赋值可以直接尝试下),否则将会报错。
exter
ui
tspeed1speed2
speed1电机速度值,t1电机一个周期的时间,
PWMspeedt
exter
voiddelayui
txmsexter
voidgoucharspe1ucharspe2exter
voidqia
ji
exter
voidbackexter
voidtur
_leftexter
voidtur
_rightexter
voidstartexter
voidstopexter
voidISP_i
it
一个简短的延时函数电机加速函数,通过spe1,spe2控制电机速度
电机前进函数电机后退函数电机左转电机右转电机启动函数电机停止函数定时器初始化函数
e
dif
motorc
i
clude
好听全球资料 返回顶部