版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精品 welcome 江西农大 单片机原理及应用 课程设计报告 设计课题: 单片机控制步进电机 _ 专业班级: 信工 091 班 _ 学生姓名: _ 崔* _ 指导教师: 何老师 _ 2012 年 5 月 精品 welcome 目录 目录 . 1 设计任务书 . 2 1.1 基本设计要求 . 1.2 选作项目 . 3 2 设计阐明 . 3 2.1 设计内容 . 2.2 设计要求 . 4 2.3 设备及工作环境 . 4 3 系统方案整体设计 . 5 3.1 设计思路 . 5 4 硬件设计 .! 4.1 系统硬件设计 . 7 4.1.1 最小单片机系统 . 7 4.1.2 键盘设计 8 4.2 系
2、统工作原理论述 9 5 软件设计 12 5.1 分析论证 12 5.1.1 步进电机运行驱动模块 12 5.1.2 温度采集模块 12 5.1.3 主函数模块 12 5.1.4 整体功效 . 13 精品 welcome 5.2 程序流程图 . 13 5.3 程序清单 . 14 6 调试过程及分析 . 28 7 设计总结 . 29 参考文献 . 30 1 设计任务书 1.1 基本设计要求 (1 )用万能板、主芯片 AT89S52 、35BYJ412 步进电机、 BLN2003 以及 其他周围原件芯片完成实验设计。 (2 )程序的首地址应使目标机可以直接运行,即从 0000H 开端。在主程 序的开
3、端部分必须设置一个合适的栈底。 程序放置的地址须持续且靠前, 不要在 中间留下大批的空间地址,以使目标机可以应用较少的硬件资源。 (3 )采用单片机控制一个三相单三拍的步进电机工作。步进电机的旋转方 向由正反转控制信号控制。 步进电机的步数由键盘输入, 可输入的步数分别为 3 、 6、9 、12 、15、18 、21 、24 和 27 步,且键盘具有键盘锁功能,当键盘上锁时, 步进电机不接受输入步数,也不会运转。只有当键盘锁打开并输入步数时,步进 电机才开始工作。 精品 welcome (4)电机运转的时候有正转和反转指示灯指示。 (5 )电机在运转过程中, 如果过热,则电机停止运转,同时红色
4、指示灯亮, 同时警报响。本题目的关键之处是:如何生成控制步进电机的脉冲序列。 1.2 选作项目 1 、用单片机( AT89S52 )为主芯片设计电路来控制步进电机。 2、设三个自锁按键,分别作开关键盘、左转、右转控制。 3、设 9 个触电按键分别控制输入的步数为 3、6、9、12 、15 、18 、21、 24 和 27 步。 4 、设置一片 LCD12864 显示器实时显示步进电机工作状态, 并提示用户步 操作。 2 设计阐明 2.1 设计内容 用 ZY15MCU12BD 型综合单片机实验箱仿真实现控制步进电机集采问过 2.2 设计要求 精品 welcome (1 )采用单片机控制一个三相单
5、三拍的步进电机工作。步进电机的旋转方 向由正反转控制信号控制。 步进电机的步数由键盘输入, 可输入的步数分别为 3 、 6、9 、12 、15、18 、21 、24 和 27 步,且键盘具有键盘锁功能,当键盘上锁时, 步进电机不接受输入步数,也不会运转。只有当键盘锁打开并输入步数时,步进 电机才开始工作。 (2)电机运转的时候有正转和反转指示灯指示。 (3 ) 电机在运转过程中, 如果过热,则电机停止运转, 同时红色指示灯亮, 同时警报响。 (4 ) 上机调试程序。 (5 ) 写出设计报告。 2.3 设备及工作环境 (1) 硬件: AT89S52 单片机一片、 35BYJ412 步进电机一台、
6、 ISP 下载器 一个、 LCD12864 显示器、温度传感器 18B20 芯片。 (2) 软件: Windows 操纵系统、 Keil C51 软件。精品 welcome 3 系统方案整体设计 3.1设计思路 步进电机的不同驱动方式,都是在工作时,脉冲信号按一定顺序轮流加到三 相绕组上,从而实现不同的工作状态。由于通电顺序不同,其运行方式有三相单 三相拍、三相双三拍和三相单、双六拍三种(注意:上面“三相单三拍”中的“三 相”指定子有三相绕组;“拍”是指定子绕组改变一次通电方式; “三拍”表示 通电三次完成一个循环。“三相双三拍”中的“双”是指同时有两相绕组通电)。 (1)三相单三拍运行方式:
7、下页图所示为反应式步进电动机工作原理图, 若通过脉冲分配器输出的第一个脉冲使 A相绕组通电,B,C相绕组不通电,在A 相绕组通电后产生的磁场将使转子 上产生反应转矩,转子的1、3齿将与定子 磁极对齐,如果图(a)所示。第二个脉冲到来,使 B相绕组通电,而A、C相 绕组不通电;B相绕组产生的磁场将 使转子的2、4齿与B相磁极对齐,如图 (b)所示,与图(a)相比,转子逆时针方向转动了一个角度。第三个脉冲到 来后,是C相绕组通电,而A、B相不通电,这时转子的1、3齿会与C组对齐, 转子的位置如图(c)所示,与图(b)比较,又逆时针转过了一个角度。 (b) (0 图 反应式步进电机工作原理图 精品
8、welcome 当脉冲不断到来时,通过分配器使定子的绕组按着 A 相 -B 相-C 相 -A 相的规律不断地接通与断开,这时步进电动机的转子就连续不停地一步步的 逆时 针方向转动。如果改变步进电动机的转动方向,只要将定子各绕组通电的 顺序改为 A 相-C 相-B 相-A 相,转子转动方向即改为顺时针方向。 单三拍分配方式时,步进电动机由 A 相通电转换到 B 相同点,步进电动机 的转子转过一个角度,称为一步。这时转子转过的角度是 30 度。步进电动机每 一步转过的角度称为步距角。 (2) 三相双三拍运行方式三相双三拍运行方式:每次都有两个绕组通电, 通电方式是 AB-BC-CA-AB ,如果通
9、电顺序改为 AB-CA-BC-AB 则 步进电机反转。双三拍分配方式时,步进电动机的步距角也是 30 度 (3) 三相单, 双六拍运行方式: 三相六拍分配方式就是每个周期内有六个通 电状态。这六中通电状态的顺序可以使 A-AB-B-BC-C-CA-A 或者 A- CA-C-BC-B-AB-A 六拍通电方式中, 有一个时刻两个绕组同时通电, 这 是转子齿的位置将位于通电的两相的中间位置。在三相六拍分配 方式下,转子 每一步转过的角度只是三相三拍方式下的一半,步距角是 15 度。 单三拍运行的突出问题是每次只有一相绕组通电,在转换过程中,一相绕组 断电,另一相绕组通电,容易发生失步;另外单靠一相绕
10、组通电吸引转子,稳定 性不好,容易在平衡位置附近震荡,故用的较少。 双三拍运行的特点是每次都有两相绕组通电, 且在转换过程中始终有一相绕 组保持通电状态,因此工作稳定,且步距角与单三拍相同。 六拍运行方式转换时始终有一相绕组通电, 且步距角较小,故工作稳定性好, 但电源较复杂,实际应用较多精品 welcome 4 硬件设计 4.1系统硬件设计 4.1.1最小单片机系统 精品 welcome 5V电源:给系统供电。 复位电路:程序跑飞时复位电路可以使程序从新执行,相当于电脑的重启 晶振:给单片机运行提供时钟。比如电脑的 2.2GHz频率。 EA接高电平:表示运行内部程序存储器下载的程序。 P0
11、口接排阻:P0 口开漏结构,使用时一般接排阻拉高电平。 4.1.2键盘设计 12、15、18、21、24布局选择功能、键盘锁功能以及步进电机转动方向选择功 能。其中有程序决定起作用 4.2系统工作原理论述 该电路中米用独立键盘工作方式,共设有 12个按键,分别提供3、6、9、 精品 welcome 该系统的工作核心CPU为ATMEL公司生产的AT89S52芯片将多种功能的 8位CPU与FPEROM (快闪可编程/擦除只读存储器)结合在一个芯片上,是 一种低功耗、高性能的CMOS控制器,为很多嵌入式控制应用提供了非常灵活 而又价格适宜的方案,其性能价格比远高于同类芯片。它与 MCS-51指令系统
12、 兼容,片内FPEROM允许对程序存储器在线重复编程,也可用常规的 EPROM 编程器编程, 可循环写入/擦除1000次。89S52内含4KB的FPEROM, 一般 的EEPROM的字节擦除时间和写入时间基本上均为 10ms,对于任一个实时控 制系统来说,这样长的时间是不可能在线修改程序的。 CPU为Atmel公司生产的89C51/89C52/89C55 等。出厂所配晶振频率为 11.0592MH,每个机器周期为1.085us,用户更换晶振以提高速度; 存贮器为64K,前4K/8K20K 在CPU内部,其它程序在EPR0M27512 中; 数据存贮器为32K(62256),地址为8000 FF
13、FFH; I /O 扩展 8155,片内 RAM 地址:2000-20FFH ; 精品 welcome 8155命令口地址为:2100H ; A 口地址:2101H B 口地址:2102H C 口地址:2103H ; T 低八位: 2104H T 高八位: 2105H ; 多路模拟开关的使用: IN0: P1=0F8H IN4: P1=0FCH IN1 : P1=0F9H IN5: P1=0FDH IN2: P1=0FAH IN5 : P1=0FEH IN3: P1=0FBH IN7 : P1=0FFH 不掉电数据存贮器为: 500EH-507FH ; 控制板: 160 x109(mm) 供电
14、: +5V300mA +12V100mA -12V100mA ; AT89C51 是一种低功耗、高性能的片内含有 4KB 快闪可编程 /擦除只读存储 器( FPE R 0 M - Flash Programmable and Eraseable Read 0nly Memory ) 的 8 位 CM0S 微控制器,使用高密度、非易失存储技术制造, 并且与 80C51 引脚和指令系统完全兼容; 主要性能: 与 MCS-51 微控制器产品系列兼容; 片内有 4KB 可在线重复编程的快闪擦写存储器 。 引脚简介:精品 welcome 整体介绍: 该系统采用的芯片还有:DS18B20温度传感器、ULN
15、2003A以及MP28GA 四相五线步进电机,并且步进电机在双八拍的方式下工作,步矩为 5.625 ,步 进电机的旋转方向由正反转控制信号控制。 步进电机的步数由键盘输入,可通过 独立键盘S1S9输入的步数分别为 3、6、9、12、15、18、21、24和27步 对应的角度为16.875 、33.725 、151.875 ,且键盘S10具有键盘锁功 能,当键盘上锁时,步进电机不接受输入步数,也不会运转。只有当键盘锁打开, 选择运转方向并且输入步数时,步进电机才开始工作。 电机运转的时候有正转指示灯 D2和反转指示灯D3指示。 电机在运转过程中用温度传感器采集步进电机外表温度 (可设置),如果过
16、热, 则电机停止运转,同时红色指示灯亮,同时蜂鸣器警报响。 5 软件设计 5.1 分析论证 P1.O L_ P1.1 L_ Pl .2 C. Pl U匚 PI.4 匚 Pl .fi 匚 PI 6 r Pl ,7 匚 RST匚 R3 n 匚 (TXD P3,1 r TNTO F3 2 r (INT1 P3 EZ (T0 P3 4 匚 (T1 P3 5 匚 4WFb P3灯匚 (RD P3.7 匚 XTAL2 匸 XTAL1 匚 QND匸 1 40 2 39 3 3B -1 37 5 36 6 35 7 34 3 33 9 32 1O 31 11 30 12 29 23 14 27 16 as 1
17、6 25 117 24 18 23 19 22 20 21 二I VCC PO O (ADO) Zl PC. 1 (ADI ) 二I HU (AO) PO 3 (AD3) J PO.4 (AO4) PO 5 (AOS) Zl PO 6 (AO6) I PO 7 (ADZ) Z1 EA.VPP ALE 4s ROG Z1 PSEN 二I Pl? 7 (A1 5 P2.6 (A14) Zl P2.5 A13 F* 4 (A12 二I P2.3 (A1 1 Zl P2 2 (AID Z3 P2 1 A9) 二P2.0 (AB) 精品 welcome 此步进电机控制电路设计与实现,主要采用了 ULN2
18、003A 驱动芯片,温度 传感器芯片 DS18B20 芯片,独立键盘等,包含步进电机运行驱动,温度采集, 主函数三大功效模块。 5.1.1 步进电机运行驱动模块 由于该系统中没有完全使用 I/O 端口,所以采用了独立键盘的工作方式,系 统工作时, 键盘控制的 I/O 口处于高电平状态, 当按键按下时触发低电平, 驱动 程序实时监测并立即响应执行相应工作。 5.1.2 温度采集模块 该模块的重要功效是对步进电机的外表采集温度, 并且对已设定好的数值进 行比较,从而确定机身温度是否过高,正常时电机正常转动,当温度过高时电机 不再转动,并且蜂鸣器报警,红灯点亮。 5.1.3 主函数模块 该模块重要功
19、效是调动温度采集函数、 步进电机函数中函数, 实现模块化编 程。精品 welcome 5.1.4整体功效 AT89S52 芯片控制 ULN2003A 以及运转步数,当电机外表温度超过 5.2程序流程图 主程序流程图如图所示: 芯片驱动步进电机,扫描键盘输入运行状态 32 C是电机停止转动,并且报警! 精品 welcome 图2程序流程图 5.3程序清单 步进电机驱动函数: /BJDJ.h #ifndef _BJDJ_H_ #defi ne _BJDJ_H #in elude #include vintrins.h #defi ne uchar un sig ned char 精品 welcom
20、e #define uint unsigned int sbit k1=P1A0; sbit k2=PMl; sbit k3=P1A2; sbit k4=P1A3; sbit k5=P1A4; sbit k6=P1A5; sbit k7=P1A6; sbit k8=P1A7; sbit k9=P0A0; sbit k10=P0A1; sbit k11=P0A2; sbit k12=P0A3; void key_scan(); void motor_turn(); void motor_stop(); #endif /BJDJ.c #includeBJDJ.h uchar code FFW8=0
21、 xfe,0 xfc,0 xfd,0 xf9,0 xfb,0 xf3,0 xf7,0 xf6; 精品 welcome uchar code REV8=0 xf6,0 xf7,0 xf3,0 xfb,0 xf9,0 xfd,0 xfc,0 xfe;精品 welcome uchar rate ; extern uchar i=0; /* 延时 void delay(uchar x) uchar i,j; for(i=0;ix;i+); for(j = 0 ; j110 ; j+) ; /* /* 步进电机正转 void motor_ffw(uchar x) uchar i,j; for (j=0;
22、 jx; j+) for (i=0; i8; i+) / 转 1*n 圈 / 一个周期转 45 度 P2 = FFWi; / 取数据 精品 I* welcome delay(150); /* /* /* 步进电机反转 void motor_rev(uchar x) uchar i,j; for (j=0; jx; j+) / 转 1*n 圈 / 退出此循环程序 for (i=0; i8; i+) / 一个周期转 45 度 P2 = REVi; / 取数据 delay(150); / 调节转速 / 调节转速 精品 if(k4=0) welcome *键盘扫描 * void key_scan()
23、i=0; if(k1=0) delay(5); if(k1=0)i=24; if(k2=0) delay(5); if(k2=0)i=46; if(k3=0) delay(5); if(k3=0)i=72; delay(5); if(k4=0)i=96; 精品 if(k8=0)i=192; welcome if(k5=0) delay(5); if(k5=0)i=120; if(k6=0) delay(5); if(k6=0)i=144; if(k7=0) delay(5); if(k7=0)i=168; if(k8=0) delay(5);精品 if(k11=0&k12=1&
24、k10=1) welcome if(k9=0) delay(5); if(k9=0)i=216; /* *电机转动 */ void motor_turn() if(k10=0) delay(5); if(k10=0)P2=P2&0 xf0; if(k11=0&k12=1&k10=1) delay(5); motor_ffw(i);精品 welcome if(k12=0&k11=1&k10=1) delay(5); if(k12=0&k11=1&k10=1) motor_rev(i); void motor_stop() motor_rev
25、(0); 温度传感器 18B20 驱动函数: /DS18B20.h #ifndef _DS18B20_H_ #define _DS18B20_H_ #include #include #define uint unsigned int #define uchar unsigned char extern uchar T;精品 welcome sbit DQ=P2A7; sbit bell=P0A4; sbit led1=P0A7; void delay2(uint t); void ow_reset(void); void write_byte(uchar val); void read_te
26、mp(); void work_temp(); #endif /DS18B20.c #includeDS18B20.h extern uchar data temp_data2=0 x00,0 x00; uchar flag; char presence=1; uchar T; / 温度输入口 11 微秒延时函数 */ void delay2(uint t) for(;t0;t-); 精品 welcome void write_byte(uchar val)18B20 复位函数 void ow_reset(void) presence=1; while(presence) while(pres
27、ence) DQ=1;_nop_();_nop_(); DQ=0; / delay2(50); / 550us DQ=1; / delay2(6); / 66us presence=DQ; / presence=0 delay2(45); / 延时 500us presence = DQ; 继续下一步 DQ=1; 18B20 写命令函数 精品 welcome uchar i; for (i=8; i0; i-) DQ=1; _nop_();_nop_(); DQ = 0; _nop_();_nop_();_nop_();_nop_();_nop_();/5us DQ = val&0 x
28、01; delay2(6); val=val/2; DQ = 1; delay2(1); *18B20 读 1 个字节函数 */ uchar read_byte(void) uchar i; uchar value = 0; for (i=8;i0;i-)/ 最低位移出 /66us / 右移一位 精品 welcome DQ=1; _nop_();_nop_(); value=1; DQ = 0; / _nop_();_nop_();_nop_();_nop_(); /4us DQ = 1; _nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0
29、 x80; delay2(6); /66us DQ=1; return(value); void read_temp() ow_reset(); / 总线复位 write_byte(0 xCC); / 发 Skip ROM 命令 write_byte(0 xBE); / 发读命令 temp_data0=read_byte(); / 温度低 8 位 temp_data1=read_byte(); / 温度高 8 位 ow_reset();读出温度函数 */ 精品 welcome write_byte(0 xCC); / Skip ROM write_byte(0 x44); / 发转换命令 vo
30、id work_temp() T=(temp_data0&0 xf0)4)|(temp_data1&0 x07)31) motor_stop(); led1=0; bell=1; delay2(1000); else led1=1; bell=0; motor_turn(); 发转换命令 / 读出 18B20 温度数据 / 处理温度数据精品 welcome 6 调试过程及分析 编写好的源程序在 Keil 编译后呈现很多错误,这些错误有很多时平时的实 验碰到过的, 例如: 字母开头忘加 0, 零和字母 O 弄混杂了, 有些标号用了几次, CJNE 写成了 CJNZ 等等,幸好这些
31、错误在平时的实验中碰到了,所以改错误很 轻易,。除了常见的错误外,还有几条错误时在前几次实验都没有出现过,如: AJMP 跳转指令跳不回指定的地位,是由于跳转的长度大于 AJMP 跳转的长度, 最后只好用 LJMP 跳转后才跳到指定的地位。 在前期的程序编写和几天的上机调 试,使我又获得了很多新的知识, 由于前期编写程序时查了很多材料学到了很多 知识,这几天的调试更时获得很新的知识,由于程序中又很多的错误,为了修正 错误必须看书或向别人请教, 在这个过程中无意识的获得了很多知识。 同时也使 我对单片机更感兴趣了,这点我感到很重要,相信这会对以后的学习有所帮助。精品 welcome 7 设计总结
32、 本次课程设计是用ZY15MCU12BD综合单片机实验箱及串口电路设计单片 机驱动步进电机电路,经过两个星期的调试,成果满足基本设计请求,验证无误。 设计重要用到了多种芯片,程序也比较长 ,比较麻烦,同时也碰到了不少艰苦, 尤其是关于校时模块和时钟与秒表之间切换的设计实现。 关于显示模块,在以前 的实验中做过,所以题目很轻易解决。 精品 welcome 通过本次设计,我懂得了时钟的设计流程,尤其是硬、软件的设计方法以及精品 welcome 键盘显示电路的基础功效及编程方法和键盘电路和显示电路的一般原理, 步了解了 8031 定时器的应用和中断 CPU 程序的编程方法,开辟了思路, 了分工协作才能和分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年绿色生态建筑农民工劳动合同示范3篇
- 二零二五年度防盗门行业市场分析报告合同2篇
- 二零二五版加油站智能监控与数据分析合同3篇
- 二零二五白云区观白活力中心房地产合作开发投资框架合同2篇
- 二零二五年度智能家电产品研发与销售合同3篇
- 二零二五版养殖企业与个体养牛户合作合同3篇
- 二零二五版数据中心机房租赁及数据备份服务合同2篇
- 基于2025年度5G网络技术研发合作合同2篇
- 二零二五版拌和站产品质量追溯与售后服务合同2篇
- 二零二五版建筑工程土方中介合同纠纷调解机制3篇
- 物业费收取协议书模板
- 电工(中级工)理论知识练习题(附参考答案)
- 工业设计概论试题
- 2024-2030年中国商务服务行业市场现状调查及投资前景研判报告
- 起重机的维护保养要求与月度、年度检查记录表
- 消防设施维护保养记录表
- 城区生活垃圾填埋场封场项目 投标方案(技术方案)
- 垃圾分类巡检督导方案
- 大一护理生涯发展展示
- 五年级上册数学应用题100题及答案
- 新生儿急救与复苏培训
评论
0/150
提交评论