ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:465.17KB ,
资源ID:17096983      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17096983.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于ARM的步进电机控制课程设计Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于ARM的步进电机控制课程设计Word文档下载推荐.docx

1、 第二种方案中采用定时器定时中断的方式,只需要几条简单的指令就可以产生具有一定频率和数目的脉冲信号,而且在整个脉冲产生过程中,CPU 可用来处理其他工作,大大提高了系统的实时处理能力。 考虑到系统的实时性及程序的繁简程度我选择了第二种方案。3、硬件电路3.1 硬件结构 (1)EasyARM2138开发板是广州周立功公司设计的EasyARM系列开发套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、单电源供电、LQFP64封装的LPC2138,具有JTAG仿真调试、ISP编程等功能。 开发板上提供了一些键盘、LED、蜂鸣器等常用功能部件,还具有RS232接口电路、I2C存储器电路。另

2、外,用户也可以更换兼容的CPU进行仿真调试,如LPC2132、LPC2138、LPC2142等。灵活的跳线组合(开发板内使用的所有I/O均可断开连接),还有用户I/O接口,极大地方便了用户进行32位ARM嵌入式系统的开发实验。 (2) 定时器(3)中断LPC2138 通过向量中断控制器(VIC )管理中断。外设中断信号需要经过2 个开关才能 到达ARM 内核,真正产生异常,逻辑示意图如下图所示。如果在VIC中使能了相应外 设的中断,外设中断才能到达VIC并向内核发送中断请求;只有使能了内核中断IRQ或者 FIQ,内核才能真正产生异常。硬件图如下中断的过程示意图如下:(4)按键的连接图不按下时为

3、高电平,按下时变为低电平。(5)UART0 特性:管脚描述:(6)步进电机接口 由于LPC2138的GPIO驱动能力有限,必须通过ULN2003达林顿集成驱动芯片驱动步进电机,在步进电机和驱动电路间连接了电阻,防止控制紊乱而造成的电机损坏。3.2 器件连接说明(1)在EasyARM2138开发板上,当跳线JP6分别选择TXD0和RXD0端时方可进行UART0通信实验。(2)KEY1连接P0.16;KEY2连接P0.17;KEY3连接P0.18, KEY4连接P0.19, KEY5连接P0.20,KEY6连接P0.21。(3)步进电机的四个输入端口分别接EasyARM2138开发板上P2.2P2

4、.5四个端口。4、软件设计系统软件采用C语言编程,程序详情请参见附录。程序的流程图如下: 否 是 是 否 4、调试按照器件连接说明连接好EasyARM2131开发板上的跳线,然后将步进电机与EasyARM2131开发板连接上。运行程序,开始调试。在一开始的时候,由于用定时器设置的中断时间太长导致看不见电机有明显的转动。通过修改定时时间,渐渐地电机转动变得明显了。然后测试按键功能时发现,案件的检测不够灵敏,有时候需要按几下才能检测到,后来经过修改延时消抖的时间,将其变短且在每次按下按键时不急于松开而保持一会儿,这样按键检测变得较为灵敏了。在调试中发现:单双八拍和双四拍要比单四拍的转动更加有效。单

5、四拍模式的时候电机只是震动并没有转动,用肉眼观察不到转速的快慢,故最后舍弃了这种模式。 调试的最终结果是:程序开始时电机进入模式0,如果没有按键按下则一直保持模式0。当有按键按下时,且按键为KEY1KEY4则电机根据不同按键的按下进入不同的转动模式(KEY1对应模式0:八拍正转,KEY2对应模式1:八拍反转,KEY3对应模式2:双四拍正转,KEY4对应模式3:双四拍反转)。当按键KEY5按下时,电机转速变慢,且随着KEY5按下次数的增多电机逐渐变慢直至停止;当按键KEY6按下时,电机转速变快,且随着KEY5按下次数的增多电机逐渐变快。同时在上位机上可以看见当前的转速。5、课程设计体会一方面,通

6、过这一周的课程设计,我对课本上关于LPC2138的硬件结构的知识有了更加深刻的理解,而且对其用法掌握得更加熟练。在课程设计过程中,能够不断地发现问题,并想办法解决,如此提高了我自己解决问题的能力。在编写程序方面,我对ARM7编程结构和技巧也有了深刻的理解和领会。此次课程设计还让我知道什么是实时系统以及如何构建一个简单的实时系统。现在我已经基本掌握了构建实时系统的方法。还有我明白了流程图的重要性,以前在编程的时候,我从不写流程图,直接开始写程序,这样出现了不该出现的问题。但这次课程设计时,我试着先写出流程图然后按照流程图编写程序,结果错误少了很多,即使有错误只要根据流程图一查就知道错在哪里,这让

7、我节省了大量的时间和精力。所以我认识到,以后要编写程序时,先写流程图是很有必要的。另一方面,我感觉这一周的课程设计我自己的效率太低。有时候被一些问题困惑了很久,但经过老师的指点,我才恍然大悟,原来只要换个方式思考问题就能想到很好的方法。6、参考文献1 周立功.深入浅出ARM7LPC213X/214X(上册)M.北京:北京航空航天大学出版社,2008:146-175,226-240,275-286.2 周立功.ARM嵌入式系统实验教程(三)M.北京:北京航空航天大学出版社,2005:134-140.3 冷洪滨,邬义杰.基于计数器/定时器的步进电机可编程控制接口电路设计J北京:组合机床与自动化加工

