51单片机-定时计数器

文章目录

  • 前言
  • 1 原理
  • 2.编程

前言

在这里插入图片描述


1 原理

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

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

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

在这里插入图片描述

在这里插入图片描述

2.编程

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

在这里插入图片描述

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

在这里插入图片描述

定时计算:
50ms=501000us
一个机器周期:1.085us
65535 - 50
1000/1.085=46082

40082*1.085=49998.97
在这里插入图片描述

/*定时器1,定时模式 工作模式1 16位计数器,
定时20秒后使能蜂鸣器*/
#include <reg52.h> //51头文件
#define uchar unsigned char//宏定义
#define uint  unsigned int//宏定义
sbit we = P2^7;//位定义数码管位选锁存器接口
sbit du = P2^6;//位定义数码管段选锁存器接口
sbit beep = P2^3;//蜂鸣器接口

//数码管段选表
uchar code leddata[]={ 
 
                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                0x77,  //"A"
                0x7C,  //"B"
                0x39,  //"C"
                0x5E,  //"D"
                0x79,  //"E"
                0x71,  //"F"
                0x76,  //"H"
                0x38,  //"L"
                0x37,  //"n"
                0x3E,  //"u"
                0x73,  //"P"
                0x5C,  //"o"
                0x40,  //"-"
                0x00,  //熄灭
                0x00  //自定义
 
                         };

//毫秒级延时函数
void delay(uint z)
{
	uint x,y;
	for(x = z; x > 0; x--)
		for(y = 114; y > 0 ; y--);
}

//两位数码管动态显示函数
void display(uchar i)
{
	uchar shi, ge;
	shi = i / 10;//求模  i除以10取商的整数部分
	ge  = i % 10;//求余  i除以10取余数部分

	P0 = 0xff; //清除断码
	we = 1;//打开位选
	P0 = 0xfe;//1111 1110 只选通第一位数码管
	we = 0;	//关闭位选

	du = 1;	//打开段选
	P0 = leddata[shi];
	du = 0;	//关闭段选
	delay(5);//延时5毫秒
	
	P0 = 0xff;//清除断码
	we = 1;	//打开位选
	P0 = 0xfd;//1111 1101  只选通第二位数码管
	we = 0;	//关闭位选
	
	du = 1;//打开段选
	P0 = leddata[ge]; 
	du = 0;	//关闭段选
	delay(5);//延时5毫秒	
}

