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

news2024/11/23 15:48:08

仿真原理图:

程序运行图:

部分程序:

#define LED_GLOBAL 1

#include "led.h"

/*******************************************************************************************

*函数名称:delay_us(uint us)

*函数功能:实现微秒级的延时

*函数入口:us,延时函数循环后期数

*函数出口:无

*******************************************************************************************/

void delay_us(uint us)

{

  uint i;

  while(us--)

  {

    for(i=0;i<100;i++);

  }

}

/*******************************************************************************************

*函数名称:led_init(void)

*函数功能:四位七段数码管显示初始化

*函数入口:无

*函数出口:无

*******************************************************************************************/

void init_led(void)

{

   LED=segLedCode[0];

   LED_CS1=0;

   LED_CS2=0;

   LED_CS3=0;

   LED_CS4=0;

}

/*******************************************************************************************

*函数名称:ledWrite(uchar c,uchar n,uchar mod)

*函数功能:对一组数码管的某一位进行短暂显示

*函数入口:c,要显示的数据;n,显示一组数码管中的第n位;mod,c的数据形式

*函数出口:无

*说明:当mod==DIGITAL时,c为数字0~9的ANCII码形式,此时在n位数码管上显示想用数字

       当mod==CHARACTER,直接将c输出数据口

*******************************************************************************************/

void ledWrite(uchar c,uchar n,uchar mod)

{

   if(CHARACTER==mod)

   {

           LED=c; 

   }

   else if(DIGITAL==mod)

            {

               if((c-'0')<0x0a)

                    {

                      LED=segLedCode[c-'0'];

                    }

                    else

                    { 

                          LED=segLedCode[0];

                    }

/*******************************************************************************************

*函数名称:ledSweepDisplay(uchar *segCode,uchar segCodeMod,uchar segNumber)

*函数功能:循环在数码管上显示缓冲区中的数据

*函数入口:segCode,指向显示缓冲区中的指针;segCodeMod,0~7位为1或0标示1~8位数码管显示的数据的类型(DIGITAL或者CHARACTER);segNumber,代表要显示数码管的位数

*函数出口:无

*说明:本函数主要实现将显示缓冲区中的数据在数码管上显示出来

*******************************************************************************************/                

void ledSweepDisplay(uchar *segCode,uchar segCodeMod,uchar segNumber)

{

     uchar segCount;

         for(segCount=0;segCount<segNumber;segCount++)

         {

            if(segCodeMod&0x01)        /*1代表此处显示任意字符 */

            {

              ledWrite(segCode[segCount],segCount+1,CHARACTER);

            }

            else

            {

              ledWrite(segCode[segCount],segCount+1,DIGITAL);

            }

            segCodeMod=segCodeMod>>1;

         }

}

#define TARGET_GLOBAL 1

#include "target.h"

uint  timer0Count;       //timer0溢出计数

uint  pulseCount;        //脉冲计数

uint  pulseCountTemp;    //脉冲计数寄存

/*************************************************

*函数名称:timer0_init(void)

*函数功能:timer0初始化

*函数入口:无

*函数出口:无

*说明:本系统用12Mhz晶振,定时1ms

*************************************************/

void timer0_init(void)

{

  TMOD|=0x01;   //timer0工作在MODEL1,timer

  TH0=0xFC;

  TL0=0x18;

  ET0=1;        //timer0中断使能

  IP=0x02;      //timer0优先级最高

  TR0=1;                  //timer0启动

}

/*************************************************

*函数名称:int0_init(void)

*函数功能:外部中断0初始化

*函数入口:无

*函数出口:无

*************************************************/

   

    pulseCountTemp=pulseCount-pulseCount/(uint)36;    //频率计数校准

         pulseCount=0;

    timer0Count=0;

  }

  sei();

}

void int0(void) interrupt 0      //int0中断入口函数,实时计数检测频率

{

  pulseCount++;

}

/*********************************************

*函数名称:uint get_fre_number(void)

*函数功能:计算频率,1~1000HZ

*********************************************/

uint get_fre_number(void)

{

  return pulseCountTemp;

}

/*************************************************************************

*实例名称:频率计

*实例说明:实现0~9000hz频率计的统计

*************************************************************************/

#include "target.h"

#include "led.h"

uchar displayBuff[4]={'0','0','0','0'}; //数码管显示缓冲区,千,百,十,个

const uchar displayMode=0x00;           //后四位分别对应缓冲区中每位的数据类型,1为任意字符显示,0为数字显示

void main()

