蓝桥杯-单片机基础12——对芯片LM555产生的频率脉冲计数思路

蓝桥杯单片机组备赛指南请查看 :本专栏第1篇文章

本文章针对蓝桥杯-单片机组比赛开发板所写,代码可直接在比赛开发板上使用。

型号:国信天长4T开发板(绿板),芯片:IAP15F2K61S2

(使用国信天长蓝板也可以完美兼容,与绿板几乎无差别)


1. 代码目的

        通过对LM555芯片的正确应用,将其产生的频率数值显示在数码管上,并可以通过RB3对频率进行调节。数码管不用的位全部熄灭,并在0位显示F指示频率。显示格式:

F6000
未用到的熄灭有效数据:6000Hz

2. LM555芯片简介

        对LM555芯片可以实现的操作有很多,但是比赛开发板上很少。以下文字内容瞟一眼即可,客观题基本不会遇到

  1. 引脚2(TRIG)- 触发:当此引脚的电压降至1/3 VCC时,定时器被触发,开始计时。

  2. 引脚3(OUT)- 输出:输出引脚,输出电压可以从0V到接近VCC变化。

  3. 引脚4(RESET)- 重置:此引脚用于重置定时器。当这个引脚接收到低于0.7V的电压时,定时器的输出会立即变低,无论计时周期是否完成。

  4. 引脚5(CTRL)- 控制电压:控制电压引脚可以用来改变定时器的触发和阈值电平。通常通过一个电位器连接到VCC和GND

  5. 引脚6(THR)- 阈值:

    • 当此引脚的电压升至2/3 VCC时,定时周期结束,输出引脚变低。
    • 在振荡器模式下,这个引脚和放电引脚一起控制振荡频率。
  6. 引脚7(DISCH)- 放电:

    • 这个引脚连接到一个内部晶体管的集电极,该晶体管可以提供放电路径到GND。
    • 在振荡器应用中,它被用来放电计时电容。

3. 开发板原理图

        我们打开官方的开发板原理图,找到LM555器件:

编程时,用跳线帽连接J3的15和16引脚,理由如下:

        我们只需略微观察,该芯片所有的引脚都被固定了,既没有与锁存器连接,也没有与引脚的连接。因此该芯片在开发板上是一个彻底的硬件电路,没有可编程部分。

        对于NET_SIG端口,与芯片的Q(output,输出端)相连,我们打开原理图文件,按下CTRL+F进行搜索该名称,发现还有另一个器件有该标注:

        在该端口的下方标注为单片机的P34引脚,因此我们可以将输出的频率数值,传入到P34引脚,再通过P34的T0计数器进行读取。因此我们需要用额外的跳线帽连接J3的14和15号引脚。

4. 频率计数原理

编程时,我们采用T0工作在计数模式,计数从P34引脚输入的脉冲个数

        在采用T1工作在定时模式,定时1秒的时长

        在1秒内T0计数的个数,就是LM产生的脉冲频率个数

        当我们在比赛时,不知道P34这个引脚是对应的T0还是T1时,可以直接查看原理图,从而确定哪一个定时计数器是用来进行计数的:

5. 代码参考

