单片机计数功能

news2024/11/26 4:48:45

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、计数器是什么?
    • 1.1 应用
  • 二、计数器原理框图及对输入信号的要求
    • 2.1 原理框图
    • 2.2对输入信号的要求
  • 三、使用步骤
    • 3.1 配置为计数模式
    • 3.2 装初值
    • 3.3 配置中断
    • 3.4 中断服务函数
    • 3.5 读取计数值
    • 3.6 完整程序框架
  • 四、程序测试
    • 4.1 实物连接
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:
前面学习了单片机的定时功能,定时可以用来做时钟等对时间有精确要求的场合,定时器的前提是能提供精准的时钟源。如果没有时钟源,时钟来源于外部信号,每来一个信号,计数器加1,这就是计数功能,只知道几了多少个脉冲。


提示:以下是本篇文章正文内容,下面案例可供参考

一、计数器是什么?

单片机计数器是一种用于统计脉冲数量的电路模块,可以通过外部信号触发计数器进行累加,并在达到设定值时产生中断或其他事件。在嵌入式系统中,计数器常用于频率计数、编码器测量、信号采集等应用场合。
在电子设计竞赛中,曾经用来做频率计。

1.1 应用

在这里插入图片描述
在这里插入图片描述

二、计数器原理框图及对输入信号的要求

2.1 原理框图

在这里插入图片描述
在这里插入图片描述

2.2对输入信号的要求

计数器模式时,计数脉冲来自外部输入引脚T0或T1。当输入信号产生负跳变时,计数值增1。每个机器周期S5P2期间,都对外部输入引脚T0或T1进行采样。如在第1个机器周期中采得值为1,而在下一个机器周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1期间,计数器加1。由于确认一次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率1/24。
在这里插入图片描述

计算公式:
输入脉冲频率=Fosc /24

三、使用步骤

3.1 配置为计数模式

在这里插入图片描述

在这里插入图片描述
参考程序

TMOD &=0X0F;
TMOD |=0X50;

3.2 装初值

计数器值不一定从0开始,可以从0-65535任一值开始计数,这时候就需要装在初值了
假设想让计数器计1000个就溢出,通用公式计数x个溢出。

那么:

TH1=(65536-1000)/256
TH0=(65536-1000)%256
TH1=(65536-x)/256
TH0=(65536-x)%256

3.3 配置中断

如果不用中断,那么计数范围就是设定的0-x
如果用中断,溢出后让一个变量自加,那么就可以扩大计算范围,计数器值=numx+ TH1256+TL1
假设变量是num ,进中断自加1

如果用:

ET1=1;
EA=1;
PT1=0;

3.4 中断服务函数

void timer1()interrupt 3
{
TH1=(65536-1000)/256  //记得装初值
TH0=(65536-1000)%256

num++;

	
}

3.5 读取计数值

计的数在放在哪里?

TL0
TH1
num
怎么读? 主函数查询

程序框架

 void main()
 {

 		while(1)
 		{
			count=num*x+ TH1*256+TL1;//当前计数器的值
		}
 }


3.6 完整程序框架

...

 void main()
 {
 		// 初始化
 		TMOD &=0X0F;
		TMOD |=0X50;
		TH1=(65536-1000)/256
		TH0=(65536-1000)%256
 		ET1=1;
		EA=1;
		PT1=0;
 		while(1)
 		{
			count=num*x+ TH1*256+TL1;
			//display(conut);  显示当前计数值
			// LCD1602
			//串口发送串口助手,或者自己写的上位机
		}
 }
void timer1()interrupt 3
{
TH1=(65536-1000)/256
TH0=(65536-1000)%256

num++;

	
}

四、程序测试

4.1 实物连接

必须P3.5引脚输入脉冲

方法1: 一个引脚产生八个脉冲


void maichong8()
{
	for(i=0;i<8;i++)
	{
	
		P10=0;
		P10=1;
	}
}

P10->P3.5

测试框架

...

 void main()
 {
 		// 初始化
 		TMOD &=0X0F;
		TMOD |=0X50;
		TH1=(65536-1000)/256
		TH0=(65536-1000)%256
 		ET1=1;
		EA=1;
		PT1=0;
 		while(1)
 		{
			if(key0==0)
			{
				while(key0==0);
				maichong8();
			}
			count=num*x+ TH1*256+TL1;
			//display(conut);  显示当前计数值
			// LCD1602
			//串口发送串口助手,或者自己写的上位机
		}
 }
