单片机视在功率计算方法和计算程序
电压的A/D转换结果和电流的A/D转换结果已经在工作台上的数码管上显示出来了,接口电路读进来的就是LED数码管显示器显示的数值,他的准确程度通过图S1-2上的两个分压电阻和图S1-8上的电流互感器旁边的电阻Rs的阻值分别决定,可以通过调整图S1-2上的两个分压电阻和图S1-8上的电流互感器旁边的电阻Rs使电压和电流的值趋于准确,则单片机读进来的数值便是准确的。通过做乘法运算将该电压和电流的值相乘便得到视在功率S(单位为VA,即伏•安)。并且由于该电压和电流的值已保存在71H、70H中和73H、72H中。根据乘法运算规则,设计出该乘法运算示意结构为:
由于变压器输出为15V的电压,显示器是4位BCD码,其显示值为15.00,最大19.99,存储器71H70H中保存的值1999(07CFH)。电流参数为设1A,显示值为1.000,最大为1.999, 存储器73H72H中保存的也值1999(07CFH)。两者乘积的最大值为1999*1999=3996001,十优进制数为3CF961H,可见,两者乘积有3个字节便可保存。
视在功率计算的程序如下(即乘法运算程序):
SZGL:
;70H*72H—〉79H、78H
MOV A,70H
MOV B,72H
MUL AB
MOV 78H,A
MOV 79H,B
;71H*73H—〉7BH、7AH
MOV A,71H
MOV B,73H
MUL AB
MOV 7AH,A
MOV 7BH,B
;70H*73H + —〉7BH、7AH、79H
MOV A,70H
MOV B,73H
MUL AB
ADD A,79H
MOV 79H,A
MOV A,7AH
ADDC A,B
MOV 7AH,A
CLR A
ADDC A,7BH
MOV 7BH,A
;71H*72H + —〉7BH、7AH、79H
MOV A,71H
MOV B,72H
MUL AB
ADD A,79H
MOV 79H,A
MOV A,7AH
ADDC A,B
MOV 7AH,A
CLR A
ADDC A,7BH
MOV 7BH,A
由程序可知,其视在功率的计算结果保存在7BH、7AH、79H、78H中。该结果还不是最终结果,仅仅是用于得到有功功率和无功功率的过度结果或称中间结果,不用于显示。
由于1999*1999两者乘积有3个字节便可保存,因此在7BH、7AH、79H、78H中的视在功率值,其最高位7BH中肯定是0。本文来自优*文|论+文/网
实际的最大值为19.99*1.999=39.96001,而实际使用39.960精度就很高了,因此可以将结果除以100变为39960(9C18H),这样做既不影响测量和计算的精度,同时又可以将结果控制在两个字节以内,以便于后续的计算程序编制。
除以100不是目的,将较大的数变为两个字节以内才是目的,所以我们可不除以100,而是除以64(2的6次方),以方便用移位指令做除法运算。不过后续使用过视在功率的数其结果还要乘以64。
将7BH(=0)、7AH、79H、78H除以64的的程序思路是右移6次,也可左移两次扔掉最低字节也是一样的。
程序如下:
CHIYI64:
;第一次左移
CLR C
MOV A,78H
RRC A
MOV 78H,A
毕业论文http://www.youerw.com
RRC A
MOV 7AH,A
;第二次左移
CLR C
MOV A,78H
RRC A
MOV 78H,A
MOV A,79H
MOV A,7AH
RRC A
MOV 7AH,A
;高字节传到低字节,实现扔掉低字节。
MOV 78H,79H
MOV 79H,7AH
RET
现在79H78H中为有效视在功率1/64数据,最大值为1999*1999/=6*4+7(F**5H)1389