1 引言

为了实现智能化的电子计数测频,实现一个宽领域、高精度的频率计,一种有效的方法是运用单片机测量频率。采用单片机、接口芯片以及分频电路实现频率的自动分频。根据计数值、分频系数,求出周期T,得到待测频率。

2 C51语言使用中几个关键问题

在数字频率计中,没有采用常用的汇编语言,全部软件用C语言编程。8051单片机的C语言编译器简称C51。C51程序有且仅有一个名为main的主程序。

(l)用#include在C语言源程序中包含库文件。例如:#include〈reg51.h〉

(2)为了能直接访问特殊功能寄存器SFR,C51提供了一种自主形式的定义方法,这是标准C语言中所没有的,仅适于单片机编程。例如: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的各个口地址,便于C51编译器按8155的实际硬件结构,建立I/O变量名与其实际地址的对应关系。下面程序是函数说明和初始化:

void main(void)

(uint k=0;    /*给循环变量赋初值*/

void show(void); /*显示函数说明*/

TMOD=0x10;    /*定时器1方式1,

GATE=0*/

COM8155=0xof; /*8155的工作方式控制字*/

PB8155=fen1;   /*分频初值赋予8155的PB口*/

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循环语句进行适当的延时,并将8155的PA口清零,保证下一次的显示。显示的方法是数组s[8]的每个值作为字形码数组table[]的下标,在table[]数组中找到自己对应的字形码,送至8155的PA口。最后根据n的值,确定所显示的频率值的单位数量级。

5 结论

本文的工作基础是应用单片机设计的数字频率计。利用C语言进行单片机应用系统数字频率计的设计,不仅编程简单,精度高,而且避免了汇编语言在进行乘除法运算时要考虑采用浮点运算的要求。与汇编语言相比编程语句大大减少。数字频率计的全部软件均经过了调试。并进行了误差分析。频率的测量范围从1Hz到1MHz,具有一定的实用价值。

关注eeworld公众号

快捷获取更多信息

关注eeworld服务号

享受更多官方福利

推荐阅读

/**************************************************************************实例名称:频率计*实例说明:实现0~9000hz频率计的统计*作者:yd*时间:09.06.20*************************************************************************/#include "target.h"#include "led.h"uchar displayBuff[4]={'0','0','0','

发表于 2020-12-30

本文利用前置分频器SAB6456A和高速数字分频器74HC390的分频功能,结合新型的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/C1的有关功能进行介绍,读者在学习时参照配套程序的相关内容可加深理解。频率是指周期性信号在单位时间(1s)内变化的次数,测量频率的仪器叫频率计。这一讲的实验主要介绍怎样用ATmega8和LCD1602液晶显示器组成数字频率计,频率测量范围为1Hz~4MHz,通过实验和学习使大家掌握ATmega8的定时器/计数器的功能和基本使用方法。一、频率测量原理频率测量有计数法和测量周期法这两种方法。计数法是在一定时间间隔T内计得信号重复变化的次数N,根据公式f=N/T就可以计算出频率,为了方便时间间隔T通常取1s,这样计数的结果就是频率;测量周期法是先测量信号的周期,再根据公式f=1/T

发表于 2020-03-10

简易数字频率计电路图(一)本文介绍一台采用六功能电子表改装的数字频率计,它具有造价低廉,制作调试简单,读数方便等特点,很适合于初学者自制。工作原理:由六功能电子表(以下简称“表”)原理可知,当把“表”置于“跑表计时”工作状态时,在两次按动“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

数字频率计c语言程序,数字频率计中C语言编程的研究相关推荐

  1. DSB算法C语言程序,单片机中使用DSB温度传感器C语言程序.doc

    单片机中使用DSB温度传感器C语言程序 单片机中使用DS18B20温度传感器C语言程序(参考1) /************************************************** ...

  2. 怎样检查c语言程序的问题,C语言陷阱与技巧第24节,做代码选择,不一定都要使用 if 判断的...

    在C语言程序开发中,实现需求的解决方案往往不止一个.解决一个问题,程序员一般都能够设计出多个解决方案,并写出相应的C语言代码. 可能有读者会觉得,解决问题的话,写出一种方法就可以了,给出多个方法没有意 ...

  3. 8255a初始化c语言程序,8255A的c语言程序.doc

    8255A的c语言程序 8255A的c语言程序 [实例24]用8243扩展I/O端口 #include sbit ContrBit0=P1^0; sbit ContrBit1=P1^1; sbit C ...

  4. 频率计c语言程序,数字频率计中C语言编程的研究

    在单片机应用系统中利用C语言编程具有一定优点.介绍了用C语言实现数字频率计的软件设计.介绍了C语言使用中几个关键问题.并对数字频率计的主程序.显示程序中小数点处理程序进行了论述.全部软件编程不是采用常 ...

  5. c语言程序中有汉字,C语言程序中汉字的处理方法

    本文主要讲解C语言程序中汉字的处理方法 printf(\"输出功率为%s千瓦.\\n\",power); 考虑到还有相当一部分人在学习和应用C语言,因此在这里向读者介绍一下笔者在这 ...

  6. 怎么用centos7运行c语言程序_写C语言程序,如何提升程序运行效率?我的一点经验分享给你们!...

    在编写C语言程序后,经常需要对源码进行优化,以提高程序的运行效率,下面简述几个常用的优化技巧以供大家参考: 1.C于代码在程序中的优化 现在的C编译器会自动对代码进行优化,但这些优化是对执行速度和代码 ...

  7. 单纯形 c语言 程序,单纯形法完全c语言程序

    单纯形法完全c语言程序 更新时间:2017/2/8 13:37:00  浏览量:566  手机版 单纯形法完全c语言程序,能运行 #include "math.h" #includ ...

  8. 程序设计基础(c语言),程序设计基础(C语言)

    <程序设计基础(C语言)>由会员分享,可在线阅读,更多相关<程序设计基础(C语言)(26页珍藏版)>请在人人文库网上搜索. 1.程序设计基础(C语言),东北大学高级语言程序设计 ...

  9. c语言程序链接过程,C语言简明教程(二):C程序编译链接过程和实例对照详解...

    不像高级编程语言,在C语言开发中,了解其编译链接过程显得相对重要,因为C语言是较为底层的语言,很多时候我们调试C程序或者解决其它问题都可能会涉及到C编译链接的相关知识,例如编译动态库或者静态库.下面我 ...

  10. c语言程序改错例题,C语言程序改错习题

    C语言程序改错习题 行动是通向成功的唯一途径.以下是小编为大家搜索整理的C语言程序改错习题,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网! 在考生文件夹下,给定程序MODI.C的功 ...

最新文章

  1. DOMJavaScript示例练习
  2. 行高引起的行内块级元素间距
  3. 【图文并茂】通过实例理解word2vec之Skip-gram
  4. 平庸程序员的成长笔记
  5. Docker学习之docker常用命令
  6. Atitit 数据存储视图的最佳实际best practice attilax总结
  7. Debian9.5安装VNC并且配置vnc开机自启动
  8. win10系统更新时一直停留在重新启动界面的解决方法
  9. L337. 打家劫舍 III
  10. ubuntu20.04修改mac地址
  11. [转发]Labview2015 vi文件程序框图密码破解过程
  12. 【无标题】**数据库课设:三天完成学生信息管理系统**
  13. linux 中etc全拼,英语etc_英语中“等等”缩写成为etc吗要加一点吗全拼是什么谢谢大家_淘题吧...
  14. join有哪几种方式?内外连接有什么区别?
  15. windows media player 服务器运行失败
  16. 创蓝253-创蓝万数平台图像识别OCR技术
  17. 在一个已经EXIT的docker容器中,修改配置文件
  18. 电脑升级到WIN11系统无法打开QQ和TIM?我来教你如何解决
  19. 5 个行为让你更好...
  20. Android Audio常用音频工具和分析方法

热门文章

  1. Cloud Computing HCIA-③华为企业级虚拟化解决方案
  2. 若依的框架怎么样_若依后台管理框架初识
  3. QT 处理TCP粘包问题
  4. 〖EXP〗NSA MS17010永恒之蓝一键工具
  5. 欢迎使用云-“您的Apple ID已被禁用。”
  6. 北京圣思园经典Java培训教学视频分享
  7. ArcGis如何创建/连接企业级地理数据库
  8. windows 批量创建文件夹
  9. 单片机小车关于PWM控速
  10. MS17-010 永恒之蓝漏洞利用方式