频率计的设计报告(含详细原理,流程图,c语言程序,proteus图等)

合集下载

电子频率计报告详解

电子频率计报告详解

数字频率计一丶设计基本要求:(1)能够测试外部输入频率10~2000HZ范围的方波信号(2)将测试的数据在显示终端上进行显示(3)可以设定检测频率值,当输入的频率符合设定值可以出现声光提示(4)要求精度在0.2HZ二、方案设计与论证方案一:本方案主要以单片机为核心,利用单片机的计数定时功能来实现频率的技术并且利用单片机的动态扫描法把测出的数据送到数字显示电路显示。

其原理框图如图1.1所示:图1.1 原理框图根据所要实现的功能,先在Proteus软件上仿真。

根据所选用的硬件可以将整个软件设计分为若干子程序,有初始化、查询时间、发送指令、读取数据、显示温度等构成,可将以上子程序分别设计,实现各自的功能,再在子程序中调用,就可以实现预期的目标。

在Proteus软件里画出相应的电路图,将编写好的程序的编译后的文件下载到Proteus电路图的单片机里,进行仿真,对频率计设置不同的参数,看是否达到了我们设计所要求的目标,如果不符合要求,需要检查程序算法和硬件连接是否有误。

若仿真成功,就按照电路图焊接硬件。

方案二:本方案主要以数字器件为核心,主要分为时基电路,逻辑控制电路,放大整形电路,闸门电路,计数电路,锁存电路,译码显示电路七大部分。

其原理框图如图2.2所示:图2.2 方案二原理框图方案的论证:方案一:本方案主要以单片机为核心,利用单片机的计数器和定时器的功能对被测信号进行计数。

编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。

方案二:本方案使用大量的数字器件,被测信号经放大整形电路编程计数器所要求的脉冲信号,其高电平持续时间1s,当1s信号来到时,闸门开通,被测脉冲信号通过闸门,计数器开始计数,直到1s信号结束闸门关闭,停止计数。

若在闸门时间1s内计数器件的脉冲个数为N。

则被测信号频率Fx=NHz。

逻辑控制电路的作用有两个:一是产生脉冲,是显示器上的数字稳定:二十产生轻灵脉冲,是计数器每次测量从零开始技术。

课程设计报告(频率计)

课程设计报告(频率计)

设计题目:数字频率计的设计与制作一、课程设计的主要内容与目的1. 主要内容:数字频率计的主要功能是测量周期信号的频率,频率是单位时间内信号发生周期变化的次数,如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。

数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来,这就是数字频率计的基本原理。

从数字频率计的基本原理出发,根据设计要求,得到如图1所示的电路框图。

图12. 设计目的:(1)掌握数字频率计的工作原理(2)根据课程设计,熟悉一般产品设计的流程和方法。

(3)重点掌握数字频率计设计的计数部分。

二、主要技术指标1.频率测量范围:10~9999HZ。

2.输入信号波形:任意周期信号,输入电压幅度>300mv.3.电源:220V,50HZ。

系统框图中各部分的功能及实现方法(1)电源与整流稳压电路框图中的电源采用50Hz的交流市电。

市电被降压、整流、稳压后为整个系统提供直流电源。

系统对电源的要求不高,可以采用串联式稳压电源电路来实现。

(2)全波整流与波形整形电路本频率计采用市电频率作为标准频率,以获得稳定的基准时间。

按国家标准,市电的频率漂移不能超过0.5Hz,即在1%的范围内。

用它作普通频率计的基准信号完全能满足系统的要求。

全波整流电路首先对50Hz交流市电进行全波整流,得到如图2(a)所示100Hz的全波整流波形。

波形整形电路对100Hz信号进行整形,使之成为如图2(b)所示100Hz的矩形波。

波形整形可以采用过零触发电路将全波整流波形变为矩形波,也可采用施密特触发器进行整形。

图2 全波整流与波形整形电路的输出波形(3)分频器分频器的作用是为了获得1S的标准时间。

电路首先对图2所示的100Hz信号进行100分频得到如图3(a)所示周期为1S的脉冲信号。

高精度频率计 设计 报告

高精度频率计 设计 报告

高精度频率计设计报告引言在现代科学研究和工程技术中,频率计是一个非常重要的仪器,用于测量信号的频率。

随着科学和技术的发展,对频率计的精度要求越来越高,为了满足这一要求,我们设计了一款高精度频率计。

