51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

这篇具有很好参考价值的文章主要介绍了51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

题目:

proteus仿真:

代码:

分析题目:

定时器:

工作方式寄存器TMOD设置:

控制寄存器TCON设置:

设定计数初值:

 定时器四种工作方式:

实验过程讲解:

配置定时器:设置TMOD寄存器

设定定时器初值:THx和TLx(x=0,1)

设置IE寄存器:

启动定时器:

中断检测:


题目:

使用51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

proteus仿真:

51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

 本实验涉及的Proteus文件以及程序源码均在Github上免费下载

https://github.com/iceacream/C_CODE.git

代码:

#include<reg51.h>
sbit LED1=P1^5;
char i = 100;
char t = 0;

void t1_init()
{
  TMOD = 0x01;		//定时器T0为方式1
	TH0 = 0xd8;			//设置定时器初值(1s)
	TL0 = 0xef;
	LED1 = 1;				//LED1熄灭
	ET0 = 1;				//允许定时器T0中断
	TR0 = 1;				//启动定时器T0
	EA = 1;					//开总中断
}

void main()
{
  t1_init();
  while(1);
}

void timer0() interrupt 1			//T0中断程序
{
			TH0 = 0xd8;
			TL0 = 0xef;
			i--;
			if(i<=0)
			{
				if(t==3)						//3s
					{					
						TR0 = 0;				//关闭定时器T0
						LED1 = ~LED1;		//LED灯状态取反
						t=0;
					}
						i = 100;
						t++;
			}
				TR0 = 1;				//重新启动定时器T0
} 

  本实验涉及的Proteus文件以及程序源码均在Github上免费下载

https://github.com/iceacream/C_CODE.git

分析题目:

实验需要通过定时器配合中断,实现LED每隔3秒点亮一次,只需简单配置定时器就能达到实验效果。

定时器:

51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

  • AT89S51单片机内有两个可编程的定时器/计数器T1、T0。
  • T0由特殊功能寄存器TH0、TL0构成,T1由特殊功能寄存器TH1、TL1构成。
  • T0、T1都具有定时器、计数器两种工作模式。
  • 定时器模式是对单片机的系统时钟信号经片内12分频后的内部脉冲信号计数。
  • 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数。
  • 两个计时器/计数器属于增1计数器,即每对一个脉冲计数则计数器增1。
  • T0、T1具有四种工作模式:方式0、方式1、方式2和方式3。

51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

 2个16位计数器T0 (TH0TL0)T1 (TH1TL1)——1计数器

2个8位控制寄存器TCONTMOD——管理计数器的运行

2个外部引脚T0(P3.4)T1(P3.5)——接入外部脉冲

工作方式寄存器TMOD设置:

51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

控制寄存器TCON设置:

51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)例:TR0 = 1;   T0计数         TR0 = 0 ;   停止T0计数

设定计数初值:

计数器溢出空间 = 计数器最大空间 - 计数初值

