# 基于单片机50hz正弦波有效值的测量

I

Abstract
In the description of the sine wave, typically from three aspects, namely, frequency, phase, maximum value, when measuring the general measurement is the instantaneous value of the sine wave, can generally through the relationship between the effective value and the maximum effective value. RMS widely be used in our daily life, the reason lies in the effective value directly reflects the size of the energy of the ac signal, at the same time, due to the nature can be stacked, convenient to calculate, for power, noise, energy conversion research is very helpful. The curriculum design, the requirement for the input of fixed frequency measure different amplitude of the effective value of sine wave, and the most in them. According to the requirements, we design this time, with AT89C52 as the control system of eight bits chip as A/D conversion module, TM032L as LCD display. Through relevant program control, cooperate to set the switch to the input of the effective value of sine wave displayed on the screen above, realize experiment requirement. Keyword：sine wave、virtual value、A/D conversion、AT89C52

II I

1.设计原理

1.1 信号搜集模块

1

1.2 A/D 转换模块

TLC549是8位串行 A/D 转换芯片， 通过三线与处理器进行串行串口， 具有4MHz 片内系统时钟和软、硬件控制电路，转换时间最长17μ s，最高转换速率为4000 次/s。VCC 最大为6V，REF+：正基准电压输入 2.5V≤REF+≤Vcc+0.1，REF－： 负基准电压输入端，-0.1V≤REF-≤2.5V， 且要求： （REF+）－（REF-）≥1V，GND： 接地端。/CS：芯片选择输入端，要求输入高电平 VIN≥2V，输入低电平 VIN≤ 0.8V。DATA OUT：转换结果数据串行输出端，与 TTL 电平兼容，输出时高位在 前，低位在后。ANALOGIN：模拟信号输入端，0≤ANALOGIN≤Vcc，当 ANALOGIN ≥REF+电压时，转换结果为全“1”(0FFH)，ANALOGIN≤REF-电压时，转换结果 为全“0”(00H)。I/O CLOCK：外接输入/输出时钟输入端，同于同步芯片的输入

2

1.3 控制模块

3

1.4 显示模块

4

2.总设计图

5

3.源程序
3.1 主程序
#include<reg52.h> #include<math.h> #include "TLC549.h" #include "LCD1602.h"

sbit sbit uchar

S1=P1^5; S2=P1^6; Table[50],times=0;

bit void void {

flag=0; initT0(); main()

uchar uchar

j; Max,Result;

initLCD(); initT0(); while(1) { if(flag) { Max=Table[0]; for(j=1;j<50;j++) { if(Table[j]>Max) Max=Table[j];
6

} if(S1==0) Max=2*Max; if(S2==0) Max=3*Max; Result= Max/sqrt(2);

writeLCD_com(0x80+11); writeLCD_data(Result/100+48); writeLCD_data(Result%100/10+48); writeLCD_data('.'); writeLCD_data(Result%10+48); writeLCD_data('V'); flag=0; TR0=1; } } } void { TMOD=0x01; TH0=(65536-400)/256; TL0=65136%256; ET0=1; TR0=1; EA=1; } void { T0_time() interrupt 1 initT0()

7

TH0=(65536-400)/256; TL0=65136%256; Table[times]=ADConvert(); times++; if(times==50) { TR0=0; times=0; flag=1; } }

3.2 A/D 转换程序
#include<reg52.h> #include<intrins.h> #include "LCD1602.h" #include "TLC549.h"

sbit cs=P1^1; sbit clk=P1^2; sbit dout=P1^0;

uint ADConvert() { uchar i,temp; uint shuju;

cs=1; clk=0;
8

cs=0; _nop_(); _nop_(); for(i=0;i<8;i++) {

_nop_(); clk=1; temp=(temp<<1)|dout; clk=0; } cs=1; _nop_(); shuju=5.0/255*10*temp+0.5; return(shuju); }

3.3 LCD 显示程序
#define uchar LCD_DATA P0

RMSV[]="RMS Vol: ";

sbit RS=P1^3; sbit EN=P1^4;

void delayms(uint delaytime) { uchar i; for(;delaytime>0;delaytime--) for(i=124;i>0;i--);
9

} void writeLCD_com(uchar com) { RS=0; LCD_DATA=com; delayms(5); EN=1; delayms(5); EN=0; // EN=1; } void writeLCD_data(uchar dat) { RS=1; LCD_DATA=dat; delayms(5); EN=1; delayms(5); EN=0; } void { if(col==0) { writeLCD_com(0x80+line); while(*table!='\0') { writeLCD_data(*table++); }
10

write_string(uchar col, uchar line, uchar *table)

} else if(col==1) { writeLCD_com(0xc0+line); while(*table!='\0') { writeLCD_data(*table++); } } else return; } void initLCD() { writeLCD_com(0x38); writeLCD_com(0x0c); writeLCD_com(0x06); writeLCD_com(0x01); write_string(0,2,RMSV); }

11

4.仿真结果

12

13

5.心得体会

14

[1]高峰.单片微机应用系统设计及实用技术.北京.机械工业出版社.2004 [2]余永权.ATMEL89 系列单片机应用技术.北京.北京航空航天大学出版社.2006 [3]李群芳.单片机原理接口与应用.北京.清华大学出版社.2005 [4]霍孟友.单片机原理与应用.北京.机械工业出版社.2004 [5]谢瑞和.串行技术大全.北京.清华大学出版社.2003

15

### 正弦电压有效值测量电路设计

12 EDA 设计 第 1 章 绪论 1.1 设计目的 1 通过对正弦电压有效值测量电路的设计,掌握电路的工作原理和设计方法。 2 通过实验了解由集成功率放大器的内部电路...

### 正弦波电流的有效值如何计算

!,如果因此认为计算 方法也是这样,那就错了---因为有的电路本来就只能测量正弦波有效值,而不能正确测量复杂波形有有效值---正是 基于普通方法不能测量复杂波形...