8、技术,2004.4 周明德.微型计算机硬件软件及其应用.北京:清华大学出版社 ,1993.附录:实训程序#include config.h#define HC595_CS (1 29) / P0.29口为74HC595的片选#define LED1 118 /P1.18#define LED2 119 /P1.19#define LED3 120 /P1.20#define LED4 121 /P1.21#define bj_qd 0x0f 22 /步进电机驱动脚p1.22p1.25uint32 bj8=1 22,3 22,1 23,3 23,1 24,3 24,1 25,9 22;/ 0A,

9、 1AB 2B 3BC 4C 5CD 6D 7DA const uint32 KEY1 = 1 16; / P0.16连接KEY1const uint32 KEY2 = 1 17; / P0.17连接KEY1const uint32 KEY3 = 1 18; / P0.18连接KEY1const uint32 KEY4 = 1 19; / P0.19连接KEY1const uint32 KEY5 = 1 20; / P0.20连接KEY1const uint32 KEY6 = 1 0; dly-) for(i=0; i= 80) x = 0; y+; /* 函数名称:MSPI_Init()初始

10、化SPI接口,设置为主机。void MSPI_Init(void) PINSEL0 = (PINSEL0 & (0xFF 8) | (0x55 8) ; SPCCR = 0x52; / 设置SPI时钟分频 SPCR = (0 3) | / CPHA = 0, 数据在SCK 的第一个时钟沿采样 (1 4) | / CPOL = 1, SCK 为低有效 5) | / MSTR = 1, SPI 处于主模式 (0 6) | / LSBF = 0, SPI 数据传输MSB (位7)在先 7); / SPIE = 0, SPI 中断被禁止/*MSPI_SendData()向SPI总线发送数据data 待

11、发送的数据返回值为读取的数据uint8 MSPI_SendData(uint8 data) IOCLR = HC595_CS; / 片选74HC595 SPI_SPDR = data; while( 0 = (SPI_SPSR & 0x80); / 等待SPIF置位,即等待数据发送完毕 IOSET = HC595_CS; return(SPI_SPDR);/* 此表为LED0F以及L、P的字模 */uint8 const DISP_TAB10 = / 0 1 2 3 4 5 6 7 8 9 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90 ;

12、qudong()驱动步进电机转动void qudong() IO1SET=0x0f22;/不输出switch ( bj_mod) case 0: /八拍正转 IO1CLR=bjcnt%8; break; case 1:/八拍反转 IO1CLR=bj7-(cnt%8); case 2:/双四拍正转 IO1CLR=bj(cnt%4)*2+1; case 3:/双四拍反转 IO1CLR=bj7-(cnt%4)*2; default:break; T0IR = 0x01; /* 清除中断标志 */ VICVectAddr = 0x00; /* 通知VIC中断处理结束 */IRQ_Timer0()定时器

13、0中断服务程序,定时调用qudong()程序,使步进电机按节拍转动。void _irq IRQ_Timer0 (void) t+; cnt+; qudong(); MSPI_SendData(DISP_TABi); / 发送显示main()程序初始化,AD采样和按键调节电机转速,通过串口向上位机发送显示数据。* 调试说明 :需要将跳线JP6分别选择TXD0和RXD0端* KEY1KEY6连接P0.16P0.21,步进电机四个输入端分别接P1.22P1.25。uint8 rcv_data;int main (void) uint32 ADC_Data,temp,zhuansu=100,zhuan

14、su1=100,zhuansu2=200; uint32 bapaizhengzhuan,bapaifanzhuan,shsipaizhengzhuan,shsipaifanzhuan; char str20; PINSEL0 = 0x00005505; / 设置SPI管脚连接 PINSEL1 = 0x10000000; /PINSEL1 = 1 28; / P0.30连接到AD0.3 IODIR = HC595_CS; PINSEL2 = PINSEL2 & (0x08);/ P125:16连接GPIO IO1DIR =bj_qd; / 设置bjdj_qd控制口为输出 UART0_Init(

15、); MSPI_Init(); / 初始化SPI IRQEnable(); /* IRQ中断使能 */ /* 定时器0初始化 */ T0TC = 0; /* 定时器设置为0 */ T0PR = 0; /* 时钟不分频 */ T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志 */ T0MR0 = Fpclk /zhuansu; /* 0.5秒钟定时 */ T0TCR = 0x01; /* 启动定时器 */ /* 设置定时器0中断IRQ */ VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */ VICVectCntl0 = 0x20

16、 | 0x04; /* 设置定时器0中断通道分配最高优先级 */ VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */ VICIntEnable = 1 0x04; /* 使能定时器0中断 */ if(IO0PIN & KEY1) = 0) /KEY1 MIDE0 DelayNS(10); if(IO0PIN & KEY1) = 0) bj_mod=0; i=0; MSPI_SendData(DISP_TAB0); / 发送到数码管显示 bapaizhengzhuan = 3*zhuansu/20; sprintf(str, bapaizhengzhuan:%4d,bapaizhengzhuan);/ 发送到上位机显示 ISendStr(0,4,0x30,str); while(IO0PIN & KEY1) = 0); KEY

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1