1. 程式人生 > >51微控制器學習筆記(一)

51微控制器學習筆記(一)

點亮第一個LED燈

#include "reg52.h"

sbit led=P2^0;      //將微控制器的P2.0埠定義為led

void main()
{
	while(1)
	{
		led=0; //P2.0埠設定為低電平
	}
}

LED閃爍實驗

#include "reg52.h"

typedef unsigned int u16;         //對資料型別進行宣告定義
typedef unsigned char u8;

sbit led=P2^0;

//延時函式
void delay(u16 i)
{
	while(i--);
}

void main()
{
	while(1)
	{
		led=0;
		delay(50000);
		led=1;
		delay(50000);
	}
}

LED流水燈實驗

#include "reg52.h"
#include<intrins.h> //要用到左右移函式

typedef unsigned int u16;
typedef unsigned char u8;

#define led P2

void delay(u16 i)
{
    while(i--);
}

void main()
{
    u8 i;
    led=0xfe;
    delay(50000);
    while(1)
    {
        for(i=0;i<8;i++)
        {
           P2=~(0x01<<i);  //將1右移i位,然後將結果取反賦值到P2口
           delay(50000);
        }
        for(i=0;i<7;i++)  //將led左移一位
	{
	    led=_crol_(led,1);
	    delay(50000);
	}
	for(i=0;i<7;i++)  //將led右移一位
	{
	    led=_cror_(led,1);
	    delay(50000);
	}
    }
}

靜態數碼管顯示

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

u8 LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
           0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};  //共陰極數碼管碼

void main()
{
    LSA=0;
    LSB=0;
    LSC=0;  //控制38譯碼器的Y0輸出低電平
    P0=LED[0];
    while(1);
}