MOV 21H.5,C MOV C,00H MOV ACC.2,C MOV C,21H.4 MOV 00H,C MOV C,ACC.3 MOV 21H.4,C MOV C,00H MOV ACC.3,C MOV C,21H.3 MOV 00H,C MOV C,ACC.4 MOV 21H.3,C MOV C,00H MOV ACC.4,C MOV C,21H.2 MOV 00H,C MOV C,ACC.5 MOV 21H.2,C MOV C,00H MOV ACC.5,C MOV C,21H.1 MOV 00H,C MOV C,ACC.6 MOV 21H.1,C MOV C,00H MOV ACC.6,C MOV C,21H.0 MOV 00H,C MOV C,ACC.7 MOV 21H.0,C MOV C,00H MOV ACC.7,C RET END
(4) 电压信号转换为电机转速调节信号模块:
实现方法:通过对电压值的精确分档,使电机转速按程序分档执行,达到电机转速的分档及精确调节
KSCN:
MOV DPTR,#7FF8H ;P2.0=0,且指向通道0 MOVX @DPTR,A ;启动A/D转换 CALL DELAY
MOVX A,@DPTR ;读取转换结果
MOV B,#11H ;根据电压值进行占空比调整实现电机转速分配,电机转速
第6页/共13 页
分为15档
CJNE A,#22H,NEX
NEX: JC NEXX ;如果低于两档高电平为最低值电机停止转动 DIV AB
MOV PWMH, A
SJMP KSCAN
NEXX: MOV PWMH ,#02H SJMP KSCAN END
3、设计中的主要困难及解决方案
1)困难1:直流电机转速的调节
解决方案:调整其脉冲占空比改变其正脉冲长度进而调节器转速。 2)困难2:协调采集的电压值与电机转速之间的关系
解决方案:将所采集电压值通过A/D转换为机器可读数据,以之作为执行信号实行脉冲占空比调节,最终实现电机转速的调节。
3)困难3:应用LED灯显示电压值
解决方案:依然采用A/D转换将电压值转换为机器可读数据,并将其数值赋与与LED灯连接的接口,实现其数值通过LED灯可读取。
4)困难4:电机转速的精确分档和调节
解决方案:通过对电压值的精确分档,使电机转速按程序分档执行,达到电机转速的分档及精确调节,使电机的调速过程平滑进行
具体过程:
电压及电机转速的精确分档:应用除法,将电压最大值除以所要分档值得到其各档之间间隔,然后将其应用于软件之中,实现其转速的精确分档
直流电机转速的精确控制:将脉冲周期值设定为总档级数,高电平显示其电压所处档值。程序执行时,将所采集电压值放入A累加器,然后除以分档间隔,所得结果存入A累加器的商即其所处档值,将其档值赋给高电平,改变其占空比,这样就可以根据其即时电压值(即温度值)所处档级精确控制占空比,进而精确控制电机转速。
说明:本实验中电机转速总共设15档,其档之间间隔计算得11H,应用采集电压的十六进制值执行除以11H的程序,结果存入A累加器的商即其电压档级,再将其当值赋给高电平是电机执行相应档级的程序。
第7页/共13 页
三、程序清单
PWMH DATA 30H ;高电平脉冲的个数 PWM
DATA
31H
;PWM周期
COUNTER DATA 32H
TEMP DATA 33H
ORG 8000H AJMP
MAIN
ORG 800BH AJMP
INTT0
ORG 8100H
MAIN: MOV SP,#60H
;给堆栈指针赋初值
MOV PWMH,#02H
MOV COUNTER,#01H MOV PWM,#15H MOV TMOD,#02H ;定时器0在模式2下工作 MOV TL0,#38H ;定时器每200us产生一次溢出 MOV TH0,#38H ;自动重装的值 SETB ET0 ;使能定时器0中断 SETB EA ;使能总中断 SETB TR0
;开始计时
KSCAN:
MOV DPTR,#7FF8H ;P2.0=0,且指向通道0 MOVX @DPTR,A ;启动A/D转换 CALL DELAY
MOVX A,@DPTR ;读取转换结果
PUSH ACC ;让LED灯显示电压数值 LCALL P1ZH CPL A
第8页/共13 页
MOV P1,A POP ACC
MOV B,#11H ;根据电压值进行占空比调整实现电机转速分配,电机转速
分为15档 CJNE A,#22H,NEX
NEX: JC NEXX ;如果低于两档高电平为最低值电机停止转动 DIV AB MOV PWMH, A SJMP KSCAN
NEXX: MOV PWMH ,#02H
SJMP KSCAN
INTT0: ;中断进行占空比扫描 PUSH PSW
;现场保护
PUSH
ACC
INC COUNTER
;计数值加1
MOV A,COUNTER CJNE
A,PWMH,INTT01
;如果等于高电平脉冲数
CLR P3.0
;P3.0变为低电平
INTT01: CJNE A,PWM,INTT02
;如果等于周期数
MOV COUNTER,#01H ;计数器复位
SETB
P3.0
;P3.0为高电平 INTT02: POP ACC
;出栈
POP PSW
RETI
DELAY:
MOV R6,#0H ;软件延时,等待A/D转换结果
DELAY1:
MOV R5,#0FFH
DJNZ R5,$
DJNZ R5,$
第9页/共13 页
DJNZ R6,DELAY1
RET
P1ZH: ;LED灯从左到右依次显示电压高位到低位值 MOV 21H,A MOV C,21H.7 MOV 00H,C MOV C,ACC.0 MOV 21H.7,C MOV C,00H
MOV ACC.0,C
MOV C,21H.6 MOV 00H,C MOV C,ACC.1 MOV 21H.6,C MOV C,00H MOV ACC.1,C MOV C,21H.5 MOV 00H,C MOV C,ACC.2 MOV 21H.5,C MOV C,00H MOV ACC.2,C MOV C,21H.4 MOV 00H,C MOV C,ACC.3 MOV 21H.4,C MOV C,00H MOV ACC.3,C MOV C,21H.3
MOV 00H,C
第10页/共13 页