51单片机实验03-定时器T0来实现流水灯从左到右再从右到左

目录

 一、实验目的

二、实验说明

1、51单片机有两个16位内部计数器/定时器(C/T, Counter/Timer)。

2、模式寄存器TMOD

1) M1M0工作模式控制位;

2) C/T定时器或计数器选择位:

3)GATE定时器/计数器运行门控位:

3、控制寄存器TCON

4、定时器T0的应用

5、定时器T0工作于模式1时初值的计算示例

三、电路原理图

四,实现效果及代码

1,效果

2,代码


 

 一、实验目的


1.学习51单片机内部定时/计数器的使用和编程方法;
2.掌握单片机控制数码管进行数字和字母显示的方法。

二、实验说明


1、51单片机有两个16位内部计数器/定时器(C/T, Counter/Timer)。

若是对内部晶振驱动时钟进行计数,则是定时器;若是对8051的输入引脚的脉冲信号进行计数,则它是计数器。定时器实际上也是工作在计数方式下,只不过是对固定频率的脉冲计数。由于脉冲周期固定,则由计数值可以计算出相应时间,即定时功能。
定时器有关的寄存器有模式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作模式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。


2、模式寄存器TMOD

1) M1M0工作模式控制位;


2) C/T定时器或计数器选择位:


       C/T=1时,为计数器;  C/T =0时,为定时器。


3)GATE定时器/计数器运行门控位:


  当GATE=1时, C/T的启动受双重控制,即要求INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的C/T才被选通工作。
若GATE=0, C/T的启动仅受TR0 (或 TR1)控制,即置1, C/T就被选通, 而不管 INT0 (或 INT1)的电平是高还是低。 


3、控制寄存器TCON

TF0、TF1分别是定时器/计数器T0、 T1 的溢出中断标志位, 加法计数器溢出时置1, 申请中断, 在中断响应后自动复0。TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。TR1、TR0 分别是定时器/计数器T1、T0的运行控制位,通过软件置1 后, 定时器/计数器才开始工作,在系统复位时被清0。


4、定时器T0的应用


在使用51系列单片机的C/T前,应对它进行编程初始化,主要是对TCON和TMOD编程,还需要计算和装载C/T的计数初值。
一般地,定时器T0的使用需完成以下4个步骤:


第一步:设置特殊功能寄存器TMOD,配置好工作模式;
第二步:设置计数寄存器TH0和TL0的初值;
第三步:设置TCON,通过TR0置1来让定时器开始计数;
第四步:判断TCON寄存器的TF0位,监测定时器溢出情况。


5、定时器T0工作于模式1时初值的计算示例


写程序之前,要先学会计算如何用定时器定时时间。假如定时20ms:
对于标准架构下的51单片机,晶振是11.0592M时,则时钟周期就是(1/11059200)s,机器周期是(12/11059200)s。
现需要定时20ms,也就是0.02 秒。假设要经过x个机器周期得到0.02 秒,下面来具体计算一下:
 x*12/11059200=0.02,得到 x= 18432。16 位定时器的溢出值是65536(因65535 再加1才是溢出),于是我们就可以这样操作,先给TH0 和TL0一个初始值,让它们经过18432个机器周期后刚好达到65536,也就是溢出,溢出后可以通过检测TF0的值得知,就刚好是0.02秒。
那么初值y = 65536-18432=47104,转成十六进制就是0xB800,也就是 TH0 = 0xB8,TL0 = 0x00。

三、电路原理图

四,实现效果及代码

1,效果

定时器t0控制流水灯

2,代码

