基于某单片机正弦波有效值地测量
50Hz正弦交流电有效值的测量

《单片机应用实践》课程设计任务书学生姓名:杨博专业班级: 电信1303 班指导教师: 孟哲工作单位: 信息工程学院题目: 50Hz正弦波有效值测量仪表的设计与实现初始条件:(1)提供实验室机房及其proteus7.0以上版本软件;(2)《单片机原理与应用》学习。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)选择一本《单片机原理与应用》,认真学习该教程的全部内容,包括汇编语言的理解与应用,51单片机的基本功能与应用;(2)要求用51单片机设计一个测量仪表,能够测量量程200mv~20v的50Hz 正弦波交流电的有效值(3)要求做出仿真,并依照仿真设计实物并对实验结果进行分析和总结;(4)要求阅读相关参考文献不少于5篇;(5)根据课程设计有关规范,按时、独立完成课程设计说明书。
时间安排:(1) 分析课题,完成设计构想两天;(2) 完成仿真一天;(3) 购买元件并完成实物两天;(4) 完成报告书一天;指导教师签名: 年月日系主任(或责任教师)签名: 年月日摘要在实际生产与生活之中,有效值扮演了一个极其重要的角色。
由于有效值能够直接反映出交流信号能量的大小,因此在对于其他物理量例如功率、噪声、失真度、能量转换等的研究上发挥着极其重要的作用。
本次课设完成一个50Hz正弦波有效值测量仪表的设计与实现。
根据要求,本次课设以STC89C52单片机为控制核心,通过电阻分压网络、基于AD736的有效值检测模块、基于LM324的信号放大模块以及基于TLC549的A/D转换模块完成正弦波有效值测量工作,结果通过LCD显示。
关键词:正弦波;有效值;单片机控制;AD736;TLC549.AbstractIn the actual production and life, the effective value plays an extremely important role .Because of the effective value of AC, signal can directly reflect the size of the energy,it’s convenient to study for other physical quantities such as power, noise, distortion, energy conversion and so on.The design and implementation of a 50Hz sine wave effective value measuring instrument is set up in this lesson design. According to the requirements, the class stipulates STC89C52 microcontroller as control core, through the resistance points pressure platform, based on AD736 effective value detection module, based on LM324 signal amplification module and based on TLC549 A / D conversion module to complete sinusoidal RMS measurements. The results through the LCD display.Keywords:sine wave; effective value; single chip microcomputer control; AD736; TLC549.1.设计原理1.1方案设计方案一:采用二极管整流电路,再通过峰值检波电路测得峰值,然后根据波形因数求得相应的有效值。
基于单片机的智能rlc测试仪的设计【毕业设计论文】[管理资料]
![基于单片机的智能rlc测试仪的设计【毕业设计论文】[管理资料]](https://img.taocdn.com/s3/m/58b261d05901020206409c61.png)
基于单片机智能RLC测试仪的设计毕业设计摘要本文主要论述了基于凌阳SPCE061A单片机的智能RLC测试仪的设计,利用单片机对R、L、C等参数进行测量,可以充分利用单片机的运算和控制功能,方便地实现测量,使测量精度得到提高。
同时用软件程序代替一些硬件测量电路,可在硬件结构不变的情况下,修改软件以增加新的功能。
能够很好的完成对RLC参数的测量,以满足现代测控系统的需要。
关键词:单片机;SPCE061A;RLC测试仪ABSTRACTIt is mainly discussed in this paper that the design of intellectual RLC parameter measurer based on Lingyang SPCE061A MCU. MCU use of R, L, C, and other parameters measured, can take full advantage of MCU processing and control functions, to facilitate the realization of measurements for improved measurement accuracy. Simultaneously uses the software procedure to replace some hardware metering circuits, may in the hardware architecture invariable situation, revi se software to increase the new very good completing to the RLC parameter survey, satisfy the modern observation and control system the need.Keywords: MCU;SPCE061A;RLC testing device目录摘要 (I)ABSTRACT (II)目录 (III)前言 (V)1 系统测试原理与总体方案设计 (1)RLC测试原理 (1)相位+有效值测量 (1)相位+有效值测量方案的软仿真 (2)RLC参数测量方法 (3)总体设计方案 (4)系统原理框图 (4)整个系统工作流程 (4)系统设计中的难点和关键技术 (5)2 RLC测试仪硬件部分实现 (6)-5V电源的设计 (6)标准正弦信号发生模块 (6)标准正弦信号的原理 (6)AD9850芯片简介 (8)AD9850硬件电路图及单片机程序 (9)3 I-V变换模块 (11)I-V变换方案设计 (11)I-V变换的硬件电路 (11)4 同时采样模块 (12)同时采样模块方案设计 (12)A/D芯片的选择 (12)ADS7861芯片介绍 (13)ADS7861转换时序的逻辑控制 (13)5 单片机系统设计 (16)SPCE061A单片机概述 (16)单片机的电源设计 (16)SPCE061A最小系统 (17)6 RLC测试仪应用软件设计 (18)数据采集模块程序流程图 (18)中断程序流程图 (19)主程序流程图 (19)结论 (21)参考文献 (22)致谢 (23)附录 (24)前言随着微电子技术、计算机技术、软件技术的高度发展及其在电子测量技术与仪器上的应用,新的测试理论、新的测试方法、新的测试领域以及新的仪器结构不断出现,在许多方面已经冲破了传统仪器的概念,电子测量仪器的功能和作用发生了质的变化。
基于单片机正弦波有效值测量仪表设计

电子系统设计创新与实践设计报告题目:基于单片机正弦波有效值测量仪表设计院(系):信息科学与工程学院专业班级:电子信息工程学生姓名:学号:同组成员:指导老师:肖洪祥职称:副教授2012年7月摘要在实际中,有效值是应用最广泛的参数,电压表的读数除特殊情况外,几乎都是按正弦波有效值进行定度的。
有效值获得广泛应用的原因,一方面是由于它直接反映出交流信号能量的大小,这对于研究功率、噪声、失真度、频谱纯度、能量转换等是十分重要的;另一方面,它具有十分简单的叠加性质,计算起来极为方便。
本文详细介绍一个正弦波有效值测量仪表设计,以STC89C52单片机为控制核心,由交流电压采集模块,正弦波转方波模块,AD转换模块、显示模块等构成。
系统采用交流电压输入信号,经TLC372比较器和LM358放大器进行信号采集,经过AD0809进行数据采样,然后输入到89C52单片机进行交流电压有效值的计算和测量,加上CD4049进行正弦波转换为方波,输入到89C52单片机进行频率的计算和测量,结果用1602液晶显示正弦波的有效值和频率。
关键词:交流电压有效值测量 AD0809 STC89C52AbstractIn practice, the effective value is the most widely used parameters, voltage meter except in special circumstances, are almost as effective value of sine wave for calibration. Effective value and widely applied reasons, partly because it directly reflects the AC signal energy, the study of power, noise, distortion, frequency spectrum purity, energy conversion is very important; on the other hand, it has a very simple superposition property, calculation is very convenient.This paper describes an effective value of sine wave measuring instrument design, using STC89C52SCM as control core, by the AC voltage acquisition module,sine wave to square wave module, the AD conversion module, display module. The system adopts the AC input signal, the comparator TLC372and LM358 amplifier for signal acquisition, through AD0809 data sampling, and then input to the SCM 89C52AC voltage effective value calculation and measurement, and CD4049are converted to square wave sine wave, input to the SCM 89C52frequency calculation and measurement, the results with the 1602 liquid crystal display sinusoidal RMS and frequency.Key words: Ac voltage RMS measurement AD0809 STC89C52目录1. 概述1.1 题目名称1.2 功能和指标要求1.3相关情况概述2.技术方案2.1有效值测量的方法2.2设计思路2.3总体技术方案3.硬件设计3.1信号采集电路3.2正弦波转方波电路3.3 ADC0809电路3.4单片机最小系统和1602显示电路 3.5电源电路4.软件设计4.1 频率测量4.2幅度测量4.3软件测试1. 概述1.1 题目名称基于单片机的正弦波有效值测量仪表设计。
单片机课设-正弦交流信号有效值地测量

word目录摘要IAbstractII1 电路设计1信号采集与转换电路设计11.2 单片机控制电路设计2显示电路设计3总体电路42 软件设计53 仿真结果114 心得体会14参考文献15摘要正弦交流信号有效值的测量,需要测量正弦信号的峰值,利用正弦信号有效值的计算公式就可以得到正弦信号的有效值。
要进展基于单片机的正弦信号有效值的测量,需要先将模拟量转换为数字量,将所得的数据经由单片机处理,再将最后的结果显示出来。
设计的电路主要包括信号采集与转换电路,单片机控制电路和显示电路。
其中,有效值的计算在本次设计中主要利用软件局部的设计完成。
关键词:有效值测量,模数转换电路,单片机控制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 single chip microputer, need to convert analog to digital quantity, will the data processed by single chip microputer, 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 calculation in the design of the main use of the design of the software part is plete. Keywords: RMS measurement, modulus conversion circuit, single chip microputer control1 电路设计为了测得正弦信号的有效值,硬件电路的设计应包括信号的输入采集电路,模拟量与数字量转换电路,单片机控制电路与数字显示电路。
单片机课设 正弦交流信号有效值的测量

正弦交流信号有效值的测量,需要测量正弦信号的峰值,利用正弦信号有效值的计算公式就可以得到正弦信号的有效值。
要进行基于单片机的正弦信号有效值的测量,需要先将模拟量转换为数字量,将所得的数据经由单片机处理,再将最后的结果显示出来。
设计的电路主要包括信号采集与转换电路,单片机控制电路和显示电路。
其中,有效值的计算在本次设计中主要利用软件部分的设计完成。
关键词:有效值测量,模数转换电路,单片机控制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 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 calculation 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 control1 电路设计为了测得正弦信号的有效值,硬件电路的设计应包括信号的输入采集电路,模拟量与数字量转换电路,单片机控制电路与数字显示电路。
基于单片机正弦波有效值的测量

基于单片机正弦波有效值的测量一.简介本作品以单片机STC12C5A60S2为主控芯片并以此为基础,通过二极管1N5819实现半波整流,使用单片机内部自带10位AD对整流后的输入信号进行采样,从而实现对峰值的检测;同时通过运放LM837对输入信号进行放大,之后通过施密特触发器,将原始信号整形成可被单片机识别的标准脉冲波形,之后配合内部计数器(定时器)达到测量其频率的目的;这样,整流和AD采样实现对输入信号峰值的检测;通过放大、整形实现对输入信号频率的检测。
二.基本功能与技术指标要求(1)输入交流电压:1mV~50V,分五档:①1mV~20mV,②20mV~200mV,③200mV~2V,④2V~20V,⑤20v~50V。
(2)正弦频率;1Hz~100kHz;(3)检测误差:≤2%;(4)具有检测启动按钮和停止按钮,按下启动按钮开始检测,按下停止按钮停止检测;(5)显示方式:数字显示当前检测的有效是,在停止检测状态下,显示最后一次检测到的有效值;(6)显示:LCD,显示分辨率:每档满量程的0.1%;三.理论分析本文要求输入交流信号,通过电路测量其峰值,频率,有效值以及平均值,因为输入的交流信号为模拟信号,而一般处理数据使用的主控芯片单片机处理的是数字信号,所以我们选择使用数模转换器AD(Analog to Digital Converter)将输入的模拟信号转换为数字信号,并进行采样;由于要求输入交流信号电压峰峰值Vpp为50mV~10V,所以如果我们采用AD为8位,则最小采样精度为,因此会产生78.4%的误差,并且题目要求输入交流信号的频率范围为40Hz~50kHz,所以为了保证对高频率信号的单周期内采样个数,我们需要选择尽量高速度的AD;因此我们选用使用单片机STC12C5A60S2,其内部自带AD为8路10位最高速度可达到250KHz,所以我们可以将最小采样精度缩小到,并且在输入交流信号频率最大时(50KHz)在单个周期内可采集5个点,因此可保证测量精度。
(完整word版)基于单片机的正弦波信号发生器的设计

(完整word版)基于单片机的正弦波信号发生器的设计毕业设计论文题目:基于单片机的正弦波信号发生器的设计系部:电子信息工程系专业名称:电子信息工程技术班级: 08431 学号:33姓名:顾伟国指导教师:郑莹完成时间:2011 年 5 月12 日(完整word版)基于单片机的正弦波信号发生器的设计基于单片机的正弦波信号发生器的设计摘要:信号发生器的应用越来越广,对信号发生器的频率稳定度、频谱纯度、频率范围和输出信号的频率微调分辨率提出越来越高的要求,普通的频率源已经不能满足现代电子技术的高标准要求。
因而本设计采用了AT89C51单片机为控制核心,通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产生1HZ—180HZ的正弦波波形。
通过键盘来控制波形频率变化,并通过液晶屏1602显示其波形以及频率和幅度值的大小。
关键字:信号发生器;AT89C51;D/A转换器DAC0832Based on SCM sine wave signal generator designAbstract:Signal generator used more and more widely, to signal generator frequency stability, the spectrum purity,frequency range and output signal frequency fine-tune resolution higher and higher demands are proposed,the average frequency source cannot have satisfied the high standard requirement of modern electronic technology. So this design USES A AT89C51 as control core,through the D/A converter DAC0832 converts digital signals into analog signals, filter and amplification, finally shown by oscilloscope 1HZ — 180HZ, can produce the sine wave。
基于单片机50hz正弦波有效值的测量

关键词:正弦波、有效值 、A/D 转换、AT89C52
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.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机正弦波有效值的测量一.简介本作品以单片机STC12C5A60S2为主控芯片并以此为基础,通过二极管1N5819实现半波整流,使用单片机内部自带10位AD对整流后的输入信号进行采样,从而实现对峰值的检测;同时通过运放LM837对输入信号进行放大,之后通过施密特触发器,将原始信号整形成可被单片机识别的标准脉冲波形,之后配合内部计数器(定时器)达到测量其频率的目的;这样,整流和AD采样实现对输入信号峰值的检测;通过放大、整形实现对输入信号频率的检测。
二.基本功能与技术指标要求(1)输入交流电压:1mV~50V,分五档:①1mV~20mV,②20mV~200mV,③200mV~2V,④2V~20V,⑤20v~50V。
(2)正弦频率;1Hz~100kHz;(3)检测误差:≤2%;(4)具有检测启动按钮和停止按钮,按下启动按钮开始检测,按下停止按钮停止检测;(5)显示方式:数字显示当前检测的有效是,在停止检测状态下,显示最后一次检测到的有效值;(6)显示:LCD,显示分辨率:每档满量程的0.1%;三.理论分析本文要求输入交流信号,通过电路测量其峰值,频率,有效值以及平均值,因为输入的交流信号为模拟信号,而一般处理数据使用的主控芯片单片机处理的是数字信号,所以我们选择使用数模转换器AD(Analog to Digital Converter)将输入的模拟信号转换为数字信号,并进行采样;由于要求输入交流信号电压峰峰值Vpp为50mV~10V,所以如果我们采用AD为8位,则最小采样精度为,因此会产生78.4%的误差,并且题目要求输入交流信号的频率范围为40Hz~50kHz,所以为了保证对高频率信号的单周期内采样个数,我们需要选择尽量高速度的AD;因此我们选用使用单片机STC12C5A60S2,其内部自带AD为8路10位最高速度可达到250KHz,所以我们可以将最小采样精度缩小到,并且在输入交流信号频率最大时(50KHz)在单个周期内可采集5个点,因此可保证测量精度。
由于该AD只能接受0~5V的模拟信号输入,所以当我们直接输入一个双极性信号时可能损坏AD,因此当信号进入AD之前我们要进行半波整流,为此我们设计了整流电路,在交流信号通过整流电路输入AD 后,由AD实时输出对应模拟信号大小的二进制数,并存入变量MAX中,随着信号的不断输入MAX中只保存AD输出过的最大值,这样既可测出输入信号的峰值;由交流信号有效值表达式可知检波器应当首先把输入的瞬时电压平方, 然后在一定平均时间内取平均值再开方。
即可得到交流信号的有效值,然后通过比较峰值和有效值的关系即可知道该交流信号的波形;由于要检测交流信号的频率,所以我们使用单片机内部定时器和计数器,而计数器只能由上升沿或是下降沿触发,所以我们想通过施密特触发器将输入交流信号变为高低电平,以便检测其频率,而施密特触发器CD40106在常温5V供电下门限电压=1.4V,而输入交流信号的峰值最小时为25mV,所以不能保证输入信号为正的时候施密特触发器就能发生跳变,因此我们要对输入交流信号进行放大,为此我们设计了放大电路。
四.电路设计1.电源电路的设计本次实验我们采用+5V,—5V,+12V,—12V的电源,故采用了7805,7905,7812,7912这四块芯片组成电源电路对作品进行供电。
如图一所示:图一经过测量实际输出电压为:+5.12V -5.06V +12.67V -12.02V2.分档设计由于直接对信号测量时,对小信号的测量产生很大的误差,为了更有效的利用单片机的资源,故要对待测信号进行分档处理,但在实际运行中,由于进入放大器之前存在大量电阻产生了很多的噪声干扰,使输出波形严重失真,不能有效的利用,故我们舍弃了该部分的电路。
3.整流电路的设计我们使用整流二极管5819实现半波整流,但通过此电路输出波形会出现一个负电压,因此在此基础上,我们在二极管后加了一个上拉电阻,实现最大程度的消除输入波形的负电压,使其在单片机STC12C5A60S2内部AD的可接收信号范围内(0-5V)。
输入信号经过整流后进入AD,由AD输出10位数字信号,再有单片机进行处理,得出信号的有效值。
电路如图二所示:图二在实际的测试中,证明该方案可行,能够实现对信号的半波整流处理。
4.正弦波转方波电路设计在该电路的设计中,我们一开始采用555芯片把正弦波转换为方波,但在实际的测试中发现555只能对高于6V的信号才能使正弦波转换为放波,与我们实习要求不符合,故舍弃了该方案。
在老师的指导下,我们采用了滞回比较器来产生方波。
本方案检测输入信号频率的核心电路,信号通过由三个运放LM324组成的运放电路后放大100倍,然后输入施密特触发器使其波形变为高低电平,将此波形输入到单片机主控芯片,利用单片机内部的计数器和定时器完成对频率的测量。
大部分采用运放LM324构成放大100倍电路,位于图下方由5V电源供电的运放可以产生一个2.5V的直流电压,将此2.5V的直流电压输入到第一级运放后,会使输入的交流信号上偏2.5V,变为0-5V,再经过100000pF的电容C3滤掉被放大的噪声以及2.5V直流后,变为-2.5—+2.5的交流信号,之后进入二级放大;如图所示第二级运放在加入+2.5V直流电压后输出为0—5V的交流信号,至此外加交流信号已被放大100倍;在外加交流信号被放大100倍之后进入施密特触发器CD40106,该触发器在常温5V供电下门限电压 =1.4V ,输出高电平,低电平,此部分电路输出即为这个高低电平。
电路如图三所示:图三在实际的检测中发现放大器并不能将信号放大100倍,故幅值较小的信号不能正常显示频率,只要当信号的峰峰值大于1.5V时才能使单片机正常显示信号的频率。
5.单片机电路采用STC12C5A60S2单片机,作为整个系统的控制器,控制各个模块协调工作。
运用其内部集成的一个AD作为数模转换器。
如图四所示图四6.系统整体电路图如图五所示图五四.软件设计AD流程图如图六图七所示图六图七1.正弦波有效值的测量方法工频正弦电压信号)2sin(2)2sin()(ϕπϕπ+=+=ft U ft U t u mt频率f 和初相位角ψ已知,且ψ=0,现以t=0时可作为基准时间,并在t=0时刻开始进行等间隔采样,共得到正弦波u(t)的N 个测量值(采样数据)u(0),u(1),……,u(N-1),希望利用这N 个测量值来计算正弦波的幅值Um (有效值U )。
设采样周期为T S ,如果不存在噪音,且测量无偏差,则有0)0sin()0(==m U u)2sin()0(S m T f U u ⋅⋅=π……)2sin()(S m T K f U k u ⋅⋅⋅=π……))1(2sin()1(S m T N f U N u ⋅-⋅⋅=-π我们可以设法利用测量值求解出正弦波参数。
实际上,我们的测量存在误差,同时信号存在噪音,因此,对每一个测量信号u(k),它与对应时刻t=k ·T S 的正弦波)2sin()(ft U t u m π=的值)2sin()(s m T k f U t u ⋅⋅⋅=π存在一个误差)(k e ,其中k=0,1,…,N-1。
定义)()2sin()(k u T k f U k e S m -⋅⋅⋅=π为了利用N 个测量值来尽可能准确的计算正弦波幅值Um ,我们定义指标函数为:∑∑-=-=-⋅⋅⋅⋅==102102)]()2sin([)(21)(N k s m N k m k u T k f U k e U πε 它是频率f ,幅值Um ,初相位角ψ的函数。
我们的目的就是求频率f ,幅值Um ,初相位角ψ使得目标函数ε最小。
为此,令)1(0)2sin()()2(sin )}2sin()]()2sin({[)(101021-------------------------------------------------=⋅⋅⋅⋅-⋅⋅⋅⋅=⋅⋅⋅⋅-⋅⋅⋅⋅=∂∂∑∑∑-=-=-=N k s N k s m N k s S m m m T k f k u T k f U T k f k u T k f U U U ππππε可以得到正弦波的幅值∑∑-=-=⋅⋅⋅⋅⋅⋅⋅=10210)2(sin )2sin()(N k s N k sm T k f T k f k u U ππ 为了与正弦波的真正幅值Um 表示上的区别,用U mC 表示利用N 个采样数据获得的正弦波幅值计算值,既)2()2(sin )2sin()(10210∑∑-=-=⋅⋅⋅⋅⋅⋅⋅=N k s N k smC T k f T k f k u U ππ 对于f ≈50Hz(以前面的测量值为准,这里仅为举例),选择采样周期T S ≈20/200=0.1ms=100us ,既每个周期采样200点(每半个周波100次采样),199,...,1,0)10sin()2sin(=⋅=⋅⋅⋅k k T k f S ππ是确定的(可以预先求出,存于sin 表中),sin 2(2π·f ·k ·T S )同样作为常数表,而且C T k f N k s =⋅⋅⋅∑-=102)2(sinπ本身是一个常数,因此公式(2)变为)3()2sin()(10C T k f k u U N k smC ∑-=⋅⋅⋅⋅=π当采样周期很小时,数值积分系数C 可以用)4()()(sin 1202t d t T C S ωωπ⎰⋅=来替代(可以认为C 是一个周期类的数值积分,当采样周期很小时,就用积分项来表示)。
就可利用N 个等间隔测量值计算出正弦信号的峰值Um 。
正弦波的有效值与峰值的关系)5(2mCC U U半波绝对值电路:在待测交流信号的正半波,输出待测信号送AD 变换电路,在待测信号的负半波,输出0.正半波时,Px.y=0,单片机利用该信号识别是正半波信号,进行AD 转换,获得N 个采样值。
在Px.y=1时,单片机暂停AD 变换,利用正半波获得的N 个检测信号计算正弦波的有效值U ,频率f 。
2.数据测量幅值的测量表1频率的测量表23.数据分析由上图可知在输入信号vpp在0.7v到5v的区域内,实验作品的误差较小能够实现有效值的测量,当频率在100Hz到40KHz时,在误差允许范围内,作品基本能完成对该信号的准确测量。
4.软件部分代码:#include <reg52.h>#include <intrins.h>#define FOSC 12000000L#define BAUD 9600typedef unsigned char BYTE;typedef unsigned int WORD;sbit LCM_E=P2^5;//定义接口sbit LCM_RW=P2^6;sbit LCM_RS=P2^7;sfr ADC_CONTR = 0xBC;sfr ADC_RES = 0xBD;sfr ADC_LOW2 = 0xBE;sfr P1ASF = 0x9D;sfr AUXR = 0x8e;#define ADC_POWER 0x80#define ADC_FLAG 0x10#define ADC_START 0x08#define ADC_SPEEDLL 0x00#define ADC_SPEEDL 0x20#define ADC_SPEEDH 0x40#define ADC_SPEEDHH 0x60#define LCM_Data P0//数据接口void InitUart();void SendData(BYTE dat);void Delay(unsigned int n);void IO_ADinit() ;void ADC_Power_On() ;void get_ad_result() ;void ADCONVERT() ;void WriteDataLCM(BYTE WDLCM);void WriteCommandLCM(BYTE WCLCM,BuysC);BYTE ReadDataLCM(void);BYTE ReadStatusLCM(void);unsigned int GetADCResult(BYTE ch);void LCMInit(void);void DisplayOneChar(BYTE X, BYTE Y, BYTE DData);void DisplayListChar(BYTE X, BYTE Y, BYTE code *DData); void Delay5Ms(void);void Delay400Ms(void);void Disp_number(unsigned int num,BYTE n);void ShowResult(BYTE ch);unsigned int GetADCResult(BYTE a);unsigned int data_max = 0;unsigned long data_max1,count =0;unsigned int data_change = 150;//0.7Vunsigned char code VP[4]={"Amp:"},Freq[5]={"Freq:"};unsigned int Counter = 0;unsigned int data_last = 0;BYTE ch = 0;unsigned int Frequency = 0;unsigned int nn =0,flag = 0,flag1 = 0,nn1=0;unsigned int PrintFre[5] ;unsigned int Print[4];unsigned int number[4];unsigned int D;void main(){unsigned int n=0;Delay400Ms();//启动等待,等LCM讲入工作状态LCMInit();//LCM初始化Delay5Ms();//延时片刻(可不要)ET1 = 1;EA=1;InitUart();TMOD = 0x15;//均为16位计数器TH0 = 0x00;TL0 = 0x00;TH1 = 0x3C;TL1 = 0xAF;TCON = 0x50;//T1,T0均工作,t1做定时器,t0做计数器;while(1){ADCONVERT();n++;if(n>10000){data_max=0;n=0;}}}void To_interrupt(void)interrupt 3 using 1{int i ,j;unsigned int Change1,Print[4];unsigned long int Change2;TH1 = 0x3C;TL1 = 0xAF;Counter = Counter++;if(Counter == 20){Frequency = (TH0<<8)+TL0;//读取此时计数器0的读数if(Frequency>=2000)Change1 = (Frequency/100)*92;else if (Frequency>=200)Change1 = ((Frequency/10)*92)/10;else Change1 = (Frequency*97)/100;for( i=0;i<5;i++){PrintFre[i] = Change1 % 10;Change1 = Change1 / 10;}for(i=4;i>=0;i--){if(i>0)DisplayOneChar(4-i,0,PrintFre[i]+48);else{DisplayOneChar(4-i,0,PrintFre[i]+48);DisplayListChar(5-i,0,"Hz");}}Change2 = data_max*50;Change2 = Change2/10/1.414;for(j=0;j<=3;j++){Print[j] = Change2 % 10;Change2 = Change2 / 10;}for(j=3;j>=0;j--){if(j>0) DisplayOneChar(10-j,0,Print[j]+48);else { DisplayOneChar(10-j,0,Print[j]+48);DisplayListChar(11-j,0,"mV");}}TH1 = 0x3C;TL1 = 0xAF;TH0 = 0xFF;TL0 = 0xFC;Counter = 0;}}void IO_ADinit(){ADC_CONTR=0xe0; //设置P1.0为输入AD转换口_nop_(); //ADC_CONTR需要四个指令延时_nop_();_nop_();_nop_();}void ADC_Power_On(){ADC_CONTR|=0x80;_nop_();_nop_();_nop_();_nop_();}void get_ad_result(){unsigned int q=0,ad_average_result;ADC_RES=0;ADC_LOW2=0;ADC_CONTR|=0x08;while(!(ADC_FLAG&ADC_CONTR)) ;ADC_CONTR&=0xE7;ad_average_result=(ADC_RES<<2)+ADC_LOW2;if(data_max<ad_average_result)data_max=ad_average_result; }void ADCONVERT(){ADC_Power_On();IO_ADinit();get_ad_result();}void InitUART(){SCON = 0x5a;PCON|= 0x80;}void SendData(BYTE dat){while(!TI);TI = 0; SBUF = dat;}void Delay(unsigned int i){unsigned char j;for(i; i > 0; i--)for(j = 200; j > 0; j--) ;}void WriteDataLCM(BYTE WDLCM){ReadStatusLCM(); //检测忙LCM_Data = WDLCM;LCM_E = 0;LCM_RS = 1;LCM_RW = 0;LCM_E = 0; //若晶振速度太高可以在这后加小的延时LCM_E = 1;LCM_E = 0;}void WriteCommandLCM(BYTE WCLCM,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCM(); //根据需要检测忙LCM_Data = WCLCM;LCM_E = 0;LCM_RS = 0;LCM_RW = 0;LCM_E = 1;LCM_E = 0;}BYTE ReadDataLCM(void){LCM_E = 0;LCM_RS = 1;LCM_RW = 1;LCM_E = 1;LCM_E = 0;return(LCM_Data);}BYTE ReadStatusLCM(void){LCM_Data = 0xFF;LCM_E = 0;LCM_RS = 0;LCM_RW = 1;LCM_E = 1;LCM_E = 0;while (LCM_Data & 0x80) //检测忙信号{ LCM_E=0;LCM_E=1;}return(LCM_Data);}void LCMInit(void) //LCM初始化{LCM_Data = 0;WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,0);Delay5Ms();WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号WriteCommandLCM(0x08,1); //关闭显示WriteCommandLCM(0x01,1); //显示清屏WriteCommandLCM(0x06,1); // 显示光标移动设置WriteCommandLCM(0x0C,1); // 显示开及光标设置}void DisplayOneChar(BYTE X, BYTE Y, BYTE DData){Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码 0x40;X += 0x80; // 算出指令码WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码WriteDataLCM(DData);}void DisplayListChar(BYTE X, BYTE Y, BYTE code *DData) {BYTE ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]) //若到达字串尾则退出{if (X <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符 }ListLength++ ;X++ ;}}void Disp_number(unsigned int num,BYTE n){BYTE a; //个位BYTE b; //十位BYTE c; //百位BYTE d; //千位// BYTE e; //万位switch(n){case 1:WriteDataLCM(num);break;case 2:b=num/10;a=num%10;WriteDataLCM(number[b]);WriteDataLCM(number[a]);break;case 3:c=num/100;b=num%100/10;a=num%10;WriteDataLCM(number[c]);WriteDataLCM(number[b]);WriteDataLCM(number[a]);break;case 4:d=num/1000;c=num%1000/100;b=num%1000%100/10;a=num%10;WriteDataLCM(number[d]);WriteDataLCM(number[c]);WriteDataLCM(number[b]);WriteDataLCM(number[a]);break;}}//5ms延时void Delay5Ms(void){unsigned int TempCyc = 5552;while(TempCyc--);}//400ms延时void Delay400Ms(void){BYTE TempCycA = 5;unsigned int TempCycB;while(TempCycA--){TempCycB=7269;while(TempCycB--);};}五.实习总结:匆匆的4周过去了,我们的实习也将步入结束。