单片机课程设计报告——单片机控制步进电机_第1页
单片机课程设计报告——单片机控制步进电机_第2页
单片机课程设计报告——单片机控制步进电机_第3页
单片机课程设计报告——单片机控制步进电机_第4页
单片机课程设计报告——单片机控制步进电机_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理及应用课程设计报告江西农大单片机原理及应用课程设计报告设计课题: 单片机控制步进电机 专业班级: 信工 091 班 学生姓名: 崔* 指导教师: 何老师 2012 年 5 月单片机原理及应用课程设计报告- 21 -目 录目 录 11 设计任务书 21.1 基本设计要求 21.2 选作项目 22 设计阐明 32.1 设计内容 32.2 设计要求 32.3 设备及工作环境 33 系统方案整体设计 43.1 设计思路 44 硬件设计 64.1 系统硬件设计 64.1.1 最小单片机系统 64.1.2 键盘设计 64.2 系统工作原理论述 75 软件设计 95.1 分析论证 95.1.1 步进电机运行驱动模块 95.1.2 温度采集模块 95.1.3 主函数模块 95.1.4 整体功效 95.2 程序流程图 105.3 程序清单 116 调试过程及分析 187 设计总结 19参 考 文 献 20单片机原理及应用课程设计报告- 2 -1 设计任务书1.1 基本设计要求(1)用万能板、主芯片 AT89S52、35BYJ412 步进电机、BLN2003 以及其他周围原件芯片完成实验设计。(2)程序的首地址应使目标机可以直接运行,即从 0000H 开端。在主程序的开端部分必须设置一个合适的栈底。程序放置的地址须持续且靠前,不要在中间留下大批的空间地址,以使目标机可以应用较少的硬件资源。(3)采用单片机控制一个三相单三拍的步进电机工作。步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入,可输入的步数分别为3、6、9、12、15、18、21、24 和 27 步,且键盘具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。只有当键盘锁打开并输入步数时,步进电机才开始工作。(4)电机运转的时候有正转和反转指示灯指示。(5)电机在运转过程中,如果过热,则电机停止运转,同时红色指示灯亮,同时警报响。本题目的关键之处是:如何生成控制步进电机的脉冲序列。1.2 选作项目1、用单片机(AT89S52)为主芯片设计电路来控制步进电机。2、设三个自锁按键,分别作开关键盘、左转、右转控制。3、设 9 个触电按键分别控制输入的步数为 3、6、9、12、15、18、21、24和 27 步。4、设置一片 LCD12864 显示器实时显示步进电机工作状态,并提示用户步操作。单片机原理及应用课程设计报告- 3 -2 设计阐明2.1设计内容用 ZY15MCU12BD 型综合单片机实验箱仿真实现控制步进电机集采问过程。2.2设计要求(1)采用单片机控制一个三相单三拍的步进电机工作。步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入,可输入的步数分别为3、6、9、12、15、18、21、24 和 27 步,且键盘具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。只有当键盘锁打开并输入步数时,步进电机才开始工作。(2)电机运转的时候有正转和反转指示灯指示。(3) 电机在运转过程中,如果过热,则电机停止运转,同时红色指示灯亮,同时警报响。(4) 上机调试程序。(5) 写出设计报告。2.3设备及工作环境(1) 硬件:AT89S52 单片机一片、 35BYJ412 步进电机一台、 ISP 下载器一个、LCD12864 显示器、温度传感器 18B20 芯片。(2) 软件: Windows 操纵系统、Keil C51 软件。单片机原理及应用课程设计报告- 4 -3 系统方案整体设计3.1 设计思路步进电机的不同驱动方式,都是在工作时,脉冲信号按一定顺序轮流加到三相绕组上,从而实现不同的工作状态。由于通电顺序不同,其运行方式有三相单三相拍、三相双三拍和三相单、双六拍三种(注意:上面“三相单三拍” 中的“三相”指定子有三相绕组; “拍”是指定子绕组改变一次通电方式; “三拍”表示通电三次完成一个循环。 “三相双三拍” 中的“双”是指同时有两相绕组通电) 。(1)三相单三拍运行方式:下页图所示为反应式步进电动机工作原理图,若通过脉冲分配器输出的第一个脉冲使 A 相绕组通电,B,C 相绕组不通电,在A 相绕组通电后产生的磁场将使转子 上产生反应转矩,转子的 1、3 齿将与定子磁极对齐,如果图(a)所示。第二个脉冲到来,使 B 相绕组通电,而 A、C相绕组不通电;B 相绕组产生的磁场将 使转子的 2、4 齿与 B 相磁极对齐,如图(b)所示,与图(a)相比,转子逆时针方向转动了一个角度。第三个脉冲到来后,是 C 相绕组通电,而 A、B 相不通电,这时转子的 1、3 齿会与 C 组对齐,转子的位置如图(c)所示,与图(b)比较,又逆时针转过了一个角度。图 反应式步进电机工作原理图当脉冲不断到来时,通过分配器使定子的绕组按着 A 相-B 相-C 相-A相的规律不断地接通与断开,这时步进电动机的转子就连续不停地一步步的逆时 针方向转动。如果改变步进电动机的转动方向,只要将定子各绕组通电的顺序改为 A 相-C 相-B 相-A 相,转子转动方向即改为顺时针方向。单三拍分配方式时,步进电动机由 A 相通电转换到 B 相同点,步进电动机的转子转过一个角度,称为一步。这时转子转过的角度是 30 度。步进电动机每一步转过的角度称为步距角。(2)三相双三拍运行方式三相双三拍运行方式:每次都有两个绕组通电,通电方式是 AB-BC-CA-AB,如果通电顺序改为 AB-CA-BC-AB则步进电机反转。双三拍分配方式时,步进电动机的步距角也是 30 度(3)三相单,双六拍运行方式:三相六拍分配方式就是每个周期内有六个通电状态。这六中通电状态的顺序可以使 A-AB-B-BC-C-CA-A或者 A- CA-C-BC-B-AB-A六拍通电方式中,有一个时刻两个绕组同时通电,单片机原理及应用课程设计报告- 5 -这是转子齿的位置将位于通电的两相的中间位置。在三相六拍分配 方式下,转子每一步转过的角度只是三相三拍方式下的一半,步距角是 15 度。单三拍运行的突出问题是每次只有一相绕组通电,在转换过程中,一相绕组断电,另一相绕组通电,容易发生失步;另外单靠一相绕组通电吸引转子,稳定性不好,容易在平衡位置附近震荡,故用的较少。双三拍运行的特点是每次都有两相绕组通电,且在转换过程中始终有一相绕组保持通电状态,因此工作稳定,且步距角与单三拍相同。六拍运行方式转换时始终有一相绕组通电,且步距角较小,故工作稳定性好,但电源较复杂,实际应用较多。单片机原理及应用课程设计报告- 6 -4 硬件设计4.1 系统硬件设计4.1.1 最小单片机系统5V 电源:给系统供电。复位电路:程序跑飞时复位电路可以使程序从新执行,相当于电脑的重启。晶振:给单片机运行提供时钟。比如电脑的 2.2GHz 频率。EA 接高电平:表示运行内部程序存储器下载的程序。P0 口接排阻:P0 口开漏结构,使用时一般接排阻拉高电平。4.1.2 键盘设计该电路中采用独立键盘工作方式,共设有 12 个按键,分别提供3、6、9、12、15、18、21、24 布局选择功能、键盘锁功能以及步进电机转动单片机原理及应用课程设计报告- 7 -方向选择功能。其中有程序决定起作用。4.2 系统工作原理论述该系统的工作核心 CPU 为 ATMEL 公司生产的 AT89S52 芯片将多种功能的 8 位 CPU 与 FPEROM(快闪可编程/擦除只读存储器)结合在一个芯片上,是一种低功耗、高性能的 CMOS 控制器,为很多嵌入式控制应用提供了非常灵活而又价格适宜的方案,其性能价格比远高于同类芯片。它与 MCS-51 指令系统兼容,片内 FPEROM 允许对程序存储器在线重复编程,也可用常规的 EPROM 编程器编程,可循环写入/擦除 1000 次。89S52 内含 4KB 的 FPEROM,一般的 EEPROM 的字节擦除时间和写入时间基本上均为 10ms,对于任一个实时控制系统来说,这样长的时间是不可能在线修改程序的。 CPU 为 Atmel 公司生产的 89C51/89C52/89C55 等。出厂所配晶振频率为11.0592MH,每个机器周期为 1.085us,用户更换晶振以提高速度; 存贮器为 64K,前 4K/8K20K 在 CPU 内部,其它程序在 EPR0M27512 中; 数据存贮器为 32K(62256),地址为 8000FFFFH; /O 扩展 8155,片内 RAM 地址200O-20FFH ; 8155 命令口地址为2100H ; A 口地址21O1H B 口地址:2102H C 口地址:2103H ; T 低八位2104H T 高八位2105H ; 多路模拟开关的使用 IN0P1=0F8H IN4:P1=0FCH IN1P1=0F9H IN5:P1=OFDH IN2P1=0FAH IN5:P1=0FEH IN3P1=0FBH IN7:P1=0FFH 不掉电数据存贮器为500EH-507FH ; 控制板160x1O9(mm) 供电+5V300mA +12V100mA -12V100mA ; AT89C51 是一种低功耗、高性能的片内含有 4KB 快闪可编程/擦除只读存储单片机原理及应用课程设计报告- 8 -器(FPEROM-Flash Programmable and Eraseable Read Only Memory)的8 位 CMOS 微控制器,使用高密度、非易失存储技术制造,并且与 80C51 引脚和指令系统完全兼容; 主要性能: 与 MCS-51 微控制器产品系列兼容;片内有 4KB 可在线重复编程的快闪擦写存储器 。引脚简介:整体介绍:该系统采用的芯片还有:DS18B20 温度传感器、ULN2003A 以及 MP28GA 四相五线步进电机,并且步进电机在双八拍的方式下工作,步矩为 5.625 ,步进电机的旋转方向由正反转控制信号控制。步进电机的步数由键盘输入,可通过独立键盘 S1S9 输入的步数分别为 3、6、9、12、15、18、21、24 和 27 步对应的角度为 16.875、33.725、151.875,且键盘 S10 具有键盘锁功能,当键盘上锁时,步进电机不接受输入步数,也不会运转。只有当键盘锁打开,选择运转方向并且输入步数时,步进电机才开始工作。电机运转的时候有正转指示灯 D2 和反转指示灯 D3 指示。电机在运转过程中用温度传感器采集步进电机外表温度(可设置) ,如果过热,则电机停止运转,同时红色指示灯亮,同时蜂鸣器警报响。单片机原理及应用课程设计报告- 9 -5 软件设计5.1 分析论证此步进电机控制电路设计与实现,主要采用了 ULN2003A 驱动芯片,温度传感器芯片 DS18B20 芯片,独立键盘等,包含步进电机运行驱动,温度采集,主函数三大功效模块。5.1.1 步进电机运行驱动模块由于该系统中没有完全使用 I/O 端口,所以采用了独立键盘的工作方式,系统工作时,键盘控制的 I/O 口处于高电平状态,当按键按下时触发低电平,驱动程序实时监测并立即响应执行相应工作。5.1.2 温度采集模块该模块的重要功效是对步进电机的外表采集温度,并且对已设定好的数值进行比较,从而确定机身温度是否过高,正常时电机正常转动,当温度过高时电机不再转动,并且蜂鸣器报警,红灯点亮。5.1.3 主函数模块该模块重要功效是调动温度采集函数、步进电机函数中函数,实现模块化编程。5.1.4 整体功效AT89S52 芯片控制 ULN2003A 芯片驱动步进电机,扫描键盘输入运行状态以及运转步数,当电机外表温度超过 32是电机停止转动,并且报警!单片机原理及应用课程设计报告- 10 -5.2 程序流程图主程序流程图如图所示:是否是否否 图 2 程序流程图开始初始化程序判断步进电机温度是否过高?锁键盘确定输入步数步进电机运转电机高温?等待开键盘报警,红灯点亮,步进电机停转单片机原理及应用课程设计报告- 11 -5.3程序清单步进电机驱动函数:/BJDJ.h#ifndef _BJDJ_H_#define _BJDJ_H_ #include #include #define uchar unsigned char#define uint unsigned intsbit k1=P10;sbit k2=P11;sbit k3=P12;sbit k4=P13;sbit k5=P14;sbit k6=P15;sbit k7=P16;sbit k8=P17;sbit k9=P00;sbit k10=P01;sbit k11=P02;sbit k12=P03;void key_scan();void motor_turn();void motor_stop();#endif/BJDJ.c#include“BJDJ.h“uchar code FFW8=0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6;uchar code REV8=0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe;uchar rate ;extern uchar i=0; /*/ /* 延时 /*/void delay(uchar x) uchar i,j;for(i=0;i#include #define uint unsigned int#define uchar unsigned charextern uchar T;sbit DQ=P27; /温度输入口sbit bell=P04;sbit led1=P07;void delay2(uint t);void ow_reset(void);单片机原理及应用课程设计报告- 15 -void write_byte(uchar val);void read_temp();void work_temp();#endif/DS18B20.c#include“DS18B20.h“extern uchar data temp_data2=0x00,0x00;uchar flag;char presence=1;uchar T;/*11 微秒延时函数*/void delay2(uint t)for(;t0;t-);/*18B20 复位函数*/void ow_reset(void)presence=1;while(presence)while(presence)DQ=1;_nop_();_nop_();DQ=0; /delay2(50); / 550usDQ=1; / delay2(6); / 66uspresence=DQ; / presence=0 继续下一步delay2(45); /延时 500uspresence = DQ;DQ=1; /*18B20 写命令函数*/void write_byte(uchar val)uchar i;for (i=8; i0; i-) 单片机原理及应用课程设计报告- 16 -DQ=1;_nop_();_nop_(); DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ = val /最低位移出delay2(6); /66usval=val/2; /右移一位DQ = 1;delay2(1); /*18B20 读 1 个字节函数*/uchar read_byte(void)uchar i;uchar value = 0;for (i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay2(6); /66usDQ=1;return(value);/*读出温度函数*/void read_temp()ow_reset(); /总线复位write_byte(0xCC); / 发 Skip ROM 命令write_byte(0xBE); / 发读命令temp_data0=read_byte(); /温度低 8 位temp_data1=read_byte(); /温度高 8 位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令单片机原理及应用课程设计报告- 17 -/*温度数据处理函数*/void work_temp()T=(temp_data0led1=0;bell=1;delay2(1000);else led1=1;bell=0;motor_turn();单片机原理及应用课程设计报告- 18 -6 调试过程及分析编写好的源程序在 Keil 编译后呈现很多错误,这些错误有很多时平时的实验碰到过的,例如:字母开头忘加 0,零和字母 O 弄混杂了,有些标号用了几次,CJNE 写成了 CJNZ 等等,幸好这些错误在平时的实验中碰到了,所以改错误很轻易, 。除了常见的错误外,还有几条错误时在前几次实验都没有出现过,如:AJMP 跳转指令跳不回指定的地位,是由于跳转的长度大于 AJMP 跳转的长度,最后只好用 LJMP 跳转后才跳到指定的地位。在前期的程序编写和几天的上机调试,使我又获得了很多新的知识,由于前期编写程序时查了很多

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论