基于STC89C51的等精度频率计研制
基于at89c51单片机的频率计设计方法的研究

基于at89c51单片机的频率计设计方法的研究【基于at89c51单片机的频率计设计方法的研究】一、引言在现代科技日新月异的今天,单片机作为一种微型计算机,已经被广泛应用于各个领域。
其中,at89c51单片机以其稳定、可靠、易用的特点,成为了广大电子爱好者和专业技术人员的首选。
频率计作为一种常见的电子测量仪器,通过对信号的计数或者对波形的周期进行时间测量,能够准确测量信号的频率。
基于at89c51单片机的频率计设计方法成为了研究的焦点。
二、基本原理1. at89c51单片机简介at89c51单片机是一款典型的8位微控制器,具有4 KB 的内部Flash 可编程存储器。
它集成了许多功能模块,包括定时器、串行总线接口、模数转换器等,非常适合用于频率计的设计。
2. 频率计的基本原理频率计主要通过计数或者时间测量来确定信号的频率。
在基于at89c51单片机的设计中,一般采用定时器/计数器模块来实现频率的测量。
三、设计方法1. 信号输入在频率计的设计中,首先需要考虑的是信号的输入。
可以通过外部引脚的方式输入信号,也可以通过模拟输入口进行信号的输入。
2. 信号计数利用at89c51单片机的定时器/计数器模块,可以很方便地对输入的信号进行计数。
通过对计数值的读取和处理,可以得到信号的频率。
3. 显示输出设计一个合适的显示模块,将测得的频率值以数字或者图形的方式呈现给用户,从而实现频率的测量和显示。
四、关键技术1. 定时器/计数器模块的应用at89c51单片机的定时器/计数器模块是实现频率计的关键。
通过合理的配置和使用,可以实现对复杂信号的准确测量。
2. 中断技术的应用在频率计的设计中,中断技术可以帮助我们实时地对信号进行处理,提高系统的实时性和准确性。
3. 数字滤波技术对于输入的信号,往往存在噪声和干扰,因此需要借助数字滤波技术对信号进行处理,提高测量的精度和稳定性。
五、实际应用基于at89c51单片机的频率计设计方法已经在许多实际应用中得到了广泛的应用。
基于AT89C51的频率计设计

基于AT89C51的频率计设计第一章绪论;随着微电子技术和计算机技术的迅速发展,特别是单片;采用不同的测量原理,可以设计出不同结构的频率测量;通常能对频率和时间两种以上功能测量的数字化测量仪;1.1频率计的概述;数字频率计是计算机、通讯设备、音频视频等科研生产;本数字频率计将采用定时、计数的方法测量频率,采用;1.2频率计的主要性能;1.2.1.测试功能;它表明数字频率计所具备的全部测试第一章绪论随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。
频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。
对石英晶体振荡器,各种信号发生器,各种倍频和分频电路输出信号的频率需要测量;广播,电视,电讯,微电子技术等现代化的科学领域,更需要进行频率测量。
采用不同的测量原理,可以设计出不同结构的频率测量仪器,所以按测量原理来分,数字频率计可分为谐振式,比较式和计数式三类;按选用电路形式来分,它又可以分为模拟式和数字式两类。
通常能对频率和时间两种以上功能测量的数字化测量仪器,称为数字频率计,有时也称为通用计数器或电子计数器。
当前较多采用的是数字频率计。
计数式频率计是基于时间或频率的A/D转换原理,并依赖于数字计数技术发展起来的一类新型数字仪器。
与其他电子仪器一样,数字频率计也经历了电子管,晶体管和集成电路等几个阶段,其性能日臻完善,功能不断扩大,若配以适当的插件或传感器,还可以对多种电量和非电量进行测量。
1.1 频率计的概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
基于89C51单片机的可自选量程的数字频率计设计

1 引言单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度[1]。
51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和皮鞭接受及应用,51系列单片机还会在继后很唱一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用时非常重要的。
随着电子技术的发展,当前数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。
推动该潮流迅猛发展的引擎上日趋进步和完善的设计技术。
目前数字频率计的设计可以直接面向用户要求,根据系统的行为和功能要求,自上至下的逐层挖不出个办法相应的描述、综合、优化、仿真与验证,知道生成期间。
上述设计过程除了系统行为和功能描述以外。
其余所有的设计过程几乎都可以用计算机来自动的完成,也就是说做到了电子设计自动化(EDA)。
这样做可以大大地缩短系统的设计周期,以适应当今品种多,批量下的电子市场的需求,提高产品的竞争能力。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用汇编语言。
将使整个系统大大简化。
提高整体的性能和可靠性。
本文用汇编语言在CPLD器件上实现一种8 b数字频率计测频系统,能够用十进制数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。
具有体积小、功耗低等特点。
2 系统概述2.1 数字频率计的概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
基于单片机的频率计设计

