【c51微控制器】警燈警笛設計
阿新 • • 發佈:2018-12-13
警燈警笛設計:通過獨立按鍵啟動警燈警笛,控制報警燈旋轉(旋轉燈用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; }