51单片机用定时器控制流水灯,呼吸灯

这篇具有很好参考价值的文章主要介绍了51单片机用定时器控制流水灯,呼吸灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

让LED从L1开始流到L8,(间隔1S,使用定时器)然后全灭LED,然后从L1开始进行呼吸灯状态。之后L1,L3,L5,L7点亮,然后L2,L4,L6,L8点亮。最后所有LED全亮

#include <REGX52.H>
#include<INTRINS.H>

sbit LED = P2 ^ 0;

unsigned int TOTOTO = 0;
int number = 0;
unsigned int Time;
unsigned int i;

//配置定时器
void Timer0Init(void)        //定时器1ms@12.000MHz
{

    TMOD &= 0xF0;        //工作模式寄存器TMOD配置 只配置了定时器0
    TMOD |= 0x01;       // TCON控制寄存器配置中TF1和TR1是定时器1,TF0和TR0是定时器0
    TL0 = 0x18;            //是低位寄存器赋初值 提升计数器初始时间
    TH0 = 0xFC;            //是高位寄存器赋初值  提升计数器初始时间
    TF0 = 0;            //等于1是产生中断,清零
    TR0 = 1;            //等于1是定时器0开启
    ET0 = 1;            //等于1是中断路线连接
    EA = 1;                //等于1是中断路线中开关连接
    PT0 = 0;            //等于0是默认等于0 开关拨下 联通
}

//延时函数
void Delay(unsigned int t)
{
    while (t--);
}
//主函数
void main()
{

    Timer0Init();


    while (1)
    {

    }

}


//定时器0的中断程序 
void Timer0_Routine() interrupt 1  //中断号
{


    TL0 = 0x18;            //计数器溢出归0 重新给计数器赋初值
    TH0 = 0xFC;
    TOTOTO++;            //进入中断的次数,1ms进入1次 

    switch (TOTOTO)        //用定时器每隔1s LED灯流水
    {
    case 1000:P2 = ~(0x01 << 0);
        break;
    case 2000:P2 = ~(0x01 << 1);
        break;
    case 3000:P2 = ~(0x01 << 2);
        break;
    case 4000:P2 = ~(0x01 << 3);
        break;
    case 5000:P2 = ~(0x01 << 4);
        break;
    case 6000:P2 = ~(0x01 << 5);
        break;
    case 7000:P2 = ~(0x01 << 6);
        break;
    case 8000:P2 = ~(0x01 << 7);
        break;
    }

    //    if(TOTOTO>=1000)
    //    {
    //        
    //        
    //        TOTOTO=0;
    //        P2=~(0x01<<number);
    //        number++;
    //    }

    if (TOTOTO == 9000)        //第九秒LED灯全灭
    {

        P2 = 0xFF;

    }

    if (TOTOTO == 10000)    //第10秒LED1呼吸
    {

        for (Time = 0; Time < 50; Time++)//不断改变占空比
        {
            for (i = 0; i < 20; i++)//延长波形变化
            {
                LED = 0;
                Delay(Time);
                LED = 1;
                Delay(50 - Time);
            }
        }
        for (Time = 50; Time > 0; Time--)//从后往前报数
        {
            for (i = 0; i < 20; i++)
            {
                LED = 0;
                Delay(Time);
                LED = 1;
                Delay(50 - Time);
            }
        }
    }
    if (TOTOTO == 11000)//第11秒1357灯亮
    {
        P2 = 0x55;
    }
    if (TOTOTO == 12000)//第12秒2468灯亮
    {
        P2 = 0xAA;
    }

 if (TOTOTO == 13000)//第13秒灯全亮
    {
        P2 = 0x00;
    }

}
 文章来源地址https://www.toymoban.com/news/detail-550151.html

到了这里,关于51单片机用定时器控制流水灯,呼吸灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索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)
  • C51单片机定时器2实现SG90舵机控制

    谈起舵机最初的了解应用于航模,偶然的机会在网上看到有牛人使用多个舵机做人形机器人的关节,感觉这小东西很有趣,蒙发了买来学习学习的想法,这已经是多年前的事了,后来由于某些原因,这个想法直到今年才落地。小东西到手后,把玩了解后,本人把学习过程记录

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

    目录 题目: proteus仿真: 代码: 分析题目: 定时器: 工作方式寄存器TMOD设置: 控制寄存器TCON设置: 设定计数初值:  定时器四种工作方式: 实验过程讲解: 配置定时器:设置TMOD寄存器 设定定时器初值:THx和TLx(x=0,1) 设置IE寄存器: 启动定时器: 中断检测: 使用

    2023年04月20日
    浏览(54)
  • 51单片机定时器

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

    2024年02月05日
    浏览(58)
  • 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单片机定时器实验(汇编)

    基于AT89C51的定时器实验,汇编语言,分享出来是希望各位能共同学习。附上注释希望能认真研究,若有错误请指出,谢谢。 一、实验目的 掌握单片机定时器的使用方法。 掌握中断的使用方法。 二、实验内容 采用中断方式控制定时器。使得单片机P1.0引脚产生周期为1S的方波

    2024年02月11日
    浏览(59)
  • 51单片机之定时器篇

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

    2024年02月11日
    浏览(54)
  • 51单片机 | 定时器中断实验

      这一节介绍51单片机的定时器中断。 STC89C5X 含有 3 个定时器:定时器 0、定时器 1、定时器 2(注意: 51 系列单片机一定有基本的 2 个定时器(定时器 0 和定时器 1),但不全有 3 个中断,需要查看芯片手册,通常我们使用的是基本的 2 个定时器:定时器 0/1)。本节要实现

    2024年02月06日
    浏览(111)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包