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,思路

1)对应电子书的内容

 2)TR0=1

2,效果

3,代码


 一、实验目的


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,思路

1)对应电子书的内容

 2)TR0=1

因为这里我使用的是定时器0-TR0,因此就需要TR0=1;来让定时器0开始定时。 

之后剩下的定时器模式,初始值,可参考电子书👇,如果还不懂,评论区或者是私信我。

 

2,效果

定时器t0控制流水灯

3,代码

#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的模式1TH0=0xB8;TL0=0x00;    // 设置初值TR0=1;      // 让定时器开始运行while(1){ if(TF0==1){TF0=0;TH0=0xB8;TL0=0x00;cou_f++;if(cou_f==50){   // 1scou_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在线。

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

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

相关文章

day20-二分法计算 X 的算术平方根

问题描述&#xff1a; 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 示例 1&#xff1a; 输入&#xff1a;x 4 输出&#xff1a;2示例 2&#xff1a; 输入&#…

v-on配置methods

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>v-on配置methods</title> </head>…

外刊杂志经济学人获取方式

经济学人2017~2019 项目地址&#xff1a;https://github.com/nailperry-zd/The-Economist 下载地址&#xff1a;https://github.com/nailperry-zd/The-Economist/archive/refs/heads/master.zip 或使用git同步项目 git clone https://github.com/nailperry-zd/The-Economis…

超声波清洗机哪家强?超声波清洗机排行榜!最强超声波清洗机推荐

眼镜作为日常生活中不可或缺的用品&#xff0c;对于很多人来说是必备的。然而&#xff0c;随着使用时间的增长&#xff0c;眼镜表面往往会沾染灰尘、污垢等&#xff0c;这不仅影响了镜片的透光性&#xff0c;也可能影响到使用者的视力和舒适度。因此&#xff0c;清洁眼镜成了一…

2_6.Linux高级存储管理

##1.逻辑卷## pv ##物理卷 被处理过的物理分区 pe ##物理扩展 设定存储最小单元 vg ##物理卷组 捆绑pv到一个组中 lv ##逻辑卷 分配最终的使用设备 监控建立过程&#xff1a; watch -n 1 "pvs;echo ;vgs;echo ;lvs;echo ;df -h /weixindata" &#xff08;1&#xf…

wheeltec轮趣ROS教育机器人的网络连接

一、术语解析 宿主机&#xff1a;宿主机是指物理主机&#xff0c;比如用于开发测试的笔记本电脑和台式机电脑。 虚拟机&#xff1a;虚拟机是指安装在宿主机的VMware&#xff0c;推荐在宿主机上安装虚拟机&#xff0c;官方提供虚拟机的镜像以及配套的开发环境。 ROS主机&…

DC/DC1A30V高效同步降压转换器H4010

DC/DC 1A30V高效同步降压转换器是一种高频、同步、整流、降压、开关模式转换器&#xff0c;内置功率MOSFET。它可以在宽输入电源范围内实现1.5A峰值输出电流&#xff0c;并具有出色的负载和线路调节性能。此外&#xff0c;该转换器需要最少数量的现成外部元件&#xff0c;并采用…

RabbitMQ3.13.x之八_RabbitMQ中数据文件和目录位置

RabbitMQ3.13.x之_RabbitMQ中数据文件和目录位置 文章目录 RabbitMQ3.13.x之_RabbitMQ中数据文件和目录位置1. 概述2. 覆盖位置1. 路径和目录名称限制2.所需的文件和目录权限 3. 环境变量4. Linux、macOS、BSD上的默认位置5. Windows上的默认位置6. 通用二进制构建默认值 1. 概…

微信聊天记录恢复只需简单3招,快速找回聊天内容!

各种社交软件早已深深融入我们的日常生活&#xff0c;无论是与亲朋好友的闲聊&#xff0c;还是与同事伙伴的工作沟通&#xff0c;都离不开它们的陪伴。然而&#xff0c;有时由于误操作、系统更新或手机故障等原因&#xff0c;我们可能会不小心删除了重要的聊天记录&#xff0c;…

PCI总线学习笔记:读写篇