设计原理我们的高精度频率计采用了串行计数器的设计原理。

通过输入信号引发的脉冲沿被计数并记录下来,由计数器来完成计数操作,最终得到精确的频率值。

系统组成我们的高精度频率计由三部分组成:计数器模块、显示模块和控制模块。

计数器模块是整个系统的核心部分,它由一个高速可编程计数器和一个低频稳定示波器组成。

输入信号进入计数器模块后,计数器开始计数脉冲边沿的数量。

示波器用来产生计数器停止计数的信号,以保证计数的准确性。

显示模块用来显示计数结果,我们使用了数码管来显示频率值。

通过控制模块产生的信号,数码管能够显示最终的频率值。

控制模块是整个系统的控制中心,它通过接收用户输入来控制计数器的工作模式和示波器的设置。

同时,它还负责计算并输出频率值。

设计过程在设计高精度频率计的过程中,我们遇到了一些挑战,包括精度和稳定性问题。

为了解决这些问题,我们采取了以下措施:1. 选择高精度的计数器和示波器:我们选择了性能优异的计数器和示波器来保证计数的精确性和稳定性。

2. 优化信号处理算法:我们使用了一种特殊的信号处理算法,能够更准确地计数脉冲边沿,从而提高精度。

3. 信号滤波:为了减少干扰,我们对输入信号进行了滤波处理,提高了系统的稳定性。

4. 温度补偿:考虑到环境温度的变化对计数的影响,我们对系统进行了温度补偿,以确保高精度的测量结果。

实验结果经过严格的实验验证,我们的高精度频率计达到了预期效果。

在不同频率范围下,测量结果与实际值的误差非常小,精度高达0.001%。

同时,在长时间运行测试中,系统稳定性良好,没有出现明显的漂移和波动。

总结与展望通过本次设计,我们成功地实现了一款高精度的频率计。

在今后的研究和工程实践中,我们将进一步完善系统的性能,提高系统的测量范围和稳定性。

频率计实验报告

频率计实验报告

频率计实验报告一、实验目的本次实验的目的是通过设计和搭建频率计电路,掌握频率测量的基本原理和方法,熟悉相关电子元器件的使用,提高电路设计和调试的能力,并深入理解数字电路中计数器、定时器等模块的工作原理。

二、实验原理频率是指周期性信号在单位时间内重复的次数。

频率计的基本原理是通过对输入信号的周期进行测量,并将其转换为频率值进行显示。

常见的频率测量方法有直接测频法和间接测频法。

直接测频法是在给定的闸门时间内,对输入信号的脉冲个数进行计数,从而得到信号的频率。

间接测频法则是先测量信号的周期,然后通过倒数计算出频率。

在本次实验中,我们采用直接测频法。

使用计数器对输入信号的脉冲进行计数,同时使用定时器产生固定的闸门时间。

在闸门时间结束后,读取计数器的值,并通过计算得到输入信号的频率。

三、实验设备与器材1、数字电路实验箱2、示波器3、函数信号发生器4、集成电路芯片(如计数器芯片、定时器芯片等)5、电阻、电容、导线等若干四、实验步骤1、设计电路原理图根据实验要求和原理,选择合适的计数器芯片和定时器芯片,并设计出相应的电路连接图。

确定芯片的引脚连接方式,以及与外部输入输出信号的连接关系。

2、搭建实验电路在数字电路实验箱上,按照设计好的电路原理图,插入相应的芯片和元器件,并使用导线进行连接。

仔细检查电路连接是否正确,确保无短路和断路现象。

3、调试电路接通实验箱电源,使用示波器观察输入信号和输出信号的波形,检查电路是否正常工作。

调整函数信号发生器的输出频率和幅度,观察频率计的测量结果是否准确。

4、记录实验数据在不同的输入信号频率下,记录频率计的测量值,并与函数信号发生器的设定值进行比较。

分析测量误差产生的原因,并尝试采取相应的措施进行改进。

五、实验数据与分析以下是在实验中记录的部分数据:|输入信号频率(Hz)|测量值(Hz)|误差(%)||||||100|98|2||500|495|1||1000|990|1||2000|1980|1|从数据中可以看出,测量值与输入信号的实际频率存在一定的误差。

频率计的设计报告(含详细原理-流程图-c语言程序-proteus图等)

频率计的设计报告(含详细原理-流程图-c语言程序-proteus图等)

