led

科普:LED的开启电压是2V,反向击穿电压是5v,工作电压约为3v,通常正向电流为10~20mA,当电流在3~10mA时,led亮度与电压成反比。电流超过30mA的时候,led会烧毁,一般串联300欧姆左右的电阻。

windows下仿真程序(proteus+keilc)

点亮一个灯

proteus的仿真图:


点亮一个灯

keilc的代码如下:

#include <reg51.h>
void main()
{
    P1 = 0;
    while(1);
}

led闪烁

led闪烁
#include <reg51.h>

#define uint unsigned int
#define uchar unsigned char

sbit led P1^0

void delay(uint timer)
{
    uchar j = 124;
    while(timer--)
    {
        while(j--);
    }
}

void main()
{
    while(1)
    {
        led = ~led;
        delay(100);
    }
}

心形流水灯

心形流水灯
//version 1
#include <reg51.h>

#define uint unsigned int
#define uchar unsigned char

uchar code led[] = {
                    0xfe, 0xfd,0xfb,0xf7,
                    0xef, 0xdf,0xbf,0x7f};

void delay(uint timer)
{
    uchar j = 124;
    while(timer--)
    {
        while(j--);
    }
}



void main()
{
    uchar i=0 ;
    while(1)
    {
    P1 = led[i];
    i = (i+1)%8;
    delay(50);
    }   
}
//version 2
#include <reg51.h>

#define uint unsigned int
#define uchar unsigned char

uchar code led[] = {
                    0xfe, 0xfd,0xfb,0xf7,
                    0xef, 0xdf,0xbf,0x7f};

void delay(uint timer)
{
    uchar j = 124;
    while(timer--)
    {
        while(j--);
    }
}



void main()
{
    uchar i=0 ;
    while(1)
    {
        for(i = 0; i<8;i++)
        {
            P1 = led[i];
            delay(70);
        }
    }   
}
    
//version 3
#include <reg51.h>

#define uint unsigned int
#define uchar unsigned char

void delay(uint timer)
{
    uchar j = 124;
    while(timer--)
    {
        while(j--);
    }
}

void main()
{
    uchar i;
    while(1)
    {
        for(i = 0;i<8;i++)
        {
            P1 = ~(1<<i);
            delay(200);
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容