单片机控制步进电机课程设计报告 下载本文

图3—8 89C51 引脚介绍

整体介绍:

该系统采用的芯片还有:DS18B20温度传感器、ULN2003A以及28BYJ48四相五线步进电机,并且步进电机在单四拍的方式下工作,步矩为 5.625° ,步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入,可通过独立键盘S1~S9输入的步数分别为3、6、9、12、15、18、21、24和27步对应的角度为16.875°、33.725°、……、151.875°,且键盘S10具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。只有当键盘锁打开,选择运转方向并且输入步数时,步进电机才开始工作。

电机运转的时候有正转指示灯D2和反转指示灯D3指示。

电机在运转过程中用温度传感器采集步进电机外表温度(可设置),如果过热,则电机停止运转,同时红色指示灯亮,同时蜂鸣器警报响。

第四章 软件设计

4.1 分析论证

此步进电机控制电路设计与实现,主要采用了ULN2003A驱动芯片,温度传感器芯片DS18B20芯片,独立键盘等,包含步进电机运行驱动,温度采集,主函数三大功效模块。

4.1.1 步进电机运行驱动模块 由于该系统中没有完全使用I/O端口,所以采用了独立键盘的工作方式,系统工作时,键盘控制的I/O口处于高电平状态,当按键按下时触发低电平,驱动程序实时监测并立即响应执行相应工作。 开始 步进电机反转 判断电机步数 反转 键盘是否锁住 否 正转 正反转判断 步进电机正转

图4-1 步进电机控制流程图

4.1.2 温度采集模块

该模块的重要功效是对步进电机的外表采集温度,并且对已设定好的数值进行比较,从而确定机身温度是否过高,正常时电机正常转动,当温度过高时电机不再转动,并且蜂鸣器报警,红灯点亮。

初始化 读温度数据 跳过ROM命发读温度命令 温度转换命令 匹配ROM命令 否 是 时间到 初始化

图4-2 ds18b20控制流程图

4.1.3 主函数模块

该模块重要功效是调动温度采集函数、步进电机函数中函数,实现模块化编程。 4.1.4 整体功效

AT89C52芯片控制ULN2003A芯片驱动步进电机,扫描键盘输入运行状态以及运转步数,当电机外表温度超过40℃是电机停止转动,并且报警! 4.2 程序流程图

主程序流程图如图所示:

报警,红灯点亮,步进电机停转 开始 初始化程序 判断步进电机温 是 度是否过高?

锁键盘 等待开键盘 是

确定输入步数

步进电机运转 电机高温? 否

程序清单

#include

#define uchar unsigned char #define uint unsigned int #define M 100 sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; sbit k5=P1^4; sbit k6=P1^5; sbit k7=P1^6; sbit k8=P1^7; sbit k9=P0^0; sbit k10=P0^1; sbit k11=P0^2; sbit k12=P0^3; sbit DQ=P2^7; sbit D3=P2^0; sbit D2=P2^3; sbit D1=P2^5; sbit bel=P2^6;

图4—3 程序流程图