单片机计数功能

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

文章目录

  • 前言
  • 一、计数器是什么?
    • 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.mzph.cn/news/231496.shtml

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

相关文章

0基础学习VR全景平台篇第129篇:认识单反相机和鱼眼镜头

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 一、相机 单反和微单 这里说的相机是指可更换镜头的单反/微单数码相机。那两者有何差异呢&#xff1f; 1&#xff09;取景结构差异 两者最直观的区别在于&#xff0c;微单相机…

html中RGB和RGBA颜色表示法

文章目录 RGB什么是RGBRGB颜色模式的取值范围RGB常用颜色对照表 RGBA什么是RGBARGBA颜色模式的取值范围 总结 RGB 什么是RGB RGB是一种颜色空间&#xff0c;其中R代表红色&#xff08;Red&#xff09;、G代表绿色&#xff08;Green&#xff09;、B代表蓝色&#xff08;Blue&a…

100GPTS计划-AI翻译TransLingoPro

地址 https://poe.com/TransLingoPro https://chat.openai.com/g/g-CfT8Otig6-translingo-pro 测试 输入: 我想吃中国菜。 预期翻译: I want to eat Chinese food. 输入: 请告诉我最近的医院在哪里。 预期翻译: Please tell me where the nearest hospital is. 输入: 明天…

分布式理论 | RPC | Spring Boot 整合 Dubbo + ZooKeeper

一、基础 分布式理论 什么是分布式系统&#xff1f; 在《分布式系统原理与范型》一书中有如下定义&#xff1a;“分布式系统是若干独立计算机的集合&#xff0c;这些计算机对于用户来说就像单个相关系统”&#xff1b; 分布式系统是由一组通过网络进行通信、为了完成共同的…

Django 构建动态前端页面详解

概要 Django 是一个强大的 Python Web 框架&#xff0c;广泛用于后端开发。然而&#xff0c;它也支持直接使用 HTML, CSS, 和 JavaScript 来构建动态的前端界面。本文将详细介绍如何在 Django 项目中使用这些技术&#xff0c;包括设置静态文件、编写 HTML 模板以及集成 JavaSc…

教育机构小程序管理系统的全方位优化

随着互联网的快速发展&#xff0c;线上教育也日益受到人们的关注和欢迎。为了满足广大学生和家长的需求&#xff0c;教育机构纷纷开发出自己的小程序管理系统。本文将详细介绍如何使用乔拓云平台&#xff0c;一键开发出自己的教育机构小程序管理系统。 1.进入乔拓云后台 首先&…

Linux性能优化常做的一些事情

Linux性能优化是一个广泛的主题&#xff0c;涉及多个方面。以下是一些常见的Linux性能优化建议&#xff1a; 硬件和系统配置&#xff1a; 使用SSD替代HDD。确保系统有足够的RAM。使用多核CPU。配置合适的网络硬件和带宽。 磁盘I/O性能&#xff1a; 使用RAID来提高I/O性能。使用…

回归烟火气,中国烹饪正在进行一场重构

当前的中国厨电行业&#xff0c;急需一场前所未有的变革。 近几年&#xff0c;厨电行业已告别以往的跨越式增长&#xff0c;多数厨电企业陷入迷茫&#xff0c;如何才能打破增长瓶颈&#xff1f;《一点财经》认为&#xff0c;只有积极适应新形势&#xff0c;探索新的经营方式&a…

【web安全】支付篡改

前言 菜某的总结&#xff0c;如有错误和补充欢迎评论指正。 内容仅供学习使用&#xff0c;切勿用于非法用途。 支付篡改的存在位置与影响 首先他的危害不言而喻&#xff0c;几乎任何一个拿出来都能给企业带来巨大的损失。 他出现的地方也是十分的广泛&#xff0c;从某种意…

复杂背景下的低空无人机检测与跟踪算法

doi&#xff1a;10.11884/HPLPB202335.230026 大视场中的目标丢失后需要再次检测&#xff0c;但是大视场的检测比较耗时。但是根据实验发现丢失目标通常发生在无人机运动区域的320x320范围内&#xff0c;所以设计辅助网络&#xff0c;当目标丢失后&#xff0c;以320x320区域图像…

Transformer Decoder的输入

大部分引用参考了既安的https://www.zhihu.com/question/337886108/answer/893002189这篇文章&#xff0c;个人认为写的很清晰&#xff0c;此外补充了一些自己的笔记。 弄清楚Decoder的输入输出&#xff0c;关键在于图示三个箭头的位置&#xff1a; 以翻译为例&#xff1a; 输…

七轴开源协作机械臂myArm视觉跟踪技术!

引言 ArUco标记是一种基于二维码的标记&#xff0c;可以被用于高效的场景识别和位置跟踪。这些标记的简单性和高效性使其成为机器视觉领域的理想选择&#xff0c;特别是在需要实时和高精度跟踪的场景中。结合机器学习和先进的图像处理技术&#xff0c;使用ArUco标记的机械臂系统…

20231218在Ubuntu18.04下以EXT4格式化HDD

20231218在Ubuntu18.04下以EXT4格式化HDD 2023/12/18 17:24 缘起&#xff1a; 编译一个Android10大概要200GB&#xff0c;编译10个Android10的SDK&#xff0c;3TB的HDD机械硬盘就估计会被填满了&#xff01; 如果使用rm -rf *这个命令将SDK一个一个逐个地删除&#xff0c;估计2…

数据可视化(附带操作实例)

一、主要目的&#xff1a; 数据可视化是关于图形或表格的数据展示&#xff0c;旨在借助图形化手段&#xff0c;清晰有效的传达与沟通信息。通过直观地传达关键内容与特征&#xff0c;从而实现对相当稀疏而又复杂的数据集的深入洞察。熟悉在Python开发环境中支持数据可视化环节…

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…

力扣刷题记录(15)LeetCode:509、70、746

目录 509.斐波那契数 70.爬楼梯 746.使用最小花费爬楼梯 总结 ​​​​​​ 用一个数组来存储前两个数的值&#xff0c;然后根据前两个数的值来确定当前的值。 class Solution { public:int fib(int n) {if(n<2) return n;vector<int> v;v.push_back(0);v.push…

ELK(九)—logstash

目录 简介安装部署测试 配置详解编写配置文件连接elasticsearch将数据推送到elasticsearch中。 简介 Logstash 是一个开源的服务器端数据处理管道&#xff0c;由 Elastic 公司维护和开发。它被设计用于从不同来源收集、处理和转发数据&#xff0c;以供 Elasticsearch 进行存储…

持续集成交付CICD:Jenkins使用GitLab共享库实现前端项目镜像构建

目录 一、实验 1. GitLab修改项目文件与Harbor环境确认 2.Jenkins使用GitLab共享库实现前端项目镜像构建 3.优化CI流水线封装Harbor账户密码 4.Jenkins再次使用GitLab共享库实现前端项目镜像构建 一、实验 1. GitLab修改项目文件与Harbor环境确认 &#xff08;1&#xf…

掌握 Babel:让你的 JavaScript 与时俱进(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

npm简介与使用指南

一、什么是npm? npm&#xff0c;全称为Node Package Manager&#xff0c;是Node.js的包管理器。它允许开发者分享和重用代码&#xff0c;提供了一个巨大的开源库供开发者选择和使用。通过npm&#xff0c;你可以轻松安装、更新和管理Node.js的库和工具。 二、npm的主要功能 …