AT89C51单片机实现 PWM 电机全方位调控

需积分: 9 10 下载量 62 浏览量 更新于2024-09-21 收藏 29KB DOC 举报
本文档详细介绍了如何使用AT89C51单片机实现PWM(Pulse Width Modulation,脉宽调制)技术来控制直流电机的运行,包括正转、反转以及0-20级的调速功能。该方案主要涉及以下几个关键知识点: 1. **硬件配置**: - 使用的是AT89C51单片机作为核心控制器,其工作频率设定为11.00592MHz。 - PWM信号通过P2口的引脚6(PWM1)和引脚7(PWM2)连接到电机,其中PWM1用于反转控制,PWM2用于正转控制。 - 按键控制部分,包括“加速”(Key_add)、“减速”(Key_dec)和“换向”(Key_turn)输入,通过P2口的相应引脚实现。 2. **软件结构**: - 提供了几个关键函数: - `Timer0_init()`:初始化定时器0,用于产生PWM信号的定时中断。 - `Delay(unsigned char x)`:一个延时函数,通过计数器实现延时,减少PWM输出时间间隔,提高精度。 - `Motor_speed_high()` 和 `Motor_speed_low()`:这两个函数处理电机的加速和减速,通过调整PWM占空比count0和count1来改变电机的速度。 - `Motor_turn()`:电机换向函数,根据Flag标志位决定是正转还是反转。 3. **PWM控制算法**: - 通过设定中断的间隔时长TH0_TL0为65536-1000,即大约1000us,实现了PWM的周期性调整。 - 低电平占空比(count0)和高电平占空比(count1)分别控制电机的运行状态,结合按键操作,可以实现0-100%的调速范围(实际代码中为0-100级,但可能需要进一步调整)。 - 当接收到“减速”按键信号时,每次延时后检查按键状态,若按键持续按下,count0增加5,直到达到最大值100。 4. **控制逻辑**: - 通过`Flag`标志位管理电机的正转和反转,当flag为1时,电机正转,PWM2输出;flag为0时,电机反转,PWM1输出。 - 按键“换向”(Key_turn)用来切换电机的工作模式,配合`Motor_turn()`函数。 总结来说,本文提供了一个完整的基于AT89C51单片机的PWM电机控制系统的设计与实现,包括硬件连接、软件编程逻辑以及用户输入的响应处理,适用于需要精确控制直流电机速度和方向的场合。