#include <reg52.h>
#include <intrins.h>sfr AUXR = 0x8e;unsigned char code duanma [18]={ 0xc0 , 0xf9 , 0xa4 , 0xb0 , 0x99 , 0x92 , 0x82 , 0xf8 , 0x80 , 0x90 , 0x88 , 0x80 , 0xc6 , 0xc0 , 0x86 , 0x8e ,0xbf , 0x7f };void select_HC573 ( unsigned char channal )
{switch ( channal ){case 4:P2 = ( P2 & 0x1f ) | 0x80;break;case 5:P2 = ( P2 & 0x1f ) | 0xa0;break;case 6:P2 = ( P2 & 0x1f ) | 0xc0;break;case 7:P2 = ( P2 & 0x1f ) | 0xe0;break;}
}void state_SMG ( unsigned char pos_SMG , unsigned char value_SMG )
{select_HC573 ( 7 );P0 = 0xff;select_HC573 ( 6 );P0 = 0x01 << pos_SMG;select_HC573 ( 7 );P0 = value_SMG;
}void state_SMG_all ( unsigned char value_SMG )
{select_HC573 ( 6 );P0 = 0xff;select_HC573 ( 7 );P0 = value_SMG;
}	void init_sys ()
{select_HC573 ( 4 );P0 = 0xff;select_HC573 ( 5 );P0 = 0x00;	
}void Delay1ms()		//@11.0592MHz
{unsigned char i, j;_nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);
}void init_timer(void)		//50毫秒@11.0592MHz
{AUXR &= 0xBF;		//定时器时钟12T模式TMOD &= 0x00;		//设置定时器模式TMOD |= 0x16;		//设置定时器模式TL1 = 0x00;		//设置定时初始值TH1 = 0x4C;		//设置定时初始值TH0 = 0xff;TL0 = 0xff;TF1 = 0;		//清除TF1标志TF0 = 0;TR1 = 1;		//定时器1开始计时TR0 = 1;EA = 1;ET1 = 1;ET0 = 1;
}unsigned int count_timer0 = 0;
void timer0_service () interrupt 1
{count_timer0++;
}unsigned int count_fre = 0;
unsigned char count_50ms = 0;
void timer1_service () interrupt 3
{count_50ms++;TL1 = 0x00;		//设置定时初始值TH1 = 0x4C;		//设置定时初始值if ( count_50ms == 20 ){count_50ms = 0;count_fre = count_timer0;count_timer0 = 0;}
}void SMGrunning ()
{state_SMG ( 0 , duanma[15] );Delay1ms();if ( count_fre > 999999 ){state_SMG ( 1 , duanma[count_fre/1000000%10] );Delay1ms();}if ( count_fre > 99999 ){state_SMG ( 2 , duanma[count_fre/100000%10] );Delay1ms();}if ( count_fre > 9999 ){state_SMG ( 3 , duanma[count_fre/10000%10] );Delay1ms();}if ( count_fre > 999 ){state_SMG ( 4 , duanma[count_fre/1000%10] );Delay1ms();}if ( count_fre > 99 ){state_SMG ( 5 , duanma[count_fre/100%10] );Delay1ms();}state_SMG ( 6 , duanma[count_fre/10%10] );Delay1ms();state_SMG ( 7 , duanma[count_fre%10] );Delay1ms();state_SMG_all ( 0xff );
}void main ()
{init_sys ();init_timer ();while ( 1 ){SMGrunning ();}
}

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

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

相关文章

如何在CentOS安装StackEdit Markdown编辑器并实现无公网IP远程访问使用

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安…

反射的学习

反射的作用&#xff1a; 1.获取一个类里面的所有信息&#xff0c;获取到之后&#xff0c;在执行其他的业务逻辑 2.结合配置文件&#xff0c;动态的创建对象并调用方法

(4)(4.5) Underwater Sonar (Analog)

文章目录 前言 1 推荐硬件 2 连接和配置 3 参数说明 前言 本页详细介绍了低成本模拟水下声纳&#xff08;又称"探鱼器"&#xff09;和数字转换器的设置&#xff0c;数字转换器可将模拟读数转换成 NMEA 0183&#xff0c;供 ardupilot 读取。这种设置可以测量船下…

Kubernetes篇(三)— 资源管理

目录 前言资源管理介绍YAML语言介绍资源管理方式命令式对象管理命令式对象配置声明式对象配置 前言 本章节主要介绍yaml语法和kubernetes的资源管理方式 资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 …

【THM】SQL Injection(SQL注入)-初级渗透测试

简介 SQL(结构化查询语言)注入,通常称为 SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经正确验证的用户输入与数据库进行通信时,攻击者有可能窃取、删除或更改私人数据和客户数据,并攻击 Web 应用程序身份验证方法以获取私有数据…

java-map接口学习

java-map接口学习 Java Map接口HashMapLinkedHashMapTreeMap例子 Java Map接口 Map接口是基于键(key)和值(value)对的集合。每个键值对被称为一个条目(entry)。Map中的键是唯一的。 如果需要根据键进行搜索、更新或删Java Map接口除元素&#xff0c;那么Map是很有用的。 在Ja…

PCB三大走线,如何高效率检查?

在PCB设计中&#xff0c;走线的布局与检查是至关重要的环节。按照走线类型&#xff0c;可分为直角走线、差分走线及蛇形线&#xff0c;如何针对这三种走线方式进行高效率检查&#xff0c;去也报电路的稳定性和可靠性&#xff1f; 1、直角走线 容性负载&#xff1a;观察直角拐角…

从SQL质量管理体系来看SQL审核(4)- 如何设计一个优秀的SQL审核引擎

如何设计一个优秀的SQL审核引擎 从SQL质量管理体系来看SQL审核系列包括多篇文章&#xff0c;从SQL质量管理体系的角度来讨论如何设计一个优秀SQL审核引擎&#xff0c;欢迎订阅。 从SQL质量管理体系来看SQL审核&#xff08;1&#xff09;- SQL质量管理体系概览 从SQL质量管理…