定时时间t = (计数器最大空间 - 计数初值机器周期=(​-a)×12/fosc  (us)

51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

 定时器四种工作方式:

参考:http://t.csdn.cn/c44ol

实验过程讲解:

配置定时器:设置TMOD寄存器

本实验选择定时器T0工作在方式1,应使TMOD寄存器的M1M0 = 01;应设置C/​ = 0为定时器工作模式;对T0的运行仅由TR0来控制,应使相应的GATE位为0。定时器T1不使用,各相关位均设为0。所以TMOD寄存器应初始化为0x01。

设定定时器初值:THx和TLx(x=0,1)

设定时时间为1秒,设置10毫秒(即10000微秒)循环100次,设定时器 T0的计数初值为X,假设晶体振荡器的频率为11.0592 MHz  则定时时间为:

定时时间 = (​-X)*12/晶体振荡器频率

10000 = (​-X)*12/11.0592

X  ​ 55535(0xd8ef)

 转换成16 进制数后为0xd8ef     其中0xd8装入TH0      0xef装入TH0

设置IE寄存器:

本题由于采用定时器T0中断,因此需将IE寄存器中的EA、ET0位置“1”。

启动定时器:

启动和停止定时器T0:将定时器控制寄存器TCON中的TR0=1,则启动定时器T0。TR0=0,停止计时器T0计时。

中断检测:

重装定时器初值。文章来源地址https://www.toymoban.com/news/detail-419346.html

到了这里,关于51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C51单片机——通过使用定时器控制LED闪灭

    目录 0 引言 1 定时的原理 1.1 生活中的定时 1.2单片机中的定时器 2 C语言程序设计 2.1 定时器的内部功能 2.2 设置寄存器 2.3 实验程序 3 有两个小问题(算是延伸吧) 3.1 只能0.05s闪一次吗? 3.2 每次都要在草稿纸手算初始值好麻烦

    2024年02月06日
    浏览(73)
  • 51单片机定时器

    目录 前言 一、定时器的介绍及其作用 二、定时器的内部构造及其原理 计算机周期 定时器的工作模式与流程 定时器中断相关寄存器 寄存器的配置  三、程序 总结         下面来介绍学习51单片机第一个也是最常用的片上外设——定时器。该硬件是集成在单片机内部的,

    2024年02月05日
    浏览(57)
  • 51单片机定时器/计数器(定时器中断)

    实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1、51单片机定时器原理 定时器实质上就是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到定数器满时,再输入一个脉冲就使定时器回零

    2024年02月06日
    浏览(57)
  • 51单片机(七)定时器

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月07日
    浏览(56)
  • 51单片机——定时器中断

    新版51单片机内部有 3 个16位可编程的定时器/计数器,即定时器 T0,T1,T2 。他们既有 定时 功能又有 计数 功能,我们可以通过配置与它们相关的特殊功能寄存器可以选择启用定时功能或计数功能;其中需要注意的是,这个定时器系统是单片机内部的一个独立的硬件部分,它与

    2023年04月10日
    浏览(44)
  • 51单片机之定时器篇

    首先,学好单片机必须要搞懂定时器,定时器是单片机重要的组成部分之一,总之,学不好定时器,单片机相当于没学,下面就让我介绍如何学好单片机定时器。 学习单片机首先要明白的: 1,51单片机有两组定时器/计数器,既可以定时,又可以计数,总称之定时器 2,单片

    2024年02月11日
    浏览(53)
  • 51单片机PWM(定时器)

    目录 前言 一、PWM的介绍 二、在定时器中配置PWM 三、代码  总结         PWM普遍应用于惯性系统,我们知道单片机几乎只能输出“1”和“0”两种状态,即开和关,想要输出模拟量是不太容易实现的,那么怎样才能使单片机输出平滑的线性信号呢?没接触过PWM的小伙伴可能第

    2024年02月09日
    浏览(55)
  • 【51单片机】:定时器的详解(包括对单片机定时解释、各类定时方式,以及中断方式)

              51定时/计数器的详解。                   码字不易,如有帮助请收藏,点赞哦。         前提:首先我们知道51单片机内部有21~26个特殊功能寄存器: P.x口寄存器:P0、P1、P2、P3 数据指针寄存器:DP0H、DP0L、DP1H、DP1L 定时器: TH1、TL1、TH0、TL0、TMOD、TCON 串口:

    2024年02月07日
    浏览(97)
  • 51单片机定时器基础知识

    经验总结:定时器0工作方式1的溢出中断初始值计算 1.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,50ms=46080次机器周期。 65536-46080=19456(4c00) TH0=0x4c,TL0=0x00 2.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000次 机器周期。 65536-50000=15536(3cb0) TH0=0x

    2024年02月04日
    浏览(115)
  • 51单片机定时器中断TMOD

    最近在学定时器中断TMOD,写程序时,要对定时器进行配置 对TMOD进行赋值时,拌了好久。。。。 如何根据所用的      定时器0/1 ,  工作方式0/1/2/3      对TMOD赋值呢? 我们知道: 1.TMOD长这样 :  由八位组成,前四位是T1的参数;后四位是T0的参数;GATE 和 C/T\\\' 不用多讲,

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包