{

  uint get_fre;

  target_init();

  init_led();

  sei();

  while(1)

  {

    get_fre=get_fre_number();

         if(get_fre/1000<0x0A)

         {

           displayBuff[0]=get_fre/1000+'0';            //计算频率千位,放在缓冲区第0位

         }

         displayBuff[1]=(get_fre/100)%10+'0';          //计算频率百位,放在缓冲区第1位

    displayBuff[2]=(get_fre%100)/10+'0';          //计算频率十位,放在缓冲区第2位

         displayBuff[3]=get_fre%10+'0';                       //计算频率个位,放在缓冲区第3位

    ledSweepDisplay(displayBuff,displayMode,0x04);//循环显示数码管缓冲区中数据

  }

}



资料包括:

 

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

15.JavaScript 02

文章目录一、DOM简单学习&#xff1a;为了满足案例要求1、DOM知识点简单学习2、事件简单学习3、案例1&#xff1a;电灯开关二、BOM1、概念2、组成3、Window&#xff1a;窗口对象1. Window窗口对象知识点2. 案例2&#xff1a;轮播图4、Location&#xff1a;地址栏对象1. Locatio…

手写Spring5(资源加载Spring.xml解析和注册Bean对象)

文章目录目标设计思路项目结构一、实现1、资源加载接口定义和实现获取ClassPath下的文件信息获取指定文件路径的方式读取文件信息获取HTTP的方式读取云服务的文件2、包装资源加载器定义和实现-策略模式的体现包装资源加载器实现3、Bean定义读取接口4、Bean定义抽象类实现5、解析…

[激光原理与应用-53]:《激光焊接质量实时监测系统研究》-4-激光焊接系统软件设计

目录 前言&#xff1a; 4.1 操作系统和开发平台 4.1.1 Windows2000 操作系统概述 4.1.2 虚拟仪器开发平台软件 LabWindows/CVI 4.2 总体软件设计 4.2.1 数据采集程序 4.2.2 软件实现的功能 4.2.2.1 主机软件的数据采集 4.2.2.2 主机软件的数据分析&#xff08;核心&am…

暗棕红色粉末ICG-COOH, ICG Carboxlaic acid,181934-09-8,ICG和PEG链接可在体内长循环

英文名&#xff1a;ICG-COOH ICG Carboxlaic acid CAS No:181934-09-8 外观&#xff1a;暗棕红色粉末 溶解度&#xff1a;在水或甲醇中溶解 纯度&#xff1a;90% 结构式&#xff1a; 西安凯新近红外荧光染料Near IRDyes激发和发射波长和颜色图 ICG NHS ester的NHS可以和蛋白…

八、闭包高级、对象、构造函数、实例化

闭包高级、对象、构造函数、实例化 闭包高级 函数被定义时生成[[scope]]->生成scope chain -> scope chain中存着上级的环境。 函数被执行的前一刻&#xff08;预编译过程&#xff09;&#xff0c;生成自己的AO&#xff0c;排到scope chain的最顶端。 函数执行完毕的…

基于天鹰算法优化的lssvm回归预测-附代码

基于天鹰算法优化的lssvm回归预测 - 附代码 文章目录基于天鹰算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于天鹰算法优化的LSSVM4.测试结果5.Matlab代码摘要&#xff1a;为了提高最小二乘支持向量机&#xff08;lssvm&#xff09;的回归预测准确率&#xff0c;对…

DFA的最小化

一、实验目的 1&#xff0e;熟练掌握DFA与NFA的定义与有关概念。 2&#xff0e;理解并掌握确定的有穷自动机的最小化等算法。 二、实验要求 输入&#xff1a;DFA 输出&#xff1a;最小化的DFA 三、实验过程 1&#xff0e;化简DFA关键在于把它的状态集分成一些两两互不相交…

一、ArrayList源码解读

ArrayList源码 一、前言 ArrayList在日常的开发中使用频率非常高&#xff0c;但是JDK是如何去设计ArrayList的&#xff0c;这就需要我们好好去了解底层实现原理&#xff0c;这样使用起来才能做到心中有数&#xff1b;当然&#xff0c;还能应付面试。本篇文章会围绕ArrayList的…

王道操作系统网课笔记合集

介绍 操作系统是什么&#xff1f; 计算机结构大概分为四层&#xff1a; 用户应用程序操作系统硬件 操作系统是一类系统软件&#xff0c;调度硬件资源&#xff0c;合理分配管理软件&#xff08;因此操作系统又被称作资源管理器&#xff08;resource manager&#xff09;&…

