写一个利用利用51单片机条件用上流水灯、蜂鸣器、数码管、按键和外部中断设计一个防盗报警装置的程序
时间: 2023-06-08 15:09:10 浏览: 111
好的,我可以为您提供一个示例程序,请注意以合适的方式修改代码以适应您的具体应用需求。
```
#include <reg51.h>
sbit LED = P1^0;
sbit BEEP = P1^1;
sbit CLK = P1^2;
sbit DIO = P1^3;
sbit KEY = P1^4;
sbit INT = P3^2;
unsigned int cnt = 0;
unsigned char flag = 0;
void delay(unsigned int ms) {
unsigned int i, j;
for(i=0; i<ms; i++) {
for(j=0; j<120; j++) {
; // 空循环,延时约 1ms
}
}
}
void write(unsigned char dat) {
unsigned char i;
for(i=0; i<8; i++) {
CLK = 0;
if(dat & 0x01) {
DIO = 1;
} else {
DIO = 0;
}
dat >>= 1;
CLK = 1;
}
}
void display(unsigned char dat) {
write(0x44); // 开始命令
write(0xc0); // 设置地址
write(dat / 100); // 百位
write(dat % 100 / 10); // 十位
write(dat % 10); // 个位
}
void interruptFunc() interrupt 0 {
if(KEY == 0) {
flag ^= 1;
while(!KEY); // 等待按键释放
}
}
void main() {
IT0 = 1; // 外部中断0下降沿触发
EX0 = 1; // 打开外部中断0
EA = 1; // 打开总中断开关
while(1) {
if(flag == 1) {
LED = 1;
BEEP = 1;
display(cnt);
cnt++;
if(cnt > 999) cnt = 0;
delay(1000);
LED = 0;
BEEP = 0;
delay(1000);
} else {
LED = 0;
BEEP = 0;
}
}
}
```
该程序中,51单片机的P1口0号引脚接LED,1号引脚接蜂鸣器,2号引脚接数码管CLK,3号引脚接数码管DIO,4号引脚接按键,P3口2号引脚接外部中断。当按下按键时,即可触发外部中断函数,开关报警状态,同时数码管上进行计时和报警次数显示。程序中使用了延时函数实现了计时功能,使用了外部中断实现了模式切换功能。需要注意的是,该程序仅为示例程序,具体实现细节和应用需求需要根据具体情况进行修改和调整。
阅读全文