基于单片机的频率计设计摘要:本文所要介绍的是以单片机89C51为核心设计了一种频率计。
在本文的设计当中,所应用到的是单片机的数学运算以及控制的功能,是对测量量程自动切换的一种实现,不单单能够满足测量精度的要求,而且还能够满足系统反应时间的一个要求。
代写论文关键词:单片机89C51;频率计设计引言:在工业生产、仪器仪表行业及实验教学中,经常会遇到频率的测量,我们经常使用的及目前市场上所售的频率测量装置,大多数是采用小规模集成电路及分离元件组成。
在现代电子学的各个领域,要求频率计精度高且能够直接读出频率值。
频率计由AT89C51、信号予处理电路、串行通信电路以及测量数据的显示电路还有系统软件所构成的,在当中信号的予处理电路包含了待信号放大、波形变换、波形整形以及分频电路。
信号的予处理电路当中的放大器所实现的是对待测信号的一个放大的功能,能够降低对待测信号的幅度的一个要求,波形的变换和整形电路实现将正弦波样的一个正负交替的号波形转换成为能够被单片机所接受的一个信号,分频电路所用于扩展的单片机的频率测量范围并且通过实现单片机频率测量以及周期测量使用统一的一个输入的信号。
系统的软件柏阔有测量初始化的模块、显示的模块以及信号频率测量的模块等等。
一、相关处理方法以AT89C51单片机作为我们频率计的核心,通过它内部的一个定时计数器来进行对待测信号周期的一个测量。
在89C51当中有2个16位的定时器,它们都是通过编码来进行事先定时、计数以及产生计数溢出中断要求的这一功能。
在构成定时器到时候,每一个机器的周期加上一,然后这样就能够使得机器周期作为一个基准从而来测量出一个时间的间隔。
然而在构成计数器的时候,就应当在相应的外部引脚发生一个从一到零的一个跳变时计数器加一,这样计数的闸门就能够在门的控制之下用来测量待测信号的一个频率。
在外部输入每个及其周期进行采样一次,这样子就能够检测出从一到零的跳变至少要两个及其的周期,所以说最大的计数速率是时钟频率的二十四分之一。
基于AT89C51单片机频率计的设计(含程序)

AT89C51单片机频率计的设计摘要基于在电子领域内,频率是一种最基本的参数,并与其他许多电参量的测量方案和测量结果都有着十分密切的关系。
由于频率信号抗干扰能力强、易于传输,可以获得较高的测量精度。
因此,频率的测量就显得尤为重要,测频方法的研究越来越受到重视。
频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。
随着微电子技术和计算机技术的迅速发展,特别是单片机的出现和发展,使传统的电子侧量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代侧量仪器。
频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。
目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。
为适应实际工作的需要,本次设计给出了一种较小规模和单片机(AT89C51)相结合的频率计的设计方案,不但切实可行,而且体积小、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。
频率计的硬件电路是用Ptotues绘图软件绘制而成,软件部分的单片机控制程序,是以KeilC做为开发工具用汇编语言编写而成,而频率计的实现则是选用Ptotues仿真软件来进行模拟和测试。
关键词:单片机;AT89C51;频率计;汇编语言选题的目的意义数字频率计的主要功能是测量周期信号的频率。
其基本原理就是用闸门计数的方式测量脉冲个数。
频率是单位时间( 1s )内信号发生周期变化的次数。
如果我们能在给定的 1s 时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。
数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。
最新基于89C51的数字频率计--课程设计

