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

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;

//端口电平取反

}


相关文章:
基于51单片机蜂鸣器发声的 C语言程序
基于51单片机蜂鸣器发声的 C语言程序_工学_高等教育_教育专区。51单片机 按键发音 /* 名称:按键发音 说明:按下不同的按键会是 SOUNDER 发出不同频率的声音。本...
51单片机__蜂鸣器音乐 ——梁祝
单片机实训---蜂鸣器 一、设计思路学习案例中的实例程序,通过对程序的修改,使蜂鸣器能发出音乐 二、程序代码 #include <reg52.h> sbit speaker = P3^6; unsigne...
3 蜂鸣器救护车
3 蜂鸣器救护车_计算机硬件及网络_IT/计算机_专业资料。救护车 1. 实验任务 实现开发板上的蜂鸣器发出救护车鸣笛声。通过这个实验,掌握采用 Verilog HDL 语言编程...
51单片机_蜂鸣器控制
51单片机_蜂鸣器控制_计算机硬件及网络_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 51单片机_蜂鸣器控制_计算机硬件及网络_IT/计算机_专业资料。51...
基于c51单片机编写简单蜂鸣器音乐程序的方法
基于c51单片机编写简单蜂鸣器音乐程序的方法_电子/电路_工程科技_专业资料。蜂鸣器,51单片机,初学者,c51程序。很多初学单片机的朋友会接触到如何使用蜂鸣器来编曲的的...
认识救护车,警车,消防车
活动准备 救护车警车消防车的图片 活动过程 一、导入: 小朋友们,你们喜欢什么车?(幼儿活动目标:通过活动让幼儿认识交通工具:救护车警车消防车。 知道各种...
51单片机闹钟铃声蜂鸣器部分
51单片机闹钟铃声蜂鸣器部分_信息与通信_工程科技_专业资料。void alarm_clock()...基于51单片机蜂鸣器发声... 2页 1下载券 51单片机实现蜂鸣器警车... 12页 2...
51蜂鸣器发不同的声音程序
51蜂鸣器发不同的声音程序_IT/计算机_专业资料。同时用两个定时器,控制蜂鸣器发声,T0控制频率, T1控制同一频率发声的时长(2s) ,不同依次频率为 1,10,50,100...
51单片机蜂鸣器播放单音节音乐
51单片机蜂鸣器播放单音节音乐_电子/电路_工程科技_专业资料 暂无评价|0人阅读|0次下载|举报文档 51单片机蜂鸣器播放单音节音乐_电子/电路_工程科技_专业资料。51 ...
51单片机实现超声波测距报警系统
51单片机测距,LCD实时的现实距离,当距离低于要求时蜂鸣器报警 目录1 引言 ......以往的汽 车倒车测距一般有四种:1 嘀嘀声加闪光、2 音乐声加闪光、3 语音声加...
更多相关标签: