蓝桥杯单片机快速开发笔记——NE555测频

一、原理分析

 

3fcf3a0afc2e4370a7b32c35078cf7e4.png

08fac7fdfc774e05a9c73a975e410296.png

        NE555作为一种多功能集成电路,在信号发生和频率测量方面具有广泛的应用。通过合理配置和连接外部元件,可以实现不同类型的信号发生和频率测量功能。

原理:

  1. 信号发生器

    • NE555可以配置为多种不同的振荡器电路,包括单稳态(单脉冲)和多谐振荡器(方波、正弦波等)。
    • 在单稳态模式下,NE555可以生成一个脉冲信号,当输入触发脉冲时,输出会产生一个固定宽度的脉冲。
    • 在多谐振荡器模式下,NE555可以生成稳定的方波信号,其频率由外部电路元件(电阻和电容)决定。
  2. 频率测量

    • NE555可以用作频率测量器的基础元件,通过测量NE555输出的方波信号的周期来计算频率。
    • 频率测量的原理是利用NE555输出的方波信号的周期与频率成反比的关系,通过测量周期来计算频率。

应用:

  1. 信号发生器

    • NE555可以用于产生各种频率的信号,常用于音频信号发生器、脉冲信号发生器等。
    • 在电子实验和原型设计中,NE555经常被用作简单的信号发生器,用于测试和验证电路功能。
  2. 频率测量

    • NE555可以用作简单的频率测量器,通过测量NE555输出的方波信号的周期来计算频率。
    • 频率测量在电子实验、通信领域和控制系统中具有广泛的应用,用于测量信号的频率和周期。

考点分析

  1. 使用短路环将J13中的NAL与P34引脚短接,将NE555产生的信号输入到单片机的P34引脚。

  2. NE555电路是一个信号发生器,其输出信号连接到单片机的P34引脚。

  3. 通过调节Rb3可调电位器,可以改变该信号的频率大小。

  4. 利用定时器/计数器来测量信号的频率。

二、思维导图

5d9df40400174998934b61be5f4fc295.png

定时器设置部分可以参考本栏:蓝桥杯单片机快速开发笔记——定时器-CSDN博客

三、示例框架

unsigned int dat_f = 0;
unsigned int count_f = 0;
unsigned char count_t = 0;#define TSMG 500void delay_smg(unsigned int t)
{while(t--);
}void hc573(unsigned char channel, unsigned char dat)
{P2 = (P2 & 0x1f) | 0x00;P0 = dat;switch(channel){case 4:P2 = (P2 & 0x1f) | 0x80;   //LED  0亮break;case 5:P2 = (P2 & 0x1f) | 0xa0;   //蜂鸣器、继电器  1开break;case 6:P2 = (P2 & 0x1f) | 0xc0;   //数码管位选  1亮break;case 7:P2 = (P2 & 0x1f) | 0xe0;   //数码管段选  0亮break;}P2 = (P2 & 0x1f) | 0x00;}code unsigned char Seg_Table[] = 
{
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0x88, //A
0x83, //b
0xc6, //C
0xa1, //d
0x86, //E
0x8e //F
};void smg_all(unsigned char dat)
{hc573(6, 0xff);hc573(7, dat);
}void smg_bit(unsigned char pos, unsigned char dat)
{hc573(6, 0x01 << pos);hc573(7, dat);delay_smg(TSMG);hc573(6, 0x01 << pos);hc573(7, 0xff);
}void smg_display()
{if(dat_f > 99999){smg_bit(2, Seg_Table[(dat_f / 100000) % 10]);}if(dat_f > 9999){smg_bit(3, Seg_Table[(dat_f / 10000) % 10]);}if(dat_f > 999){smg_bit(4, Seg_Table[(dat_f / 1000) % 10]);}if(dat_f > 99){smg_bit(5, Seg_Table[(dat_f / 100) % 10]);}if(dat_f > 9){smg_bit(6, Seg_Table[(dat_f / 10) % 10]);}if(dat_f > 0){smg_bit(7, Seg_Table[dat_f % 10]);}
}void init_sys()
{hc573(5, 0x00);smg_all(0xff);Init_Timer();
}void Init_Timer()
{TH0 = 0xff;        TL0 = 0xff;TH1 = (65536 - 50000) / 256;        TL1 = (65536 - 50000) % 256;TMOD = 0x16;     //0x16 = 0001 0110//定时器1用方式1,16位定时器;//定时器0用方式2,自动重装载8位计数器ET0 = 1;ET1 = 1;EA = 1;TR0 = 1;TR1 = 1;
}void Service_T0() interrupt 1
{count_f++;
}void Service_T1() interrupt 3
{TH1 = (65536 - 50000) / 256;        TL1 = (65536 - 50000) % 256;count_t++;if(count_t == 20){dat_f = count_f;count_f = 0;count_t = 0;}
}void main()
{init_sys();while(1){smg_display();}
}

        通过NE555产生的信号频率来测量并显示在数码管上,通过定时器来计算频率并更新显示。

  1. 定义了全局变量 dat_fcount_f 和 count_t,分别用于存储数据、计数和时间。

  2. 定义了宏 TSMG 用于设置数码管显示的延时时间。

  3. 实现了 delay_smg 函数用于实现延时功能。

  4. 实现了 hc573 函数用于控制数码管、LED、蜂鸣器等外设的显示和控制。

  5. 定义了数码管显示的编码表 Seg_Table,包含了0到F的显示编码。

  6. 实现了 smg_allsmg_bit 和 smg_display 函数用于数码管的全显、位显和数据显示。

  7. 初始化系统的函数 init_sys 中设置了初始状态和调用了 Init_Timer 函数初始化定时器。

  8. Init_Timer 函数初始化了定时器0和定时器1,并设置了定时器的工作模式和中断使能。

  9. 定时器0中断服务函数 Service_T0 用于计数。

  10. 定时器1中断服务函数 Service_T1 用于定时并更新数码管显示的数据。在每20次中断后,将计数值赋给 dat_f,并清零计数器。

  11. 在 main 函数中初始化系统并进入一个无限循环,不断更新数码管显示。

 

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

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

相关文章

【鸿蒙HarmonyOS开发笔记】通知模块之发布基础类型通知,内含如何将图片变成PixelMap对象

通知简介 应用可以通过通知接口发送通知消息&#xff0c;终端用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用。 通知常见的使用场景&#xff1a; 显示接收到的短消息、即时消息等。 显示应用的推送消息&#xff0c;如广告、版本更新等。 显示当前正…

基于cnn深度学习的yolov5+pyqt+分类+resnet+骨龄检测系统

往期热门博客项目回顾&#xff1a; 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 YOLOv5与骨龄识别 YOLOv5&a…

极简生活|2024年让自己越来越好的18个极简好习惯

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; 转眼间已经进入了2024年&#xff0c;新的一年&#xff0c;新的开始。 俗话说&#xff1a;百尺高台起于垒土&#xff0c;千里之堤毁于蚁穴。 好习惯积累的越多&#xff0c;坏习惯越来越少&#xff0c;我们的生活才能越…

【NLP笔记】预训练+微调范式之OpenAI Transformer、ELMo、ULM-FiT、Bert..

文章目录 OpenAI TransformerELMoULM-FiTBert基础结构Embedding预训练&微调 【原文链接】&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 【本文参考链接】 The Illustrated BERT, ELMo, and co. (How NLP Cracked Tra…

STL第一弹

2 STL初识 2.1 STL的诞生 长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西 C的面向对象和泛型编程思想&#xff0c;目的就是复用性的提升 大多情况下&#xff0c;数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生…

Gradio官方文档

文章目录 构建您的第一个demo分享您的demo进度条受密码保护的应用程序The Interface class&#xff08;接口类&#xff09;Components Attributes&#xff08;组件属性&#xff09;多个输入和输出组件图像示例嵌套列表描述性内容手风琴中的附加输入The 4 Kinds of Gradio Inter…

蓝桥杯Python B组练习——完美的代价

一、题目 问题描述   回文串&#xff0c;是一种特殊的字符串&#xff0c;它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串&#xff0c;它不一定是回文的&#xff0c;请你计算最少的交换次数使得该串变成一个完美的回文串。   交换的定义是…

C语言-----冒泡排序

今天&#xff0c;让我们来学习一下C语言中一个简单的排序算法------冒泡排序。 什么是冒泡排序呢&#xff1f; 冒泡排序是C语言中一个可以将一个数组的内容按照升序或者降序进行重新排列的算法。简单来说&#xff0c;是一种排序的思维。 冒泡排序的核心思想&#xff1a;让同…

【手撸IM】通讯协议设计与实现

【手撸IM】专题由来&#xff1a;之前利用业余空闲时间写一个Java版Akka-Rpc&#xff0c;并且基于它写了一个分布式高性能文件服务&#xff0c;从反馈上来看&#xff0c;还是得到了一定的关注&#xff0c;甚至部分同学真的基于此直接抄作业和二开了。因此有了再进一步去手撸一个…

【Vue】el-select下选组件

系列文章 【Vue】vue增加导航标签 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue&#xff0c;在Windows IIS平台…

修改约束

目录 修改约束 创建数据库 添加约束 删除约束 Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 修改约束 如果说表结构的修改还在可以容忍的范畴之内&#xff0c;那么约束的修改是绝对 100% 禁止的 所有的约束一定要在…

【Flutter 面试题】讲一讲 Dart 的一些重要概念?

【Flutter 面试题】讲一讲 Dart 的一些重要概念&#xff1f; 文章目录 写在前面口述回答补充说明完整代码运行结果详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云社区专家博主&#…

UE5 TPS开发p25 设置大厅,销毁会话,快速退出,检查按钮

这节课主要是完善了菜单选择地图作为游戏大厅,MultiPlayerSessionSubsystem的销毁会话函数,然后就是给Menu菜单添加了Quit和禁止使用按钮 同时还完善了创建房间的漏洞,因为在创建房间的时候如果退出后就马上加入就会发现自己无法创建房间,这是因为服务器判断房间销毁是有一定延…

shell的介绍以及Linux权限的讲解

1 shell命令以及运行原理 1.1 shell命令行的概念 大家在以前的学习中可能会有一个固态的印象&#xff1a; 一台计算机的大概分层为下图 也就是说人可以直接调用计算机的操作系统&#xff0c;但真的是这样吗&#xff1f; 答案是否定的&#xff01; 其实操作系统还有一个“外壳…

31.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-其它消息的实现与使用优化

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;30.数据搜索功能…

如果QQ当年有AI,当年的经典头像会是什么样子?-WEBUI有趣案例分享

&#x1f454;背景介绍 IP_Adapter是个很有趣的模型&#xff0c;可以实现一定程度上的角色一致性&#xff0c;忽然有个想法&#xff0c;用IP_Adapter还原一下QQ当年的经典头像会是什么样子呢&#xff1f; 不过&#xff0c;大家还记得这些古早时期的头像吗&#xff1f;或者&…

优雅的 Markdown

Markdown浅尝 一、勾选框 注意[]前后都要有空格 - [x] 干的漂亮 - [x] 吃饭 - [x] 写代码 - [ ] 睡觉 干的漂亮 吃饭 写代码 睡觉 二、列表 #无序列列表 * 换成 - 也行 * 你 * 你好 * 你好呀 - 你很好啊 你你好你好呀你很好啊 #有序列表 . 后面有个空格 1. 我 2. 是我 3.…

Day73:WEB攻防-支付逻辑篇篡改属性值并发签约越权盗用算法溢出替换对冲

目录 SRC-支付逻辑测试 购买支付-修改数量&篡改价格&订单对冲 修改数量 篡改价格 产品替换对冲 订单替换对冲 购买支付-优惠券复用盗用&积分对冲溢出 优惠卷复用 优惠卷盗用 积分对冲溢出 SRC实战案例分享 越权让他人支付 四舍五入半价购 并发提前全…

python字典:打印字典中的键、值、打印所有字典、python遍历字典

1.定义 字典以花括号&#xff08;{}&#xff09;括起来&#xff0c;里面的元素是成对出现的&#xff0c;不同对元素用逗号&#xff08;,&#xff09;分开&#xff1b;一对元素用 冒号&#xff08;&#xff1a;&#xff09;分割。 2.解读 字典里的每一对元素准确的来说是键值对&…

javaSwing连连看

一、简介 基于java的连连看游戏设计和实现&#xff0c;基本功能包括&#xff1a;消除模块&#xff0c;重新开始模块&#xff0c;刷新模块&#xff0c;选择难度模块&#xff0c;计时模块。本系统结构如下&#xff1a; &#xff08;1&#xff09;消除模块&#xff1a; 完成连连…