void timer1()interrupt 3
{
TH1=(65536-1000)/256
TH0=(65536-1000)%256

num++;

	
}

方法2:按键触发,按一次得一个脉冲

在这里插入图片描述
在这里插入图片描述
注意:

P3.3 ->P3.5

P3.3 设置为输入,

sibt P33=P3^3;

main()
{
	P33=1;  //保证 为输入,下管不导通
	while(1)
	{

	}
}

先设置为输入,才能读取

总结

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

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

相关文章

选择排序、快速排序和插入排序

1. 选择排序 xuanze_sort.c #include<stdio.h> #include<stdlib.h>//选择排序void xuanze_sort(int arr[],int sz){//正着for(int i0;i<sz;i){//外层循环从第一个数据开始依次作为基准数据for(int j i1;j<sz;j){//int j i1 因为第一个数据作为了基准数据&…

蓝桥杯嵌入式——KEY

CUBE里将这几个引脚配置成GPIO输入模式&#xff0c;再同时选中&#xff0c;配置成上拉&#xff0c;如下图&#xff1a; 同时配置定时器&#xff0c;定时10ms&#xff0c;每10ms扫描一次按键&#xff0c;计算公式&#xff1a;80 000 000 / 80 / 10000 100HZ 10ms&#xff0c;配…

Amazon SageMaker机器学习之旅的助推器

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 一、前言 在当今的数字化时代&#xff0c;人工智能和机器学习已经…

Spring Boot自动装配原理以及实践

了解自动装配两个核心 Import注解的作用 Import说Spring框架经常会看到的注解&#xff0c;它有以下几个作用: 导入Configuration类下所有的bean方法中创建的bean。导入import指定的bean&#xff0c;例如Import(AService.class)&#xff0c;就会生成AService的bean&#xff0…

Gitlab仓库推送到Gitee仓库的一种思路

文章目录 Gitlab仓库推送到Gitee仓库的一种思路1、创建Gitee的ssh公钥&#xff08;默认已有Gitlab的ssh公钥&#xff09;2、添加Gitlab远程仓库地址3、添加Gitee远程仓库地址4、拉取Gitlab远程仓库指定分支到本地仓库指定分支&#xff08;以test分支为例&#xff09;5、推送本地…

C++11特性:可调用对象以及包装器function的使用

在C中存在“可调用对象”这么一个概念。准确来说&#xff0c;可调用对象有如下几种定义&#xff1a; 是一个函数指针&#xff1a; int print(int a, double b) {cout << a << b << endl;return 0; } // 定义函数指针 int (*func)(int, double) &print…

【MAC】M2 安装mysql

一、docker下载地址 下载地址 二、安装docker完成 三、安装mysql 一、拉取镜像 # 拉取镜像 docker pull mysql# 或者 docker pull mysql:latest# 以上两个命令是一致的&#xff0c;默认拉取的就是 latest 版本的# 我们还可以用下面的命令来查看可用版本&#xff1a; docker…

[德人合科技]——设计公司 \ 设计院图纸文件数据 | 资料透明加密防泄密软件

国内众多设计院都在推进信息化建设&#xff0c;特别是在异地办公、应用软件资产规模、三维设计技术推广应用以及协同办公等领域&#xff0c;这些加快了业务的发展&#xff0c;也带来了更多信息安全挑战&#xff0c;尤其是对于以知识成果为重要效益来源的设计院所&#xff0c;防…

Docker单点部署[8.11.3] Elasticsearch + Kibana + ik分词器

文章目录 一、Elasticsearch二、Kibana三、访问四、其他五、ik分词器第一种&#xff1a;在线安装第二种&#xff1a;离线安装 Elasticsearch 和 Kibana 版本一般需要保持一致才能一起使用&#xff0c;但是从 8.x.x开始&#xff0c;安全验证不断加强&#xff0c;甚至8.x.x之间…

【每日一题】—— C. Largest Subsequence(Codeforces Round 915 (Div. 2))(规律、字符串处理)

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;每日一题 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日反刍 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0c;缓称…

