单片机步进电机.doc
《单片机步进电机.doc》由会员分享,可在线阅读,更多相关《单片机步进电机.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流单片机步进电机.精品文档.大连理工大学本科设计报告题目: 步进电机转速控制系统设计 步进电机转速控制系统设计一、 设计要求使用步进电机作为被控制对象;由ZLG7290做人机对话平台;利用单片机的P1(8位)和P3(部分口线)构造系统。利用ZLG7290的键盘控制直流电机,也可以利用ADC模块(与电位器配合),利用电位器控制转速;利用ZLG7290的8位LED数码管显示电机转向、转速参数显示。二、 设计分析及系统方案设计系统分析: 程序为无限循环结构。先调用A/D转换程序,再调用BCD转换程序,利用ZLG7290不断显示数码管的数字,中断程序包
2、括键盘输入电机旋转方向,电位器控制电机转速。算法描述:1)30H-37H(DATA1):显示缓冲区,装载待显示的字形码,实验中只用到4个数码管,分别是30H,31H,34H,35H,不需要的32H,33H,36H,37H赋熄灭码#00H。不断调用WRNBYT子程序将数据写入ZLG7290的10H-17H,显示数据。2)单双八拍相序放在20H-27H中,高四位都赋F,这样不会影响低四位步进电机相序节拍信号的输出,为接下来中断控制方向和转速做准备。3)设定定时器T1定时方式1,TH1和TL1赋初值#00H(TH1原始为#00H),A/D转换的数据传送给TH1,每当T1定时时间到时,通过P1口的低四
3、位(P1.0-P1.3)发出步进电机的一个相序节拍,定时时间的改变就可改变电机转动的速度。4)拆分子程序。将累加器A中的数据拆分为两个四位16进制数并查表,为显示方向和电机速度做准备。5)中断服务程序INT_7290,2A-2D装载从ZLG7290的00H单元开始读出的连续4个字节数据,其中2BH中的就是键值。当S1或S2键按下时,利用ZLG7290的/INT信号引发单片机的一个中断,取键值后调用拆分查表程序将方向显示在数码管上。其中S1键按下电机逆时针转动,S2键按下电机顺时针转动。6)控制转速子程序T1_INT,将A/D转换结果送给累加器A,低四位清零后送给定时器高八位,判断方向位,利用C
4、JNE命令,若方向位是1则执行接下来的语句,若不是则跳转到LOOP11,再判断时候等于2,若是则执行下来的语句,若不是则跳转到DO,不做任何操作,即电机停止转动。7)A/D转换子程序,将转换结果送3FH中,再经过数据滤波,采集256次相加再取高8位数据即为平均值送3EH中。8)BCD转换子程序,将3EH中数据与#0F0相与,取出高四位,再半字节交换,寄存器B中送10,相除后A中为十位数,B中为个位数,在此调用拆分子程序查表的相应字形码后送30H,31H显示。三、系统电路图四、 外围接口模块硬件电路功能描述步进电机是一种将脉冲信号变换成相应角位移或线位移的电磁装置,当有脉冲输入时步进电机一步一步
5、的转动,每给一个脉冲信号,就转过一定的角度。步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。ZLG7290B:ZLG7290B是数码管动态显示驱动、键键盘扫描管理芯片。能够驱动8位共阴极结构的LED数码管或64位独立的LED,同时还能扫描管理多达64个按键(S1-S56、F0-F7)的扫描识别。本实验用到了4个数码管显示方向和速度,两个按键S1,S2控制方向的改变。TLC549是被广泛应用的CMOS8位A/D转换器。该芯片有一个模拟输入端口,三态的数据串行输出接口可以方便地和微处
6、理器或外围设备连接。TLC549仅仅使用输入/输出时钟和芯片选择信号控制数据。本实验中通过电位器将连续的模拟的电阻值经过TLC549转换成8为二进制数字信号。五、 主程序中主要变量定义变量名称RAM单元/寄存器功能DATA130H显示缓冲区首地址20H相序首地址28HA/D转换数据滤波求和中的高八位29HA/D转换数据滤波求和中的低八位2AH-2DH读出的ZLG7290de 00H-03H数据存放地址2EH相序循环次数8FX2FH控制转向标志3CH相序列表中最后一个相序地址3DH相序列表中第一个相序地址3EH滤波结果存放地址3FHA/D转换结果存放地址六、系统软件中各个子程序的功能描述子程序名
7、称入口参数出口参数功能 描述CFR3、R4R3、R4将数据拆分为两位16进制数查表得对应字形码INT_7290R0、R7、R2、R3、R4R3、R4显示电机转动方向T1_INT3FHA控制电机转动速度ADZH无A模拟信号转换为数字信号BCD_CONTAR3、R416进制数转换为10进制数DELAYR0、R1R0、R1延时子程序使显示稳定RDADDR0,R2,R3,R4,R7R0到R0+7多字节读操作WRNBYTR0,R2,R3,R7无多字节写操作STA无无IC启动信号STOP无无IC停止信号MACK无无发送IC应答信号MNACK无无发送IC非应答信号CACK无F0IC应答检测WRBYTA无IC
8、发送一个字节RDBYT无R2IC接收一个字节七、主程序程序流程图T1定时时间到/INT0主程序入口TL1赋初值#00HTH 1赋AD转换结果读出ZLG7290B内部00H-03H的数据于2A-2D中对ZLG7290B复位开INT0,T1中断NFX=#01?设定T1工作方式和初值NY取键值、拆分查表建立相序表FX=#02?逆时针转相序加1送显示缓冲区Y建立变量缓冲区停止顺时针转相序减1RETIAD转换模块INT_7290中断服务子程序BCD转换模块调WRNBYT写入数据到ZLG7290的显示缓冲区NDJNE 3EHMOV 3EH,#08HMOV 3DH,#20HMOV 3CH,#27H延时子程序
9、Y主程序流程图DORETIT1_INT中断服务子程序八、程序清单;#ADC模块连线#DATBITP3.3CLKBITP3.4CSBITP3.5;#键盘控制模块连线#SDABITP1.4SCLBITP1.5 WSLAEQU070HRSLAEQU071HFXEQU2FH;将控制转向标志放在2FH单元DATA1EQU30H;变量缓冲区的首地址ORG8000HLJMP8100HORG8003HLJMPINT_7290;控制转向的中断服务程序ORG801BHLJMPT1_INT;控制转速的中断服务程序; 初始化部分 ORG8100HSTART: MOVSP,#60HCLRP1.7 ;7290复位LCAL
10、LDELAYSETBP1.7SETBEA ;开INT0中断SETBEX0SETBIT0 ;触发极性为下降沿 SETBET1;开T1中断SETBTR1MOVTMOD,#10H;设定定时器T1工作方式及初值MOVTH1,#00HMOVTL1,#00HMOV3DH,#20HMOV3CH,#27HMOV2EH,#08HMOVFX,#00HMOV20H,#0F8H;相序放在20H27H中MOV21H,#0FCHMOV22H,#0F4HMOV23H,#0F6HMOV24H,#0F2HMOV25H,#0F3HMOV26H,#0F1HMOV27H,#0F9HMOV 34H,#0DAH MOV 35H,#0FC
11、H;用34H、35H显示FLAG;用30H31H显示ADC转换结果MOVDATA1+7,#00H;熄灭MOVDATA1+6,#00H;熄灭MOVDATA1+3,#00H;熄灭MOVDATA1+2,#00H;向7290B写入数据LOOP:LCALLADZH;数据滤波LCALLBCD_CONT;转换成十进制MOVR7,#08HMOVR2,#10HMOVR3,#WSLAMOVR0,#DATA1LCALLWRNBYT;调显示子程序LCALLDELAY ;使显示稳定 SJMPLOOP LEDSEG:DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4H;0-7的字形码DB0FEH
12、,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH;8-F的字形码DB0FAH,1EH,12H,00H;a,t,= 和熄灭码;拆分程序(将A中的数据拆分为两个四位16进制数并查表);( 结果在R4、R3中 ) CF:PUSH02H ;将A中的数据拆分为两个四位16进制数并查表PUSHDPH PUSHDPLMOVDPTR,#LEDSEGMOVR2,AANLA,#0FHMOVCA,A+DPTRMOVR3,AMOVA,R2SWAPAANLA,#0FHMOVCA,A+DPTRMOVR4,APOPDPLPOPDPHPOP02HRET ; 中断服务程序 INT_7290:(INT0),显示FLA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 步进 电机
限制150内