Keilc51源码:新手友好直流电机PWM控制与方向设置

需积分: 19 4 下载量 27 浏览量 更新于2024-09-07 收藏 42KB DOC 举报
本文档主要介绍了使用Keil C51编程语言对直流电机进行开环控制的方法,特别关注了脉宽调制(PWM)技术在智能小车控制中的应用。该代码适用于初学者,提供了详细的注释以便理解。 首先,我们来看到代码中涉及的关键知识点: 1. **硬件接口**: - `PWM` 和 `DR` 变量被定义为P1口的引脚0和1,分别用于PWM波形输出和电机方向控制。通过这两个引脚,程序可以控制电机的速度和旋转方向。 2. **定时器配置**: - 使用了定时器1进行脉冲宽度调制(PWM)控制,`timer_data` 定义了一个预置值,使得定时器在12MHz时钟下产生0.1毫秒的定时周期。 - 定义了 `PWM_T100`,表示PWM的周期为10毫秒,即电机转动一周的时间。 3. **数据类型与变量**: - `PWM_t` 是一个无符号字符型变量,存储脉冲宽度,范围从0到100,对应0到10ms的PWM周期。 - `PWM_count` 用于输出PWM周期计数,可能记录当前的PWM状态。 - `time_count` 是一个定时计数器,可能用于测量时间或与PWM周期同步。 4. **函数**: - `timer_init()` 函数负责初始化定时器1,设置其工作模式为模式2(8位自动重载),并配置定时器预设值和中断。该函数确保定时器在正确的时间间隔产生PWM波形。 5. **中断管理**: - `EA=1` 启用全局中断,这样当定时器溢出时,会触发中断,从而执行后续的PWM更新逻辑。 这些代码片段展示了如何使用C51语言中的定时器来精确控制直流电机的速度,结合方向控制,实现了智能小车的开环运动控制。初学者可以通过阅读代码的注释理解各个部分的功能,并逐步实现自己的小车控制系统。在实际应用中,可能还需要配合PID控制算法或其他高级控制策略,以实现更精确和动态的电机控制。