制作一个多行时正确宽度的Textview,Android Textview 换行时宽度过长 右侧空白区域挤掉页面元素的解决方案

优化 Android 布局&#xff1a;创建自适应宽度的 TextView 引言 在Android应用开发中&#xff0c;布局优化是提升应用性能和用户体验的关键环节之一。特别是对于那些内容密集型的应用&#xff0c;如何高效地展示和管理文本内容成为了一个挑战。最近&#xff0c;在处理一个布局…

市场全局复盘 20231218

昨日回顾: SELECT CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封板, 120) AS 最后封板,涨停分析,_3日涨幅百分比,连板天,封单额,封单额排名,DDE散户数量,总金额,获利盘 FROM dbo.全部A股20231218_ALL WHERE 连板天…

社交网络分析4(下):社交网络链路预测分析、LightGBM框架、LLSLP方法(LightGBM 堆叠链路预测)、堆叠泛化 、社交网络链路预测分析的挑战

社交网络分析4 写在最前面LightGBMLightGBM简介GBDT的核心概念和应用LightGBM的特点LightGBM与GBDT的比较 LightGBM的原理与技术GBDT的传统算法LightGBM的创新算法 GOSS&#xff08;Gradient-based One-Side Sampling&#xff09;算法解析概念和工作原理算法的逻辑基础GOSS算法…

PIC单片机项目(4)——基于PIC16F877A的温度光照检测装置

1.功能设计 基于PIC16F877A单片机&#xff0c;使用DS18B20进行温度测量&#xff0c;使用光敏电阻进行光照测量&#xff0c;将测量值实时显示在LCD1602屏幕上&#xff0c;同时可以设定光照阈值和温度阈值。当温度大于阈值&#xff0c;则蜂鸣器报警&#xff0c;当光照小于阈值&am…

EnvoyFilter API

目录 原文链接 https://onedayxyy.cn/docs/EnvoyFilter-API 本节实战 实战名称&#x1f6a9; 实战&#xff1a;EnvoyFilter API-全局范围-2023.12.18(测试成功)&#x1f6a9; 实战&#xff1a;EnvoyFilter API-配置优先级-2023.12.18(测试成功)&#x1f6a9; 实战&#xff1a…

开发企业展示小程序的关键步骤和技巧

随着移动互联网的快速发展&#xff0c;小程序已经成为企业展示形象、推广产品和服务的重要工具。拥有一个优秀的小程序可以帮助企业提高品牌知名度&#xff0c;吸引更多潜在客户&#xff0c;提升用户体验。以下是拥有一个展示小程序的步骤&#xff1a; 确定需求和目标 首先&am…

实时时钟(RTC)的选择与设计:内置晶体与外置晶体的优缺点对比

实时时钟(RTC)作为一种具备独立计时和事件记录功能的设备&#xff0c;现已广泛应用于许多电子产品中&#xff0c;并对时钟的精度要求越来越高。根据封装尺寸、接口方式、附加功能、时钟精度和待机功耗等因素进行分类&#xff0c;市场上有各种种类的RTC产品可供选择。 而在设计…

计网01 计算机网络基础

一、计算机网络基本概念 1、什么是计算机网络 网络&#xff1a;由两台或多台计算机通过网络设备串联&#xff08;网络设备通过传输介质串联&#xff09;而形成的网络网络设备&#xff1a;计算机、路由交换、防火墙、上网行为管理等传输介质&#xff1a;双绞线&#xff08;网线…

Unity中URP下的顶点偏移

文章目录 前言一、实现思路二、实现URP下的顶点偏移1、在顶点着色器中使用正弦函数&#xff0c;实现左右摇摆的效果2、在正弦函数的传入参数中&#xff0c;加入一个扰度值&#xff0c;实现不规则的顶点偏移3、修改正弦函数的振幅 A&#xff0c;让我们的偏移程度合适4、修改正弦…

使用特殊打字机键入单词的最少时间(贪心算法)

有一个特殊打字机&#xff0c;它由一个圆盘 和一个 指针组成&#xff0c; 圆盘上标有小写英文字母 a 到 z。只有 当指针指向某个字母时&#xff0c;它才能被键入。指针初始时指向字符 a 。 每一秒钟&#xff0c;你可以执行以下操作之一&#xff1a; 将指针顺时针或者逆时针移…