找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3718|回复: 1
收起左侧

51单片机霹雳灯示例(Proteus仿真电路,C语言程序代码)

[复制链接]
ID:849631 发表于 2020-12-5 22:37 | 显示全部楼层 |阅读模式
功能:按键按下,P2连接的led灯呈现来回闪烁的霹雳灯现象。
下面是Proteus仿真电路
霹雳灯.jpg

(注:没画最小系统)

下面为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)

评分

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

查看全部评分

回复

使用道具 举报

ID:1014263 发表于 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--)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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