整理单片机步进电机.docx

上传人:b****6 文档编号:7934248 上传时间:2023-01-27 格式:DOCX 页数:19 大小:78.13KB
下载 相关 举报
整理单片机步进电机.docx_第1页
第1页 / 共19页
整理单片机步进电机.docx_第2页
第2页 / 共19页
整理单片机步进电机.docx_第3页
第3页 / 共19页
整理单片机步进电机.docx_第4页
第4页 / 共19页
整理单片机步进电机.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

整理单片机步进电机.docx

《整理单片机步进电机.docx》由会员分享,可在线阅读,更多相关《整理单片机步进电机.docx(19页珍藏版)》请在冰豆网上搜索。

整理单片机步进电机.docx

整理单片机步进电机

大连理工大学本科设计报告

 

题目:

步进电机转速控制系统设计

步进电机转速控制系统设计

一、设计要求

使用步进电机作为被控制对象;由ZLG7290做人机对话平台;利用单片机的P1(8位)和P3(部分口线)构造系统。

利用ZLG7290的键盘控制直流电机,也可以利用ADC模块(与电位器配合),利用电位器控制转速;利用ZLG7290的8位LED数码管显示电机转向、转速参数显示。

二、设计分析及系统方案设计

系统分析:

程序为无限循环结构。

先调用A/D转换程序,再调用BCD转换程序,利用ZLG7290不断显示数码管的数字,中断程序包括键盘输入电机旋转方向,电位器控制电机转速。

算法描述:

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口的低四位(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,低四位清零后送给定时器高八位,判断方向位,利用CJNE命令,若方向位是1则执行接下来的语句,若不是则跳转到LOOP11,再判断时候等于2,若是则执行下来的语句,若不是则跳转到DO,不做任何操作,即电机停止转动。

7)A/D转换子程序,将转换结果送3FH中,再经过数据滤波,采集256次相加再取高8位数据即为平均值送3EH中。

8)BCD转换子程序,将3EH中数据与#0F0相与,取出高四位,再半字节交换,寄存器B中送10,相除后A中为十位数,B中为个位数,在此调用拆分子程序查表的相应字形码后送30H,31H显示。

三、系统电路图

 

四、外围接口模块硬件电路功能描述

步进电机是一种将脉冲信号变换成相应角位移或线位移的电磁装置,当有脉冲输入时步进电机一步一步的转动,每给一个脉冲信号,就转过一定的角度。

步进电动机的角位移量和输入脉冲的个数严格成正比,在时间上与输入脉冲同步,因此只要控制输入脉冲的数量、频率及电动机绕组通电的相序,便可获得所需的转角、转速及转动方向。

ZLG7290B:

ZLG7290B是数码管动态显示驱动、键键盘扫描管理芯片。

能够驱动8位共阴极结构的LED数码管或64位独立的LED,同时还能扫描管理多达64个按键(S1-S56、F0-F7)的扫描识别。

本实验用到了4个数码管显示方向和速度,两个按键S1,S2控制方向的改变。

TLC549是被广泛应用的CMOS8位A/D转换器。

该芯片有一个模拟输入端口,三态的数据串行输出接口可以方便地和微处理器或外围设备连接。

TLC549仅仅使用输入/输出时钟和芯片选择信号控制数据。

本实验中通过电位器将连续的模拟的电阻值经过TLC549转换成8为二进制数字信号。

 

五、主程序中主要变量定义

变量名称

RAM单元/寄存器

功能

DATA1

30H

显示缓冲区首地址

20H

相序首地址

28H

A/D转换数据滤波求和中的高八位

29H

A/D转换数据滤波求和中的低八位

2AH-2DH

读出的ZLG7290de00H-03H数据存放地址

2EH

相序循环次数8

FX

2FH

控制转向标志

3CH

相序列表中最后一个相序地址

3DH

相序列表中第一个相序地址

3EH

滤波结果存放地址

3FH

A/D转换结果存放地址

六、系统软件中各个子程序的功能描述

子程序名称

入口参数

出口参数

功能描述

CF

R3、R4

R3、R4

将数据拆分为两位16进制数查表得对应字形码

INT_7290

R0、R7、R2、R3、R4

R3、R4

显示电机转动方向

T1_INT

3FH

A

控制电机转动速度

ADZH

A

模拟信号转换为数字信号

BCD_CONT

A

R3、R4

16进制数转换为10进制数

DELAY

R0、R1

R0、R1

延时子程序使显示稳定

RDADD

R0,R2,R3,R4,R7

@R0到@R0+7

多字节读操作

WRNBYT

R0,R2,R3,R7

多字节写操作

STA

I²C启动信号

STOP

I²C停止信号

MACK

发送I²C应答信号

MNACK

发送I²C非应答信号

CACK

F0

I²C应答检测

WRBYT

A

I²C发送一个字节

RDBYT

R2

I²C接收一个字节

七、主程序程序流程图

 

 

T1_INT中断服务子程序

 

八、程序清单

;###############ADC模块连线###############

DATBITP3.3

CLKBITP3.4

CSBITP3.5