void main()
{
		uchar a; //50次数计数
		uchar b;//秒计数
		TR1 = 1;//启动T1
		TMOD = 0x10;//T1为定时器,工作模式1 16位计数器
		TH1 = 0x4b;
		TL1 = 0xfc;//0x4bfc	定时50ms				
		while(1)
		{
			if(TF1 == 1)//判断T1是否溢出
			{
				TH1 = 0x4b;
				TL1 = 0xfc;//0x4bfc	定时50ms
				TF1 = 0;//清零便于下次判断
				a++;//50毫秒计数加1	
			}
			if(a == 20)//判断是否到1秒
			{
				a = 0;//清零便于下次记录50ms的次数
				b++;//秒加1
			}

			display(b);//显示秒的值

			if(b == 20)//检查是否到20秒
			{
				TR1 = 0;//时间到关闭定时器1
				beep = 0; //使能蜂鸣器
				delay(4000);//使能时间4秒
				beep = 1;//关闭蜂鸣器
				while(1); //停止程序
			}

			
		}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux CentOS 8(HTTPS的配置与管理)

Linux CentOS 8&#xff08;HTTPS的配置与管理&#xff09; 目录 一、HTTPS 介绍二、SSL 证书的介绍三、实验配置 一、HTTPS 介绍 HTTPS 在 HTTP 的基础下加入 SSL&#xff0c;SSL 是“Secure Sockets Layer”的缩写&#xff0c;中文为“安全套接层”。因此 HTTPS 是以安全为目…

RabbitMQ 消息中间件 消息队列

RabbitMQ1、RabbitMQ简介2、RabbitMQ 特点3、什么是消息队列4、RabbiMQ模式5、集群中的基本概念 单实例安装RabbitMQ安装依赖安装erlang安装rabbitmq开启rabbitmq的web访问界面添加用户修改配置文件重启服务浏览器访问Rabbit-test rabbitMQ集群准备工作&#xff08;三台&#x…

rabbitmq下载安装教程

1.首先需要下载erlang和rabbitmq安装包&#xff1a; 官网下载比较慢&#xff0c;通过网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1fM2BrJqefyzUDZD4tfZLIg 提取码&#xff1a;5hsu 2.安装&#xff0c;傻瓜式安装就可以&#xff0c;可以自定义自己要安装的目…

SQL左连接实战案例

要求&#xff1a;用表df1和表df2的数据&#xff0c;得到df3 一、创建表 CREATE TABLE df1 (姓名 varchar(255) DEFAULT NULL,年龄 int DEFAULT NULL,部门 varchar(255) DEFAULT NULL,id int DEFAULT NULL );CREATE TABLE df2 (部门 varchar(255) DEFAULT NULL,年龄 int DEFAU…

探索环保葡萄酒之生物动力

根据生物动力农业和园艺协会的说法&#xff0c;生物动力农业是“一种精神-伦理-生态的农业、园艺、食品生产和营养方法。”生物动力农民将他们的农场或葡萄园视为一个坚固的有机体&#xff0c;一个自我维持的生态系统。这些农业哲学和实践在整个农业周期中应用了一种整体方法。…

【达梦数据库】学习笔记

【达梦数据库】学习笔记 【一】如何使用idea连接达梦数据库【二】idea项目导入本地的达梦数据库驱动jar包&#xff08;方法一&#xff09;【三】idea项目把本地的达梦数据库驱动jar包安装到本地仓库&#xff08;方法二&#xff09; 【一】如何使用idea连接达梦数据库 &#xf…

电脑出现“此驱动器存在问题请立即扫描”该怎么办?

在您将可移动设备&#xff08;例如&#xff1a;U盘、移动硬盘&#xff09;连接到计算机时&#xff0c;您可能会收到一条错误消息“此驱动器存在问题请立即扫描并修复问题”。收到此错误消息后&#xff0c;您的设备在大多数情况下将无法访问。那么&#xff0c;电脑出现“此驱动器…

聊一聊 tcp/ip 在.NET故障分析的重要性

一&#xff1a;背景 1. 讲故事 这段时间分析了几个和网络故障有关的.NET程序之后&#xff0c;真的越来越体会到计算机基础课的重要&#xff0c;比如 计算机网络 课&#xff0c;如果没有对 tcpip协议 的深刻理解&#xff0c;解决这些问题真的很难&#xff0c;因为你只能在高层…

【案例分享】IPSec VPN与NQA联动实现主备对等体和主备链路快速切换

【赠送】IT技术视频教程&#xff0c;白拿不谢&#xff01;思科、华为、红帽、数据库、云计算等等_厦门微思网络的博客-CSDN博客文章浏览阅读410次。风和日丽&#xff0c;小微给你送福利~如果你是小微的老粉&#xff0c;这里有一份粉丝福利待领取...如果你是新粉关注到了小微&am…

终身成就奖!中国出了个世界级管理思想家

北京时间11月7日,Thinkers50在英国伦敦颁出其最高奖项——终身成就奖,海尔集团创始人、董事局名誉主席张瑞敏成为唯一获奖者。 Thinkers50即“全球最具影响力的50大管理思想家”,是全球首个管理思想家排行榜,被誉为“商业思想界的奥斯卡”。作为权威的国际性评选,Thinkers50自2…

centos中安装的goland配置sdk报错:所选的目录不是Go SDK的有效主路经

选中目录后一直报错&#xff1a; 正确的位置&#xff1a; 原因竟然是使用 解压go1.21.4.linux-amd64.tar.gz 包出来&#xff0c;少了scr和test目录&#xff0c;重新解压后可以正确设定SDK主目录。 有同样问题的可以确认一下。 tar -C /usr/local -zxvf go1.19.2.linux-amd64.…

CentOS7 安装Jenkins 2.414.3 详细教程

目录 1、前提条件硬件软件-java11安装 2、安装jenkins3、启动jenkins配置用户和用户组配置JAVA_HOME 4、配置Jenkins一直处于启动状态5、测试Jenkins是否可以访问以及配置6、访问Jenkins系统 1、前提条件 硬件 内存 4G ; 硬盘 20G 软件-java11安装 上传文件jdk-11.0.21_lin…

Visual Studio 2017附加依赖项

在读韩国人尹圣雨的《TCP/IP网络编程》,在书中教我如何在Visual Studio 2008中设置附加依赖项&#xff0c;但是我使用的是Visual Studio 2017&#xff0c;所以我写下这篇文章学习如何在Visual Studio 2017附加依赖项。 在项目这里选择属性。 选择输入这一项&#xff0c;然后点…

RabbitMQ集群

RabbitMQ概述 1.RabbiMQ简介 RabbiMQ是⽤Erang开发的&#xff0c;集群⾮常⽅便&#xff0c;因为Erlang天⽣就是⼀⻔分布式语⾔&#xff0c;但其本身并不⽀持负载均衡。支持高并发&#xff0c;支持可扩展。支持AJAX&#xff0c;持久化&#xff0c;用于在分布式系统中存储转发消…

json数据格式的理解(前+后)

什么是JSON&#xff1a; JSON&#xff08;JavaScript Object Notation&#xff09;是一种广泛使用的数据交换格式&#xff0c;它在前端和后端开发中都扮演着重要的角色。 JSON 的结构&#xff1a; JSON 数据由大括号 {} 包围&#xff0c;表示对象。 对象中的数据以键值对形式…

家庭教育质量提升成未来教育关注重点

随着教育改革的不断深化&#xff0c;家校合作模式也在实践中不断探索和丰富。 11 月 6 日&#xff0c;第六届长三角家校合作论坛于上海杨浦盛大开幕&#xff0c;此次论坛围绕“家校协同与人的学校领导”这一主题展开深度研讨。论坛旨在交流和分享相关经验及做法&#xff0c;以…

Python用requests库采集充电桩LBS位置经纬度信息

这是一个使用Python的requests库来爬取网页内容的示例。首先&#xff0c;我们需要导入requests库。然后&#xff0c;我们需要定义一个函数来处理请求。在这个函数中&#xff0c;我们需要设置爬虫IP服务器的URL和端口号&#xff0c;然后使用requests.get来获取网页内容。最后&am…

MySQL库的库操作指南

1.创建数据库 一般格式&#xff1a;create database (if not exists) database1_name,database2_name...... 特殊形式&#xff1a; create database charset harset_name collate collate_name 解释&#xff1a; 红色字是用户自己设置的名称charset&#xff1a;指定数据…

uniapp刻度尺的实现(swiper)滑动打分器

实现图&#xff08;百分制&#xff09;&#xff1a;滑动swiper进行打分&#xff0c;分数加减 <view class"scoring"><view class"toggle"><view class"score"><text>{{0}}</text><view class"scoreId&quo…

xshell隧道设置

现在有远程外网地址 120.120.120.120和另一台内网地址192.168.1.110两台cvm 但是192.168.1.110 无法直接通过外网地址访问, 需要通过120.120.120.120建立隧道来连接 需要访问192.168.1.110 机器的3306端口, 可以这么做 将192.168.1.110 的3306映射到本地13306端口 1.连接外网…