LED控制

点亮LED

低电平(1)LED变亮,高电平(0)LED不变亮,引脚默认低电平

#include "reg52.h"    //此文件中定义了单片机的一些特殊功能寄存器

sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit led5=P0^4;
sbit led6=P0^5;
sbit led7=P0^6;
sbit led8=P0^7;

void main()
{
    while(1)
    {
        led1=1; //P0.0端口设置为低电平
        led2=0;
        led3=1;
        led4=0;
        led5=1;
        led6=1;
        led7=0;
        led8=1;
    }       
}

实验现象:D11、D13、D15、D16、D18灯变亮,D12、D14、D17灯不变亮

LED灯闪烁

自定义延迟函数,变化LED的电平高低。

typedef用法详见http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.html

#include "reg52.h"          //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16;   //对数据类型进行声明定义
typedef unsigned char u8;

sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
sbit led5=P0^4;
sbit led6=P0^5;
sbit led7=P0^6;
sbit led8=P0^7;

void delay(u16 i)           //延迟函数
{
    while(i--);
}
void main()
{
    while(1)
    {
        led1=1; //P0.0端口设置为低电平
        led2=0;
        led3=1;
        led4=0;
        led5=1;
        led6=1;
        led7=0;
        led8=1;
        delay(50000);
        led1=0; 
        led2=1;
        led3=0;
        led4=1;
        led5=0;
        led6=0;
        led7=1;
        led8=0;
        delay(50000);
    }       
}

实验现象:LED灯闪烁

LED流水灯

#define与typedef的用法与区别http://www.cnblogs.com/kerwinshaw/archive/2009/02/02/1382428.html

_crol _(a,b);循环左移函数,a是左移的值,b是左移的位数。包含在instrins.h库函数里面。

_cror _(a,b);循环右移函数,a是右移的值,b是右移的位数。包含在instrins.h库函数里面。

#include "reg52.h"          //此文件中定义了单片机的一些特殊功能寄存器
#include         //左右移函数
typedef unsigned int u16;   //对数据类型进行声明定义
typedef unsigned char u8;

#define led P0

void delay(u16 i)           //延迟函数
{
    while(i--);
}
void main()
{
    u8 i;
    led=0x01;
    delay(50000); //大约延时450ms   
    while(1)
    {
        for(i=0;i<8;i++)        //将1右移到第i位,然后将结果赋值到P0口
        {
            P0=(0x01<0;i--)        //将1左移到第i位,然后将结果赋值到P0口
        {
            P0=(0x01<

实验现象:一排LED灯来回闪烁

你可能感兴趣的:(LED控制)