前言 最近在写E1000网卡的驱动&#xff0c;这其中涉及到了PCI总线的相关内容。但是网上大部分关于PCI的文章都只局限在概念上的描述&#xff0c;并没有给出具体的例子来解释。这其实也是情理之中的&#xff0c;因为PCI总线规范就像是一个抽象的接口&#xff0c;其具体怎么实现…

C语言如何声明外部变量?

一、问题 由于C语⾔允许将⼀个较⼤的程序分成若⼲独⽴模块⽂件分别编译&#xff0c;如果⼀个源⽂件中的函数想引⽤其他源⽂件中的变量&#xff0c;那么就要想到如何声明外部变量。 二、解答 外部变量可以⽤ extern 来声明。这就是说&#xff0c;extern 变量可以扩展外部变量的…

C语言之自定义类型联合和枚举

目录 前言 一&#xff1a;联合体&#xff08;共用体&#xff09;union 1.联合体类型的声明 2.联合体的特点 3.联合体大小的计算 4.联合体判断机器的大小端 二&#xff1a;枚举enum 1.概念 2.枚举的优点 3.枚举的使用 接下来的日子会顺顺利利&#xff0c;万事胜意…

Android Binder——Java服务注册(九)

对于 Java 端使用 Binder 服务,主要就是注册服务和获取服务,入口都是通过 ServiceManager.java 中的对应方法实现。这里我们就先介绍一下 Java 注册 Binder 服务的流程。 一、ServiceManager代理 无论是 ServiceManager.addService() 还是 ServiceManager.getService() 最终…

第9章 安全漏洞、威胁和对策(9.17)

9.17 移动设备(mobile device) 移动设备是指电池驱动的任何东西,通常不需要电源线就可以运行的任何东西。 备考时要把智能手机与移动设备、笔记本电脑、平板电脑乃至智能手表或计步器也考虑进来。 一些移动设备连典型的默认安全设置都做不到&#xff0c;更别提可供使用的安全…

C++ 类和对象(中篇)

类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。空类中什么都没有吗&#xff1f;并不是的&#xff0c;任何一个类在我们不写的情 况下&#xff0c;都会自动生成下面6个默认成员函数。 构造函数&#xff1a; 定义&#xff1a;构造函数是一个特殊的成员…

js的some函数

在JavaScript中&#xff0c;some() 是一个数组的方法&#xff0c;用于测试数组中是否至少有一个元素满足提供的函数。如果数组中有至少一个元素通过由提供的函数实现的测试&#xff0c;则它返回 true&#xff1b;否则返回 false。 以下是 some() 函数的基本语法&#xff1a; j…

【C语言】猜数字小游戏(并讲解随机数相关知识)

前言 一、游戏菜单 二、游戏逻辑 1.用户选择 2.开始游戏 2.1 生成1~100的随机数 总结 前言 本文讲解使用C语言写一个猜数字小游戏(1~100)&#xff0c;涉及到的语法为&#xff1a;循环、分支、随机数、函数 一、游戏菜单 一个游戏的最开始&#xff0c;往往是一个菜单&…

面试反问环节

目录 hr面反问技术面反问 一般反问3、4个问题 hr面反问 部门的工作氛围和领导风格是怎样的&#xff08;还有上下班作息时间等&#xff09;&#xff1f;部门对这个职位的期望是什么&#xff1f;部门的转正率大概有多少&#xff1f;实习生的薪资有多少&#xff1f;有房补吗&…

金融数据_Scikit-Learn决策树(DecisionTreeClassifier)实例

金融数据_Scikit-Learn决策树(DecisionTreeClassifier)实例 逻辑回归: 逻辑回归常被用于二分类问题, 比如涨跌预测。你可以将涨跌标记为类别, 然后使用逻辑回归进行训练。 决策树和随机森林: 决策树和随机森林是用于分类问题的强大模型。它们能够处理非线性关系, 并且对于特征…

Jetpack Bluetooth——更优雅地使用蓝牙

Jetpack Bluetooth——更优雅地使用蓝牙 蓝牙是安卓开发中非常常用的操作&#xff0c;但安卓经过这么多年的迭代&#xff0c;蓝牙的相关接口都经过了很多修改需要适配&#xff0c;还有的接口需要实现一堆函数。。。整套操作虽说不算复杂&#xff0c;但难免感觉不太舒服。 之前…