;############键盘控制模块连线#############

SDABITP1.4

SCLBITP1.5

WSLAEQU070H

RSLAEQU071H

FXEQU2FH;将控制转向标志放在2FH单元

DATA1EQU30H;变量缓冲区的首地址

;********************************************************

ORG8000H

LJMP8100H

ORG8003H

LJMPINT_7290;控制转向的中断服务程序

ORG801BH

LJMPT1_INT;控制转速的中断服务程序

;********************************************************

;初始化部分

;********************************************************

ORG8100H

START:

MOVSP,#60H

CLRP1.7;7290复位

LCALLDELAY

SETBP1.7

SETBEA;开INT0中断

SETBEX0

SETBIT0;触发极性为下降沿

SETBET1;开T1中断

SETBTR1

MOVTMOD,#10H;设定定时器T1工作方式及初值

MOVTH1,#00H

MOVTL1,#00H

MOV3DH,#20H

MOV3CH,#27H

MOV2EH,#08H

MOVFX,#00H

MOV20H,#0F8H;相序放在20H~27H中

MOV21H,#0FCH

MOV22H,#0F4H

MOV23H,#0F6H

MOV24H,#0F2H

MOV25H,#0F3H

MOV26H,#0F1H

MOV27H,#0F9H

;********************************************************

MOV34H,#0DAH

MOV35H,#0FCH;用34H、35H显示FLAG;用30H~31H显示ADC转换结果

MOVDATA1+7,#00H;熄灭

MOVDATA1+6,#00H;熄灭

MOVDATA1+3,#00H;熄灭

MOVDATA1+2,#00H

;********************************************************

;向7290B写入数据

;********************************************************

LOOP:

LCALLADZH;数据滤波

LCALLBCD_CONT;转换成十进制

MOVR7,#08H

MOVR2,#10H

MOVR3,#WSLA

MOVR0,#DATA1

LCALLWRNBYT;调显示子程序

LCALLDELAY;使显示稳定

SJMPLOOP

;******************************************************************

LEDSEG:

DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E4H;0-7的字形码

DB0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH;8-F的字形码

DB0FAH,1EH,12H,00H;a,t,=和熄灭码

;******************************************************************

;拆分程序(将A中的数据拆分为两个四位16进制数并查表)

;(结果在R4、R3中)

;******************************************************************

CF:

PUSH02H;将A中的数据拆分为两个四位16进制数并查表

PUSHDPH

PUSHDPL

MOVDPTR,#LEDSEG

MOVR2,A

ANLA,#0FH

MOVCA,@A+DPTR

MOVR3,A

MOVA,R2

SWAPA

ANLA,#0FH

MOVCA,@A+DPTR

MOVR4,A

POPDPL

POPDPH

POP02H

RET

;*******************************************************************

;中断服务程序INT_7290:

(INT0),显示FLAG值

;*******************************************************************

INT_7290:

PUSH00H

PUSH02H

PUSH03H

PUSH04H

PUSH07H

PUSHACC

PUSHPSW

MOVR0,#2AH;状态数据区首址

MOVR7,#04H;取状态数据个数

MOVR2,#00H;内部数据首地址

MOVR3,#WSLA;取器件地址(写)

MOVR4,#RSLA;取器件地址(读)

LCALLRDADD;读出7290的00H-03H数据存于2AH-2DH

NOP;设定一个断点,以观察读出的4个数据

MOVFX,2BH;取健值,存放在2BH内

MOVA,FX;显示FLAG

LCALLCF;拆分、查表

MOVDATA1+4,R3

MOVDATA1+5,R4

POPPSW

POPACC

POP07H

POP04H

POP03H

POP02H

POP00H

RETI

;*******************************************************************

;中断服务程序改变转向

;*******************************************************************

T1_INT:

PUSH00H

PUSH01H

MOVR0,3DH

MOVR1,3CH

MOVTL1,#00H

MOVA,3FH

ANLA,#0F0H

MOVTH1,A

LOOP1:

MOVA,FX

CJNEA,#01H,LOOP11;若FLAG=02H则跳转到LOOP11,左循环,逆时针

MOVA,@R0

MOVP1,A

INC3DH

SJMPLOOP12

LOOP11:

CJNEA,#02H,DO

MOVA,@R1

MOVP1,A

DEC3CH

LOOP12:

DJNZ2EH,DO;一个相序周期完成

MOV2EH,#08H

MOV3DH,#20H

MOV3CH,#27H

DO:

POP01H

POP00H

RETI

;####################ADC的相关子程序######################

ADZH:

PUSH00H

PUSH02H

LOOP2:

MOVR2,#0FFH

LCALLTLC549_ADC

MOVA,3FH

MOV29H,A

MOV28H,#00H;放累加和高八位的内存单元28H清0

LOOP20:

LCALLTLC549_ADC

CLRC

ADDA,29H

MOV29H,A;29H放低位

MOVA,#00H

ADDCA,28H

MOV28H,A;28H放高位

DJNZR2,LOOP20

MOV3EH,A;将数据滤波的结果放在3EH中

POP02H

POP00H

RET

TLC549_ADC:

