找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2817|回复: 5
打印 上一主题 下一主题
收起左侧

怎么用单片机中断和计时器控制一个led灯亮三秒后熄,紧接着下一个led灯亮3s或者1s熄

[复制链接]
跳转到指定楼层
楼主
单片机中断和计时器怎么实现
8个led灯  一个led灯亮三秒后熄灭,紧接着下一个led灯亮3s或者1s熄灭,按照这样的方式传递信号,8个灯为一组
传递这样的多组信号只能一组一组写了么。。。
不使用按键实现,按键也不知道怎么实现。。。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:855632 发表于 2020-12-6 22:42 | 只看该作者
利用移位指令加上延迟试一下
回复

使用道具 举报

板凳
ID:855788 发表于 2020-12-7 09:53 | 只看该作者
用位移函数,加循环语句应该几十行可以了
回复

使用道具 举报

地板
ID:855825 发表于 2020-12-7 10:35 | 只看该作者
用位移函数delay啊,加上你想要的延迟就可了
回复

使用道具 举报

5#
ID:798201 发表于 2021-1-5 16:53 | 只看该作者
#include <REGX52.H>

//***********************************定义变量*************************************//
typedef unsigned char  uint8;                 //8位无符号
typedef unsigned int  uint16;                //16位无符号
//***********************************定义变量*************************************//
uint8 led[9]={0xff,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};    //定义点亮编码,十六进制
#define led_time 46083                                          //led延时参数,快慢修改就个数,最大65536

void main ()
{
        uint8 count=0;         //变量声明,赋初值
  uint16 i;              //变量声明
       

        while(1)
        {
                P2=led[count++];
    if(count>=9)
                        {
                                count=0;
                        }
                i=led_time;
                while(i--);
        }

}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:238110 发表于 2021-1-5 17:38 | 只看该作者
用计时器产生中断,计数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表