标题: 51单片机霹雳灯示例(Proteus仿真电路,C语言程序代码) [打印本页]

作者: abba    时间: 2020-12-5 22:37
标题: 51单片机霹雳灯示例(Proteus仿真电路,C语言程序代码)
功能:按键按下,P2连接的led灯呈现来回闪烁的霹雳灯现象。
下面是Proteus仿真电路


(注:没画最小系统)

下面为C语言程序
#include<reg51.h>
#define LED P2
void delay100ms(void) ;
void delay10ms(void) ;
sbit S1=P1^0;
main()
{
   unsigned char i;

   LED=0xff;
   while(1)
   {
      if(S1==0)
     {
       delay10ms();
       if(S1==0 )
      {
      LED=0xfe;
      delay100ms();
      for(i=0;i<7;i++)
      {
         delay100ms();
         LED=(LED<<1)|0x01;
      }
      for(i=0;i<7;i++)
      {
         delay100ms();
         LED=(LED>>1)|0x80;
      }
      LED=0xff;
      LED=0xfd;
      for(i=0;i<5;i++)
      {
         delay100ms();
         LED=(LED<<1)|0x03;
      }
      for(i=0;i<5;i++)
      {
         delay100ms();
         LED=(LED>>1)|0xc0;
      }
      LED=0xff;
      LED=0xfb;
      for(i=0;i<3;i++)
      {
         delay100ms();
         LED=(LED<<1)|0x07;
      }
      for(i=0;i<3;i++)
      {
         delay100ms();
         LED=(LED>>1)|0xcf0;
      }
      LED=0xff;
      for(i=0;i<3;i++)
      {

         LED=0x00;
         delay100ms();
         LED=0xff;
         delay100ms();
      }
     }
   }
   }
}
void delay100ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=19;c>0;c--)
        for(b=20;b>0;b--)
            for(a=130;a>0;a--);
}
void delay10ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}



下面附件有仿真电路和程序代码
霹雳灯.zip (42.69 KB, 下载次数: 25)


作者: 1145748255    时间: 2022-3-30 11:52
for(a=130;a>0;a--);
}
void delay10ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)




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