找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2063|回复: 3
收起左侧

请教单片机按键顺序点灯的思路

[复制链接]
ID:500671 发表于 2019-10-11 18:18 | 显示全部楼层 |阅读模式
请教各位大神,我是新手,     单片机32个IO口中设置3个按键,如先触发第一个按键后29个IO口正向顺序亮灯,间 隔为1秒,等待触发第二个按键后灯正向顺序关灯, 如先触发第二个按键时逆向亮灯,再等待触发第一个按键后逆向关灯。第三个按键为全开和顺序开的选择,请问程序的思路是如何呢?
回复

使用道具 举报

ID:332444 发表于 2019-10-11 22:12 | 显示全部楼层
这个简单主循环中搞定,计数29个中分别按8,16,24,29进行判断,再设3个状态变量即可。
回复

使用道具 举报

ID:332444 发表于 2019-10-11 22:20 | 显示全部楼层
1569567480_848734.png
以上16个LED例子可供思路参考。

回复

使用道具 举报

ID:332444 发表于 2019-10-11 22:21 | 显示全部楼层

#include "reg51.h"
#include<intrins.h>       
void LedXunHuan()
{
    unsigned char i = 0, t = 0, Cnt = 0;
    while(1)
    {
        if(!i) P1 = 0xff;
        else if(i==9)P1 = 254;
        else if(i>8) P1 = _crol_(P1,1); else P1<<=1;//逐个递亮,_crol_(P1,1);单个亮,点亮16个的把其中一个P1改为P2即可.
        Cnt=89;
        while(Cnt) if(!++t) --Cnt;
        if(++i>16)i=0;//if(i++>=8)i=0;if(++i>=9)i=0;等价3式
    }
}
void main()
{
    LedXunHuan();
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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