不可控霹雳灯
1、首先用protues画出原理图

2、用keil编写程序代码
3、/*------------------------------------------------------------------------
名称:不可控霹雳灯
编写:陈植锋
日期:2013-11-1
内容:通过查表操作分别赋值给P0口和P1口,让不同时候16个LED灯显示不同结果。
-------------------------------------------------------------------------*/
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
void delayms(uint);
uchar code P0_led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0x55,0xaa,0xf0,0x0f,
0xfc,0xf3,0xcf,0x3f,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //P0口LED灯显示表
uchar code P1_led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xaa,0x55,0x0f,0xf0,
0x3f,0xcf,0xf3,0xfc,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //P1口LED灯显示表
main()
{
uchar i;
delayms(200);
P0=0x00; //检测LED是否有损坏
P1=0x00;
delayms(300);
P0=0xff;
P1=0xff;
delayms(300);
while(1)
{
for(i=0;i<26;i++)
{
delayms(500);
P0=P0_led[i];
P1=P1_led[i]; }
}
}
void delayms(uint xms) //延时
{
uint i,j;
for(i=0;i<xms;i++)
for(j=0;j<120;j++);
}
4、用protues仿真