1 引言
为了实现智能电子计数和频率测量,实现广泛领域、高精度的频率计,一种有效的方法是使用单片机来测量频率。使用单片机、接口芯片和分频电路来实现频率的自动分频。根据计数值和分频系数找到周期T,获得待测频率。
2 C51语言使用中几个关键问题
在数字频率计中,不使用常用的汇编语言,所有软件都使用C语言编程。8051单片机C语言编译器简称C51。C51程序有且仅有一个名为main的主程序。
(l)用#include库文件包含在C语言源程序中。例如:#include〈reg51.h〉
(2)直接访问特殊功能寄存器SFR,C在标准C语言中,51提供了一种独立的定义方法,仅适用于单片机编程。sfr TMOD=OX89;
(3)片外I/O扩展,用##define\定义句子,如:#define PORT A XBYTE[0xffc0];
(4)实时中断程序的编程方法。声明中断函数的方法如下:
void(void)interrupt中断向量代码][using[内部寄存器组代码]
3 数字频率计主程序设计
在主程序中声明库文件,定义8155的端口地址和所有全局变量。显示函数描述和定时器和8155的初始化。点亮启动标志灯。将外部中断设置为边缘触发。设置分频系数的初始值并测量周期。判断分频系数,读取周期值并将其转换为频率。调用显示程序完成显示频率的功能。
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define COM8155XBYTE[0x2000]
#define PA8155XBYTE[0x2001]
#define PB8155XBYTE【0x2002]
#define PC8155XBYTE[0x2003]
float fre; float mid,total,v,c,g
uint j=0,par=0x01,fen2=0x80,fenl=0x00.p;
bit rflag1,rflag2;[page]
在使用C51语言中,absacc.h和reg51.h它是必不可少的。这两份文件定义了单片机的所有寄存器和端口。8155的每个端口地址也定义在上述程序中,方便C根据8155的实际硬件结构,51编译器建立I/O变量名与实际地址的对应关系。以下程序是函数描述和初始化:
void main(void)
(uint k=0; /*给循环变量赋初值*/
void show(void); /*显示函数说明*/
TMOD=0x10; /*定时器1方法1,
GATE=0*/
COM8155=0xof; /*控制8155字的工作模式*/
PB8155=fen1; /*分频初值赋予8155PB口*/
PC8155=0x06p /*点亮启动标志灯*/
PA8155=0x80;
EA=1;IT1=1;ET1=1;PX1=1;/*开中断,
4 数字频率计显示程序设计
在显示程序中,应设置字形数码数组来判断频率值,并将其分为Hz,KHz,MHz。判断整数部分和小数部分的频率值,显示频率值和单位数量级标志灯。小数点处理显示程序如下:
PC8155=0x07; PA8155=table[s[6]];
c=0;while(c〈10000)( c;);PA8155=0x00;
PC8155=0x065
if(n==O)(PA8155=0x005;PA8155=0x01;);
c=0;while(c<1000)( c;);
if(n==1)(PA8155=0x00;PA8155=0x02;);
c=0;while(c<1000)( c;);
if(n==2)(PA8155=0x00;PA8155=0x04;);
c=0;while(c<1000)( c;);
i ;
小数点处理程序中由高位到低位,逐位显示频率值。每次显示一位数时,应适当延迟C循环语句,并延迟8155PA口清零,确保下一次显示。数组显示s[8]字形码数组的每个值table[]下标,在table[]在数组中找到相应的字形码,发送到8155PA口。最后,根据n的值确定显示频率值的单位数量级。
5 结论
本文的工作基础是应用单片机设计的数字频率计。单片机应用系统数字频率计的设计采用C语言,不仅编程简单,精度高,而且避免了乘除法中汇编语言的要求。与汇编语言相比,编程语句大大降低。所有了数字频率计的所有软件。误差分析。测量测量范围为1Hz到1MHz,具有一定的实用价值。
关注eeworld公众号
快速获取更多信息
关注eeworld服务号
享受更多官方福利
推荐阅读
/**************************************************************************例名:频率计*实例说明:实现0~9000hz统计频率计*作者:yd*时间:09.06.20*************************************************************************/#include "target.h"#include "led.h"uchar displayBuff[4]={'0',
发表于 2020-12-30

本文采用前置分频器SAB6456A744高速数字分频器HC390分频功能,结合新型MSP430F449单片机提供了一种新颖的、全自动的数显测量射频的设计方案。 图1 分频电路信号的前端处理 主要设备介绍 MSP430F449单片机 MSP430F449 采用16位RISC结构丰富,片内外设备丰富,片内工作寄存器和存储器容量大,性价比高。其特点包括: · 超低功耗:1.8V~ 3.6V的电压下工作;具有工作模式(AM)和5种低功耗模式(LPM)。在低功耗模式下,CPU可中断唤醒,响应时间小于6ps。 · 操作能力强:16位RISC结构丰富,寻址方式丰富;有16个中断源
发表于 2020-12-09
计的频率计范围可达1HZ-1MHZ(其实51单片机达不到这个范围,不要在实验环境中进行),这是课程设置和使用的Proteus仿真实现,参考有需要的学生的单片机源代码:#include#include#includetypedef unsigned char uchar;typedef unsigned int uint;sbit RS=P2^5;sbit RW=P2^6;sbit E=P2^7;sbit CLK=P2^0;sbit DO=P2^1;sbit DI=P2^1;sbit CS=P2^2;sbit CLR
发表于 2020-08-07
本文介绍了案例编程中使用的相关知识T/CO和T/C介绍1的相关功能,读者在学习时可以参考配套程序的相关内容加深理解。频率是指单位时间的周期性信号(1)s)测量频率的仪器称为频率计。本实验主要介绍如何使用ATmega8和LCD数字频率计由1602液晶显示器组成,频率测量范围为1Hz~4MHz,通过实验和学习,让大家掌握ATmega定时器/计数器的功能及基本使用方法。频率测量有两种方法:计数法和测量周期法。计数法是在一定时间间隔内计算信号重复变化的次数N,根据公式f=N/T为了方便时间间隔,T通常取1s,这样计数的结果是频率;测量周期法是先测量信号的周期,然后根据公式f=1/T
发表于 2020-03-10
简单的数字频率计电路图(1)本文介绍了一种用六功能电子表改装的数字频率计,具有成本低、生产调试简单、阅读方便等特点,非常适合初学者自制。工作原理:从六功能电子表(以下简称表)原理可以看出,当表处于跑表计时工作状态时,两次按ADVANCE键后,表显示时间是两个键的间隔时间。若设间隔时间为T,表显数值为M,则M=T·F/N(F注入表的信号频率,N表的分频系数)。当使T=N(或T=N&TImes;10-x)时,则F=M(或F=M&TImes;10x),即表显数值M是输入表的信号频率F。这是本频率计的基本工作原理。如图所示。9V电源经IC1稳压为IC2和IC3提供稳定的5V工作电源
发表于 2020-02-27
以前的课程设计误差很小 分享给大家有程序和模拟 也做过实物按键切换量程10倍和1倍的单片机源程序如下:#include #include #define uint unsigned int#define uchar unsigned charsbit k1=P3^0;sbit k2=P2^0;sbit LED=P2^1;unsigned char code dispbit[8]={
发表于 2019-11-13