标题: 单片机一个独立按键控制4个led [打印本页]

作者: 白露横江    时间: 2018-8-25 20:26
标题: 单片机一个独立按键控制4个led
普中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);
                }
        
}


作者: cyy~qmr    时间: 2019-8-2 11:31
case 1: led=~led;        led3=1;        delay(5000);        break;        
为什么  受面试 led3=1?  楼主方便说一下吗 ?

作者: cyy~qmr    时间: 2019-8-2 13:08
还有就是 如果用左移右移函数来移动led 是什么样的程序  楼主大大方便告知一下嘛
作者: ccgfcch    时间: 2019-8-2 16:47
对于我这个新手来说,一头雾水




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1