基于单片机的步进电机转速控制设计详解(附程序)

上传人:I*** 文档编号:229992386 上传时间:2021-12-26 格式:DOCX 页数:20 大小:137.08KB
返回 下载 相关 举报
基于单片机的步进电机转速控制设计详解(附程序)_第1页
第1页 / 共20页
基于单片机的步进电机转速控制设计详解(附程序)_第2页
第2页 / 共20页
基于单片机的步进电机转速控制设计详解(附程序)_第3页
第3页 / 共20页
基于单片机的步进电机转速控制设计详解(附程序)_第4页
第4页 / 共20页
基于单片机的步进电机转速控制设计详解(附程序)_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于单片机的步进电机转速控制设计详解(附程序)》由会员分享,可在线阅读,更多相关《基于单片机的步进电机转速控制设计详解(附程序)(20页珍藏版)》请在金锄头文库上搜索。

1、 基于单片机的步进电机转速控制设计详解(附程序) 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。步进电机的调速一般是改变输入步进电机的脉冲的频率来实现步进电机的调速,因为步进电机每给一个脉冲就转动一个固定的角度,这样就可以通过控制步进电机的一个脉冲到下一个脉冲的时间间隔来改变脉冲的频率,延时的长短来具体控制步进角来改变电

2、机的转速,从而实现步进电机的调速,本文主要介绍基于单片机的步进电机转速控制设计详解,文章最后附上程序。基于单片机的步进电机转速控制设计详解本次设计以CPU选用89C5l作为步进电机的控制芯片89C51的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上使用方便等优点,而且完全兼容MCS5l系列单片机的所有功能。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFAlsh ProgrAmmABle And ErAsABle ReAd Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的M

3、CS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。显示电路的用8279芯片来驱动,8279芯片分别接两排显示器,每排为4位显示,分别用来显示步进电机的实际转速与给定转速。8279与CPU的连接框图如4-11所示:8279芯片的具体介绍如下;1) DB0DB7:双向数据总线。在CPU于827数 据与命令的传送。2) CLK:8279的系统时钟,100KHZ为最佳选择。3) RESET:复位输入线,高电平有效。当 RESET 输入端出现高电平时,8279被初始复位。

4、4) /CS:片选信号。低电平使能,使能时可将命令写入8279或读取8279的数据。5) A0:用于区分信息的特性。当A0=1时,CPU向8279写入命令或读取8279的状态;当A0为0时,读写一数据。6) /RD:读取控制线。/RD=0,8279会送数据至外部总线。7) /WR:写入控制线。/WR=0,8279会从外部总线捕捉数据。8) IRQ:中断请求输出线,高电平有效。当FIFO RAM 缓冲器中存有键盘上闭合键的键码时,IRQ线升高,向CPU请求中断,当CPU将缓冲器中的输入键数的数据全部读取时,中断请求线下降为低电平。9) L0SL3:扫描输出线,用于对键盘显示器扫 描。可以是编码模

5、式(16对1)或译码模式(4对1)。10) RL7:反馈输入线,由内部拉高电阻拉成高电平,也可由键盘上按键拉成低电平。11) FT、CNTL/STB :控制键输入线,由内部拉高电 阻拉成高电平,也可由外部控制按键拉成低电平。12) TB03、OUTA03:显示段数据输出线,可分别作为两个半字节输出,也可作为8位段数据输出口,此时OUTB0为最低位, OUTA3位最高位。13) 消隐输出线,低电平有效。当显示器切换时或使用消隐命令时,将显示消隐。8279的初始化程序如下:INIT:MOV DPTR,#7FFFH ;置8279命令/状态口地址MOV A,#0D1H ;置清显示命令字MOVX DPT

6、R,A ;送清显示命令WEIT:MOVX A,DPTR ;读状态JB ACC.7,WEIT ;等待清显示RAM结束MOV A,#34H ;置分频系数,晶振12MHzMOVX DPTR,A ;送分频系数MOV A,#00H ;置键盘/显示命令MOVX DPTR,A ;送键盘/显示命令MOV IE,#84H ;允许8279中断RET显示子程序如下:DIS:MOV DPTR,#7FFFH ;置8279命令/状态口地址MOV R0,#30H ;字段码首地址MOV R7,#08H ;8位显示MOV A,#90H ;置显示命令字MOVX DPTR,A ;送显示命令MOV DPTR,#7FFEH ;置数据口

7、地址LP:MOV A,R0 ;取显示数据ADD A,#6 ;加偏移量MOVC A,APC ;查表,取得数据的段码MOVX DPTR,A ;送段码显示INC R0 ;调整数据指针DJNZ R7,LP ;RETSEG:DB 3FH,06H,5BH,4FH,66H,6DH;字符0、1、2、3、4、5段码DB 7DH,07H,7EH,6FH,77H,7CH;字符6、7、8、9、A、B段码DB 39H,5EH,79H,71H,73H,3EH;字符C、d、E、F、P、U段码DB 76H,38H,40H,6EH,FFH,00H;字符H、L、-、Y、“空”段码键盘中断子程序如下:KEY:PUSH PSWPUS

