1. 程式人生 > >【c51微控制器】警燈警笛設計

【c51微控制器】警燈警笛設計

 警燈警笛設計:通過獨立按鍵啟動警燈警笛,控制報警燈旋轉(旋轉燈用8個LED燈實現,旋轉時低3位亮,然後每次左移一位形成旋轉顯示),並讓蜂鳴器發出警報聲。

  • 所需元件表: 

元件名稱

型號

數量

Proteus關鍵字

微控制器

AT89C51

1

AT89C51

晶振

11.0592MHz

1

CRYSTAL

電容

22pF

2

CAP

電解電容

10uF

1

CAP-ELEC

按鍵

1

BUTTON

電阻

220Ω

1

RES

電阻

10kΩ

1

RES

電阻

700Ω

1

RES

二極體

藍色

8

LED-BLUE

排阻

800Ω

1

RESPACK

喇叭

1v

1

 SPEAKER

  • 電路圖設計
電路圖
  •  在KEIL中編寫的源程式
#include <reg52.h>
#define u16 unsigned int
#define u8 unsigned char
sbit SPK=P2^3;     //喇叭引腳
u8 frq;            //頻率
void delay(u16 k)  //延時函式
{	u16 a,b;
	for(a=0;a<k;a++)
	for(b=0;b<114;b++);
}
void Init_Timer0()
{
	TMOD=0x01;//M1M0=01,16位
	TH0=0xfe; //前8位
	TL0=0x00; //後8位
	EA=1;	  //總開關
	ET0=1;	  
	TR0=1;
}
void main()
{
	u16 i;
	u8 data1[16]=
	{   0x1f,0xff,0x8f,0xff,
		0xc7,0xff,0xe3,0xff,
		0xf1,0xff,0xf8,0xff,
		0x7c,0xff,0x3e,0xff
	};
	P0=0xff;
	Init_Timer0();
	while(1)
	{
		for(i=0;i<16;i++)
		{
			P0=data1[i];
			delay(2);
			frq++;
		}
	}
}
void timer0() interrupt 1
{
	TH0=0xfe;
	TL0=frq;
	SPK=~SPK;
}