YOLOv9改进策略 :主干优化 | 无需TokenMixer也能达成SOTA性能的极简ViT架构 | CVPR2023 RIFormer

💡💡💡本文改进内容: token mixer被验证能够大幅度提升性能,但典型的token mixer为自注意力机制,推理耗时长,计算代价大,而RIFormers是无需TokenMixer也能达成SOTA性能的极简ViT架构 ,在保证性能的同时足够轻量化。 💡💡💡RIFormerBlock引入到YOLOv9,多个数…

JavaEE 初阶篇-深入了解单例模式(经典单例模式:饿汉模式、懒汉模式)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 单例模式的概述 2.0 单例模式 - 饿汉式单例 2.1 关于饿汉式单例的线程安全问题 3.0 单例模式 - 懒汉式单例 3.1 关于懒汉式单例的线程安全问题 3.1.1 加锁 synchr…

spring boot3登录开发-3(2短信验证登录/注册逻辑实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 上文衔接 内容简介 功能分析 短信验证登录实现 1.创建交互对象 用户短信登录/注册DTO 创建用户登录VO…

IOTX:未来市场爆发点的RWA协议?DePIN赛道被低估的龙头

从基本面来看&#xff0c;IoTeX的目标是创建一个连接的世界&#xff0c;在这个世界中&#xff0c;每个人都能控制自己的数据、设备和身份。通过区块链技术&#xff0c;IoTeX旨在解锁智能设备和数据的潜力&#xff0c;支持新一代的现实世界Dapp和数字资产的发展。IOTX始终致力于…

红黑树剖析

目录 一. 红黑树的概念 二. 红黑树的性质 三. 红黑树节点的定义 四. 红黑树的插入操作 4.1 uncle存在且颜色为红 4.2 uncle不存在或者uncle存在且为黑 五. 整体代码展示 一. 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每…

OpenCV 4.9基本绘图

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV使用通用内部函数对代码进行矢量化 下一篇&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; ​目标 在本教程中&#xff0c;您将学习如何&am…

广东小团队惊艳业绩揭秘:链动模式助力面膜销售破千万!

惊爆&#xff01;广东一个默默无闻的小团队竟然在短短一个月内&#xff0c;仅凭销售面膜就实现了超过千万的惊人业绩&#xff01;这背后究竟隐藏着怎样的秘密武器呢&#xff1f; 揭开链动模式的神秘面纱 链动模式&#xff0c;作为社交电商领域的一股新兴力量&#xff0c;正以其…

【强化学习的数学原理-赵世钰】课程笔记(一)基本概念

目录 一. 内容概述1. 通过案例介绍强化学习中的基本概念2. 在马尔可夫决策过程&#xff08;MDP&#xff09;的框架下将概念正式描述出来 二. 通过案例介绍强化学习中的基本概念1. 网格世界&#xff08;A grid world example&#xff09;2. 状态&#xff08;State&#xff09;3.…

Spring AOP + 自定义注解 实现公共字段的填充

Spring AOP 自定义注解 实现公共字段的填充 代码冗,不利于后期维护. 定义操作这些字段的方法类型 实现步骤&#xff1a; 自定义注解AutoFill,用于表示操作这些公共字段的方法自定义切面类AutoFillAspect,统一拦截&#xff0c;通过反射获取方法入参&#xff0c;并填充公共字段…

【THM】Burp Suite:Other Modules(其他模块)-初级渗透测试

介绍 除了广泛认可的Repeater和Intruder房间之外,Burp Suite 还包含几个鲜为人知的模块。这些将成为这个房间探索的重点。 重点将放在解码器、比较器、排序器和组织器工具上。它们促进了编码文本的操作,支持数据集的比较,允许分析捕获的令牌内的随机性,并帮助您存储和注释…

9、鸿蒙学习-开发及引用静态共享包(API 9)

HAR&#xff08;Harmony Archive&#xff09;是静态共享包&#xff0c;可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP&#xff0c;不能独立安装运行在设备上&#xff0c;只能作为应用模块的依赖项被引用。…

MongoDB 6.1 及以上版本使用配置文件的方式启动报错 Unrecognized option: storage.journal.enabled

如果你使用的 MongoDB 的版本大于等于 6.1&#xff0c;并且在 MongoDB 的配置文件中编写了如下内容 storage:journal:# 启用或禁用持久性日志以确保数据文件保持有效和可恢复# true 启用&#xff1b;false 不启用# 64 位系统默认启用&#xff0c;启用后 MongoDB 可以在宕机后根…