当前位置:首页 >> 信息与通信 >>

51单片机实现蜂鸣器警车、救护车、消防车声


1. /*----------------------------------------------名称:喇叭 论坛:www.doflye.net 编写:shifang 日期:2009.5 修改:无 内容:模拟警车发声 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit SPK=P1^2; unsigned char frq;

//定义喇叭端口

void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t); /*-----------------------------------------------定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16 位定时器,使用"|"符号可以在使用多个定时器时不受影响

//TH0=0x00;

//给定初值

//TL0=0x00; EA=1; ET0=1; TR0=1; } /*-----------------------------------------------主函数 ------------------------------------------------*/ main() { Init_Timer0(); //初始化定时器 while(1) { //总中断打开 //定时器中断打开 //定时器开关打开

DelayMs(1); //延时1ms,累加频率值 frq++;

} } /*-----------------------------------------------uS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS

------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*-----------------------------------------------mS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {

while(t--) { //大致延时1mS DelayUs2x(245); DelayUs2x(245); } } /*-----------------------------------------------定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1

{ TH0=0xfe; TL0=frq; //重新赋值 //低8 位值在主程序中不断累加

SPK=!SPK;

//端口电平取反

}

二 /*----------------------------------------------名称:喇叭 论坛:www.doflye.net 编写:shifang 日期:2009.5 修改:无 内容:模救护车发声 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit SPK=P1^2; unsigned char frq;

//定义喇叭端口

void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t); /*-----------------------------------------------定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16 位定时器,使用"|"符号可以在使用多个定时器时不受影响

//TH0=0x00; //TL0=0x00; EA=1; ET0=1; TR0=1; }

//给定初值

//总中断打开 //定时器中断打开 //定时器开关打开

/*-----------------------------------------------主函数 ------------------------------------------------*/ main() { unsigned char i; Init_Timer0(); //初始化定时器 while(1) { frq=0; for(i=0;i<60;i++)//播放1s 左右一种频率 { DelayMs(10); } frq=100; for(i=0;i<60;i++)//播放1s 左右另外一种频率 { DelayMs(10);

}

} } /*-----------------------------------------------uS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*-----------------------------------------------mS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {

while(t--) {

//大致延时1mS DelayUs2x(245); DelayUs2x(245); } } /*-----------------------------------------------定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 { TH0=0xfe; TL0=frq; //重新赋值 //低8 位值在主程序中不断累加

SPK=!SPK;

//端口电平取反

}

三 /*----------------------------------------------名称:喇叭 论坛:www.doflye.net 编写:shifang 日期:2009.5 修改:无 内容:模拟消防车发声 ------------------------------------------------*/ #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit SPK=P1^2; unsigned char frq;

//定义喇叭端口

void DelayUs2x(unsigned char t);//函数声明 void DelayMs(unsigned char t); /*-----------------------------------------------定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16 位定时器,使用"|"符号可以在使用多个定时器时不受影响

//TH0=0x00; //TL0=0x00; EA=1; ET0=1; TR0=1; }

//给定初值

//总中断打开 //定时器中断打开 //定时器开关打开

/*-----------------------------------------------主函数 ------------------------------------------------*/ main() { unsigned char i; Init_Timer0(); //初始化定时器 while(1) { for(i=0;i<200;i++) { DelayMs(10); //延时10ms,累加频率值 frq=i; } for(i=200;i>0;i--) { DelayMs(10); //延时10ms,累减频率值 frq=i;

}

} } /*-----------------------------------------------uS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS ------------------------------------------------*/ void DelayUs2x(unsigned char t) { while(--t); } /*-----------------------------------------------mS 延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {

while(t--) {

//大致延时1mS DelayUs2x(245); DelayUs2x(245); } }/*-----------------------------------------------定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 { TH0=0xfe; TL0=frq; //重新赋值 //低8 位值在主程序中不断累加

SPK=!SPK;

//端口电平取反

}


相关文章:
项目七:救护车消防车声响报警电路
2、了解 555 定时器用电压控制端调制多谐振荡器的频率实现救护车/消防车的报 警声响。 二、实验电路和工作原理 1、下图为模拟救护车声响报警电路和振荡波形。两...
认识救护车,警车,消防车
活动准备 救护车警车消防车的图片 活动过程 一、导入: 小朋友们,你们喜欢什么车?(幼儿活动目标:通过活动让幼儿认识交通工具:救护车警车消防车。 知道各种...
51单片机交通灯(加急救车)
51 单片机控制交通灯 一、实现功能: 1、先南北红灯亮,东西绿灯亮。南北红灯亮...6、急救车从路口过的时候,蜂鸣器响 1s 停 1s 的循环报警。 二、proteus 仿真...
警车、消防车、救护车、工程救险车非执行紧急任务时( )。
警车消防车救护车、工程救险车非执行紧急任务时( )。 A.可以使用报警器、标志灯具B.仍享有道路优先通行权C.不得使用报警器、标志灯具...
根据法律规定,警车、消防车、救护车、工程救险车等特种...
根据法律规定,警车消防车救护车、工程救险车等特种车辆可以使用警报器,下列说法错误的是( )。 A.在执行非紧急任务时,不得使用警报器...
更多相关标签: