基于单片机的红外遥控系统 第8页 4.4 步进电机模块程序设计
关于四相电机的相关计算:
齿距角: Qz = 2π/ Z Z --- 转子的齿数 (4-1)
步距角---转子走一步所转过的角度
步距角: Qn = Qz/N = 2π/NZ N --- 步进电机工作拍数 (4-2)
步进电机转速:
n = 60×f / N×Z (转/分) f =脉冲频率(Hz) (4-3)
对于本设计中步距角为7.5度的步进电机而言:
Qn = 7.5度
Qz = Qn×N = 7.5×4=30度 (齿距角)
Z = 2π/Qz = 360/30 = 12 (转子的齿数)
四相步进电机有三种运行状态:
1、步进电机为四相单四拍运行状态:
当电机绕组通电时序为A-B-C-D时为正转,通电时序为D-C-B-A时为反转。
N = 4
步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°
则步进电机转一圈所需步进数: 360°/7.5°=48 (步进数)
2、步进电机为四相双四拍运行状态:
当电机绕组通电时序为AB-BC-CD-DA时为正转,通电时序为DA-CD-BC-AB时为反转。
N = 4
步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°
则步进电机转一圈所需步进数: 360°/7.5°=48 (步进数)
3、步进电机为四相八拍运行状态。
当电机绕组通电时序为A-AB-B-BC-C-CD-D-DA时为正转,通电时序为DA-D-CD-C-BC-B-BA-A时为反转。
N = 8
步距角: Qn = Qz/N = 2π/NZ =360/8*12=3.75°
则步进电机转一圈所需步进数: 360°/3.75°=96 (步进数)
本设计中使用的是第二种。
4.4.1 电机左转3圈右转3圈程序设计
图4-9 步进电机控制流程图
本电机的步进角度是7.5度,需要48个脉冲来完成一圈的转动,转速可以通过脉冲的延时来设定,步进电机控制流程图如图4-9。
一圈Z=12个周期,设定转3圈:
FFW:: MOV R3,#12
MOV R3,#36 ;3圈的设定,3圈*Z=3*12=36
电机工作方式的选择,为正转表:
FFW1: MOV R0,#00H
FFW2: MOV P2,#0F0H ; 电机控制口P1.0~P1.3设定为高电平,电机处于停止状态
MOV A,R0
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV P2,A
LCALL DELAY
INC R0
判断是否转完1圈,判断是否转完3圈:
JNZ FFW2
DJNZ R3,FFW1
MOV P2,#0F0H
LCALL DELAY1
步进电机的转速设定为30:
DELAY: MOV R7,#30
DEL1: MOV R6,#248
DJNZ R6,$
DJNZ R7,DEL1
RET
双四拍工作方式:
正转表:
TABLE1:
db 30h,90h,0c0h,60h
db 00
反转表:
TABLE10:
db 60h,0c0h,90h,30h
db 00
字符的结束都以“00”为结束语。
4.5 显示模块程序设计
LCD显示器种类繁多,安排列形状可以分为字段型,点阵字符型和点阵图形型。而LCD1602就属于点阵字符型显示模块。其内部的驱动器为HD44100和控制器HD44780,都采用低功耗CMOS技术。该模块共有20个引脚,采用并行8位数据线的传送方式。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表4-2是1602的内部显示地址:
表4-2 1602的内部显示地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
第1行 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
第2行 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)。
4.5.1 显示模块程序设计
设计中的1602采用标准的16脚(带背光)接口,各引脚交口说明如表4-3:
表4-3 1602引脚参数
编号 符号 引脚说明 编号 符号 引脚说明
1 VSS 电源地 9 D2 数据
2 VDD 电源正极 10 D3 数据
3 VL 液晶显示偏压 11 D4 数据
4 RS 数据/命令选择 12 D5 数据
5 R/W 读/写选择 13 D6 数据
6 E 使能信号 14 D7 数据
7 D0 数据 15 BLA 背光源正极
8 D1 数据 16 BLK 背光源负极
1602是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则指令失效。要显示字符时要先输入显示字符的地址,也就是告诉模块在那里显示字符。1602的一般初始化过程包括:延时15MS,写指令38H(不检测忙信号),延时5MS,写指令38H(不检测忙信号),延时5MS,写指令38H(不检测忙信号),以后每次写指令,读写数据操作均需要检测忙信号,写指令38H:显示模式设置,写指令08H:显示关闭,写指令01H:显示清屏,写指令06H:显示光鼠标移动设置,写指令0CH:显示开光标设置。然后送命令、送字符串,最后是单个字符的传送,流程图4-10如下:
图4-10 显示模块流程图
详细的程序如下:
1602的命令指令:
COMMAND:
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
送字符串命令:
WR1:
MOV R1,#00H
A1:
MOV A,R1
MOVC A,@A+DPTR
CALL WR2
INC R1
CJNE A,#00H,A1
RET
送单个字符命令:
WR2:
MOV P0,A
SETB RS
CLR RW
CLR E
CALL DELAY
SETB E
RET
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
基于单片机的红外遥控系统 第8页下载如图片无法显示或论文不完整,请联系qq752018766