NO13 蓝桥杯单片机之NE555的使用及实践

news2024/11/26 20:47:51

由于LM555的内容较少,因此就把使用方法和代码实践放在一起了。

1 NE555使用方法

NE555是一个“信号发生电路”,可以理解为一个“方波产生器”,值得注意的是,其是一个硬件电路,一旦确定了功能也就确定了,所以在蓝桥杯比赛中,可能不太需要了解其是怎么产生方波的,知道其怎么使用就可以了。

需要知道的是:

(1)通过调节Rb3可以调节输出信号的频率

(2)在使用中,NET SIG通常接的就是P3^4引脚

2 实践

2.1 任务

2.2 思路

(1)关闭相关外设:这里不再赘述,基本每次代码都有提及。

(2)测量信号频率: 首先理解频率是什么? 频率是单位时间内的周期数。

那么我们可以使用两个计时器(计时器0和计时器1),定时器0用于计数(记录1s内通过的方波个数即是周期数),定时器1用于计时(记1s时间)。

(3)数码管显示频率:需要一个变量实时记录每秒钟的频率,然后进行数码管的动态显示。

2.3 完整代码(MM模式)

这里特别讲解一下:

1. 定时器部分:

(1)运用了两个定时器但是其中断初始函数可以写在一起。 

(2)定时器0用于计数,模式选的是8位重装,TH0和TL0都等于255:之前说到一个脉冲(一个脉冲其实就是一个方波,其实就是一个周期 )为1us,0~65535us就65536个脉冲,而这里不再是之前的16位而是8位,故变为(0~255(2^8)), 当初值设定为255最大值时,那么当再来一个脉冲定时器就溢出,重新计时,所以设计初值为255是为了计一个脉冲。

2 数码管部分:

这里5位不一定全部被使用到,这里比较巧妙地部分就是小蜜蜂老师的这种方法,dat_f由于是计数累加而来,而不是十六进制,故若>9999,表示dat_f为五位数,>999为四位数,以此类推。

对数据的处理部分也是非常巧妙的。可以自己验算一下。


完整代码如下:

#include "stc15f2k60s2.h"
#include "absacc.h"

//=====================================================
void Init_Timer_f()
{
  //Timer0 to count numbers
  //Timer 1  to count time  
  TH0 = 255;
  TL0 = 255;
  
  TH1 = (65536 - 50000) / 256;
  TL1 = (65536 - 50000) % 256;  
  
  TMOD = 0x06;
  
  ET0 = 1;
  ET1 = 1;
  
  EA = 1;
  
  TR0 = 1;
  TR1 = 1;
}

unsigned int count_f = 0;
unsigned int dat_f = 0;
unsigned char t = 0;
void Service_Timer0() interrupt 1
{
  count_f++;
}

void Service_Timer1() interrupt 3
{
  if(t == 20)
  {
    dat_f = count_f;
    count_f = 0;
    t = 0;
  }
}


//======================================================


code unsigned char SMG_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
0xbf  //-
};

void Delay(unsigned char t)
{
  while(t--);
}

void SMG(unsigned int position, unsigned char content)
{
  XBYTE[0xc000] = 0x01 << position;
  XBYTE[0xe000] = content;
}

void SMG_Display()
{
  SMG(0,SMG_Table[15]);
  Delay(100);
  SMG(1,0xff);
  Delay(100);
  SMG(2,0xff);
  Delay(100);
  if(dat_f > 9999)
  {
    SMG(3,SMG_Table[dat_f / 10000]);
    Delay(100);
  }
  if(dat_f > 999)
  {
    SMG(4,SMG_Table[(dat_f / 1000) % 10]);
    Delay(100);
  }
  
  if(dat_f > 99)
  {
    SMG(5,SMG_Table[(dat_f / 100) % 10]);
    Delay(100);
  }
  
  if(dat_f > 9999)
  {
    SMG(6,SMG_Table[(dat_f / 10) % 10]);
    Delay(100);
  }
  
  SMG(7,SMG_Table[(dat_f / 1) % 10]);
  Delay(100);
  
}


void close()
{
  XBYTE[0xa000] = 0x00;
  XBYTE[0x8000] = 0xff;
}

void main()
{
  close();
  Init_Timer_f();
  while(1)
  {
    SMG_Display();
  }
}

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

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

相关文章

JDK,JRE,JVM 区别和联系【大白话Java面试题】

JDK&#xff0c;JRE&#xff0c;JVM 区别和联系 大白话回答&#xff1a; JDK是开发环境一般开发人员需要&#xff0c;包含开发环境&#xff08;JDK)和运行环境&#xff08;JRE&#xff09;&#xff0c;JRE是运行环境&#xff0c;普通用户需要。jre文件夹下的bin文件夹就是JVM的…

【unity】认识unity Hub的主要功能

这里我们主要讲解unity Hub中的【项目】和【安装】功能&#xff0c;其他对应的功能栏相信大家根据文字就可以知道相应的作用。 首先是介绍【项目】功能&#xff0c;在这里我们可以创建本地项目和云端项目&#xff0c;作为初学者我们创建本地项目皆可&#xff0c;当然如果你是多…

一则关于Go的高级构建指北

本文将探索Golang高级构建技巧&#xff0c;从而有助于创建更高效的二进制文件。 构建选项 以下是 go build 命令最常用的一些选项&#xff1a; -o: 指定输出文件名。默认输出文件名是主软件包的名称&#xff0c;在 Windows 系统中会自动添加 .exe 后缀。-v: 详细输出。该选项…

