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

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;

//端口电平取反

}


相关文章:
3 蜂鸣器救护车
3 蜂鸣器救护车_计算机硬件及网络_IT/计算机_专业资料。救护车 1. 实验任务 实现开发板上的蜂鸣器发出救护车鸣笛声。通过这个实验,掌握采用 Verilog HDL 语言编程...
认识救护车,警车,消防车
活动准备 救护车警车消防车的图片 活动过程 一、导入: 小朋友们,你们喜欢什么车?(幼儿活动目标:通过活动让幼儿认识交通工具:救护车警车消防车。 知道各种...
警车、消防车、救护车、工程救险车非执行紧急任务时( )。
警车消防车救护车、工程救险车非执行紧急任务时( )。 A.可以使用报警器、标志灯具B.仍享有道路优先通行权C.不得使用报警器、标志灯具...
更多相关标签: