找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机一个独立按键控制4个led

[复制链接]
跳转到指定楼层
楼主
ID:380532 发表于 2018-8-25 20:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
普中2.0的板子     使用独立按键通过ID的大小来控制led




#include <reg52.h>   
#define u16 unsigned int                         //数据类型的定义
#define u8  unsigned char

u16 ID=0;                                                        //通过ID的大小来控制某个led的闪烁

sbit led=P2^0;                                                //led的管教定义
sbit led1=P2^1;
sbit led2=P2^2;
sbit led3=P2^3;

sbit k1=P3^1;                                        //独立按键的定义
sbit k2=P3^0;                                                //复位按键
void delay(u16 i);                                        //延时函数
void key();                                                        //按键函数

void main()        
{
        while(1)
        {        
                key();
                switch(ID)
                {
                        case 1: led=~led;        led3=1;        delay(5000);        break;                //led的闪烁实现
                        case 2: led1=~led1;         led=1;        delay(5000);        break;
                        case 3: led2=~led2;        led1=1;        delay(5000);        break;
                        case 4: led3=~led3;        led2=1;        delay(5000);        break;
                }
        }
}

void delay(u16 i)                                        //延时函数
{
        while(i--);
}

void key()                                                //按键函数
{

                if(k1==0)
                {
                        delay(1000);
                        if(k1==0)
                        {
                                ID++;
                        }
                        if(ID>4)
                        {
                                ID=0;                //当按了4次后第五次按下所有的led不在闪烁
                                led3=1;                //是led4 停止闪烁
                        }
                        while(!k1);
                }
                if(k2==0)
                {
                        delay(1000);
                        if(k2==0)
                        {
                                ID=0;
                                led=1;
                                led1=1;
                                led2=1;
                                led3=1;
                        }
                        while(!k2);
                }
        
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:568662 发表于 2019-8-2 11:31 | 只看该作者
case 1: led=~led;        led3=1;        delay(5000);        break;        
为什么  受面试 led3=1?  楼主方便说一下吗 ?
回复

使用道具 举报

板凳
ID:568662 发表于 2019-8-2 13:08 | 只看该作者
还有就是 如果用左移右移函数来移动led 是什么样的程序  楼主大大方便告知一下嘛
回复

使用道具 举报

地板
ID:576395 发表于 2019-8-2 16:47 | 只看该作者
对于我这个新手来说,一头雾水
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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