1、江南大学单片机课程设计步进电机江南大学物联网工程学院课程设计报告课程名称: 单片机原理及应用 设计题目: 步进电机控制 班 级: 姓 名: 学 号: 指导教师: 评 分: 2012年6月28日目录一、设计要求 21、设计目的及要求 22、实验设备及说明 2二、工作原理 21、单片机工作原理 22、步进电机工作原理 43、LED数码管显示原理 54 、按键工作原理 65、系统工作原理 6三、程序设计 81、程序设计原理 82、 系统工作流程图: 93、程序代码: 10四、设计总结 141、设计特点 142、设计总结 14五、参考文献 15一、设计要求1、设计目的及要求通过具体小型测试系统设计,实
2、践单片机系统设计、上机调试及再设计的全过程,以加深对单片机内部结构、原理功能和指令系统的进一步理解,并进一步学习单片机开发系统的原理与应用以及一些外围芯片的接口和编程调试方法与技巧,初步掌握单片机系统的硬、软件设计技术及调试技巧。 设计要求:(1)电机转速可以平稳控制(2)通过键盘和显示器可以设置电机的转速(3)显示电机的速度趋势2、实验设备及说明名称型号数量RZ-51V20单片机开发板RZ-51/AVR 2009DEMO1PC机1Usb转串口线、电源线2表1 实验设备二、工作原理1、单片机工作原理89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,俗称单
3、片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。在单片机控制步进电机设计中,单片机直接控制的有LED数码管、键盘,及驱动电机芯片ULN2003A。2、步进电机工作原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器
4、接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。图 2步进电机硬件原理图28BYJ-48硬件特性:1.额定电压:12VDC(另有电压:5V、6V、24V)2.减速比:1/64(另有减速比:1/16、1/32) 3.步距角:5.625/64 4.驱动方式:4 相 8 拍5.直流电阻:200 6.空载牵入频率:600Hz 7.空载牵出频率:1000Hz 8.牵入转矩:34.3mN.m(120H
5、z) 本设计采用四相四拍设计,即A-B-C-D-A,调速范围为113rad/min。由于单片机带负载能力弱,则步进电机有ULN2003A芯片作为驱动,而单片机直接控制该芯片。3、 LED数码管显示原理LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺
6、寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。数码管动态显示界面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp 的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的
7、字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。4、 按键工作原理 图 4 按键原理图 当按键没有被按下时,P1口高四位和P3口读数都为高电平。当有按键按下时,则该键位变为低电平,其中开关键K1、K2控制单片机外部中断,则不需要通过程序扫描读数。而K5、K6则需要在主函数中扫描读数得到键值。5、系统工作原理本设计共分为四个模块:控制模块、显示模块、步进电机、按键模块。控制模块为80C51单片机,显示模块是MT03641BR四位LED数码管,按键模块共有4个按键,其中两个
8、按键与单片机外部中断INT0、INT1相连。单片机与UNL2003A芯片由5V电源供电,系统原理图如下:三、程序设计1、程序设计原理已知单片机与步进电机硬件参数,可以求出在四相四拍控制下,该电机转动一周所需脉冲数为2048个,如果每分钟转动1圈时,每个脉冲周期为29297s。通过Excel计算,可得转速由每分钟113转的脉冲周期,从而给定时器1定时。脉冲周期如下表。V rad/minT s/radTH1TL1single step/s1608D8F29296.875230C6C714648.4375320D9DA9765.625415E3637324.21875512E91C5859.3756
9、10ECED4882.812578.5714285EFA64185.26785787.5F1B13662.10937596.6666666F3483255.208333106F48E2929.6875115.4545454F5982663.352273125F6762441.40625134.6153846F7322253.605769表2 TH1、TL1初值表将TH1、TL1以查表的形式输出。控制电机的方式为四相四拍,由单片机P1口第四位输出,顺序为A-B-C-D-A。LED数码管显示的方式为由P2口第四位扫描进行段选,再由P0口输出信号点亮LED进行位选。由于数码管、键盘、步进电机的控制分
10、别运用了定时器0中断、外部中断、定时器1中断,所以初始化的时候首先开启中断。为了避免中断的冲突,需设置中断优先级。这里将控制步进电机的定时器1及键盘控制的外部中断设置为优先中断,从而避免了与显示中断的冲突。2、 系统工作流程图: 3、程序代码:StartEnd bit 01H ;起动机停止标志MinSpd EQU 1 ;启动转速MaxSpd EQU 14 ;最高转速+1Speed DATA 23H ;转速计DjCount DATA 24H ;控制电机输出值,初始为0EHDispBuf DATA 8H ;显示缓冲区 ORG 0000H AJMP MAIN ORG 000BH JMP DISP ;
11、定时器0中断入口 ORG 001BH JMP DJZD ;定时器1中断入口 ORG 0003H JMP StartStop ;键盘K1中断入口 ORG 0013H JMP KeySty ;键盘K2中断入口 ORG 0030H;-;-主程序-MAIN: MOV SP,#5FH MOV P1,#0FFH MOV DjCount,#11111110B MOV Speed,#MinSpd ;起始转速送入计数器 CLR StartEnd ;停转状态 MOV TMOD,#00010001B MOV TH0,#0F4H MOV TL0,#48H MOV TH1,#0FFH MOV TL1,#0FFH ;同上
12、,赋定时器处置 MOV IE,#0FFH ;开中断 SETB PT1 SETB PX1 ;同上,设置中断优先级 SETB IT0 SETB IT1 ;同上,以边沿方式触发LOOP: ACALL KEY ;键盘程序 ACALL KEYPROC ;调用键盘程序M_NEXT1: MOV A,Speed MOV B,#10 DIV AB MOV DispBuf+1,B ;最低位个位 MOV B,#10 DIV AB MOV DispBuf+2,B ;求十位 MOV DispBuf+3,A ;求百位 JB StartEnd,M_NEXT2 MOV P0,#0FFH MOV P1,#0FFHM_NEXT2
13、: AJMP LOOP ;主程序结束;-;-延时1ms-D1MS: MOV R2,#0AHLOOP1_1MS:MOV R1,#18HLOOP2_1MS:NOP NOP DJNZ R1,LOOP2_1MS DJNZ R2,LOOP1_1MS RET;-;-键位功能实现-KEYPROC: JNB ACC.4,UpSpd ;分析键的代码,某位被按下,则该位为1 JNB ACC.5,DowSpd AJMP KEY_RETStartStop: SETB StartEnd ;启动 SETB TR1 ;启动电机 SETB TR0 ;开始显示转速 RETIKeySty: CLR StartEnd ;停止 CL
14、R TR1 ;关闭电机 CLR TR0 ;关闭显示 RETIUpSpd: INC Speed MOV A,Speed CJNE A,#MaxSpd,K1 ;到了最多的次数? DEC Speed ;是则减去1,保证下次仍为该值K1: AJMP KEY_RETDowSpd: MOV A,Speed CJNE A,#MinSpd,K2 ;到了最小的次数? INC Speed ;是则加1,保证下次仍为该值K2: DEC Speed KEY_RET: RET;-;-获取键值程序-KEY: MOV A,P1 ;将P1值送A MOV A,P1 ;将P1值送A ANL A,#30HKEY_NEXT:RET ;
15、-DJZD: PUSH ACC PUSH PSW ;保护现场 MOV A,Speed SUBB A,#MinSpd MOV DPTR,#DjH MOVC A,A+DPTR ;查表,赋定时器1初值 MOV TH1,A MOV A,Speed SUBB A,#MinSpd MOV DPTR,#DjL MOVC A,A+DPTR MOV TL1,A MOV A,DjCount JNB ACC.3,D_NEXT1 JMP D_NEXT2D_NEXT1: MOV DjCount,#01111111B MOV A,DjCountD_NEXT2: RL A;左移 MOV DjCount,A ;回存 CPL
16、A ORL A,#0F0H MOV P1,A POP PSW POP ACC RETI;-;-定时器1初始值-DjH: DB 8DH,0C6H,0D9H,0E3H,0E9H,0ECH,0EFH,0F1H,0F3H,0F4H,0F5H,0F6H, 0F7HDjL:DB 8FH,0C7H,0DAH,63H,1CH,0EDH,0A6H,0B1H,48H,8EH,98H,76H,32H;-;-显示程序-DISP: MOV TH0,#0F4H MOV TL0,#48H PUSH ACC PUSH PSW ;同上,保护现场 MOV A,#0 MOV DPTR,#BITTAB MOVC A,A+DPTR M
17、OV P2,A ;(个位)位选 MOV A,DispBuf+1 MOV DPTR,#DISPTAB MOVC A,A+DPTR MOV P0,A ;段选 ACALL D1MS ;调用延时1ms程序 MOV A,#1 MOV DPTR,#BITTAB MOVC A,A+DPTR MOV P2,A ;(十位)位选 MOV A,DispBuf+2 MOV DPTR,#DISPTAB MOVC A,A+DPTR MOV P0,A ;段选 ACALL D1MS MOV A,#2 MOV DPTR,#BITTAB MOVC A,A+DPTR MOV P2,A ;(百位)位选 MOV A,DispBuf+3
18、 MOV DPTR,#DISPTAB MOVC A,A+DPTR MOV P0,A ;段选 ACALL D1MS POP PSW POP ACC RETI;-;-显示功能表-BITTAB: DB 0BFH,0DFH,0EFH ;位选DISPTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;段选;- END四.设计总结1、设计特点(1)该设计运用汇编语言编写,系统执行效率高。(2)由于显示、按键及步进电机都由中断控制,响应速度高,不必执行复杂的扫描程序减少了程序占用的内存。(3)用定时器定时,及查表赋初值,使转速精度高,转速可调范围广。(
19、4)中断优先级的设置使可靠性高。(5)速度越大,定时器1定时时间越少,容易干扰LED显示。2、设计总结我通过基于单片机的步进电机控制器设计,实践单片机系统设计、上机调试及再设计的全过程,以加深对单片机内部结构、原理功能和指令系统的进一步理解,并进一步学习单片机开发系统的原理与应用以及一些外围芯片的接口和编程调试方法与技巧,初步掌握单片机系统的硬、软件设计技术及调试技巧。老师课程上没有讲过步进电机的设计,不过课程设计需要用单片机,在设计之前,我好好复习了课本,全面梳理了一下51系列单片机的系统框图、功能和应用、指令系统以及扩展的知识点,对这次课程设计需要的硬件进行了预算和统计。硬件原理图设计还是
20、比较简单。首先就是选择显示模式LED数码管显示。相对于液晶显示而言,LED数码管显示很熟悉也很简单,于是我选用了LED数码管显示。接着就是步进电机的原理图设计,大致想法是:用P3口中断去控制电机的启动/停止和调速。通过不断调试与反复修改设计的硬件连线图大致是:单片机P1口输出控制步进电机,用排线连接到步进电机扩展板IOP口,步进电机接到点阵&步进电机扩展板的步进电机接口。然后就是确定工作原理:单片机上电,定时器初始化:显示初始数据和设定速度,步进电机停机等待启动按钮按下;运行中,能随时改变速度,通过循环实现步进电机平稳可控工作。最后剩下的工作就是软件设计了。按照一般的设计思路,我尝试着按照步骤
21、来设计。先是画好了程序框图,经过不断改进,得到了原始的程序流程图。软件设计的时候我运用了汇编语言,上网查过步进电机控制的资料后,不断的上机调试,不断的修改,不断地和同学交流,最后,得到了正确的程序。这次单片机课程设计不仅复习巩固了学到的知识,还扩展了知识。通过这次课程设计,我们从纯理论的人是上升到了实践认识,锻炼了创造能力,独立思考能力,动手能力和整合能力,过程虽然很曲折和艰难,但是结果还是很令人满意。通过这次的实践,巩固了对单片机的功能应用、原理和指令系统的掌握,复习了protel99SE 原理图的制作,熟悉了上机调试的全过程。五、参考文献1丁元杰编著单片微机原理与应用,北京:机械工业出版社 2005.7。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1