学校名称:合肥工业大学队员姓名:田中贺,汤旭,梁植程,黄传帮,杨骜,刘伟,王佩,徐国瑞,周冀,王槐铭,贾根发,陈明,林仁斌,张卫强2012年7月10日基于52单片机的频率计摘要:以ATMEL单片机为核心,利用单片机的外部中断、定时器的计数模式和定时器的功能对信号发生器产生的脉冲频率进行计数。

且可以根据频率的不同,单片机控制选择测周法或者测频法对产生的脉冲波形进行计数,以进行更加精确的频率测量。

而且可以通过按键来进行频率测量方法的选择。

关键字:AT89s52,外部中断、定时器的计数模式和定时器,测周法、测频法.设计题目及要求:(1):被测频率fx小于110Hz采用测周法,显示频率XXX。

XXX;fx大于110Hz采用测频法,显示频率XXXXXX;(2):可利用键盘分段测量和自动分段测量;(3):可完成单脉冲测量,输入脉冲宽度范围是100微秒--0.1秒;(4):自由发挥其他功能。

(5):要求有单片机硬件系统框图,电路原理图,软件流程图1基本设计原理运用单片机TO,T1计数功能来完成对输入信号的计数。

其T1为计数器,T1为计时器.为T1装入初值19466,定时300ms,重复20次即为1s,与此同时将同时计数的T0里的值取出,即为该频率信号1s的频率示数2系统主要功能利用单片机的T0,T1计数定时器功能,来完成对输入信号进行率计数,计数结果通过8位动态数码管显示出来,。

特点1,由开关控制启动。

特点2,可利用键盘分段测量和自动分段测量;特点3,可以多次测量,自动刷新 1s一次。

特点4,使用溢出标志T0count,防止20ms内计数超过65536次的频率信号溢出造成的示数错误3.系统原理框图:二频率计的硬件结构设计1单元电路(1)单片机电路:(2)矩阵键盘(3)数码管显示(4)排阻(用于提高P0口电位)(5)模拟的信号发生器:原理选择AT89S52单片机芯片,选用两位8段共阴极LED数码管实现频率显示,利用8279作I/O口扩展,连接数码管。

频率计设计实验报告

频率计设计实验报告

频率计设计实验报告一 实验目的1. 熟练运用用Verilog HDL 编程实现逻辑电路的方法2. 熟练运用Xilinx ISE 等软件的使用3. 整合上学期所学会的单片机和CPLD 的知识,完成此综合性实验二 实验原理频率计信号的频率,就是信号在单位时间(1s)内周期性变化的次数。

若在一定时间间隔t 内测得信号的周期性变化次数为N ,则其频率可表示为: f=N/t框架主要性能指标频率准确度 。

误差主要来自闸门时间相对误差。

实验中对频率准确度的基本要求为0.1% (f>1000Hz 时)。

频率测量范围。

在输入信号幅度符合要求时,能够进行测量的频率区间。

实验中对频率测量范围的要求是1Hz-10MHz (输入信号幅度为0.5V-5V )。

方案一方案1-时序Clock方案1-细节闸门信号的周期与占空比采用秒闸门,占空比为80%锁存信号的产生由时钟信号输入,CPLD 编程完成计数器输出格式和位数由于CPLC 资源有限,只能测到0—100KHz 的信号计数器清零信号的产生由时钟信号输入,CPLD 编程完成显示格式由数码管显示,只有五位数字,即0—99999方案2-CPLD+单片机方案2-IIIIIIIVV Signal in Clock由8MHz 的晶振分频至0.8Hz ,作为闸门信号闸门信号:占空比为80%,低电平时间为0.25s ,高电平时间为1s (闸门)方案2-时序与方案1的时序相似,只是锁存器已不存在,无需锁存信号计数器清零信号是在单片机完成读取后给出方案2-关于选择器用选择器的目的在于减少单片机引脚的使用可每次读取一个显示位所对应的数据方案3-CPLD+单片机方案3-频率由单片机计算得到闸门信号由输入信号同步,因此其时间可变可由闸门时间内输入脉冲出现的数目Ns 和闸门时间内晶振信号脉冲出现的数目Nc 得到输入信号的频率:fs = Ns * fc / Nc方案3-闸门时间可调节适应不同频率的输入信号单片机(或CPLD )感知输入信号的频率范围,并由此调节闸门时间闸门时间的调节必须是在一次完整的计数显示过程后进行Xilinx 集成软件环境 ISE(Integrated Software Environment )Clock 闸门速度选择1.设计输入:原理图、硬件描述语言编程2.综合(Synthesize):将原理图、HDL文本等设计输入转换成由门电路、RAM、寄存器等基本逻辑单元组成的逻辑连接,并根据约束条件进行优化。

