基于单片机的等精度频率计的设计

合集下载

基于单片机IP核的等精度频率计设计讲解

基于单片机IP核的等精度频率计设计讲解

基于单片机IP核的等精度频率计设计摘要FPGA就是目前最受欢迎的可编程逻辑器件之一。

IP核是将一些在数字电路中常用但比较复杂的功能模块,设计成可修改参数的模块,让用户可以直接调用这些模块。

随着FPGA的规模越来越大,使用IP核是一个发展趋势。

传统测频原理的频率计的测量精度将随被测信号频率的下降而下降,在使用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且整个频率区域能保持恒定的测试精度。

本文结合FPGA与8051单片机的优点实现了基于FPGA的8051 IP核应用,设计一个等精度频率计。

关键词:FPGA,8051IP核,等精度频率计设计AbstractField Programmable Gate Array(FPGA)is one of the most welcomed programmable logic devices.IP core is a module which has changeable parameters.With the IP core we can implement some complex functional module in digital circuits.With the increasing scale in the FPGA,Using IP core is becoming more and more popular.Traditional frequency measurement principle of the frequency accuracy will decline with the decline of the signal frequency.It Has a greater limitations in use. Equal precision frequency meter not only has high measurement accuracy, and the whole frequency region can maintain a constant test accuracyCombining the advantages of FPGA and 805 l MCU,the paper mainly realize the application of 8051 IP core based on FPGA that design a same accuracy frequency.Key words: FPGA,8051 IP core,same accuracy frequency目录第一章绪论 (3)1.1 课题研究背景及意义 (3)1.2 主要任务 (3)第二章杭州康芯公司KX2C5F+开发板介绍 (5)2.1 KX2C5F+系统简介 (5)2.2 主要应用 (5)第三章系统设计 (7)3.1 8051单片机介绍 (7)3.2 8051单片机IP软核介绍 (7)3.3 8051单片机IP软核实用系统构建 (9)3.4 等精度频率计设计 (10)3.4.1等精度测频原理 (10)3.4.2等精度测频实现 (11)3.4.3测量占空比的原理 (13)3.4.4测量占空比的实现 (13)3.5单片机的功能 (14)3.5.1数据传输 (14)3.5.2 液晶显示 (15)3.6单片机与FPGA的组合应用 (16)第四章程序调试 (17)4.1 等精度频率计程序 (17)4.2 单片机程序和VHDL程序编译在一起下载到FPGA中 (17)第五章结果讨论 (19)总结 (20)致谢 (21)参考文献 (22)附录 (23)附录1:等精度频率计相关程序 (23)附录2 单片机相关程序 (25)第一章绪论1.1 课题研究背景及意义随着可编程逻辑设计技术的发展,每个逻辑器件中门电路的数量越来越多,一个逻辑器件就可以完成本来由很多分立逻辑器件和存储芯片完成的功能。

基于51单片机的频率计设计报告

基于51单片机的频率计设计报告

基于51单片机的频率计设计报告
在该设计报告中,我将介绍基于51单片机的频率计的设计原理、硬件设计和软件设计。

设计原理:
频率计是一种用于测量信号频率的仪器。

基于51单片机的频率计的设计原理是利用单片机的定时计数器来测量输入信号的脉冲个数,然后将脉冲个数转换为频率。

硬件设计:
硬件设计主要包括输入信号的采集电路、计数电路和显示电路。

输入信号的采集电路使用一个比较简单的电路,包括一个电阻和一个电容,用于将输入信号转换为脉冲信号。

计数电路使用单片机的定时计数器来进行计数。

在这个设计中,我们使用TIMER0和TIMER1作为计数器,分别用于测量输入信号的高电平时间和低电平时间,然后将两个时间相加得到一个完整的周期,再根据周期反推频率。

显示电路使用一个LCD模块来显示测量得到的频率。

在这个设计中,我们使用IO口将计算得到的频率发送给LCD模块,通过LCD模块来显示频率。

软件设计:
软件设计主要包括信号采集、脉冲计数和频率计算。

信号采集主要通过定时器的中断来进行。

在采集到一个脉冲之后,中
断程序会使计数器加1
脉冲计数是通过对输入信号高电平时间和低电平时间计数来完成的。

在脉冲计数的过程中,我们需要启动TIMER0和TIMER1,并设置正确的工
作模式和计数值。

频率计算是通过将高电平时间和低电平时间相加得到一个完整的周期,然后再根据周期反推频率来完成的。

最后,将计算得到的频率发送给LCD
模块进行显示。

总结:。

基于单片机的频率计的设计与制作

基于单片机的频率计的设计与制作
二极管组成。基中7 个长条形的发光管排列成“日” 圆点形的发光管在数码管显示器的右下角作为显示小 能显示各种数字及部份英文字母。LED 数码管显示器 一种是8 个发光二极管的阳极都连在一起的,称之为 码管显示器;另一种是8 个发光二极管的阴极都连在 为共阴极LED 数码管显示器。如下图所示。共阴和共 数码管显示器各笔划段名和安排位置是相同的。当二 对应的笔划段发亮,由发亮的笔划段组合而显示的各 笔划段 h g f e d c b a 对应于一个字节(8 位)的D7、 D4、D3、D2、D1、D0,于是用8 位二进制码就能表 的字形代码。
器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组
不会有闪烁感。
系统硬件设计
Q4 PN P
Q3 PN P
Q2 PN P
R1 R2 R3 R4 vcc
R 13 10 K
Q1 PN P
S1 SW -P B
1K
1K
1
1K
2
3
1K
4
5
6
7
8
13 12
数字电平信号
15
14
C1
30 pf
31
C2 30 pf
系统软件设计
4.2软件流程图
开始
声明变量与函数

SB2=0?
设置 启动
显示函数
状态标志=0 测量函数
no
yes
状态标志=0?
主程序
系统软件设计
显示函数
扫描信号初始化
输出显示信号 输出扫描信号下一个扫
描信号延时4ms
四位数? 返回
yes
系统软件设计
T-1s
重设定时值
no 20次?
yes

基于单片机的频率计设计

基于单片机的频率计设计

基于单片机的频率计设计1. 1 系统组成频率计由单片机89C51 、信号予处理电路、串行通信电路、测量数据显示电路和系统软件所组成,其中信号予处理电路包含待测信号放大、波形变换、波形整形和分频电路。

系统软件包括测量初始化模块、显示模块、信号频率测量模块、量程自动转换模块、信号周期测量模块、定时器中断服务模块、浮点数格式化模块、浮点数算术运算模块、浮点数到BCD 码转换模块。

1. 2 处理方法本频率计的设计以AT89C51 单片机为核心,利用它内部的定时/ 计数器完成待测信号周期/ 频率的测量。

单片机AT89C51 内部具有2 个16 位定时/ 计数器,定时/ 计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。

设计综合考虑了频率测量精度和测量反应时间的要求。

例如当要求频率测量结果为3 位有效数字,这时如果待测信号的频率为1Hz ,则计数闸门宽度必须大于1000s。

为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两种方法。

当待测信号的频率大于100Hz 时,定时/ 计数器构成为计数器,以机器周期为基准,由软件产生计数闸门,这时要满足频率测量结果为3 位有效数字,则计数闸门宽度大于1s 即可。

2. 1 信号予处理电路频率计信号予处理电路如图3 所示,它由四级电路构成。

第一级为零偏置放大器,当输入信号为零或者为负电压时,三极管截止,输出高电平;当输入信号为正电压时,三极管导通,输出电压随着输入电压的上升而下降。

零偏置放大器把如正弦波样的正负交替波形变换成单向脉冲,这使得频率计既可以测量任意方波信号的频率,也可以测量正弦波信号的频率。

3. 1 数据处理过程在频率计开始工作,或者完成一次频率测量,系统软件都进行测量初始化。

测量初始化模块设置堆栈指针(SP) 、工作寄存器、中断控制和定时/ 计数器的工作方式。

定时/ 计数器的工作首先被设置为计数器方式, 即用来测量信号频率。

在对定时/ 计数器的计数寄存器清0 后,置运行控制位TR 为1 ,启动对待测信号的计数。

基于单片机的数字频率计的设计(毕业设计)