简洁而优美的结构 - 并查集 | 一文吃透 “带权并查集” 不同应用场景 | “手撕” 蓝桥杯A组J题 - 推导部分和

&#x1f49b;前情提要&#x1f49b; 本章节是每日一算法的并查集&带权并查集的相关知识~ 接下来我们即将进入一个全新的空间&#xff0c;对代码有一个全新的视角~ 以下的内容一定会让你对数据结构与算法有一个颠覆性的认识哦&#xff01;&#xff01;&#xff01; ❗以…

【Unity 3D 从入门到实践】Unity 3D 预制体

目录 一&#xff0c;预制体介绍 二&#xff0c;创建预制体 三&#xff0c;实例化预制体 一&#xff0c;预制体介绍 预制体是 Unity 3D 提供的保存游戏对象组件和属性的方法&#xff0c;通过预制体可以快速的实例化挂载不同组件的游戏对象&#xff0c;从而减少开发难度&…

使用光隔离的调制器在电机控制中进行安全、准确的隔离电流传感

介绍 在工业电机或伺服控制应用中&#xff0c;准确的电流测量是控制回路的一部分。目前的测量不仅需要尽可能准确&#xff0c;还需要安全可靠。 工业电机或伺服控制系统通常包含高压&#xff0c;在过流或短路等故障事件中&#xff0c;这些情况需要快速检测和整流&#xff0c…

Android开发基础

文章目录前言工程项目结构hello world界面布局代码操作新页面页面间跳转简单计算器的实现思路前端控件传递数据后端实现逻辑两个Activity之间传值发送数据返回数据SQLite简单使用利用语句写在后面写在后面前言 安卓(Android)是一种基于Linux内核的开源操作系统 使用java、kot…

不就是性能测试吗?竟让我一个月拿了8个offer,其中两家都是一线大厂

随着互联网的发展&#xff0c;单机软件的逐渐减少&#xff0c;系统从单机步入“云”时代&#xff0c;软件系统功能和规模也越来越庞大&#xff0c;盗版也越来越难&#xff0c;用户规模也越来越大&#xff0c;企业盈利随之爆发式地增长。 随着用户数量的增多&#xff0c;系统稳…

Chrome浏览器修改用户资料(User Data)的存放位置

2022.12.13一、 原先采用的在快捷方式中修改目标的方法&#xff0c;没有效果。二、创建链接1. 复制2. 删除3. 创建链接mklink参考用于缓解C盘压力&#xff0c;将浏览器用户数据存放于其他的指定位置。简单记录一下操作步骤。 其中用户数据可以如此查找&#xff0c;在浏览器地址…

数字虚拟人发展简史

虚拟人的发展史就是技术的发展史 作为元宇宙时代的基石&#xff0c;虚拟人的发展历史与制作技术的进步高度相关。在元宇宙概念中&#xff0c;未来每个用户都将依托虚拟人作为自己的化身进入虚拟世界中探索&#xff0c;要达成这个目的&#xff0c;就要求数字虚拟人不仅拥有人的…

java计算机毕业设计ssm智慧消防维保系统后端设计与实现3cmg0(附源码、数据库)

java计算机毕业设计ssm智慧消防维保系统后端设计与实现3cmg0&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都…

【毕业设计】微信小程序校园跑腿系统 校园跑腿小程序 校园跑腿微信小程序

一、前言 大学是一个小社会&#xff0c;我们在学校学习到专业知识的时候&#xff0c;有会遇到很多形形色色的任务&#xff0c;但最重要的依旧是社会经历。很多大学生都会想着在大学闯出一片新天地&#xff0c;所以他们往往会选择自己或者带上志同道合的朋友来一起创业。一次好…

泛微京桥通集成SAP,让采购流程闭环、业务管理一体化

SAP作为强大的业务处理平台&#xff0c;推动着组织采购管理走向数字化。其中的SAP MM&#xff08;MaterialManagement&#xff09;&#xff08;物料管理&#xff09;涉及到物料管理全过程&#xff0c;主要包括&#xff1a;物料需求计划、物料主数据、采购、供应商评价、库存管理…

简单聊聊 WebSocket

简单聊聊 WebSocket 1、简介 ​  WebSocket 是一种在单个 TCP 连接上进行 全双工 通信的协议。 扩展&#xff1a; ​  WebSocket 与 Socket 的区别 WebSocket 是应用层的一个通信协议&#xff1b;Socket 是对 TCP&#xff08;或UDP&#xff09;抽象封装的一组接口&#xf…