8、H DPLPUSH DPHPUSH ACCPUSH BSETB PSW.3MOV DPTR,#7FFFH ;置状态口地址MOVX A,DPTR ;读FIFO状态ANL A,#0FH ;JZ PKYR ;MOV A,#40H ;置读FIFO命令MOVX DPTR,A ;送读FIFO命令MOV DPTR,#7FFEH ;置数据口地址MOVX A,DPTR ;读数据LJMP KEY1 ;转键值处理程序PKYR: POP BPOP ACCPOP DPHPOP DPLPOP PSWRETI ;KEY1: ;键值处理程序键盘程序清单:KEY1: ACALL KS1 ; 有无键按下子程序JNZ LK1 ;有

9、键按下,转去抖延时AJMP KEY1 ;无键按下,继续扫描LK1: ACALL DELA12 ;12ms延时程序调用ACALL KS1 ;判断键是否真正按下JNZ LK2 ;有键按下,转逐列扫描AJMP KEY1 ;无键按下,继续扫描LK2: MOV R2,#0FEH ;设置首列扫描字MOV R4,#00H ;保存首列号LK4: MOV DPTR,#7F01H;列扫描字送至PA口MOV A,R2MOVX DPTR,AINC DPTR ;指向PC口INC DPTRMOVX A,DPTR ;读入行状态JB ACC.0,LONE ;第0行无键按下,转LONEMOV A,#00H ;有键按下,设置行首

10、键号AJMP LKP ;转求键号LONE: JB ACC.1,LTWO ;第1行无键按下,转LTWOMOV A,#08H ;有键按下,设置行首键号AJMP LKP ;转求键号LTWO: JB ACC.2,LTHR ;第2行无键按下,转LTHRMOV A,#10H ;有键按下,设置行首键?AJMP LKP ;转求键号LTHR: JB ACC.3,NEXT ;第3行无键按下,查下一列MOV A,#18H ;有键按下,设置行首键LKP: ADD A,R4 ;求键号,键号=行首键号+列号PUSH ACC ;保护键号LK3: ACALL KS1 ;等待键释放JNZ LK3 ;键未释放,继续等待POP A

11、CC ;键释放,键号送AAJMP OVER ;键扫描结束NEXT: INC R4 ;列号加1,指向下一列MOV A,R2 ;判断8列扫描完否JNB ACC.7,KND ;8列扫描完,继续RL A ;扫描字左移一位MOV R2,A ;送扫描字AJMP LK4 ;转下一列扫描KND: AJMP KEY1OVER: RET ;键扫描结束KS1: MOV DPTR,#7F01H ;指向PA口MOV A,#00H ;设置扫描字MOVX DPTR,A ;扫描字送PA口INC DPTR ;指向PC口INC DPTRMOVX A,DPTR ;读入PC口状态CPL ;以高电平表示有键按下ANL A,#0FH ;

12、屏蔽高4位RET初始化程序如下:INIT:MOV DPTR,#7FFFH ;置8279命令/状态口地址MOV A,#0D1H ;置清显示命令字MOVX DPTR,A ;送清显示命令WEIT:MOVX A,DPTR ;读状态JB ACC.7,WEIT ;等待清显示RAM结束MOV A,#34H ;置分频系数,晶振12MHzMOVX DPTR,A ;送分频系数MOV A,#00H ;置键盘/显示命令MOVX DPTR,A ;送键盘/显示命令MOV IE,#84H ;允许8279中断RET显示子程序如下:DIS:MOV DPTR,#7FFFH ;置8279命令/状态口地址MOV R0,#30H ;字

13、段码首地址MOV R7,#08H ;8位显示MOV A,#90H ;置显示命令字MOVX DPTR,A ;送显示命令MOV DPTR,#7FFEH ;置数据口地址LP:MOV A,R0 ;取显示数据ADD A,#6 ;加偏移量MOVC A,APC ;查表,取得数据的段码MOVX DPTR,A ;送段码显示INC R0 ;调整数据指针DJNZ R7,LP ;RET键盘中断子程序如下:KEY:PUSH PSWPUSH DPLPUSH DPHPUSH ACCPUSH BSETB PSW.3MOV DPTR,#7FFFH ;置状态口地址MOVX A,DPTR ;读FIFO状态ANL A,#0FH ;JZ PKYR ;MOV A,#40H ;置读FIFO命令MOVX DPTR,A ;送读FIFO命令MOV DPTR,#7FFEH ;置数据口地址MOVX A,DPTR ;读数据LJMP KEY1 ;转键值处理程序PKYR: POP BPOP ACCPOP DPHPOP DPLPOP PSWRETI ;驱动电路子程序的设计PUSH:MOVR3 , # NUMPUSH APUSH PSWLOOP: SETB P1.0ACALL DELAY1CLR P1.0ACALL DELAY2D

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 调研报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号