基于单片机的数字频率计的设计(毕业设计)
写作毕业论文是一次再系统学习的过程,毕业论文的完成, 同样也意味着新的学习生活的开始。我将铭记我曾是一名机电 学院的学子,在今后的工作中把机电学院的优良传统发扬光大。 感谢各位老师的批评指导。
1.2 设计思路
测频的原理归结成一句话,就是“在单位时间内对被测信号进行
计数”。常用的频率测量方法主要有两种:直接测频法和间接测频法 (即测周期法)。直接测频法在低频段的相对测量误差较大,故常用 于测量高频信号;测周期法在高频段的相对测量误差较大,更适合于 测量低频信号由于本次设计的实际测量范围为1Hz~200KHz左右,主 要是针对在低频段的测量,且由于单片机具有程序运算功能,频率为 周期的倒数,这样使得频率测量与周期测量可以互通,故此次设计采 用间接测量法(测周期法)。其原理图如下所示:
使用液晶显示器(LCD)进行数据显示
采用LED显示管只能显示0~9和一些简单的英文字母,这使得频率计的功能 受到极大的限制,而LCD显示管能够解决LED的不足,增强显示功能。LCD具有体 积小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,因 此广泛应用于各种仪表设备中去。LCD液晶显示器主要有字符型和点阵型两种。 字符型LCD能显示特定的字符,应用在特定的场合,可以代替常用的LED显示器 显示和进行其他特殊字符的显示;点阵型LCD则可以以点阵的形式显示字符、图 形和汉字,满足各种需要。
被测闸门信号
未知
高频基准信号
实际检出已知信号
1.3 电路设计

数字频率计系统设计共包括四大模块:单片机控制模块、电源模
块、放大整形模块及LED显示模块。 数字频率计设计总框图如下:
被测信 号
放大整形电 路
单片机
LED 显 示
电源电 路

最新【毕业设计】基于51单片机和CPLD的等精度频率计

最新【毕业设计】基于51单片机和CPLD的等精度频率计

基于51单片机和CPLD的等精度频率计目录摘要 (1)1前言 (2)2 等精度频率测量原理分析 (3)2.1 等精度频率测量原理 (3)2.2 等精度频率测量的误差分析 (4)3 系统方案 (5)3.1 方案提出及比较 (5)3.2系统整体方案 (6)3.3单片机与CPLD连接方案 (7)3.4 单片机定时及数据处理方案 (8)3.5 CPLD计数方案 ...................................................... 错误!未定义书签。

4 方案实现........................................................................... 错误!未定义书签。

4.1 CPLD设计 .............................................................. 错误!未定义书签。

4.2单片机设计.............................................................. 错误!未定义书签。

4.3关键源代码分析...................................................... 错误!未定义书签。

5 仿真及测试....................................................................... 错误!未定义书签。

5.1仿真分析.................................................................. 错误!未定义书签。

5.2 测试结果与分析..................................................... 错误!未定义书签。

基于51单片机的频率计的设计

基于51单片机的频率计的设计

基于51单片机的频率计的设计频率计是一种测量信号频率的仪器或装置,其原理是通过对信号进行计数和定时来测量信号的周期,并进而计算出信号的频率。

在本篇文章中,我们将设计一个基于51单片机的频率计。

设计方案:1.硬件设计:(1)时钟电路:使用11.0592MHz晶振为主频时钟源。

(2)信号输入:选择一个IO口作为信号输入口,通过外部电平转换电路将信号转换为51单片机能够处理的电平。

(3)显示装置:使用一个数码管或液晶显示屏来输出测量结果。

2.软件设计:(1)初始化:设置51单片机的工作模式、引脚功能、定时器等。

初始化时,将IO口配置为输入模式,用于接收外部信号。

(2)定时器设置:利用定时器来进行时间的测量,可以选择适当的定时器和计数器来实现定时功能。

(3)外部中断设置:使用外部中断来触发定时器,当外部信号边沿发生变化时,触发定时器的启动或停止。

(4)中断处理:通过中断处理程序来对定时器进行启动、停止和计数等操作。

(5)频率计算:将计数结果经过一定的处理和运算,计算出信号的频率。

(6)结果显示:将计算得到的频率结果通过数码管或液晶显示屏输出。

3.工作流程:(1)初始化设置:对51单片机进行初始化设置,包括端口、定时器、中断等的配置。

(2)外部信号输入:通过外部电平转换电路将要测量的信号输入至51单片机的IO口。

(3)定时测量:当外部信号发生边沿变化时,触发外部中断,启动定时器进行定时测量。

(4)停止计时:当下一个信号边沿出现时,中断处理程序停止定时器,并将计数结果保存。

(5)频率计算:根据定时器的设置和计数结果,计算出信号的周期和频率。

(6)结果显示:将计算得到的频率结果通过数码管或液晶显示屏进行显示。

4.注意事项:(1)确保信号输入的稳定性:外部信号输入前需要经过滤波处理,保证稳定且无杂波的输入信号。

(2)测量精度的提高:如有必要,可以通过增加定时器的位数或扩大计数范围来提高测量精度。

(3)显示结果的优化:可以根据需要,通过增加缓冲区、优化数码管显示等方式来改善结果的可读性。

基于单片机的频率计的设计

基于单片机的频率计的设计

基于单片机的频率计的设计一、频率计的基本原理频率是指单位时间内信号周期性变化的次数。

频率计的基本原理就是在一定的时间间隔内对输入信号的脉冲个数进行计数,从而得到信号的频率。

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

直接测频法是在给定的闸门时间内测量输入信号的脉冲个数,计算公式为:频率=脉冲个数/闸门时间。

这种方法适用于测量高频信号,但测量精度会受到闸门时间和计数误差的影响。

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

其适用于测量低频信号,但测量速度较慢。

在实际设计中,通常会根据测量信号的频率范围选择合适的测量方法,或者结合两种方法来提高测量精度和范围。

二、系统硬件设计1、单片机选型在基于单片机的频率计设计中,单片机是核心控制部件。

常用的单片机有 51 系列、STM32 系列等。

选择单片机时需要考虑其性能、资源、价格等因素。

例如,对于测量精度和速度要求不高的应用,可以选择51 单片机;而对于复杂的系统,可能需要选择性能更强的 STM32 单片机。

2、信号输入电路为了将输入信号接入单片机,需要设计合适的信号输入电路。

一般需要对输入信号进行放大、整形等处理,使其成为标准的脉冲信号。

常见的整形电路可以使用施密特触发器来实现。

3、显示电路频率计的测量结果需要通过显示电路进行显示。

常用的显示器件有液晶显示屏(LCD)和数码管。

LCD 显示效果好,但驱动较为复杂;数码管显示简单直观,驱动相对容易。

4、时钟电路单片机需要一个稳定的时钟信号来保证其正常工作。

时钟电路可以采用外部晶振或内部振荡器,根据系统的精度和稳定性要求进行选择。

5、复位电路为了确保单片机在系统启动时能够正常初始化,需要设计复位电路。

复位电路可以采用上电复位和手动复位两种方式。

三、系统软件设计1、主程序流程系统启动后,首先进行初始化操作,包括设置单片机的工作模式、初始化显示、设置定时器等。

然后进入测量循环,等待输入信号,在给定的闸门时间内进行计数,并计算频率,最后将结果显示出来。

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

图 1 频率计时序图
同步门时间T = N x ⋅ Tx = N 0 ⋅ T0
fx =
1 Nx = f0 Tx N 0
2、等精度频率计流程图
Page 1 of 6
等精度频率计设计
图 2 T0、T1 中断流程图图 3 主函数流程图Page 2 of 6
等精度频率计设计
图 4 电路简图
四.实验结果:
五.程序清单: #include <reg52.h> #include <stdio.h> #include <string.h>
Page 3 of 6
等精度频率计设计
//*****变量定义******// unsigned int st_count,signal_count; //st_count 为时标软件计数器, signal_count 为被测信号计 数器 float gate_count,gate_time; bit gate_flag; //闸门时间标志位 //*****定时器初始化******// void ini_T0T1() { TMOD=0x62; //计数器 1,方式 2,自动重装方式;定时器 0,方式 2,自动重装 方式 //最大定时时间 T_max=(2^8)*12/晶振值(22118400),此例中若定 时 1s 需要进中断 7200 次 TH1=0;TL1=0; //计数器 1 设置初值为 0 TH0=0;TL0=0; // 定 时 器 0 设 置 初 值 为 0, 定 时 时 间 最 长 T_max=256*12/(22118400),单位 s } //*****定时器 0 中断*****// void timer0() interrupt 1 { st_count++; //时标软件计数器加 1 if(st_count>gate_count) //判断闸门时间到否,到则闸门时间标志置 1 gate_flag=1; //标志位置 1,表示闸门时间到 } //*****计数器 1 中断*****// void timer1() interrupt 3 { signal_count++; //被测信号计数器加 1,计数信号来自外部引脚,负跳变 } //*****串口初始化*****// void ini_com(void) //T2 定时器产生波特率为 115200 { //SM0=0;SM1=1; //串行口工作方式 1 //REN=1; //允许接收 SCON=0x50; //T2CON=0x34; //T2 定时器作为波特率发生器 RCLK=1;TCLK=1; TR2=1; //定时器 2 开始 RCAP2H=0xff; RCAP2L=0xfa; // 波 特 率 =22118400/32 × [65536-(RCAP2H,RCAP2L)], 其 中
Page 4 of 6
等精度频率计设计
RCAP2H,RCAP2L 为自动重装值,(RCAP2H,RCAP2L)=65536-22118400/(32×波特率) TH2=0xff; TL2=0xfa; //波特率:115200 晶振=22.1184MHz } //*****串口数据传送*****// void transmit_byte(unsigned char send_byte) { SBUF=send_byte; while(TI==0); //当数据没传完时,TI=0,等待. TI=0; //TI=0,软件清零 } void main () { float N_x,N_0,fx; unsigned char freq[10],i,j; unsigned char Hz[3]={'H','z',' '}; st_count=0; signal_count=0; TH1=0;TL1=0; TH0=0;TL0=0; gate_flag=0; ini_T0T1(); ini_com(); EA=1;ET0=1;ET1=1;
等精度频率计设计
等精度频率计设计报告
一.实验目的: 1. 熟悉 C 语言在 51 系列单片机系统开发中的应用。 2. 熟练掌握 Keil 的使用方法,能够实现利用 Keil 进行程序设计。 3. 掌握串口初始化以及串口数据发送的程序设计。 4. 掌握等精度频率计的设计思想以及方法。 二.实验要求: 要求:设计一个等精度频率计,要求能够准确、实时测量输入 T12 测频点(详见原理 图)的信号频率。 三.实验原理: 1、 将需累加计数的信号 (频率测量时为被测信号, 时间测量时为时标信号) , 由一个“闸 门”(主门)控制,并由一个“ 门控”信号控制闸门的开启(计数允许)与关闭(计数停 止) 。
Page 5 of 6
等精度频率计设计
//***闸门设定时间到,fx 信号上升沿到,关闭闸门***// while(gate_flag==0); //闸门设定时间到 while(T1==1); while(T1==0); //fx 信号上升沿到,信号来自外部引脚 TR1=0;TR0=0; //关闭闸门 关闭计时器 1 和定时器 0 //***计算频率***// N_0=(float)st_count*256+TL0; N_x=(float)signal_count*256+TL1; fx=(N_x/N_0)*22118400/12; //*****数据输出到串口*****// sprintf(freq,"%.3f",fx); for (i=0;i<strlen(freq);i++) transmit_byte(freq[i]); for(j=0;j<3;j++) transmit_byte(Hz[j]); } }
Page 6 of 6
//计数器 1 清 0 //定时器 0 清 0
//T0,T1 初始化 //串口初始化 //中断允许
gate_time=1; //设置闸门时间 gate_time 为 1s gate_count=gate_time*22118400/(256*12); //进入中断 0 的次数 gate_count,即定时时长. while(1) { //***T0,T1 清零,软件计数器清零***// TH1=0;TL1=0; //计数器 1 清 0 TH0=0;TL0=0; //定时器 0 清 0 st_count=0; signal_count=0; gate_flag=0; //标志位 //***fx 信号上升沿到,打开闸门***// while(T1==1); while(T1==0); //fx 信号上升沿到,信号来自外部引脚 TR1=1;TR0=1; //打开闸门 打开计时器 1 和定时器 0
相关文档
最新文档