单片机系统课程设计任务书目录1 引言 (1)2 系统概述 (2)2.1 频率测量原理 (2)2.2 方案比较 (2)2.3方案选择 (3)3 系统硬件设计 (3)3.1 系统硬件总述 (3)3.2 信号输入电路 (4)3.3 开关电路 (5)3.4 计数电路 (6)3.5 AT89C51介绍 (7)3.6 数字频率计显示电路 (8)3.7 时钟控制电路 (9)4.系统软件设计 (9)4.1 系统软件总述 (10)4.2 显示器初始化设计 (11)4.3 计数子程序 (12)4.4 数制转换子程序设计 (13)4.5 显示子程序设计 (14)5系统的功能调试 (15)6 结论 (16)参考文献 (17)附录A (17)附录B (18)1 引言单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。
51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和皮鞭接受及应用,51系列单片机还会在今后很长一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用时非常重要的。
数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用汇编语言。
将使整个系统大大简化。
提高整体的性能和可靠性。
2 系统概述2.1 频率测量原理频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下,计算每秒内待测信号的脉冲个数,此时称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
基于AT89C51单片机的频率计
信息职业技术学院毕业设计任务书目录摘要 (1)第1章绪论 (2)第2章设计方案论证与比较 (3)2.1 基于集成电路的简易数字频率计设计 (3)2.2 基于AT89C51的频率计设计 (3)2.3 方案的可行性和优点 (4)第3章频率计电路的工作原理 (6)3.1 单元电路工作原理 (6)3.1.1 信号转换电路 (6)3.1.2 分频电路 (7)3.1.3 数据选择电路 (8)3.1.4 单片机硬件系统设计 (9)3.1.5 显示电路 (12)3.2 基于AT89C51的频率计总体硬件电路图 (13)第4章基于AT89C51频率计的软件设计 (15)第5章电路的仿真 (20)总结 (21)参考文献 (22)摘要随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。
传统的频率计通常是使用很多的逻辑电路和时序电路来实现的,这种电路一般运行缓慢,而且测量频率的范围比较小。
考虑到上述问题,本电路设计一个基于单片机技术的数字频率计,可使测量频率范围大、运行速度快。
在线路实现上更加可靠。
本文从频率计的原理出发,首先把待测正弦信号经过整形;然后把信号送入单片机的定时计数器里进行计数,获得频率值;最后把测得的频率数值送入显示电路里进行显示。
利用单片机设计的数字频率计,选择了实现系统的各种电路元器件,并对硬件电路进行了仿真。
关键词单片机;数字频率计;测量第1章绪论在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于测量过程自动化等优点,是频率测量的重要手段之一。
电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法如周期测频法,直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
基于AT89C51的等精度宽范围频率计
制作名称:基于AT89C51的等精度宽范围频率计1、制作编号:0092、难度等级:★★★★★(适合第5、7学期制作)3、设计要求1)利用AT86S51设计一个等精度宽范围频率计。
2)用5位数码管显示测量结果。
3)系统采用7V-12V直流电源供电。
4)用开关控制电路的通断,电路接通时指示灯亮,反之熄灭。
4、使用说明1.把电源线接入电路右方J2端口(按电路所标极性正确连接),给电路提供合适的工作电压。
2.按下电源开关S2,此时电源指示灯亮,电路即可进行工作,使用时把测试线接入J1端口即可进行频率测量(测试线标有“※”的为信号测试线,测试线标有“-”的为地线)3.读数方法:测试结果的显示格式采用科学计数法,单位是(H Z)。
测量结果从左到右用5位数码管显示:前3位为测量结果的有效数字;第四位为指数的符号(其中“–︳”表示正;“–”表示负);第5位为乘数(即0的个数)。
例如:显示结果是“888-︳2”也就是888×102Hz (88.8k Hz),如果是“888-2”也就是888×10-2Hz(8.88H z)。
5、技术参数电源电压:D C 7V~12V使用环境温度:0℃~80℃测量频率范围:0.100H Z~9.99MH Z测量频率误差:±1%测量信号峰值范围:≥0.5V测量信号类型:正弦波、各种脉冲波6、电路原理图7、元器件明细表8、参考电路板图9、方框图产品电路元器件的插装与焊接需要注意元器件安装的先后顺序和每个元器件的方向,大概步骤如下:1)第一工序为跳线的装配焊接:对照图(1)把跳线插装到电路板对应的位置,并在电路板的焊接面将引脚扳弯,使引脚与电路板成45°~60°,以防跳线脱落,全部跳线4个插完后进行焊接,焊完后用斜口钳将多余引脚剪掉。
图(1)2)第二工序为电阻的焊接:将各电阻的阻值选择好,根据电路板上对应的两安装孔的距离弯曲电阻脚,并注意二极管极性不能插反。
基于AT89 C5 1单片机的频率计设计方法的研究
pdf文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
第27卷第1期2009年2月青海大学学报(自然科学版)JournalofQinghaiUniversity(NatureScience)VoL27No.1Feb.2009基于AT89C51单片机的频率计设计方法的研究任小青,王晓娟(青海大学机械系,青海西宁810016)摘要:采用单片机AT89C51作为系统控制单元,辅以适当的软、硬件资源完成以单片机为核心的频率计设计。
介绍了内部计数器计数法、外部计数器计数法、测周期法3种测量频率的方法,并对每种设计方法进行了优缺点比较。
关键词:频率计;频率测量;单片机中图分类号:嘞68.1文献标识码:B文章编号:1006—8996(2009)02—0010—03ResearchonacymometerdesignmethodsinglechipAT89C51Qinghai810016,China)measuringmeth-basedliENonaXiao—qing,WANGXiao-juanUniversity,Xining(MechanicalandhardwareEngineeringDepartmentofuseaAbstract:AcymometerwaresingleehipAT89C51璐thesystemcontrolunitwithappropriatesoft-resourcesisdesignedinthispaperandthreekindscounterof台egnencyods,internalcountercoundongmethod,externalcountingmethodandmeasuringcyclemeth-Oilod,areintroducedtoo.Theadvantagesanddisadvantagesthethreemethodsarecomparedatlast.Keywords:cymometer;frequencymeasurement;singlechip频率计是一种测量信号频率的仪器,在教案、科研、高精度仪器测量、工业控制等领域都有较广泛的应用。
基于CPLD实现的DDS&频率计
基于STC89C51和CPLD实现的DDS与频率计系统框图功能描述:以STC89C51为控制核心,实现任意频率值fa(小于10KHz)的输入,经单片机出来后,生成相应的频率字,然后送给DDS模块,DDS模块开始工作,生成以频率值fs;但键盘测频键按下后,单片机控制频率计,让其开始控制,频率计输出值送回单片机处理,得出测量到的频率值fc,最后单片机控制LCD1602显示人为输入的频率值fa和频率计测得的频率值fc,两个值的差异可以直观的显示出系统的误差。
基于CPLD/FPGA的DDS原理图如下:基于CPLD/FPGA的频率计的原理图如下:DDS模块代码:(1)MUX832LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX832 ISPORT( DATAINN : IN STD_LOGIC_VECTOR(7 DOWNTO 0);clk : in std_logic;DATAOUTT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);SELL :IN STD_LOGIC_VECTOR(1 DOWNTO 0));END MUX832;ARCHITECTURE behav OF MUX832 ISBEGINPROCESS(SELL,DATAINN,clk)BEGINif clk'event and clk='1' thenCASE SELL ISWHEN "00" => DATAOUTT(7 DOWNTO 0) <= DATAINN;WHEN "01" => DATAOUTT(15 DOWNTO 8) <= DATAINN;WHEN "10" => DATAOUTT(23 DOWNTO 16) <= DATAINN;WHEN "11" => DATAOUTT(31 DOWNTO 24) <= DATAINN;END CASE;end if;END PROCESS;END behav;(2)32位加法器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER32B ISPORT ( A: IN STD_LOGIC_VECTOR(31 DOWNTO 0);B: IN STD_LOGIC_VECTOR(31 DOWNTO 0);S: OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END ADDER32B;ARCHITECTURE behav OF ADDER32B ISBEGINS<=A+B;END behav;(3)32位寄存器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B ISPORT( LOAD : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END REG32B;ARCHITECTURE behav OF REG32B ISBEGINPROCESS(LOAD,DIN)beginIF LOAD'EVENT AND LOAD ='1' THENDOUT<=DIN;END IF;END PROCESS;END behav;频率计模块代码:(1)标准频率计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BZHH ISPORT (BCLK: IN STD_LOGIC; --FsBENA: IN STD_LOGIC;CLR : IN STD_LOGIC; --清零BZQ : inOUT STD_LOGIC_VECTOR(31 DOWNTO 0));END BZHH;ARCHITECTURE behav OF BZHH ISBEGINPROCESS(BCLK, CLR) --标准频率计数开始BEGINIF CLR = '1' THEN BZQ <= (OTHERS=>'0');ELSIF BCLK'EVENT AND BCLK ='1' THENIF BENA ='1' THEN BZQ <= BZQ + 1;END IF;END IF;END PROCESS;END behav;(2)待测频率计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TTFF ISPORT (TCLK: IN STD_LOGIC; --FsENA: IN STD_LOGIC;CLR : IN STD_LOGIC; --清零TSQ : inOUT STD_LOGIC_VECTOR(31 DOWNTO 0));END TTFF;ARCHITECTURE behav OF TTFF ISBEGINPROCESS(TCLK, CLR,ENA)BEGINIF CLR = '1' THEN TSQ <= (OTHERS=>'0');ELSIF TCLK'EVENT AND TCLK ='1' THENIF ENA ='1' THEN TSQ <= TSQ + 1;END IF;END IF;END PROCESS;END behav;(3)MUX648LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX648 ISPORT( DATAIN1 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DATAIN2 : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DATAOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);SEL :IN STD_LOGIC_VECTOR(2 DOWNTO 0));END MUX648;ARCHITECTURE behav OF MUX648 ISBEGINDATAOUT <= DATAIN1(7 DOWNTO 0) WHEN SEL="000" ELSE --标准频率计低八位输出DATAIN1(15 DOWNTO 8) WHEN SEL="001" ELSEDATAIN1(23 DOWNTO 16) WHEN SEL="010" ELSEDATAIN1(31 DOWNTO 24) WHEN SEL="011" ELSE --标准频率计最高八位输出DATAIN2(7 DOWNTO 0) WHEN SEL="100" ELSE --待测频率计数值低八位输出DATAIN2(15 DOWNTO 8) WHEN SEL="101" ELSEDATAIN2(23 DOWNTO 16) WHEN SEL="110" ELSEDATAIN2(31 DOWNTO 24) WHEN SEL="111" ELSE --待测频率计数值最高八位输出DATAIN2(31 DOWNTO 24) ;END behav;单片机程序如下:主程序#include<reg52.h>#include<intrins.h>#include"key.h" //scankey(); keyexe(); setfre(); testfre(); #include"lcd1602.h" //display();void main(void){lcd_init();bena=0;clr=1;load_dds=0;oe=0;start=1;lcd_str(0,2,"dds.and.testfre!");while(1){keyexe();}}键盘程序:#ifndef __KEY_H__#define __KEY_H__#include<reg52.h>#include<intrins.h>#include "lcd1602.h"#define dinout P3;unsigned char keybuffer[8],longtochar[4],recieve[8];unsigned long freword,setdispbuf;unsigned long tfrecount,bfrecount; //Fs、Fx计数值unsigned long tfreword;//-----------pin define for dds and testfre------sbit sel2=P1^2;sbit sel1=P1^1;sbit sel0=P1^0;sbit oe=P2^3;//-----------pin define for dds loading ----------sbit load_dds=P2^4;//-----------pin define for testfre--------------sbit clr=P2^0;sbit bena=P2^1;sbit start=P2^2;//-----------delay programm----------------------void delay(unsigned int n){while(n--) _nop_();}//-----------format exchange---------------------void keytofreword(void){freword=keybuffer[0]*10000000+keybuffer[1]*1000000+keybuffer[2]*100000+k eybuffer[3]*10000+keybuffer[4]*1000+keybuffer[5]*100+keybuffer[6]*10+keybuffer [7];//合成输入频率值setdispbuf=freword;freword=(unsigned long)(freword*214.7493648);//计算相应的频率字longtochar[0]=(freword>>24)&0xff; //频率字最高八位longtochar[1]=(freword>>16)&0xff; //频率字次高八位longtochar[2]=(freword>> 8)&0xff; //频率字次低八位longtochar[3]=(freword) &0xff; //频率字最低八位}//-----------select channel-----------------------void select(unsigned char sel){unsigned char i,j;j=sel;sel=sel&0x07;i=P1;i=i&0xf8;i=i|sel;P1=i;}//-----------setting frequency--------------------void setfre(void){unsigned char i;keytofreword();display(setdispbuf,1); //显示输入的频率值lcd_str(0,2,"--setting.fre!-");oe=0;load_dds=0;for(i=0;i<4;i++){select(i);P3=longtochar[i];_nop_();_nop_();_nop_();load_dds=1;_nop_();_nop_();_nop_();load_dds=0;}lcd_str(0,2,"--setting.succ!-");}//----------test frequency------------------------void testfre(void){unsigned char i;unsigned int j;lcd_str(0,2,"--testing.fre---");bena=0;clr=0;_nop_();_nop_();_nop_();_nop_();clr=1; //-----clear register--------清零bena=1; //允许频率计开始工作delay1ms_x(1000); //门控时间2Sdelay1ms_x(1000);bena=0; //------count until start equals 0------------j=10000;while((start==1)&&(j--)); //----wait for end of testting or time out--- if(j==0)lcd_str(0,2,"--test.fre.err!-");elselcd_str(0,2,"-test.fre.succ!-");oe=1; //双向口for(i=0;i<8;i++){select(i);P3=0xff; //P3作为输入口_nop_();_nop_();_nop_();_nop_();recieve[i]=P3; //读取频率计计数值}oe=0;bfrecount=0;tfrecount=0;for(i=0;i<4;i++){bfrecount=(bfrecount<<8)+recieve[i]; //合成标准频率计数值tfrecount=(tfrecount<<8)+recieve[i+4]; //合成待测频率计数值}tfrecount=(unsigned long)tfrecount/3.5200886+1;//??????display(tfrecount,0);}//-------------------scan key value-------------------------unsigned char scankey(void) //键盘扫描{unsigned char i=0xff,k=0xfe,buf;unsigned code table[4]={0xfe,0xfd,0xfb,0xf7};for(i=0;i<4;i++){P1=table[i];buf=P1;if(buf!=table[i]){delay(1000);if(buf==P1){while(buf==P1);break;}}}switch(buf){case 0xee: return 1;case 0xed: return 2;case 0xeb: return 3;case 0xe7: return 10; //4case 0xde: return 4;//5case 0xdd: return 5;//6case 0xdb: return 6;//7case 0xd7: return 11; //8case 0xbe: return 7;//9case 0xbd: return 8;//0case 0xbb: return 9;//11case 0xb7: return 12;//12case 0x7e: return 13;//13case 0x7d: return 0;//14case 0x7b: return 14;//15case 0x77: return 15;//16default : return 16;//10}P1=0xff;}//-----------------key execution----------------------- void keyexe(void){unsigned char i,buf;buf=scankey(); //调键盘扫描,读取键值switch(buf){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9: for(i=0;i<7;i++)keybuffer[i]=keybuffer[i+1];keybuffer[7]=buf;lcd_data1(0,1,'i');lcd_data1(1,1,'n');lcd_data1(2,1,'p');lcd_data1(3,1,'u');lcd_data1(4,1,'t');lcd_data1(5,1,':');lcd_data1(6,1,keybuffer[0]+'0');lcd_data1(7,1,keybuffer[1]+'0');lcd_data1(8,1,keybuffer[2]+'0');lcd_data1(9,1,keybuffer[3]+'0');lcd_data1(10,1,keybuffer[4]+'0');lcd_data1(11,1,keybuffer[5]+'0');lcd_data1(12,1,keybuffer[6]+'0');lcd_data1(13,1,keybuffer[7]+'0');lcd_data1(14,1,'H');lcd_data1(15,1,'z');break;case 10: lcd_cmd(clear);setfre();break;case 11: testfre();break;case 12: for(i=0;i<8;i++){keybuffer[i]=0;lcd_data1(i+6,1,keybuffer[i]+'0');}lcd_data1(14,1,'H');lcd_data1(15,1,'z');break;default: break;}}#endif。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3频率计的硬件逻辑电路实现
由式(4)可知,测信号频率的测量精度主要决定 于参考信号频率值的高低和实际采样时间,所以要想 提高频率测量精度的一个关键因素是通过合理逻辑 电路保证闸门的开启与关闭必须与被测信号保持严 格的同步,这样才能确保采样一个或几个完整的信号 周期。本设计通过D触发器、单片机软件指令巧妙配 合共同完成这一任务。软件流程图及硬件原理图分别 如图2、图3所示。
电路上电复位后,启动频率测量程序,设置P1.1 为低,对D触发器CLR端输入低电平,使D触发器复 位,从而屏蔽两个与非门,两个记数通道被封锁。作 好计数准备。同时,P1.1口输出的低电平,分别对移位 寄存器、计数器、计数分频器清零(以后每次测量前 都先进行此操作)。当作好上述准备工作后,设置P1.4 口输入高电平,准备开始计数。当被测信号第1个脉 冲到来时,使D触发器输出为1,打开2个与非门,使 得被测信号和标准信号同时经过分频处理后由各自 的计数通道进行计数,从而保证了在被测信号一个 完整的周期的上升沿开始计数。在程序中将内部计数 器通道T/C0的计数初值寄存器设置为0,T/C1的计数 初值寄存器设置为FF38H(记数值200)。当标准信号
2等精度频率测量的基本原理
等精度频率测量法又叫多周期同步测量。主要 由被测信号计数器、参考信号计数器、同步闸门控制 器、采样时间控制器以及运算单元等组成。硬件实现 如图1所示。
测量的基本工作过程:当发出测量触发信号后, 同步闸门控制器在采样时间控制(即P)产生的预选闸
图1等精厦频翠测量结构图
门的控制下,由被测信号触发进行同步,形成真正的 采样时间,以同时控制两个计数器,分别对被测信号 和参考信号进行计数。由此可得到被测信号频率为:
8位 LED
段驱动 SEG(a—g)
位驱动 DIG(a—g)
键盘 矩阵
A
L T
一殂 一G涨她星f一㈣砌
P1 6 P1 7 INT STC89C51
图4 ZLG7290与单片机通信接口电路
5结束语
本频率计在0~170MHz的频率范围内具有同样的 相对精度;设计中考虑成本和测量精度的要求,选用 了精度为104的12M标准晶体,测量结果证明频率精度 可达10~。同时系统采用了带12c串行接口的ZLG7290作 为系统端口扩展,由于12C总线传输速度快,数据传输 的有效性好、可靠性高,使得该系统通讯良好。而且 ZLG7290接口芯片的体积小,使得电路布置灵活、简 捷方便,降低了生产成本。
Key words:Equal precision Cymome钕ZLG7290 12C
”
1引言
随着科学技术与计算机应用的不断发展,以单 片机作为核心的测量控制系统层出不穷。在被测信号 中,较多的是模拟和数字开关信号。此外,还经常遇 到以频率为参数的测量信号,例如流量、转速、晶体压 力传感器以及经过参变量一频率转换后的信号等。对 于这些以频率为参数的被测信号,通常对测量精度提 出比较严格的要求。
“水标定”,用实际标定数据验证厂家的理论计算是 否正确。并在投料前,即操作温度、压力均达到正常 操作状态时进行热态零点调整。时间常数的设置需根 据液位的变化速率调整,通常时间常数为60s,液位变 化快时时间常数可适当调小。
7结束语
射线液位计作为非接触式仪表,可以适应高温 (或低温)、高压(或低压)、强腐蚀、剧毒、粘稠、结 晶、固体颗粒等多种苛刻环境,无可动部件、免维护, 解决了生产过程中的许多难题。正确合理的设计、使 用射线仪表,并不会对人身和环境造成危害。但是, 其危险源本质和对环境的影响不可忽视。 作者简介:刘凤,高级工程师,中国纺织工业设计院仪表 专业总工程师,主要从事自控工程设计工作。
根据等精度测频原理,利用单片机与FPGA结合设计等精度数字频率计.待测频率信号经过整形放大后输入到FPGA,单片机控制FPGA通过内部脉冲计数器 对待测信号和标准信号源同时计数,单片机读回测频数据后,经运算处理后显示.等精度频率计测频精度高,且精度不随频率的变化而变化.单片机与FPGA结 合,测频速度快,范围宽,可靠性高.
基于STC89C51的等精度频率计研制
作者: 作者单位:
刊名: 英文刊名: 年,卷(期): 被引用次数:
朱彬, 孙海山 朱彬(达州职业技术学院机械电子技术系,四川达州,635000), 孙海山(富士康科技集团,广 东深圳,518109)
中国仪器仪表 CHINA INSTRUMENTATION 2007,""(8) 0次
关键词:等精度频率计ZLG7290 I℃
Abstract:InteUigent frequency measurement methods achieved by STC89C50 single-chip are introduced,adopt
the intelligent strobe controlling way by means of the cooperation of hardware logic and instructions.This product
% 等:越 鲁:露 矿1
(”17)
最2簧磊
(2)
式中: %为被测信号计数值; N为参考信号计数值; £为实际采样时间; 层为参考信号频率值;
万方数据
2007年第8期中阙坂鬓镀走
技术探讨
最为被测信号频率值。
从式(2)可以看出,引起被测信号测量值变化的
主要因素是参考信号尽的不确定度、参考信号M的计
数误差以及被测信号M的计数误差。由于测量计数实
放射源的安装、拆卸应由受过专门训练,并持有 放射源操作许可证的专业人员承担。放射源的安装一 般在装置开车前进行,并应在安装、拆卸前制定详细 的实施计划,设置危险区域警示牌,避免不必要的人 员进入危险区域。在装置停车检修期间,射源需要处
于关闭状态,或拆卸予以安全储存。
6射线液位计的调试
射线液位计在完全安装完毕后,厂家应给出标 定曲线。如果厂家没有经验和把握,装置有必要进行
平有效,用户的键盘处理程序可由厨于引脚低电平中
断触发,以提高程序效率,也可以不采样乃厅引脚信
该器件具有扫描显示功能,不需要单片机进行动 号,节省系统i/o资源而采取轮询系统寄存器KeyAvi
态扫描,可节省单片机用于键盘、显示扫描的时间,充 分显示其优越性。ZLG7290的12c接口传输速率可达
位的方式,在读键值寄存器时会使KeyAvi位清0,并
参考文献(3条)
1.张雪平 单片机提高频率测量精确度的新方法[期刊论文]-微计算机应用 2004(01) 2.吴文金 无±1误差频率测量技术[期刊论文]-电子测量技术 2003(06) 3.张雪平 单片机多周期同步法提高测频准确度[期刊论文]-电子测量技术 2004(03)
相似文献(10条)
1.期刊论文 吴海明.王伟.WU Hai-ming.WANG Wei 基于单片机与FPGA的等精度频率计设计 -兵工自动化2009,28(3)
会使厩7引脚信号无效。
32kbit/s,容易与处理器接口,并提供键盘中断信号,
在每个显示刷新周期,ZLG7290按照扫描位数寄
提高了主处理器的时间效率。有效的按键动作、普通
(下转第62页)
万方数据
2007锱98N中蠲儇嚣{霰丧
应用研究
剂量穿透较厚的设备,同时大量减少气相密度和挂壁 的影响。射源的选择取决于制造商的能力和经验,同 时与制造商的设计、营销理念有关。
技术探讨
基于STC89 C5 1的等精度频率计研制
Development of Equal Precision Cymometer Based on STC89C51
朱彬1孙海山2 1达州职业技术学院机械电子技术系(四川达州635000)2富士康科技集团(广东深圳518109)
摘 要:介绍了用单片机STC89C51实现智能频率测量的方法,采用硬件逻辑与软件指令筠妙配合的智能 阐门控制方式,可实现o~i00MHz范围内等精度测量功能,精度可达10‘7。同时系统采用新器件 ZLG7290扩展I/O端口,实现键盘控制及数码管显示。
(上接第48页) 存器(scanNum)指定的显示位数N,把显示缓存
(DpRam0~DpRamN)的内容按先后顺序送入LED驱 动器实现动态显示,减小N值可提高每位显示扫描时 间的占空比,以提高LED亮度,显示缓存中的内容不 受影响。修改闪烁控制寄存器(FlashOnOif)可改变闪 烁频率和占空比(亮和灭的时问)。本系统单片机与 ZLG通信接口原理图如图4所示。
参考文献 1张雪平.单片机提高频率测量精确度的新方法.微计算
机应用,2004,25(1). 2吴文金.无±1误差频率测量技术,电子测量技术,2003,
(6). 3张雪平.单片机多周期同步法提高测频准确度,电子测
量技术,2004,(3).
பைடு நூலகம்
62 wwW.cnim。ca
万方数据
2007年第8期中周豫嚣豫表
图2频率计的软件流程图
4单片机系统接口扩展技术
由于本系统设计中,要实现的功能较多,所以需 要占用较多的I/O端口,这无疑将造成系统硬件资源 紧张,需要对i/o口进行扩展。传统的8255、8279等芯 片可以进行单片机接口的扩展,但电路过于复杂,成 本增加,可靠性下降,且效果不明显。本设计中选用 了12C总线接口的显示及键盘管理器件ZLG7290。
定于参考信号频率值鼻的高低和实际采样时间死,而
且相对误差不变。
经过256分频通过T/C1通道计数满后产生中断,在中 断程序中进行移位操作,同时将P1.4口置为低电平, 做好关闭闸门的准备。但此时还没有真正关闭,当实 测信号紧临的一个上升沿到来时D触发器才能触发, 使得Q端输出为0,从而使闸门关闭,两计数器停止 记数,完成一次数据取样。当Q端输出由1变为0时, 对单片机的INT0口产生一个下降沿的触发,产生中 断(单片机程序初始化时,设置外部中断INT0为边 沿触发方式,T/C0、T/C1设置为计数器,电平触发方 式),对数据结果进行处理。并将结果送显示处理程 序。