功能:按鍵按下,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)
2020-12-5 22:37 上傳
點擊文件名下載附件
|