单片机计数功能

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

文章目录

  • 前言
  • 一、计数器是什么?
    • 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)%256num++;}

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)/256TH0=(65536-1000)%256ET1=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)%256num++;}

四、程序测试

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)/256TH0=(65536-1000)%256ET1=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)%256num++;}

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

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

P3.3 ->P3.5

P3.3 设置为输入,

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

先设置为输入,才能读取

总结

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

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

相关文章

美颜SDK技术对比,深入了解视频美颜SDK的工作机制

如何在实时视频中呈现更加自然、美丽的画面&#xff0c;而这正是美颜SDK技术发挥作用的领域之一。本文将对几种主流视频美颜SDK进行深入比较&#xff0c;以揭示它们的工作机制及各自的优劣之处。 随着科技的不断进步&#xff0c;美颜技术已经从简单的图片处理发展到了视频领域…

安卓小练习-校园闲置交易APP(SQLite+SimpleCursorAdapter适配器)

环境&#xff1a; SDK&#xff1a;34 JDK&#xff1a;20.0.2 编写工具&#xff1a;Android Studio 2022.3.1 整体效果&#xff08;视频演示&#xff09;&#xff1a; 小练习-闲置社区APP演示视频-CSDN直播 部分效果截图&#xff1a; 整体工作流程&#xff1a; 1.用户登录&…

【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 分发饼干 class Solutio…

深度学习笔记_7经典网络模型LSTM解决FashionMNIST分类问题

1、 调用模型库&#xff0c;定义参数&#xff0c;做数据预处理 import numpy as np import torch from torchvision.datasets import FashionMNIST import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn.functional as F im…

Python 爬虫之简单的爬虫(三)

爬取动态网页&#xff08;上&#xff09; 文章目录 爬取动态网页&#xff08;上&#xff09;前言一、大致内容二、基本思路三、代码编写1.引入库2.加载网页数据3.获取指定数据 总结 前言 之前的两篇写的是爬取静态网页的内容&#xff0c;比较简单。接下来呢给大家讲一下如何去…

Linux之FTP 服务器

一、FTP服务器匿名账户服务器配置 1、测试是否已安装vsftp服务器&#xff1a; 2、启动vsftp服务器&#xff1a; 3、修改vsftp主配置文件&#xff0c;允许匿名登录 4、重新启动vsftpd服务,禁用防火墙 5、打开FTP服务的数据文件存放目录/var/ftp&#xff0c;复制若干文件到该目…

智慧养老:创新科技让老年生活更美好

智慧养老&#xff1a;创新科技让老年生活更美好 随着人口老龄化的加剧&#xff0c;智慧养老成为了关注焦点。智慧养老以创新科技为核心&#xff0c;旨在改善老年人的生活品质、促进健康、增强安全感和社会融入感。本文将详细介绍智慧养老的关键技术和应用场景&#xff0c;带您了…

回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 (多指标,多图)

回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现SABO-LSTM基于减法平均优化器优化长短期记忆神经网络的多输入单输出数据回归预测模型 &a…

Xxl-job-admin 数据库使用DM8/达梦改造

Xxl-job 简介 XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。 XXL-JOB-ADMIN 是针对分布式定时任务管理的Web管理平台&#xff0c;默认使用的数据库是MySQL 8版本。 业务背景 在项目中使用分布式定时任务调度框架:xxl-…

Linux---Ubuntu软件卸载

1. 软件卸载的介绍 Ubuntu软件卸载有两种方式: 离线安装包的卸载(deb 文件格式卸载&#xff09;在线安装包的卸载(apt-get 方式卸载) 2. deb 文件格式卸载 命令格式: sudo dpkg –r 安装包名 -r 选项表示安装的卸载 dpkg 卸载效果图: 3. apt-get 方式卸载 命令格式: …

mybatis.interceptor.exception.SqLValidateException:Ilegal SQL::......

现象&#xff1a;⬇️ 描述&#xff1a;执行 SQL 没问题&#xff0c;应用代码报错 ⬇️ .mybatis.interceptor.exception.SqLValidateException&#xff1a;Ilegal SQL::SELECT voucherNo FROM voucher ORDER BY CAST(SUBSTRING(voucherNo FROM LOCATE(_, voucherNo) 1) AS U…

门控网络简介

门控网络是一种循环神经网络 (RNN)&#xff0c;它使用门来控制信息在时间步之间的流动。门是一种神经网络层&#xff0c;它可以选择性地允许或阻止信息通过。 门控网络的主要优点是它们可以解决传统 RNN 中存在的梯度消失问题。梯度消失是指随着时间步的增加&#xff0c;梯度会…