频率计的制作实验报告

频率计的制作实验报告

频率计的制作实验报告实验目的:本实验的目的是通过制作一个简单的频率计,了解频率计的工作原理以及实际应用。

实验仪器与材料:1. 模块化电子实验箱2. 函数信号发生器3. 示波器4. 电压表5. 电阻、电容等基本元件实验原理:频率计是用于测量信号频率的一种仪器。

其基本原理是利用周期性信号的周期长度与频率之间的倒数关系,通过计算周期长度来确定信号的频率。

实验步骤:第一步:搭建电路1. 将函数信号发生器的输出接入电路板上的输入端,作为输入信号源。

2. 将电路板上的元件按照电路图连接,包括电容、电阻等。

确保电路连接正确。

第二步:调试电路1. 将函数信号发生器的频率设置为一个已知的数值,例如1000Hz。

2. 使用示波器测量电路输出端信号的周期长度。

3. 使用计算器计算出信号的频率。

4. 调整电路参数,直到测量到的频率与设定的频率相等。

第三步:验证测量准确性1. 将函数信号发生器的频率调整到其他已知值,例如2000Hz。

2. 重复上述步骤,测量并计算信号的频率。

3. 比较测量到的频率与设定的频率,验证测量准确性。

实验结果与分析:通过实验,我们成功制作了一个简单的频率计。

在调试电路的过程中,我们可以通过测量输出信号的周期长度,并利用频率的倒数与周期长度的关系计算出信号的频率。

通过与设定的频率进行比较,验证了测量的准确性。

实验中可能存在的误差主要来自于电路元件的稳定性以及测量设备的精度。

为了提高测量准确性,可以选择更稳定的元件,并使用更精确的测量设备。

实验结论:本实验通过制作一个简单的频率计,深入了解了频率计的工作原理和实际应用。

通过测量信号的周期长度并计算出频率,我们可以准确地测量信号的频率。

实验结果验证了测量的准确性,并提出了进一步提高准确性的建议。

频率计在电子测量中具有重要的应用价值,可以广泛应用于通信、电子设备维修等领域。

基于PROTEUS的频率计的设计

基于PROTEUS的频率计的设计

摘要在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

频率计可以用纯硬件电路搭制。

本文设计了一种以单片机AT89C52为核心的数字频率计,其中硬件部分主要是由整形电路、单片机最小系统和显示单元组成的,软件设计是由一些功能模块来实现的,例如有初始化模块、数据显示模块等等。

此外,通过控制单片机的各项功能和运算操作能力进而来实现周期和频率间的计数和数据的保存。

通过这样的设计能测量频率10Hz-10kHz,这既达到了设计所要求的频率测量范围,又达到了较高的精确度。

测量时,将被测输入信号送给单片机,通过程序控制计数,结果送数码管显示频率值。

本设计中的频率计具有电路结构简单、成本低、测量方便、精度较高等特点,适合测量低频信号,能基本满足一般情况下的需求,既保证了测频精度,又使系统具有较好的实时性,并且本频率计设计简洁,便于携带,扩展能力强,适用范围广。

另外,由于本设计采用了模块化的设计方法,提高了测量频率的范围,并且本次设计包括硬件画图和软件程序编写。

关键词:频率测量,频率计,单片机,LED显示ABSTRACTAmong electronic technology, frequency is one of the most basic parameters,and result of measuring have a very close relation to a lot of electric parameters, so the measurement of frequency seems even more important. Frequency counter can take the system with pure hardware circuitry.Based on single-chip processor digital frequency of thousands of design and implementation Abstract This article proposes plan design digital frequency meter, highlighting the design taking monolithic integrated circuit AT89C52 as the control core. The hardware partially is composed by the shaping circuit 、the smallest system of microcontroller and the data display electric circuit; The software design is achieved by many functional modules, such as the signal frequency measurement module、the data display module and so on. What's more ,achieving counting function and conversion between cycle and frequency by using control functions and mathematics operation ability of microcontroller. Like these the survey scope can achieve 10Hz-10kHz, both can reach the frequency range requirements designed,and the measuring accuracy high。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学校名称:合肥工业大学队员姓名:田中贺,汤旭,梁植程,黄传帮,杨骜,刘伟,王佩,徐国瑞,周冀,王槐铭,贾根发,陈明,林仁斌,张卫强2012年7月10日基于52单片机的频率计摘要:以ATMEL单片机为核心,利用单片机的外部中断、定时器的计数模式和定时器的功能对信号发生器产生的脉冲频率进行计数。

