帮忙做一个51单片机89C52的程序,要求是LED灯1以0.5秒为周期闪烁,并且通过按键设置周期,

帮忙做一个51单片机89C52的程序,要求是LED灯1以0.5秒为周期闪烁,并且通过按键设置周期,每按一次周期加0.5秒,最好能在数码管显示,纠结几天了

帮忙做一个51单片机89C52的程序,要求。。。

没有规定用什么语言?追问

上面已经说了C语言

追答#include<reg51.h>

sbit key = P2^7;
sbit led = P2^0;

unsigned char n = 0;

void delay()
{
    unsigned  int  i, j;
    for(i = 0; i < 100; i++)
      for(j = 0; j < 200; j++);
}

void readkey(void)
{
    unsigned char  i, j;
    if(!key)  {
      for(i = 0; i < 10; i++) //延时
        for(j = 0; j < 120; j++);
      if(!key)  {  //消抖
        while(!key);  //等待按键释放
        n++;
        n %= 4;    //n = 0~3
        P1 = n;    //显示n
      }
    }
}

main()
{
    while(1)  {
      switch(n)    {
      case 3: delay(); readkey(); //慢速闪烁 
      case 2: delay(); readkey(); 
      case 1: delay(); readkey();
      case 0: delay(); readkey(); //快速闪烁
              led = ~led;
      }
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-25
你好!你的原理图确定了吗?数码管是共阴还是共阳的?追问

共阳,四位数码管,P20到P23

如果太麻烦,你可不可以给我一个在LED灯亮的情况下通过按键控制数码管的程序实例

相似回答