#include<reg52.h>
sbit enled=P1^4;  
sbit addr3=P1^3;
sbit addr2=P1^2;
sbit addr1=P1^1;
sbit addr0=P1^0;
void  main(){
     unsigned char ind=0;
     unsigned char cou_f=0;
	 unsigned char cou_m=0;
     	enled=0;
		addr3=1;
		addr2=1;
		addr1=1;
		addr0=0;
		TMOD=0x01;   // 使用定时器0的模式1
		TH0=0xB8;
		TL0=0x00;    // 设置初值
		TR0=1;      // 让定时器开始运行
		while(1){ 
		if(TF0==1){
		TF0=0;
		TH0=0xB8;
		TL0=0x00;
		cou_f++;
		if(cou_f==50){   // 1s
		cou_f=0;
	    if(cou_m<8){ 
		P0=~(0x80>>cou_m);  //到了1s之后,让小灯开始移动
		}
		else if(cou_m>=8  && cou_m<14 ){
		P0=~(0x01<<(cou_m-7));
		} 
		cou_m++;
		if(cou_m==14){
		cou_m=0;
		}
		}
		}
		}
		}

关于138译码器及使用软件延时小灯的相关代码注释请参考前一篇文章👇

51单片机实验01-点亮LED小灯-CSDN博客

有问题请在评论区留言或者是私信我,一天8h在线。

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

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

相关文章

高可用集群-keepalived

一、高可用集群的基本理论 1.基本概念 ①&#xff1a;单点故障&#xff08;Single Point of Failure&#xff09; 硬件故障&#xff1a;设计缺陷、wear out&#xff08;损耗&#xff09;、自然灾害…… 软件故障&#xff1a;设计缺陷 bug ②&#xff1a;健康状态监测 监测手段…

使用 RisingWave、NATS JetStream 和 Superset 进行实时物联网监控

在物联网&#xff08;IoT&#xff09;背景下&#xff0c;处理实时数据会遇到一些特定的障碍&#xff0c;如边缘计算资源不足、网络条件限制、扩展性存在问题、设备间有多样性差异。要克服这些挑战&#xff0c;需要高效的边缘计算技术、强大的安全措施、标准化协议、可扩展的管理…

Pytorch数据结构:GPU加速

文章目录 一、GPU加速1. 检查GPU可用性&#xff1a;2. GPU不可用需要具体查看问题3. 指定设备4.将张量和模型转移到GPU5.执行计算&#xff1a;6.将结果转移回CPU 二、转移原理1. 数据和模型的存储2. 数据传输3. 计算执行4. 设备管理5.小结 三、to方法的参数类型 一、GPU加速 .…

html写一个登录注册页面

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册登录界面Ⅰ</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.mi…

GA-SVM,基于GA遗传算法优化SVM支持向量机回归预测(多输入单输出)

基于遗传算法&#xff08;Genetic Algorithm, GA&#xff09;优化支持向量机&#xff08;Support Vector Machine, SVM&#xff09;用于回归预测是一个常见的任务。在这个任务中&#xff0c;我们使用GA来寻找SVM的最佳超参数配置&#xff0c;以最大化回归性能指标&#xff0c;例…

力控机器人原理及力控制实现

力控机器人原理及力控制实现 力控机器人是一种能够感知力量并具有实时控制能力的机器人系统。它们可以在与人类进行精准协作和合作时&#xff0c;将力传感技术&#xff08;Force Sensing Technology&#xff09;和控制算法&#xff08;Control Algorithm&#xff09;结合起来&a…

C++STL--排序算法

sort 使用快速排序,平均性能好O(nlogn),但最差情况可能很差O(n^2)。不稳定。 sort(v.begin(),v.end());//对v容器进行排序,默认升序 sort(v.begin(),v.end(),greater<int>());//降序排序对于支持随机访问的迭代器的容器&#xff0c; 都可以利用sort算法直接对其进行排序…

克罗地亚公司注册

克罗地亚是一个发达的资本主义国家&#xff0c;经济基础良好&#xff0c;旅游建筑造船和制药等产业发展水平较高&#xff0c;优质的基础设施&#xff0c;低成本的多语种和高技能劳动力&#xff0c;有力的地理环境&#xff0c;使旅游业发展充满活力&#xff0c;克罗地亚政府承诺…

vue+elementUI实现表格组件的封装

效果图&#xff1a; 在父组件使用表格组件 <table-listref"table":stripe"true":loading"loading":set-table-h"slotProps.setMainCardBodyH":table-data"tableData":columns"columns.tableList || []":ra…

