求单片机C程序

2019-07-15 23:21发布

本帖最后由 dongyumin 于 2013-8-2 07:44 编辑

要求:1、按下按钮K后,5个LED灯由D1、D2、D3、D4、D5依次点亮,间隔1秒,最后全亮;
2、再次按下按钮K后,5个LED灯由D5、D4D、D3、D2、D1依次熄灭,间隔1秒,最后全灭;



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
暗夜游侠
1楼-- · 2019-07-16 04:52
//======================================================
//假设单片机针脚输出高电平点亮LED,单片机针脚输出低电平使LED灭掉
//当K键按下时,对应K键的单片机针脚收到低电平
//=======================================================
                                                                                  
#include<reg52.h>
#include<intrins.h>

//===========定义D1~D5,K对应针脚===============
sbit D1=P2^0;//定义D1对应针脚
sbit D2=P2^1;//定义D2对应针脚,以下类似
sbit D3=P2^2;
sbit D4=P2^3;
sbit D5=P2^4;
sbit K=P0^0;


//==========延时1s函数==================
void delay()   //误差 0us
{
    unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}
//==========单片机初始化程序============
void init()
{
        D1=D2=D3=D4=D5=0;//各个LED为全灭状态
        while(!K);//等待K键放开;一开始按住K键,单片机不能正常工作
}
//=========D1到D5依次点亮程序===========
void on()
{
        D1=1;
        delay();
        D2=1;
        delay();
        D3=1;
        delay();
        D4=1;
        delay();
        D5=1;
        delay();
}
//=============D5到D1熄灭程序=============
void off()
{
        D5=0;
        delay();
        D4=0;
        delay();
        D3=0;
        delay();
        D2=0;
        delay();
        D1=0;
        delay();
}

//==========================================
//                        主函数
//==========================================
void main()
{
        init();//等待单片机初始化完成
        while(1)
        {
        while(K);//等待K键被按下
        on();
        while(K);
        off();
        }
}
DAOMIN
2楼-- · 2019-07-16 06:04
本帖最后由 DAOMIN 于 2013-8-2 07:30 编辑

#include<reg52.h>
#define uchar unsigned char
#define  uint unsigned int

sbit k1=P2^0;

uint num;
uchar cishu;
uchar 0xfe,0xfd,0xfb,0xf7,0xef,0x00;

void main()
{
    TMOD=0x01;
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    ET0=1;
    EA=1;
    TR0=1;
    num=0;
    while(1)
    {
        if(k1==0)
       {
            while(k1==0);
            cishu++;

         if(cishu==1)
         {

               if(num==0)
               {
                    P1=0xfe;
               }
               if(num==20)
               {
                    P1=0xfc;
               }

               if(num==40)
               {
                    P1=0xf8;
               }

               if(num==60)
               {
                    P1=0xf0;
               }

               if(num==80)
               {
                    P1=0xe0;
               }

               if(num==100)
               {
                    P1=0x00;
                  
               }

       if(cishu==2)
       {

               if(num==120)
               {
                    P1=0xf0
               }
               if(num==140)
               {
                    P1=0xf8;
               }

               if(num==160)
               {
                    P1=0xfc;
               }

               if(num==180)
               {
                    P1=0xfe;
               }

               if(num==200)
               {
                    P1=0xff;                       num=0;
               }
            }
             if(cishu==3)
            {
                cishu=0;
            }
        }
    }
}

void t0() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;

    TR0=1;
    num++;
}




wzq1230231
3楼-- · 2019-07-16 07:19
暗夜游侠 发表于 2013-8-2 03:30
//======================================================
//假设单片机针脚输出高电平点亮LED,单片机针 ...

我的文本格式有问题,能不能传一个文本附件给我啊?谢谢!
iamsrf
4楼-- · 2019-07-16 10:25
{:12:}
暗夜游侠
5楼-- · 2019-07-16 14:49
wzq1230231 发表于 2013-8-3 00:35
我的文本格式有问题,能不能传一个文本附件给我啊?谢谢!

自己粘贴复制吧,实在不行就直接打,程序的注释我也都写有在上面,看懂应该不难

一周热门 更多>