单片机课设正弦交流信号有效值的测量

上传人:汽*** 文档编号:511810824 上传时间:2022-12-25 格式:DOC 页数:18 大小:140.51KB
返回 下载 相关 举报
单片机课设正弦交流信号有效值的测量_第1页
第1页 / 共18页
单片机课设正弦交流信号有效值的测量_第2页
第2页 / 共18页
单片机课设正弦交流信号有效值的测量_第3页
第3页 / 共18页
单片机课设正弦交流信号有效值的测量_第4页
第4页 / 共18页
单片机课设正弦交流信号有效值的测量_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机课设正弦交流信号有效值的测量》由会员分享,可在线阅读,更多相关《单片机课设正弦交流信号有效值的测量(18页珍藏版)》请在金锄头文库上搜索。

1、目 录摘要IAbstractII1 电路设计11.1信号采集与转换电路设计11.2 单片机控制电路设计21.3显示电路设计31.4总体电路42 软件设计53 仿真结果124 心得体会14参考文献15武汉理工大学单片机原理与应用课程设计说明书摘要正弦交流信号有效值的测量,需要测量正弦信号的峰值,利用正弦信号有效值的计算公式就可以得到正弦信号的有效值。要进行基于单片机的正弦信号有效值的测量,需要先将模拟量转换为数字量,将所得的数据经由单片机处理,再将最后的结果显示出来。设计的电路主要包括信号采集与转换电路,单片机控制电路和显示电路。其中,有效值的计算在本次设计中主要利用软件部分的设计完成。关键词:

2、有效值测量,模数转换电路,单片机控制AbstractSinusoidal ac signal effective value measurement, need to measure the peak value of the sine signal, using the sine signal effective value calculation formula of the effective value of sine signal can be calculated out. Must carry on the sine signal RMS measurement based on

3、 single chip microcomputer, need to convert analog to digital quantity, will the data processed by single chip microcomputer, then the final result of display. Design the circuit mainly includes signal acquisition and conversion circuit, SCM control circuit and display circuit. Among them, the RMS c

4、alculation in the design of the main use of the design of the software part is complete.Keywords: RMS measurement, modulus conversion circuit, single chip microcomputer controlII1 电路设计 为了测得正弦信号的有效值,硬件电路的设计应包括信号的输入采集电路,模拟量与数字量转换电路,单片机控制电路与数字显示电路。1.1信号采集与转换电路设计本次设计所使用的A/D转换芯片是TLC549,它是一个串行8位A/D转换器,通过三

5、线与通用微处理器进行串行接口。因为是使用的串行接口电路,电路设计较简单,但是传输数据较慢。通过阅读TLC549的资料手册,可以知道其具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17微秒,本次设计要求检测的是50Hz的正弦波信号,其转换时间完全可以满足电路设计要求,因此不用担心串行电路的传输速率较慢的问题。 TLC549所允许的输入电压不超过5v,设计要求能够检测的正弦波幅值为0到15v,所以在测量超过5v的正弦波信号时,需要先将信号分压到5v以下,才能输入TLC549。电路图如下图所示,当所测信号在5v以下时,SW3开关接上,信号不需要分压直接输入芯片;当信号在5到10v之间时,S

6、W3开关接中,信号经由电阻R3和R4分压后,将R4两端电压作为输入信号输入芯片;当信号在10到15v之间时,SW3开关接下,信号经由R5、R6和R7分压后,将R7两端的电压作为输入信号输入芯片。这样的设计满足了TLC549对输入信号的要求,只需在后续设计中将结果线性放大就可以得到正确测量值。图1 信号采集与转换电路1.2 单片机控制电路设计控制电路系统采用AT89C52作为主控制器,单片机具有体积小,方便操作,应用灵活,运行稳定准确等特点,现已广泛应用于各方各面。单片机控制电路如下图所示,P1.0接收经TLC549转换后的数字信号,P1.1用于控制TLC549的工作状态,P1.2给TLC549

7、提供时钟信号,P1.3与P1.4用于控制LCD显示屏的工作状态,P1.5与P1.6用于选择还原分压信号的放大系数,开关S1放大2倍,开关S2放大3倍,具体使用哪个开关视情况而定,P0口接LCD显示器。图 2 单片机控制电路1.3显示电路设计显示电路主要由LCD显示器构成, R/W端口用于控制数据的操作是读取还是写入,因为本次设计中LCD显示器只用来显示数据,所以将R/W端接地即可。RS与E端与AT89C52相应端口相连接,E端口是启动信号端口,RS端为高电平时,功能为数据输入,低电平时为指令代码输入。D0到D7端口与AT89C51的P0口相连,单片机将要显示的数据传送到LCD显示器,因为在此处

8、,P0口作为普通的I/O口使用,因此需要在外部加上拉电阻才可以使用。图3 显示电路1.4总体电路总体电路如下图:图4 总体电路正弦波信号经过合适的处理后,经由A/D转换芯片,将模拟量转化为数字信号,交由AT89C52处理,最后将处理结果通过P0口传输到LCD显示器,至此,完成了正弦波模拟信号的采集,数字转换,软件处理以及显示的过程。2 软件设计本次设计要求是测量50Hz的正弦波信号,一个周期为20毫秒,而我们所需要的是正弦波的峰值,在20毫秒内,将采集的数据等时间间隔采样50个,然后比较这50个数据的大小,将最大的那一个数据作为该周期内的峰值,将峰值除以根号2作为该正弦信号的有效值。程序系统框

9、图如下:开始定时器初始化LCD初始化是否采集完毕?否排序求最大值即峰值峰值除以根号2得到有效值是结束采集完毕定时器停止工作LCD显示图5 程序系统框图程序代码如下:#include#include#include TLC549.h#include LCD1602.hsbit S1=P15;sbit S2=P16;uchar Table50,times=0;bit flag=0;void initT0();void main()uchar j;uchar Max,Result;initLCD();initT0();while(1)if(flag)Max=Table0;for(j=1;jMax)M

10、ax=Tablej;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 initT0()TMOD=0x01;TH0=(65536-400)/256;TL0=65136%256;ET0=1;TR0=1;EA=1;

11、void T0_time() interrupt 1TH0=(65536-400)/256;TL0=65136%256;Tabletimes=ADConvert();times+;if(times=50)TR0=0;times=0;flag=1;TLC549转换源代码如下:#include#include#include LCD1602.h #include TLC549.hsbit cs=P11;sbit clk=P12;sbit dout=P10;uint ADConvert() uchar i,temp; uint shuju; cs=1; clk=0; cs=0; _nop_(); _

12、nop_(); for(i=0;i8;i+) _nop_();clk=1;temp=(temp1)|dout;clk=0; cs=1; _nop_(); shuju=5.0/255*10*temp+0.5; return(shuju);LCD显示源代码如下:#include #include LCD1602.h #define LCD_DATA P0uchar RMSV=RMS Vol: ;sbit RS=P13;sbit EN=P14;void delayms(uint delaytime)uchar i;for(;delaytime0;delaytime-)for(i=124;i0;i-)

13、;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 write_string(uchar col, uchar line, uchar *table)if(col=0)writeLCD_com(0x80+line);while(*table!=0)writeLCD_data(*table+);else if(col=1)writeLCD_com(0xc0+line);while(*table!=0)writeLCD_data(*table+);else return;void initLCD()writeL

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号