1、智能小车 电控基础部分 电路原理图 硬件部分包括 单片机AT89S52 舵机 直流减速电机 L298电机驱动芯片 光耦TLP521 电阻 电容 稳压器78L05模块 硬件部分的各个模块都与机械有紧密的联系 它们必须集合机械部分进行设计与调试 程序流程图 首先是主函数的确立 主函数从子函数init0 time和子函数drive子函数 子函数motor run中调子运行控制字函数motor run和子函数time0 pwm 然后根据定时器溢出中断程序 判断是否中断 否则继续执行子函数time0 pwm 是则进行drive部分 drive部分调子进行判断 是则继续进行子函数drive否则程序结束 主
2、函数 voidmain init time0 调用初始化函数drive 1 0 0 delay flag 1000 较精确延时100MS 以定时器0中定义的100US为单位while delay flag while 1 drive 1 0 0 delay flag 50000 直走5Swhile delay flag motor run 1 0 0 车停while 1 保持 voidtime0 pwm interrupt1 定时器0中断服务程序 舵机部分 tt if tt duoji pwm duoji pwm 6 26 大约0 5ms 2 5msduoji 0 舵机控制线置低电平elsei
3、f tt 200 大约20ms tt 0 duoji 1 舵机控制线置高电平 直流电机PWM调速部分 pwm if pwm 10 设置PWM调速周期为1ms pwm 0 P0 0X30 P0口进行或运算 if pwm PWM L PWM L 0 10 motor l en 0 if pwm PWM R PWM R 0 10 motor r en 0 较精确延时部分 if delay flag delay flag voidinit time0 定时器0初始化函数 TMOD 0X02 采用定时器模式2 8位精确定时TH0 164 定时器赋初值 100US中断一次 这里的晶振是11 0592M 若
4、晶振为12M 则选用156 TL0 164 EA 1 开总中断ET0 1 开定时器中断TR0 1 定时器0开始运行duoji pwm 11 舵机初始位置 保证小车前轮摆正 voidmotor run uchardirect ucharspeed l ucharspeed r 直流电机控制函数 direct代表方向 speed分别控制两个电机速度 if direct direct 1代表向前 P0 P0 voiddrive uchardirect ucharangle ucharside 小车状态控制函数 direct代表方向 angle代表转弯角度 side代表转弯方向 if angle 6 起保护作用 相对机械结构而言 angle的范围是0 5 if side side 1代表向右 duoji pwm 13 angle motor run direct 10 10 angle else side 0代表向左 duoji pwm angle 13 motor run direct 10 angle 10