重磅!天途推出平安校园管理平台

天途平安校园管理平台&#xff0c;是围绕校园安全事件开发的一款智能监控与巡逻系统。系统通过大疆机场、无人机和校园内的监控硬件等多端传输的视频和图片信息&#xff0c;经过 AI分析处理后形成告警信息并及时通知学校安保人员。 天途平安校园管理平台 平安校园管理平台优势 …

【深度学习】从基础原理到未来挑战的全面探索

深度学习的基本原理 深度学习&#xff0c;一种模拟人脑分析和处理数据的机器学习技术&#xff0c;已成为人工智能研究中最令人兴奋的进展之一。其核心在于构建和训练神经网络&#xff0c;这些网络由多个层次组成&#xff0c;每一层都能从输入数据中提取并转换特征。随着数据层层…

[Java线程池]ExecutorService|CompletionService的区别与选择

这段时间对业务系统做了个性能测试&#xff0c;其中使用了较多线程池的技术&#xff0c;故此做一个技术总结。 这次总结的内容比较多&#xff0c;主要是四个&#xff1a; ExecutorServiceCompletionServiceRunnableCallable 前两个是线程池相关接口&#xff0c;后两个是多线…

《手把手教你》系列基础篇(七十四)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 上篇(详解教程)

1.简介 上一篇文章中宏哥简单的讲解了一下通过xml文件传递参数&#xff0c;这一篇宏哥讲解通过通过DataProvider传递参数&#xff0c;也就是我们常说的数据驱动测试。如何利用TestNG实现DDT&#xff08;数据驱动测试 Data Driver Test&#xff09;&#xff0c;什么是数据驱动测…

椋鸟数据结构笔记#8:二叉树的遍历、创建与销毁

萌新的学习笔记&#xff0c;写错了恳请斧正。 链式二叉树 这篇笔记我们讨论基于链式二叉树&#xff0c;其节点的数据结构如下&#xff1a; typedef int BTDatatype;typedef struct BTNode {BTDataType data;struct BTNode* left;struct BTNode* right; } BTNode;二叉树的遍历…

STM32CubeMX配置步骤详解六 —— 时钟及其它内部参数配置(1)

接前一篇文章&#xff1a;STM32CubeMX配置步骤详解五 —— 基础配置&#xff08;2&#xff09; 本文内容主要参考&#xff1a; STM32CUBEMX配置教程&#xff08;一&#xff09;基础配置-CSDN博客 野火STM32系列HAL库开发教程 —— 第12讲 STM32的复位和时钟控制&#xff08;第…

环形链表 - LeetCode 热题 25

大家好&#xff01;我是曾续缘&#x1f970; 今天是《LeetCode 热题 100》系列 发车第 25 天 链表第 4 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可…

2-3 AUTOSAR ASW Runable可运行实体

返回总目录->返回总目录<- 目录 一、概述 二、RTE Event 一、概述 运行实体(Runnable Entity,RE)是一段可执行的代码,其包含实际实现的函数(具体的逻辑算法或者操作)。一个软件组件可以包含一个或者多个运行实体。 Runnable就是SWC中的函数,而在AutoSAR架构在被…

【云计算】云数据中心网络(一):VPC

云数据中心网络&#xff08;一&#xff09;&#xff1a;VPC 1.什么是 VPC2.VPC 的组成2.1 虚拟交换机2.2 虚拟路由器 3.VPC 网络规划3.1 VPC 数量规划3.2 交换机数量规划3.3 地址空间规划3.4 不同规模企业地址空间规划实践 4.VPC 网络高可靠设计4.1 单地域单可用区部署4.2 单地…

[StartingPoint][Tier1]Funnel

Task 1 How many TCP ports are open? (打开了多少个 TCP 端口&#xff1f;) # nmap -sS -T4 10.129.224.226 --min-rate 1000 2 Task 2 What is the name of the directory that is available on the FTP server? (FTP 服务器上可用的目录名称是什么&#xff1f;) $ n…