初學51單片機第一個實驗一般都是以點亮LED燈開始,以下是使用Proteus仿真軟件的實驗效果。
實驗需要仿真儀器:
示波器、LED、電壓表、蜂鳴器、AT89C51
實驗電路圖:
實驗代碼:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint i = 0;
sbit buzzer = P2^1;
sbit led=P2^0; //將單片機的P2.0端口定義爲led
void delay(uint i)
{
while(i--);
}
//定時器T0初始化
void Timer0init()
{ //設置T0
TMOD|=0X01; //選擇爲定時器0模式,工作方式1,僅用TR0打開啓動
TH0=0x0F8; //給定時器賦初值,定時0.5ms
TL0=0x30;
ET0=1; //打開定時器0中斷允許
EA=1; //打開總中斷
TF0=0; //溢出位清零
TR0=1; //打開定時器
}
void Timer0() interrupt 1
{
uchar count;
TH0=0x3c; //給定時器賦初值
TL0=0xb0;
count++; //計時變量加
if(count==10)//定時器定時是50ms,此處計數10次,正好是500ms
{
buzzer = ~buzzer;
delay(10);
count = 0;
TR0 = 0;
}
TR0 = 1;
}
void main(void)
{
Timer0init(); //定時器T0初始化
while(1)
{
led=1;
delay(50000); //大約延時450ms
led=0;
delay(50000); //大約延時450ms
}
}
效果截圖:
從示波器可以看出,這次中斷產生的PWM效果並不是太好。