【AI系列】Python NLTK 库和停用词处理的应用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

力扣236---二叉树的最近公共祖先(DFS,Java)

题目描述&#xff1a; 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个…

电脑数据守护者:揭秘自动备份的神奇力量

在数字化时代&#xff0c;数据已经成为我们生活和工作中不可或缺的一部分。然而&#xff0c;电脑故障、人为误操作、恶意软件攻击等风险时刻威胁着数据的安全。因此&#xff0c;自动备份的重要性愈发凸显。它能够在数据发生意外丢失或损坏时&#xff0c;迅速恢复原始数据&#…

java入门学习Day03

本篇文章主要有java中的变量、命名方法、数据类型。 一、java中的变量 数据类型 变量名 数据值&#xff1b;int money 50&#xff1b; public class varibledemo {public static void main(String[] args) {int money 50;//变量的输出System.out.println(money);money 6…

浅谈 kafka

引言 同事在公司内部分享了关于 kafka 技术一些相关的内容&#xff0c;所以有了这篇文章&#xff1b;部分图片选自网络摘抄&#xff1b; 1 Kafka概述 1.1 定义 Kafka传统定义&#xff1a;kafka是一个分布式的基于发布/订阅模式的消息队列。 Kafka最新定义&#xff1a;kafka…

ubuntu 安装 cloudcompare(两种方法)

方法一 &#xff1a;从 snap 安装 &#xff08;推荐&#xff09; 安装简单&#xff0c;基本上功能都有&#xff08;读写保存las&#xff0c;pcd&#xff0c;标注等&#xff09; 安装&#xff1a; sudo apt-get update sudo apt install snap sudo snap install cloudcompare…

【送书福利第六期】:《AI绘画教程:Midjourney使用方法与技巧从入门到精通》

文章目录 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》二、内容介绍三、作者介绍&#x1f324;️粉丝福利 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》 一本书读懂Midjourney绘画&#xff0c;让创意更简单&#xff0c;让设计…

二十四种设计模式与六大设计原则(一):【策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式】的定义、举例说明、核心思想、适用场景和优缺点

目录 策略模式【Strategy Pattern】 定义 举例说明 核心思想 适用场景 优缺点 代理模式【Proxy Pattern】 定义 举例说明 核心思想 适用场景 优缺点 单例模式【Singleton Pattern】 定义 举例说明 核心思想 适用场景 优缺点 多例模式【Multition Pattern】…

视频素材库哪个软件好?这8个高清无版权的素材网推荐

小伙伴们在制作短视频的时候&#xff0c;是不是为找素材发愁呢&#xff1f;一个高质量的无水印视频对创作者的帮助太大了&#xff0c;而且还需要无版权可商用的&#xff0c;那究竟有没有这样的网站呢&#xff1f;今天我来告诉大家。 1&#xff0c;蛙学府&#xff08;中国&…

电商系列之售后退货

> 插&#xff1a;AI时代&#xff0c;程序员或多或少要了解些人工智能&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家…

InternLM 全链路开源体系

书生 浦语全链路开发体系&#xff1a;从数据到最后的应用&#xff0c;都有相应开源工具&#xff0c;其中模型&#xff0c;和数据集都有很好的开源支持。 一. 书生 万卷 书生万卷开发数据集包括&#xff0c;1.0和CC&#xff0c;拥有较为丰富的高质量的数据集&#xff0c;可用于…

Spring依赖注入思想分析

Spring 依赖注入思想分析 文章目录 Spring 依赖注入思想分析一、前言二、控制反转&#xff08;Inversion of Control&#xff09;1. 代码依赖初始化问题2. 匿名内部类解决方案3. 创建接口实现类方案4. 问题深入5. 定义父类解决问题1方案6. 控制反转解决问题2方案 三、依赖注入&…

Swift:“逻辑运算子“与“比较运算符“

1. 逻辑非 ! 逻辑非运算符 ! 是用于对布尔值取反的。当操作数为 true 时&#xff0c;! 将返回 false&#xff0c;而当操作数为 false 时&#xff0c;! 将返回 true。 let isTrue true let isFalse !isTrue // isFalse 现在是 false 2. 逻辑与 && 逻辑与运算符 &a…

CPU 密集型 和 IO密集型 的区别,如何确定线程池大小?

CPU密集型任务 是指需要大量的CPU资源进行计算的任务 CPU密集型任务通常涉及到复杂的计算&#xff0c;如算法逻辑、数学计算等&#xff0c;其特点是CPU使用率高&#xff0c;多在这种类型的任务中&#xff0c;线程数量一般与CPU的核心数相匹配就足够了。 一个简单的估算方法是…

线性CCD

线性CCD 综述&#xff1a;本文讲述了线性CCD是什么、由什么组成、工作原理、芯片TSL401的引脚和时序、线性CCD的时序。 1. 定义 线性CCD&#xff0c;只能采集一行像素&#xff0c;分辨率为128&#xff0c;也即是线性CCD≈128个光电传感器。经过光照时&#xff0c;光电二极管…

微信小程序开发【从入门到精通】——页面事件

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

三个表的联合查询的场景分析-场景4:c表维护a和b表的id关联关系(一对多)

基础SQL演练&#xff0c;带详细分析&#xff0c;笔记和备忘。 目录 背景介绍 表数据 需求1&#xff1a;查询g表所有记录&#xff0c;以及关联的h的id 需求2&#xff1a;在需求1基础上&#xff0c;查出关联的h的其它字段&#xff08;name&#xff09; 需求3&#xff1a;在需…