单片机有功功率和无功功率的计算
1、有功功率的计算与分析
由前面关于视在功率的编程可知,视在功率的计算结果已经保存在了7BH、7AH、79H、78H中,其中7BH为0,而7AH、79H、78H中的数已经除以64了,则7AH中也为0,只有79H78H中为双字节的有效数据。要与功率因素相乘,便得到了有功功率的1/64。然后再乘以64。
需要注意的是,视在功率是16进制数,而65H64H中的功率因素还仅仅是适合于显示的BCD数,要想做16进制乘法,还必须将功率因素转换为16进制数。本文来自辣文论文网转换程序较为简单,就不加注释了,设BCD数在65H64H中,转换为16进制后,其结果传到69H68H。
BCDTOHEX:
MOV 68H,#0
MOV 69H,#0
MOV A,64H
ANL A,#0FH
MOV 68H,A
MOV A,64H
ANL A,#0F0H
SWAP A
MOV B,#10
MUL AB
ADD A,68H
MOV 68H,A
;完成第一字节单独转换
MOV A,65H
ANL A,#0FH
MOV 69H,A
MOV A,65H
ANL A,#0F0H
SWAP A
MOV B,#10
MUL AB
ADD A,69H
MOV 69H,A
;完成第二字节单独转换
MOV A,69H
MOV B,#100
MUL AB
ADD A,68H
MOV 68H,A
MOV A,B
ADDC A,#0
MOV 69H,A
;完成二个字节合并
RET
要获得有功功率,需要进行乘法运算,即视在功率在79H、78H中,功率因素在69H、68H中,都是16进制了,可以直接相乘了,设毕业论文http://www.751com.cn乘积的结果保存在6DH、6CH、6BH、6AH中,这是典型的双字节乘双字节的程序,结果为4字节,可参考视在功率计算时的双字节乘法程序编制,这里不再赘述。
6DH、6CH、6BH、6AH为1/64的功率因素值,需要乘以64才行,总共需要1999*1999/64*9999*64=39956013999=094D9063AFH,需要5个字节保存数据。
乘以64可用除以4乘以256的方法进行,即右移两位并在其后加一个字节的0。程序较简单,这里不加注释。
CHENG64:
CLR C
MOV A,6DH
RRC A
MOV 6DH,A
MOV A,6CH
RRC A
MOV 6CH,A
MOV A,6BH
RRC A
MOV 6BH,A
MOV A,6AH
RRC A
MOV 6AH,A
MOV 6EH,6DH
MOV 6DH,6CH
MOV 6CH,6BH
MOV 6BH,6AH
MOV 6AH,#0
RET
可知,字节数太多,低位很多位用不着,可再进行变换,最后保留4位十进制有效数字。
因为最大值是39956013999,如果只保留4位有效位3995(显示的值为39.95),单位为瓦特,可除以10000000即可,可参见前述除法子程序。
39956013999=094D9063AFH,赋给被除数
10000000=989680H,赋给除数,
还要将程序里的CHANG EQU 4改为CHANG EQU 5(5为5字节除法)。调用完子程序后,保留最低两个字节即可。设结果在最低两字节6BH6AH中
2、无功功率的计算程序分析
无功功率的计算和有功功率的计算非常相似,所不同的是,有功功率计算时采用的是余弦表,而无功功率的计算时需要采用正弦表,所以,只要将余弦表改为正弦表这唯一的区别外其余完全性同。这里不再复述。1389