① 如何用单片机实现防空警报音
需要找到防空警报的频率变化范围,就可以实现。
下面给一个蜂鸣器模拟消防车报警声;
*****************************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar Count;
sbit Key1 = P3^2 ;
sbit Key3 = P3^3 ;
sbit BEEP = P3^1 ; //蜂鸣器
sbit p34 = P3^4 ;
/********************************************************
延时函数
*********************************************************/
void delay(void)
{
uint k;
for(k=1700;k>0;k--);
}
/********************************************************
键控制函数
*********************************************************/
void key_control()
{
if(Key1==0)
{
while(Key1==0);
TR0=1;
}
if(Key3==0)
{
while(Key3==0);
TR0=0;
}
}
/********************************************************
主函数
*********************************************************/
main()
{
p34=0;
P0=0x0;
P1=0xff;
P2=0xff;
Count=0x00;
BEEP=1;
TMOD=0x01;
TH0=0x00;
TL0=0xff;
EA=1; ET0=1;
while(1)
{
do
{
Count++;
key_control();
delay();
}while(Count!=0xff);
do
{
Count--;
key_control();
delay();
}while(Count!=0x00);
}
}
/*********************************************************
Time0中断函数
**********************************************************/
void Time0(void) interrupt 1 using 0
{
TH0=0xfe;
TL0=Count;
BEEP=~BEEP;
}
/*********************************************************/
② 51单片机,怎么用汇编语言编程一个程序。实现4个按键控制4种报警声音(110、119、120、防空警报声)。
没有四种声音的频率库,其他的给你做个示范吧:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
SETB EA
SETB ET0
SETB ET1
LOOP:
LCALL KEYSCAN
MOV A,R2
JNZ LP1
MOV DPTR,#TAB110
SJMP LPRUN
LP1:
DEC A
JNZ LP2
MOV DPTR,#TAB119
SJMP LPRUN
LP2:
DEC A
JNZ LP3
MOV DPTR,#TAB120
SJMP LPRUN
LP3:
DEC A
JNZ LP4
MOV DPTR,#TABBOMB
SJMP LPRUN
LP4:
LJMP LOOP
LPRUN:
MOVX A,@DPTR
MOV TL0,A
INC DPTR
MOVX A,@DPTR
MOV TH0,A
............;时长控制也可以做到表里,计算后赋值给T1
LJMP LOOP
END
③ 开关控制报警器如何用单片机实现
开关控制报警器如何用单片机实现
单片机C语言程序设计:开关控制报警器
/*名称:开关控制报警器
说明:用K1开关控制报警器,程序控制P1.0输出两种不同频率的声音,模拟很逼真的报警效果
*/
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitSPK=P1^0;
sbitK1=P1^7;
//发声函数
voidAlarm(uchart)
{
uchari,j;
for(i=0;i<200;i++)
{
SPK=~SPK;
for(j=0;j//由参数t行成不同的频率
}
voidmain()
{
SPK=0;
while(1)
{
if(K1==1)
{
Alarm(90);
Alarm(120);
}
}
}
④ C51单片机有警报声又可以闪灯的程序怎么写
给你做个示范吧:
#include<reg51.h>
sbit ALARMSND=P1^0;
sbit ALARMLED=P1^1;
sbit KEY=P1^2;
void t0_isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ALARMLED=!ALARMLED;
}
main()
{
TMOD=0x01;
ET0=1;
EA=1;
while(1)
{
if(KEY==0)
{
delay(10);
if(KEY==0)
{
ALARMSND=!ALARMSND; //按键切换报警
if(ALARMSND==1)TR0=1; //如果报警声响,则启动定时器,开始闪烁
else TR0=0; //不响则关闪烁
}
}
}
}