资源描述
单片机速度测量及控制实验
姓名:徐晨 学号:5130208383 班级:F1302014 小组成员:王林涛 赵路杰
一、 实验目的
综合应用,进一步掌握定时器计数器的使用,完成转速测量;全面掌握闭环控制原理,用PWM调制方式控制电机转速。
二、 实验分工
小组成员共同完成单片机的编程与调试工作。
三、 实验设备清单、接线图、原理图
1、 实验器材:
51单片机控制板,BCD拨码盘,电机驱动及转侧测量电路
2、 51单片机电路
3、 转速控制电路
4、 BCD拨码盘电路
四、 实验内容及过程
1、 实时转速测量及显示。(每秒的转速)
2、 用2位拨码盘设定目标转速(每秒转速),实现PWM的电机调速控制。数码管分别显示转速设定值和实时测量值(每秒转速)。
五、 编程说明
1、 四位数码管采用静态显示方式。数码管为共阳极
2、 转速传感器采用光电式传感器,输出为脉冲信号,已接到定时计数器T0。建议T1定时,T0计数,计算1秒钟的脉冲个数,就可以简单的测量出转速值。
3、 PWM脉宽调制方式,通过编程改变高低电平的占空比,从而调整电机的平均电压,以达到调速的目的。由P1.5输出控制。
4、 口地址分配
序号
电路名称
器件名称
地址号
备注
1
LED显示
U16(74LS273)
7FF8H
写输出
2
U17(74LS273)
7FF9H
3
U18(74LS273)
7FFAH
4
U19(74LS273)
7FFBH
5
继电器与指示灯
U30、U31(74LS175)
7FFCH
6
A/D转换电路
U12(ADC0809)
DFF8H
通道0,读写
7
DFF9H
通道1,读写
8
DFFAH
通道2,读写
9
DFFBH
通道3,读写
10
DFFCH
通道4,读写
11
DFFDH
通道5,读写
12
DFFEH
通道6,读写
13
DFFFH
通道7,读写
14
D/A转换电路
U10(DAC0832)
EFFFH
写输出
15
BCD拨码盘
U4(74LS244)
BFFFH
读输入
5、 程序框图
电机驱动
直流电机
转速测量
单片机
PWM输出
PC机
6、 控制程序
LED1 EQU 30H
LED2 EQU 31H
LED3 EQU 32H
LED4 EQU 33H
SETL EQU 34H
SETH EQU 35H
REALL EQU 36H
REALH EQU 37H
AIM EQU 38H ;目标目标速度
REAL EQU 39H ;真实速度
ONEMSECOND EQU 3AH
PWMH EQU 3BH
PWML EQU 3CH
TEMP EQU 3DH
SUBC EQU 3EH
ORG 0000H
LJMP BEGIN
ORG 001BH
LJMP INTERT1
ORG 0060H
BEGIN:
SETB EA
SETB ET1
SETB TR1
MOV TMOD,#15H; 设置计数器0方式2,计时器1方式1
MOV TH0,#00H;
MOV TL0,#00H;
MOV TH1,#4CH
MOV TL1,#00H;
MOV R7,#20
MOV PWMH,#15
MOV PWML,#15
MAIN:
LCALL READ_BCD;
LCALL RUNPWM;
LCALL DISPLAY;
LCALL ADJUSTPWM;
AJMP MAIN
RUNPWM:
MOV TEMP,PWMH
PWMON:
SETB P1.5
LCALL DELAY1MS
DJNZ PWMH,PWMON
MOV PWMH,TEMP
PWMOFF:
MOV TEMP,PWML
CLR P1.5
LCALL DELAY1MS
DJNZ PWML,PWMOFF
MOV PWML,TEMP
RET
ADJUSTPWM:
MOV A,AIM
CLR CY
SUBB A,REAL
JC OVERSPEED
BELOWSPEED:
CLR CY
MOV A,PWMH
SUBB A,#1
MOV PWMH,A
MOV A,PWML
ADD A,#1
MOV PWML,A
RET
ERROR1:
MOV A,TEMP
MOV B,#2
DIV AB
MOV TEMP,A
MOV A,PWMH
ADD A,TEMP
MOV PWMH,A
MOV A,PWML
SUBB A,TEMP
MOV PWML,A
RET
OVERSPEED:
MOV A,PWML
CLR CY
SUBB A,#1
MOV PWML,A
MOV A,PWMH
ADD A,#1
MOV PWMH,A
RET
ERROR2:
MOV A,TEMP
MOV B,#2
DIV AB
MOV TEMP,A
MOV A,PWMH
SUBB A,TEMP
MOV PWMH,A
MOV A,PWML
ADD A,TEMP
MOV PWML,A
RET
INTERT1:
MOV TH1,#4CH
MOV TL1,#00H
DJNZ R7,NEXT
CLR TR1
CLR TR0
MOV REAL,TL0
MOV TH0,#00H
MOV TL0,#00H
SETB TR0
MOV R7,#20
NEXT:
SETB TR1
RETI
READ_BCD:
SETB P1.7 ;选择BCD相关数码
MOV DPTR,#0BFFFH
MOVX A,@DPTR
CPL A
MOV R0,A
ANL A,#0FH
MOV SETL,A
MOV A,R0
SWAP A
ANL A,#0FH
MOV SETH,A
MOV LED2,SETL
MOV LED1,SETH ;设定速度 的十位在SETH,个位在LEDH
MOV B,#10
MOV A,SETH
MUL AB
ADD A,SETL ;
MOV AIM,A ;设定温度值存在AIM中
RET
DISPLAY: ;显示程序
MOV A,LED1
ANL A,#0FH
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV DPTR,#7FFBH
MOVX @DPTR,A
MOV A,LED2
ANL A,#0FH
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV DPTR,#7FFAH
MOVX @DPTR,A
MOV A,REAL
MOV B,#10
DIV AB
MOV REALH,A
MOV REALL,B
MOV A,REALH
ANL A,#0FH
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV DPTR,#7FF9H
MOVX @DPTR,A
MOV A,REALL
ANL A,#0FH
MOV DPTR,#DSEG1
MOVC A,@A+DPTR
MOV DPTR,#7FF8H
MOVX @DPTR,A
RET
DSEG1:
DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
DELAY1MS:
MOV ONEMSECOND,#0FFH ;
DJNZ ONEMSECOND,$
RET
END
六、 实验结果与分析
通过设计合适的程序,完成了转速读取与控制的要求,每秒转速控制波动范围在2转左右,实现了较好的控制效果。
七、 实验心得
在一开始的代码当中,由于控制通电时间的代码位置错误以及测量间隔过长,导致控制代码存在一定的错误,转速会在一个较大的区间内浮动。修改测量时间并且更正代码位置以后,成功地实现了预想的效果。通过这次实验,我们练习了测量与控制代码,收益良多。
8
展开阅读全文