且可以根据频率的不同,单片机控制选择测周法或者测频法对产生的脉冲波形进行计数,以进行更加精确的频率测量。

而且可以通过按键来进行频率测量方法的选择。

关键字:AT89s52,外部中断、定时器的计数模式和定时器,测周法、测频法。

设计题目及要求:(1):被测频率fx小于110Hz采用测周法,显示频率XXX。

XXX;fx大于110Hz采用测频法,显示频率XXXXXX;(2):可利用键盘分段测量和自动分段测量;(3):可完成单脉冲测量,输入脉冲宽度范围是100微秒--0.1秒;(4):自由发挥其他功能.(5):要求有单片机硬件系统框图,电路原理图,软件流程图一、原理:1基本设计原理运用单片机TO,T1计数功能来完成对输入信号的计数。

其T1为计数器,T1为计时器。

为T1装入初值19466,定时300ms,重复20次即为1s,与此同时将同时计数的T0里的值取出,即为该频率信号1s的频率示数2系统主要功能利用单片机的T0,T1计数定时器功能,来完成对输入信号进行率计数,计数结果通过8位动态数码管显示出来,。

特点1,由开关控制启动。

特点2,可利用键盘分段测量和自动分段测量;特点3,可以多次测量,自动刷新 1s一次。

特点4,使用溢出标志T0count,防止20ms内计数超过65536次的频率信号溢出造成的示数错误3.系统原理框图:二频率计的硬件结构设计1单元电路(1)单片机电路:(2)矩阵键盘(3)数码管显示(4)排阻(用于提高P0口电位)(5)模拟的信号发生器:2原理选择AT89S52单片机芯片,选用两位8段共阴极LED数码管实现频率显示,利用8279作I/O口扩展,连接数码管。

通过定时器1计时方式,定时器0计数方式,定时每秒钟对外部频率计数,把计数值在数码管上显示四、软件设计1 程序流程图2程序设计:/***********************************************器件名:频率器;*设计要求1:被测频率fx小于110Hz采用测周法,显示频率XXX。

XXX;fx大于110Hz 采用测频法,显示频率XXXXXX;*设计要求2:可利用键盘分段测量和自动分段测量;*设计要求3:可完成单脉冲测量,输入脉冲宽度范围是100微秒--0.1秒;*设计要求4:自由发挥其他功能.*设计要求5:要求有单片机硬件系统框图,电路原理图,软件流程图。

*功能说明:频率计,利用T0计数模式测频率*接线说明:P2控制位选,P1控制段选**********************************************/#include<reg52.h>#define S P2#define uchar unsigned char#define uint unsigned intuint temp0,temp1,m,n,k,wei,num,t;unsigned long int temp;unsigned long int count;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f,0x00}; //共阳数码管/*延时*/void delay(unsigned char delaytime){while(delaytime--);}/*数码管显示函数*/void display(){S=0xfe;delay(5);P1=table[temp1/1000];delay(500);S=0xfd;delay(5);P1=table[temp1/100%10];delay(500);S=0xfb;delay(5);P1=table[temp1/10%10];delay(500);S=0xf7;delay(5);P1=table[temp1%10];delay(500);S=0xef;delay(5);P1=table[temp0/1000];delay(500);S=0xdf;delay(5);P1=table[temp0/100%10];delay(500);S=0xbf;delay(5);P1=table[temp0/10%10];delay(500);S=0x7f;delay(5);P1=table[temp0%10];delay(500);}/*数码管显示函数1*/void display1(){S=0xfe;delay(5);P1=~0x40;delay(500);S=0xfd;delay(5);P1=~0x40;delay(500);S=0xfb;delay(5);P1=~0x40;delay(500);S=0xf7;delay(5);P1=~0x40;delay(500);S=0xef;delay(5);P1=~0x40;delay(500);S=0xdf;delay(5);P1=~0x40;delay(500);S=0xbf;delay(5);P1=~0x40;delay(500);S=0x7f;delay(5);P1=~0x40;delay(500);}//---------------------初始化-------------------------------//void inital(){TMOD=0x15;//字节寻址,00010101,T1 16位定时器(T0、T1定时模式,对内部机器周期计数),T0 16位计数器 (T0、T1计数模式,对外部脉冲计数) TH1=(65535-1000)/256;//C/T置0则用作定时器(从内部系统时钟输入),置1则用作计数器(从T0/P3^4脚输入)TL1=(65535-1000)%256;////C/T置0则用作定时器(从内部系统时钟输入),置1则用作计数器(从T0/P3^5脚输入)TH0=0;TL0=0;ET1=1; //开启定时器1中断,中断允许标志位TR1=1; // 开启定时器1,中断运行控制位ET0=1; //开启定时器/计数器0中断,中断允许标志位TR0=1; // 开启定时器/计数器0,中断运行控制位IT0=1; //边沿触发方式EX0=0; //外部中断0允许位EA=1; //开启CPU中断}//------------------键盘扫描-----------------------------//void keyscan(){P0=0xfe; //检测第一行temp=P0;temp=temp&0xf0;while(temp!=0xf0) //初始列置高电平,行置底电平{delay(5);//消抖temp=P0;temp=temp&0xf0;while(temp!=0xf0){ //确认按键按下temp=P1;switch(temp){case 0xee:num=7;break;case 0xde:num=8;break;case 0xbe:num=9;break;case 0x7e:break;}while(temp!=0xf0){temp=P0; //检验是否释放temp=temp&0xf0;}}}P0=0xfd; //检测第二行temp=P0;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P0;temp=temp&0xf0;while(temp!=0xf0){temp=P0;switch(temp){case 0xed:num=4;break;case 0xdd:num=5;break;case 0xbd:num=6;break;case 0x7d:break;}while(temp!=0xf0){temp=P0;temp=temp&0xf0;}}}P0=0xfb; //检测第三行temp=P0;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P0;temp=temp&0xf0;while(temp!=0xf0){temp=P0;switch(temp){case 0xeb:num=1;break;case 0xdb:num=2;break;case 0xbb:num=3;break;case 0x7b:break;}while(temp!=0xf0){temp=P0;temp=temp&0xf0;}}}P0=0xf7; //检测第四行temp=P0;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P0;temp=temp&0xf0;while(temp!=0xf0){temp=P0;switch(temp){case 0xe7:break;case 0xd7:num=0;break;case 0xb7:break;case 0x77:break;}while(temp!=0xf0){temp=P0;temp=temp&0xf0;}}}}void main(){inital();while(1){keyscan();if(num==2&&EX0!=0) //测频法{EX0=0;TR1=1;TR0=1;count=0;}if(num==1) //测周法{EX0=1;TR0=0;}display();}}//-----------------测周法--------------//void exter0() interrupt 0{n++;if(n==1) //开始计时{TH1=(65535-1000)/256;TL1=(65535-1000)%256;TR1=1;}if(n==2) //停止计时{TR1=0;temp=1000/(count+1);temp1=temp/10000;temp0=temp%10000;t++;if(temp0>111&&t>10) //选择测频法{while(num!=2){keyscan();display1();}t=0;}count=0;n=0;}}//---------------------计数----------------------------// void count0() interrupt 1{m++;TH0=0;TL0=0;}//---------------------定时-----------------------------// void timer1() interrupt 3{TH1=(65535-50000)/256;TL1=(65535-50000)%256;if(num==1||num==2)count++;if(num==1) //测周法{TH1=(65535-1000)/256;TL1=(65535-1000)%256;k++ ;if(k==1) //防止TR1不断置0{EX0=1;TR1=0;TR0=0;}}if(count==20&&num==2) //测频法{count=0;temp=m*65535+TH0*256+TL0;if(temp>=110){temp1=temp/10000;temp0=temp%10000;m=0;TH0=0;TL0=0;}else //选择测周法{while(num!=1){keyscan();display1();}}}}附录:1.参考文献:[1] 杜洋工作室[2] 21IC论坛[3] 谭浩强《C语言程序设计第二版》清华大学[4] 合肥工业大学电子创新实验室 2.总电路图。

相关文档
最新文档