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

合集下载

单片机驱动蜂鸣器产生警报声的设计

单片机驱动蜂鸣器产生警报声的设计
}
}
RA5=0;//RE1输出低电平
}
//***********************************************
//函数名:main(void);
//入口参数:无
//出口参数:无
//函数作用:MAIN函数
//说明:
//***********************************************
TRISA=0X00;//设置RA为输出口,关闭并行口
OPTION=0X8F;//分频给WDT,分频比为128
}
//***********************************************
//函数名:buzzer(void);
//入口参数:无
//出口参数:无
//函数作用:产生警报声
//1、硬件不需设置
//**************************************************
//**************************************************
//*****************定义头文件**********************
voidmain(void)
{
port_init();//调用端口初始化函数
while(1)
{
buzzer();//调用报警函数
delayms(250);//总延时1秒
CLRWDT();//清看门狗
delayms(250);
delayms(250);
delayms(250);
CLRWDT();//清看门狗
//**************************************************

51单片机报警声

51单片机报警声

18.“嘀、嘀、……”报警声1.实验任务用AT89S51单片机产生“嘀、嘀、…”报警声从P1.0端口输出,产生频率为1KHz,根据上面图可知:1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。

2.电路原理图图4.18.13.系统板硬件连线(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上,(2.在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭;4.程序设计方法(1.生活中我们常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声,但对于这种报警声,嘀0.2秒钟,然后断0.2秒钟,如此循环下去,假设嘀声的频率为1KHz,则报警声时序图如下图所示:上述波形信号如何用单片机来产生呢?(2.由于要产生上面的信号,我们把上面的信号分成两部分,一部分为1KHZ方波,占用时间为0.2秒;另一部分为电平,也是占用0.2秒;因此,我们利用单片机的定时/计数器T0作为定时,可以定时0.2秒;同时,也要用单片机产生1KHZ的方波,对于1KHZ的方波信号周期为1ms,高电平占用0.5ms,低电平占用0.5ms,因此也采用定时器T0来完成0.5ms的定时;最后,可以选定定时/计数器T0的定时时间为0.5ms,而要定时0.2秒则是0.5ms的400倍,也就是说以0.5ms定时400次就达到0.2秒的定时时间了。

5.程序框图主程序框图中断服务程序框图图4.18.2 6.汇编源程序T02SA EQU 30HT02SB EQU 31HFLAG BIT 00HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV T02SA,#00HMOV T02SB,#00HCLR FLAGMOV TMOD,#01HMOV TH0,#(65536-500) / 256MOV TL0,#(65536-500) MOD 256SETB TR0SETB ET0SETB EASJMP $MOV TH0,#(65536-500) / 256MOV TL0,#(65536-500) MOD 256INC T02SAMOV A,T02SACJNE A,#100,NEXTINC T02SBMOV A,T02SBCJNE A,#04H,NEXTMOV T02SA,#00HMOV T02SB,#00HCPL FLAGNEXT: JB FLAG,DONECPL P1.0DONE: RETIEND7.C语言源程序#include <AT89X51.H>unsigned int t02s;unsigned char t05ms;bit flag;void main(void){TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;ET0=1;EA=1;while(1);}void t0(void) interrupt 1 using 0 {TH0=(65536-500)/256;TL0=(65536-500)%256;t02s++;if(t02s==400){t02s=0;flag=~flag;}if(flag==0){P1_0=~P1_0;}}。

51单片机报警声设计

51单片机报警声设计

20.6 警报的同时LED闪烁
功能说明:在发出警报声的同时,LED也闪烁。

硬件设计

程序工作原理
本程序是对上节程序fs20-5.c功能的扩充,并将上节程序中的音调、 音长、发声次数的固定数值分别利用tone、sound、count 3个参数来代 替,使之在不同的应用中只需通过改变参数就能达到各种需求,无需再 重新编写程序。 为了加强警报效果,在警报的同时增加了LED作原理
若使蜂鸣器发出1kHz的声音,则需要使P3.4引脚产生1kHz的方波,来控 制晶体管不断地ON/OFF,从而使蜂鸣器发出声音。1kHz的方波信号周期为 1ms,高电平占用0.5ms,低电平占用0.5ms,通过调用软件延时程序来实现。 在设计时,将开关K作为发声控制按钮,当按下K后才能发出声音。
程序工作原理本程序是对上节程序fs205c功能的扩充并将上节程序中的音调音长发声次数的固定数值分别利用tonesoundcount3个参数来代替使之在不同的应用中只需通过改变参数就能达到各种需求无需再重新编写程序
第20章 报警声设计
20.1 发出1kHz声音
功能说明:通过单片机的I/O引脚以软件延时的方式产生方波,使蜂鸣器 发出1kHz的声音。
20.5 发出20次的报警声
功能说明:使单片机产生嘀、嘀声音。本节硬件设计与上节相同。

工作原理
利用3层嵌套for循环,内循环产生方波为音调,中循环决定音长,外 循环为发出声音的次数。

音调、音长、发出声音的次数
音调、音长、发出声音的次数是3个不同概念,有不同的作用效果。 本程序中都是利用for循环语句来实现的,所以,要注意for语句在不同地 方所起的不同作用。 • 音调是由发声频率决定的。本节程序中第11行for循环语句决定音调。 • 音长是指连续发声的时间。本节程序中第08行for循环语句决定音长。 • 发声的次数是指响几次报警声而言。本节程序中第06行for循环语句决 定发声的次数。

51单片机交通灯(加急救车)

51单片机交通灯(加急救车)

51单片机控制交通灯一、实现功能:1、先南北红灯亮,东西绿灯亮。

南北红灯亮维持25秒,在南北红灯亮的同时东西绿灯也亮,并维持20秒;到20秒时,东西绿灯闪亮,闪亮3秒后熄灭。

在东西绿灯熄灭时,东西黄灯亮,并维持2秒。

到2秒时,东西黄灯熄灭,东西红灯亮,同时,南北红灯熄灭,绿灯亮,东西红灯亮维持30秒。

南北绿灯亮维持25秒,然后闪亮3秒后熄灭。

同时南北黄灯亮,维持2秒后熄灭,这时南北红灯亮,东西绿灯亮。

周而复始。

2、用一个按键模拟急救车到达。

急救车到达路口时,四个方向的红灯全亮,10秒钟后恢复正常显示。

3、一辆急救车正在过路口时(即四个方向全红灯10秒倒计时未结束),又来了一辆急救车,重新从10秒开始倒计时。

4、急救车过去之后(即10秒倒计时结束),路灯状态要继续急救车到达之前的状态往下运行。

5、数码管显示绿灯变红灯、红灯变绿灯以及急救车10秒钟的倒计时。

6、急救车从路口过的时候,蜂鸣器响1s停1s的循环报警。

二、proteus仿真电路图注:此图仅作为仿真使用。

实际焊接电路时,由于单片机的驱动能力较弱,所以数码管的位选、LED的控制最好加上三极管进行电流放大,否则即使能实现功能,但是LED和数码管的发光的亮度也不强。

三、C语言程序程序#include <reg51.h>#define uchar unsigned char#define uint unsigned int#define duan P0#define wei P2code uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; uchar buff[8] = {10,10,10,10,10,10,10,10};uchar weizhi = 0;uchar alarm = 0;uchar bk_TH1 = 0;uchar bk_TL1 = 0;uchar bk_cnt = 0;uchar bk_cnt_time = 0;uchar cnt_time = 0;uchar cnt = 0;uchar cnt_flash = 0;bit cnt_finish = 0;bit LED = 0;bit beef_flag = 1;sbit Er = P1^0; //东西—红灯sbit Eg = P1^1; //东西—绿灯sbit Ey = P1^2; //东西—黄灯sbit Sr = P1^3; //南北—红灯sbit Sg = P1^4; //南北—绿灯sbit Sy = P1^5; //南北—黄灯sbit beef = P1^6; //蜂鸣器void display(void);void main(void){uchar time = 0;TMOD |= 0x11;TH0 = (65536-2000)/256;TL0 = (65536-2000)%256;TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;ET1 = 1;ET0 = 1;INT0 = 1;EX0 = 1;IP |= 0x02;EA = 1;TR0 = 1;TR1 = 1;Sr = 0;Sg = 0;Sy = 0;Er = 0;Eg = 0;Ey = 0;beef = 0;buff[0] = 11;buff[1] = 11;buff[2] = 11;buff[3] = 11;buff[4] = 11;buff[5] = 11;buff[6] = 10;buff[7] = 10;while(1){while((cnt<20)&&(alarm == 0)){Sr = 1;Sg = 0;Sy = 0;Er = 0;Eg = 1;Ey = 0;time = (25-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<23)&&(alarm == 0)){Sr = 1;Sg = 0;Sy = 0;Er = 0;Eg = LED;Ey = 0;time = (25-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<25)&&(alarm == 0)) {Sr = 1;Sg = 0;Sy = 0;Er = 0;Eg = 0;Ey = 1;time = (25-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<50)&&(alarm == 0)) {Sr = 0;Sg = 1;Sy = 0;Er = 1;Eg = 0;Ey = 0;time = (55-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<53)&&(alarm == 0)) {Sr = 0;Sg = LED;Sy = 0;Er = 1;Eg = 0;Ey = 0;time = (55-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt_finish != 1)&&(alarm == 0)){Sr = 0;Sg = 0;Sy = 1;Er = 1;Eg = 0;Ey = 0;time = (55-cnt);buff[7] = time%10;buff[6] = time/10;}cnt_finish = 0;while(alarm == 1){Er = 1;Eg = 0;Ey = 0;Sr = 1;Sg = 0;Sy = 0;time = (10-cnt);buff[7] = time%10;buff[6] = time/10;if(cnt == 10){TR1 = 0;TH1 = bk_TH1;TL1 = bk_TL1;cnt = bk_cnt;cnt_time = bk_cnt_time;TR1 = 1;alarm = 0;}beef = beef_flag;}beef = 0;}}void int0(void) interrupt 0{TR1 = 0;if(alarm == 0){bk_TH1 = TH1;bk_TL1 = TL1;bk_cnt = cnt;bk_cnt_time = cnt_time;}TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;cnt = 0;cnt_time = 0;alarm = 1;TR1 = 1;}void timer0(void) interrupt 1 {TH0 = (65536-2000)/256;TL0 = (65536-2000)%256;display();}void timer1(void) interrupt 3 {TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;if(++cnt_time == 20){cnt_time = 0;cnt++;beef_flag = ~beef_flag;}if(++cnt_flash == 4){cnt_flash = 0;LED = ~LED;}if(cnt == 55){cnt = 0;cnt_finish = 1;}}void display(void){duan = 0xff;wei = (1<<weizhi);duan = tab[buff[weizhi]];if(++weizhi == 8){weizhi = 0;}}。

蜂鸣器

蜂鸣器

单片机原理及接口技术课程设计报告设计题目:蜂鸣器专业:班级:姓名:学号:一、课程设计题目 (1)二、设计目的 (2)三、蜂鸣器功能 (2)四、操作说明 (2)五、设计原理图 (2)六、设计PCB图 (4)七、程序流程图 (4)八、程序清单 (6)九、器件清单及部分作用 (10)十、参考文献 (11)十一、设计心得体会 (11)一、课程设计题目单片机基本系统的应用:蜂鸣器二、设计目的1、通过单片机课程设计,熟练掌握编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。

2、通过对蜂鸣器的设计,掌握蜂鸣器的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。

3、通过本次单片机课程设计将单片机软硬件结合起来,加强理论联系实际的能力。

4、通过本次课程设计提高学生的综合能力、动手能力、文献资料查阅能力,为毕业设计和以后工作打下一个良好的基础。

三、蜂鸣器功能1、蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

2、蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

3、蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

4、本次课程设计所采用的蜂鸣器为无源的电磁式蜂鸣器,电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。

接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。

振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发。

5、这里的“源”不是指电源。

而是指震荡源。

也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。

而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。

必须用2K~5K的方波去驱动它。

四、操作说明程序调试完成后,点击open File。

在出现的页面上更改相应的串口,连接好硬件,再进行Down load下载,当下面出现握手连接时,拔起短路块进行上电,输入程序,当程序输入完毕后再分别按下三个按键,第一个代表枪声,发出同一频率声调数码管显示为2,第二个键子发出救护车的声音,发出两个频率音调,数码管显示为2和3。

51单片机驱动蜂鸣器发声的实验

51单片机驱动蜂鸣器发声的实验

51单片机驱动蜂鸣器发声的实验
在单片机系统中,除了显示器件外经常用到发声器件,最常见的发声器件就是蜂鸣器。

蜂鸣器一般用于一些要求不高的声音报警及发出按键操作提示音等。

虽然蜂鸣器也有自己固有的频率,但是也可以对其施加不同频率的方波,使之发出一些简单的乐曲。

1.实例功能
使蜂鸣器发声。

通过本实验,能熟练掌握蜂鸣器的应用方法。

2.器件和原理
蜂鸣器最重要的特点是只要按照极性要求加上合适的直流电压就可以发出固有频率的声音,使用起来比扬声器简单。

由此可见,其控制与LED的控制是没有区别的。

3.硬件电路
虽然单片机对蜂鸣器的控制和对LED的控制是一样的,但硬件电路却
有所不同。

因为蜂鸣器是感性负载,一般不建议用单片机的I/0口直接对其进
行操作,最好是加一只驱动三极管。

在要求较高的场合,还要加上一只反相保护二极管。

本实验因为是以学习为目的所以没有加反相二极管保护。

51综合学习系统如上图所示,蜂鸣实验相关硬件电路见下图。

三极管为PNP型,要使蜂鸣器发声,只要将单片机P37口置为低电平就可以了。

4.程序设计。

51单片机蜂鸣器代码理解

51单片机蜂鸣器代码理解

51单片机蜂鸣器代码理解1.引言1.1 概述概述:蜂鸣器是一种广泛应用于电子设备中的声音输出装置,它通过控制某个频率的电信号使蜂鸣器发出特定的声音。

而51单片机,则是一种常见的单片机芯片,具有广泛的应用领域。

本文将主要探讨51单片机蜂鸣器的代码理解和应用。

通过对其基本原理的概述以及相关代码的解析,希望读者能够深入理解51单片机蜂鸣器的工作原理和实现方式。

在第二部分中,我们将介绍单片机蜂鸣器的基本原理。

包括如何通过单片机控制蜂鸣器的电信号频率和时长,从而实现不同的声音效果。

接着,在第二点中,我们将详细解析51单片机蜂鸣器的代码。

通过对代码的分析,读者可以了解到如何使用51单片机的引脚功能和定时器功能来控制蜂鸣器。

最后,在结论部分,我们将对所述内容进行总结,并展望51单片机蜂鸣器在未来的应用前景。

蜂鸣器作为一种重要的声音输出装置,具有广泛的应用前景,可以应用于报警系统、提醒装置等领域。

通过本文的阅读,读者将能够全面了解51单片机蜂鸣器的工作原理和代码实现方式,为相关领域的应用开发提供参考和指导。

让我们开始探索吧!1.2 文章结构文章结构的部分主要介绍了本文的组织和分类方式,以帮助读者更好地理解文章的内容和思路。

本文按照以下结构进行组织:1. 引言部分:介绍了文章的概述、结构和目的。

通过引言部分,读者可以初步了解到本文的内容和主题,并对文章的结构和目的有一个整体的认识。

2. 正文部分:主要分为两个小节,分别是"单片机蜂鸣器的基本原理"和"51单片机蜂鸣器代码解析"。

2.1 单片机蜂鸣器的基本原理:该部分将详细介绍单片机蜂鸣器的基本工作原理,包括蜂鸣器的构成和工作原理,以及单片机如何控制蜂鸣器发出指定的声音。

2.2 51单片机蜂鸣器代码解析:该部分将对51单片机蜂鸣器的代码进行解析,包括如何初始化引脚、设置定时器和中断等相关代码。

通过对代码的逐行解析和说明,读者可以更加深入地理解代码的功能和实现原理。

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

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

/*-----------------------------------------------
名称:喇叭
论坛:
编写:shifang
日期:2009.5
修改:无
内容:模救护车发声
------------------------------------------------*/
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
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);
//TH0=0x00;//给定初值
//TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
主函数

基于51单片机蜂鸣器发声的-C语言程序

基于51单片机蜂鸣器发声的-C语言程序

本例使用延时函数实精品文档按键发音/* 名称:按键发音说明:按下不同的按键会是SOUNDE 发出不同频率的声音。

现不同频率的声音输出,以后也可使用定时器*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit BEEP=P3A 7;sbit K 仁 P1A4;sbit K2=P1A5;sbit K3=P1A6;sbit K4=P1A7;// 延时void DelayMS(uint x){uchar t;while(x--) for(t=0;t<120;t++);}// 按周期 t 发音void Play(uchar t){uchar i;for(i=0;i<100;i++){BEEP=~BEEP;DelayMS(t);}BEEP=0;}void main(){P1=0xff;BEEP=0;while(1){if(K1==0) Play(1);if(K2==0) Play(2);if(K3==0) Play(3);if(K4==0) Play(4);}}精品文档播放音乐/* 名称:播放音乐说明:程序运行时播放生日快乐歌, 未使用定时器中断,所有频率完全用延时 实现*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit BEEP=P3A7;// 生日快乐歌的音符频率表,不同频率由不同的延时来决定uchar code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159, 169,190,119,119,126,159,142,159,0};// 生日快乐歌节拍表,节拍决定每个音符的演奏长短uchar code SONG_LONG[]= {9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};// 延时void DelayMS(uint x){uchar t;while(x--) for(t=0;t<120;t++);}// 播放函数void PlayMusic(){ uint i=0,j,k; while(SONG_LONG[i]!=0||SONG_TONE[i]!=0){ //播放各个音符,SONG_LON为拍子长度for(j=0;j<SONG_LONG[i]*20;j++){BEEP=~BEEP;〃SONG_TON延时表决定了每个音符的频率for(k=0;k<SONG_TONE[i]/3;k++);} DelayMS(10);i++;}}void main(){BEEP=0;while(1){PlayMusic(); // 播放生日快乐DelayMS(500); // 播放完后暂停一段时间}精品文档。

蜂鸣器是怎样发出警报功能的?看完一目了然!

蜂鸣器是怎样发出警报功能的?看完一目了然!

蜂鸣器是怎样发出警报功能的?看完一目了然!
本次实例介绍用C51单片机来驱动蜂鸣器,实现简单的蜂鸣器发出警报的功能。

首先是电路的硬件连接部分。

通常使用仿真软件来进行简单项目的的仿真测试。

下面介绍电路部分。

上图就是用仿真软件绘制的电路原理图,除了LS1之外的部分是单片机最小系统的构成。

X1是一个12MHZ的晶振,C!和C2是两个22pF的电容(陶瓷电容)。

C3是一个10uF的电容。

用于系统的上电复位。

LS1就是一个蜂鸣器,也可以用其他兼容的喇叭代替。

对于蜂鸣器的驱动,其实更为合理的方式是用一个三极管来驱动,或是驱动芯片。

为了方便理解,此处以最简单的方式呈现。

之后的项目中会逐步给出更复杂更专业的设计。

C程序如下:
#include
#define unit unsigned int
#define uchar unsigned char
sbit B=P3^7;
void main(void)
{
B='0';
while(100)
{
for(i=0;i<>
B='1';
for(i=0;i<>
B='0';
}
}
汉得利电子专注于倒车雷达传感器,产品齐全:1000多款产品型号
快捷:一键对比
精准:官网比对
您可以:查价格、查库存量、查货期、查资料参数、下载手册…
好了,写好程序记得生成.hex文件哦,然后烧录到单片机内,也可以直接在仿真软件中测试哦。

如果发现问题记得反馈给我哦。

谢谢大家!。

基于51单片机的汽车预警系统的设计与实现

基于51单片机的汽车预警系统的设计与实现
行 业 应 用 与 交 流
n d u s t r i al Ap p l i c a t i on s an d Commu ni c a t i o n s
自动 化技 术 与应用
Hale Waihona Puke 2 0 1 7年第 3 6 卷第 1 1 期
基于 5 1 单片机的汽车预警系统的设计与实现 ★
预警 的作用 另外 , 该系统采用数码 电子管显示屏可使驾驶者直观 的看到 目 前车 间距离 , 同时 , 采用蜂鸣器报警来预警驾
驶员注意安全车距 。该系统的实时监测 , 对驾驶员 的安全 出行提供 了一定 的保 障。 关 键词 : S TC8 9 C 5 1 ; 预警系统 ; 超声波 ; 测距 中图分类号 : TP 2 1 6 文献标识码 : B 文章编号 : 1 0 0 3 — 7 2 4 1 ( 2 0 1 7 ) 1 1 - 0 1 2 1 - 0 4
wa r ni ng s ys t e m, wh i c h i s b a s e d 5 1 s i n g l e c h i p mi c r o c o mp u t e r , u s e s u l t r a s o n i c d i s t a nc e me a s u r e me n t t e c hn o l og y t o a c c u r a t e l y c a l c u l a t e t h e d i s t a n c e b e t we e n wo t c a r s , i t s d i s t a nc e i s c a l c u l a t e d t h r o u g h t he t i me r e q u i r e d t h e s i g n a l f r o m he t t r a n s mi t t e r t o t h e r e c e i v e r . Th e s y s t e m p r o v i d e s e a r l y wa r n i n g f o r t h e v a io r u s d r i v i n g .I n a d d i t i o n , t h e d i g i t a l t u b e o f t h e s y s t e m d i s p l a y s t h e c o a T e n t d i s t a n c e b e w e t e n he t d r i vi n g , wh i c h t h e d r i v e r c a n s e e i n t ui t i v e l y . At t h e s a me t i me , t h e b u z z e r

51蜂鸣器发不同的声音程序

51蜂鸣器发不同的声音程序

51蜂鸣器发不同的声音程序/****************************************************同时用两个定时器,控制蜂鸣器发声,T0控制频率,T1控制同一频率发声的时长(2s),不同依次频率为1,10,50,100,200,400,800,1k(hz),占空比均为0.5T0的计时周期为125us;T1的计时周期为50ms 。

不同频率对应的num依次为:4000,400,80,40,20,10,5,4*****************************************************/#includesbit beep=P2^3; //unsigned int num=4000,//决定蜂鸣器的响应周期,从而决定不同的频率counter0=0,//T0控制频率counter1=0; //T1控制周期void main(void){ //TMOD=0x12; //T0用自动重装初值的8位计数方式,T1用16位计数方式TH0=0x83; //T0计数周期125usTL0=0x83;TH1=(65536-50000)/256; //T1计数周期50msTL1=(65536-50000)%256;ET0=1; //允许T0中断ET1=1; //允许T1中断EA=1; //开总中断TR0=1; //T0开始计数TR1=1; //T1开始计数beep=1;while(1);}void time0() interrupt 1 {counter0++;if(counter0==num){counter0=0;beep=~beep;}}void time1() interrupt 3 {TH1=(65536-50000)/256; TL1=(65536-50000)%256; counter1++;if(counter1==40){counter1=0;switch(num){case 4000:num=400 ;break; case 400 :num=80 ;break; case 80 :num=40 ;break; case 40 :num=20 ;break; case 20 :num=10 ;break; case 10 :num=5 ;break; case 5 :num=4 ;break; case 4 :num=4000;break; }}}。

《单片机应用技术(C语言)》实训课件—2.1 单片机控制蜂鸣器发声

《单片机应用技术(C语言)》实训课件—2.1 单片机控制蜂鸣器发声

//函数名:delay
//函数功能:实现软件延时
//形式参数:无符号整型变量i
//返回值:无
void delay(unsigned int i)
{
while(i--/主函数
{
while(1)
//无限循环
{
BEEP=1;
//给P1.1引脚高电平
delay(200);
有源蜂鸣器 按照驱动方式来划分 蜂鸣器
无源蜂鸣器
电源×
振荡源
有源蜂鸣器:一通电就会响,直流信号驱动
无源蜂鸣器:方波驱动,频率一般在2kHz到5kHz之 间
9mm
8mm
有源蜂鸣器
无源蜂鸣器
有源蜂鸣器
无源蜂鸣器
不能超过标 注的额定值
V
+
-
有源蜂鸣器
频率一般在2kHz~5kHz, 频率越高,音调也就越高
void delay(unsigned int i)
{
while(i--);
//i次空操作
}
预编译
开始 P1.0
延时 P1.0
延时
1
延时函数 定义
0
主函数
声音报警系统C语言程序
//程序名:beep.c
//功能:声音报警系统
#include <REGX51.H> //包含头文件REGX51.H
sbit BEEP=P1^0; //定义P2.1引脚位名称为BEEP
delay(200); //延时
BEEP=0; //给P1.1引脚低电平
delay(200); //延时
}
}
开始
预编译
P1.0
1
延时 P1.0

蜂鸣器 报警 声音 单片机51

蜂鸣器 报警 声音 单片机51

蜂鸣器报警声音单片机512011 9.12 农历8.15 建模心得51单片机外部中断小程序采用中断0和1 并测试电平触发和边沿触发的区别2011-07-16 19:47:22| 分类:默认分类| 标签:|字号大中小订阅// 8.外部中断的用法// EA=1;//开总中断// EX0=1;//开外部中断0 默认IT0=0 (低)电平触发方式//IT0=1 为边沿触发方式有高低电平变化时发送中断请求//响应中断后硬件自动清0//P3.2 (int0口)口为0时亮一下p3.7的发光二极管电平触发方式p3.7外接电阻和led灯到电源//P3.3 (int1口)口电压变化时亮一下p3.7的发光二极管下降沿触发方式#include<reg52.h>sbit light=P3^7;sbit P3_2=P3^2;sbit P3_3=P3^3;void delay1ms(unsigned int z); //延时1msmain(){EA=1;EX0=1;//默认IT0=0EX1=1;IT1=1; //边沿触发方式while(1);}void int0() interrupt 0 //外部中断0服务程序默认电平触发方式{light=0; //不需要消抖抖动时高电位持续时间短// 一直按下一直有中断delay1ms(300);light=1;}void int1() interrupt 2 //外部中断1服务程序设为下降沿触发方式{delay1ms(10);if(P3_3==0) //需要消抖抖动时有电平变化{light=0;delay1ms(300);light=1;}}void delay1ms(unsigned int z) //延时1ms {unsigned int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}。

51单片机控制喇叭(蜂鸣器)简单发声,频率可调

51单片机控制喇叭(蜂鸣器)简单发声,频率可调

/*-----------------------------------------------------------------------------------------------------------------------------------*//*--*************************功能:【喇叭发出声音,频率可调】*********************--*//*--*************************芯片:【STC12C5A60S2】******************************--*//*--*************************说明:【频率500Hz,单次发声时长1s】******************--*//*--*************************控制:【每按下P1.0一次,喇叭发声1s,长按一直发声】**--*//*------------------------------------------------------------------------------------------------------------------------------------*//*头文件*/#include <reg52.h>#include <intrins.h>sbitControl_Key = P1^0; //定义控制独立按键P1.0,按下发声。

sbitSpeaker_port = P2^7; //定义喇叭控制端口unsigned intnum = 8; //num = (4 * 1000) / Frequency(500Hz) : 决定喇叭的响应周期,从而决定不同的频率unsigned int counter0 = 0; //T0控制频率unsigned int counter1 = 0; //T1控制时长unsigned char Juge_Start; //判断发声1s是否开始。

项目二救护车消防车声响报警电路.doc

项目二救护车消防车声响报警电路.doc

项目二救护车 / 消防车声响报警电路【学习目标】1.熟悉 555 定时器中 5 脚电压控制端的功能和作用2.了解 555 定时器用电压控制端调到多谐振荡器的频率实现救护车和消防车的报警声响。

【项目情景】声响报警电路在实际生活中的应用越来越广泛,救护车上,消防车上,都有用到,人们通过声音来判别各种信号,比如下图中所示的情况,那么,怎样来设计这么一个声响报警电路呢?图 2-1【项目准备】一.元器件配置表 2-1 元器件配置序号名称数量序号名称数量1 555 定时器 4 8 电阻器 2.7K 12 0.5W 扬声器 2 9 电阻器 150K 23 直流稳压电源 1 10 9012PNP 二极管 14 双踪示波器 1 11 电容器 10 uF 25 电阻器 100K 1 12 电容器 100 uF 26 电阻器 10K 4 13 电容器 0.01 uF 47 电阻器 47K 3 14 ICT 8 脚插座 4表 2-1二、元器件简介1.555 定时器555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。

它也常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。

它内部包括两个电压比较器,三个等值串联电阻,一个RS 触发器,一个放电管T及功率输出级。

它提供两个基准电压VCC/3和2VCC /3。

555定时器的功能主要由两个比较器决定。

两个比较器的输出电压控制RS触发器和放电管的状态。

在电源与地之间加上电压,当 5 脚悬空时,则电压比较器C1的同相输入端的电压为2VCC /3 , C2 的反相输入端的电压为VCC/3。

若触发输入端TR 的电压小于VCC/3,则比较器C2 的输出为0,可使RS 触发器置 1 使输出端OUT=1 。

如果阈值输入端TH 的电压大于2VCC/3 ,同时TR 端的电压大于VCC/3 ,则 C1 的输出为 0, C2 的输出为 1 ,可将RS 触发器置0 ,使输出为0 电平。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void Init_Timer0(void)
{
TMOD |= //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
//TH0=0x00;//给定初值
//TL0=0x00;
EA=1; //总中断打开
ET0=1; //定时器中断打开
TR0=1; //定时器开关打开
}
/*------------------------------------------------
{
while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
主函数
------------------------------------------------*/
main()
{
unsigned char i;
Init_Timer0(); //初始化定时器
while(1)
{
for(i=0;i<200;i++)
{
DelayMs(10); //延时10ms,累加频率值
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数unsigned char t,无返回值
unsigned char是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编
unsigned char是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延时1mS
unsigned char是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
}
}
}
/*------------------------------------------------
uS延时函数,含有输入参数unsigned char t,无返回值
unsigned char是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下T=tx2+5 uS

/*-----------------------------------------------
名称:喇叭
论坛:
编写:shifang
日期:2009.5
修改:无
内容:模救护车发声
------------------------------------------------*/
定时器中断子程序
------------------------------------------------*/
void Timer0_isr(void) interrupt 1
{
TH0=0xfe;//重新赋值
TL0=frq; //低8位值在主程序中不断累加
SPK=!SPK; //端口电平取反
}
mS延时函数,含有输入参数unsigned char t,无返回值
unsigned char是定义无符号字符变量,其值的范围是
0~255这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
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);
void DelayUs2x(unsigned char t);//函数声明
void DelayMs(unsigned char t);
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
main()
{
Init_Timer0(); //初始化定时器
while(1)
{
DelayMs(1); //延时1ms,累加频率值
frq++;
}
}
/*------------------------------------------------
uS延时函数,含有输入参数unsigned char t,无返回值
修改:无
内容:模拟消防车发声
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit SPK=P1^2; //定义喇叭端口
unsigned char frq;
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数unsigned char t,无返回值
#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位定时器,使用"|"符号可以在使用多个定时器时不受影响
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit SPK=P1^2; //定义喇叭端口
unsigned char frq;
void DelayUs2x(unsigned char t);//函数声明
void DelayMs(unsigned char t);
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);
}
/*------------------------------------------------
1.
/*-----------------------------------------------
名称:喇叭
论坛:
编写:shifang
日期:2009.5
修改:无
内容:模拟警车发声
------------------------------------------------*/
{
TH0=0xfe;//重新赋值
TL0=frq; //低8位值在主程序中不断累加
SPK=!SPK; //端口电平取反
}

/*-----------------------------------------------
名称:喇叭
论坛:
编写:shifang
日期:2009.5
------------------------------------------------*/
相关文档
最新文档