PUSH07H

CLRA

CLRCLK

MOVR7,#08H

CLRCS

LOOP3:

SETBCLK

MOVC,DAT

RLCA

CLRCLK

DJNZR7,LOOP3

MOV3FH,A;将ADC转换的结果放在3FH中

SETBCS

CLRCLK

POP07H

RET

;**********************************************************************

BCD_CONT:

PUSH07H

PUSH06H

PUSH05H

PUSH02H

MOVA,3EH

ANLA,#0F0H

SWAPA

MOVB,#0AH;B中放入10

DIVAB

MOVR6,A;R6中得十位数

MOVR5,B;R5中得个位数

MOVA,R6

LCALLCF;调拆分子程序(入口A出口R4,R3-字形码)

MOVDATA1+1,R3

MOVA,R5

LCALLCF;调拆分子程序(入口A出口R4,R3-字形码)

MOVDATA1+0,R3

POP02H

POP05H

POP06H

POP07H

RET

DELAY:

PUSH00H

PUSH01H

MOVR0,#00H

DELAY1:

MOVR1,#00H

DJNZR1,$

DJNZR0,DELAY1

POP01H

POP00H

RET

;*******************************************************************

;通用的I2C通讯子程序

;相关子程序WRBYT、STOP、CACK、STA

;*******************************************************************

WRNBYT:

PUSHPSW

PUSHACC

WRADD:

MOVA,R3;取外围器件地地址(包含r/w=0)

LCALLSTA;发送起始信号S

LCALLWRBYT;发送外围地址

LCALLCACK;检测外围器件的应答信号

JBF0,WRADD;如果应

MOVA,R2

LCALLWRBYT;发送内部寄存器首地址

LCALLCACK;检测外围器件的应答信号

JBF0,WRADD;如果应答不正确返回重来

WRDA:

MOVA,@R0

LCALLWRBYT;发送外围地址

LCALLCACK;检测外围器件的应答信号

JBF0,WRADD;如果应答不正确返回重来

INCR0

DJNZR7,WRDA

LCALLSTOP

POPACC

POPPSW

RET

;*******************************************************************

;通用的I2C通讯子程序(多字节读操作)

;入口参数R7字节数;

;R0目标数据块首地址;R2从器件内部子地址;

;R3器件地址(写);R4器件地址(读)

;相关子程序WRBYT、STOP、CACK、STA、MNACK

;*******************************************************************

RDADD:

PUSHPSW;从PCF8563的02H单元读入7个参数

PUSHACC;存放于20H-26H单元

RDADD1:

LCALLSTA

MOVA,R3;取器件地址(写)

LCALLWRBYT;发送外围地址

LCALLCACK;检测外围器件的应答信号

JBF0,RDADD1;如果应答不正确返回重来

MOVA,R2;取内部地址

LCALLWRBYT;发送外围地址

LCALLCACK;检测外围器件的应答信号

JBF0,RDADD1;如果应答不正确返回重来

LCALLSTA

MOVA,R4;取器件地址(读)

LCALLWRBYT;发送外围地址

LCALLCACK;检测外围器件的应答信号

JBF0,RDADD1;如果应答不正确返回重来

RDN:

LCALLRDBYT

MOV@R0,A

DJNZR7,ACK

LCALLMNACK

LCALLSTOP

POPACC

POPPSW

RET

ACK:

LCALLMACK

INCR0

SJMPRDN

;(3)I2C各个信号子程序

;**********************************************************************

;启动信号子程序S

;**********************************************************************

STA:

SETBSDA;启动信号S

SETBSCL

NOP;产生4.7US延时

NOP

NOP

NOP

NOP

CLRSDA

NOP;产生4.7US延时

NOP

NOP

NOP

2.环境影响评价的概念NOP

CLRSCL

(三)环境价值的定义RET

(2)评价范围。

根据评价机构专业特长和工作能力,确定其相应的评价范围。

;**********************************************************************

;停止信号子程序P

;**********************************************************************

发现规划环境影响报告书质量存在重大问题的,审查时应当提出对环境影响报告书进行修改并重新审查的意见。

STOP:

CLRSDA;停止信号P

SETBSCL

(2)生产、储存危险化学品(包括使用长输管道输送危险化学品)的建设项目;NOP;产生4.7US延时

NOP

二、建设项目环境影响评价NOP

(二)环境影响经济损益分析的步骤NOP

一、环境影响评价的发展与管理体系、相关法律法规体系和技术导则的应用NOP

SETBSDA

1.建设项目环境影响评价机构的资质管理NOP;产生4.7US延时

NOP

NOP

8.编制安全预评价报告NOP

NOP

CLRSCL

CLRSDA

RET

;**********************************************************************

;应答信号子程序MACK

;**********************************************************************

MACK:

CLRSDA;发送应答信号ACK

SETBSCL

NOP;产生4.7US延时

NOP

NOP

NOP

NOP

CLRSCL

SETBSDA

RET

;**********************************************************************

;非应答法信号子程序MNACK

;**********************************************************************

MNACK:

SETBSDA;发送非应答

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

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

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