51单片机通过按键控制蜂鸣器发生详解

单片机开发报告
院 系: 电子工程学院
专 业: 自 动 化
班 级: 自动化1401
学 号: ************
* 名: * *
指导老师: * * *

2018 年 01 月 04 日
一.系统任务
按键控制蜂鸣器发声
二.电路原理图

三.程序设计内容
“叮咚”电子门铃实验程序:常见的家用电子门铃在有客人来访
时候,如果按压门铃按钮时,室内会发出“叮咚”声音,本实验程序
模拟电子门铃的发音,当我们按压实验板上的K1按钮时候,蜂鸣器
发出“叮咚”音乐声,是一个比较实用的程序。
使用无源蜂鸣器输出7个基本音阶
声音是由物体振动所产生的。只是由于物体的材料以及振幅、频率不
同,而产生不同的声音。声音的响度是由振幅决定的,而音调则是由
频率决定的,那么我们只需要控制物体振动的频率,就可以发出固定
的声调。
五.汇编程序
ORG 0000H
AJMP START
ORG 000BH
INC 20H ;中断服务,中断计数器加1
MOV TH0,#0D8H
MOV TL0,#0F0H 12M晶振,形成10毫秒中断
RETI
ORG 001BH
LJMP INTT1 ;跳转到T1中断服务程序
START: MOV DPTR,#00H ;初始化程序
MOV A,#00H
OBUF1 EQU 30H
OBUF2 EQU 31H
OBUF3 EQU 32H
OBUF4 EQU 33H
FLAGB BIT 00H
STOPB BIT 01H
MOV SP,#50H
MOV TH0,#0D8H
MOV TL0,#0F0H
MOV TMOD,#21H
MOV TH1,#09H
MOV TL1,#09H
MOV IE,#8AH
AJMP LOOP
LOOP: JNB P3.2,MUSIC0
JNB P3.1,MAIN
AJMP LOOP
MAIN:
JB P3.1,MAIN ;检测p3.1按钮
LCALL YS10M ;延时去抖动
JB P3.1,MAIN
SETB TR1 ;按钮有效
MOV OBUF1,#00H
MOV OBUF2,#00H
MOV OBUF3,#00H
MOV OBUF4,#00H
CLR FLAGB
CLR STOPB
JNB STOPB,$
AJMP START ;发出“叮咚”完毕,返回重新检测按钮
YS10M: ;10ms延时子程序
MOV R6,#20
D1:
MOV R7,#100
DJNZ R7,$
DJNZ R6,D1
RET
TING: AJMP START
INTT1: ;定时器T1中断服务程序
INC OBUF3 ;中断服务程序中发出一声“叮咚”响声
MOV A,OBUF3
CJNE A,#100,NEXT
MOV OBUF3,#00H
INC OBUF4
MOV A,OBUF4
CJNE A,#20,NEXT
MOV OBUF4,#00H
JB FLAGB,PGSTP
CPL FLAGB
AJMP NEXT
PGSTP:
SETB STOPB
CLR TR1
LJMP INT0RET
NEXT:
JB FLAGB,SOU2
INC OBUF2
MOV A,OBUF2
CJNE A,#04H,INT0RET
MOV OBUF2,#00H
CPL P1.5
LJMP INT0RET
SOU2:
INC OBUF1
MOV A,OBUF1
CJNE A,#05H,INT0RET
MOV OBUF1,#00H
CPL P1.5
INT0RET:
RETI
MUSIC0: JB p3.2,MUSIC0
LCALL YS10M
JB p3.2,MUSIC0
NOP
MOV DPTR,#DAT 表头地址送DPTR
MOV 20H,#00H ;中断计数器清0
MOV B,#00H ;表序号清0
MAIN2: JNB P3.3,TING
CLR A
MOVC A,@A+DPTR ;查表取代码
JZ END0 ;是00H,则结束
CJNE A,#0FFH,MUSIC5
LJMP MUSIC3
MUSIC5:
NOP
MOV R6,A
INC DPTR
MOV A,B
MOVC A,@A+DPTR ;取节拍代码送R7
MOV R7,A
SETB TR0 ;启动计数
MUSIC2:
NOP
CPL P1.5
MOV A,R6
MOV R3,A
LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?
;不等,则继续循环
MOV 20H,#00H ;等于,则取下一代码
INC DPTR
INC B
LJMP MAIN2
MUSIC3: ;休止100毫秒
NOP
CLR TR0
MOV R2,#0DH
MUSIC4:
NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC4
INC DPTR
LJMP MAIN2
END0:
NOP
MOV R2,#0FFH ;歌曲结束,延时
MUSIC6:
MOV R3,#00H
LCALL DEL
DJNZ R2,MUSIC6
CLR TR0
LJMP LOOP
DEL:
NOP
DEL3:
MOV R4,#03H
DEL4:
NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET
DENG1: MOV R3,#64H
DJNZ R3,$
AJMP MAIN
DAT:
DB 30h,30h,26h,26h,20h,20h,1ch,1ch,1ah,1ah,18h,18h,00h
END
六、程序下载及调试
步骤:
1. 点击translate 按钮 预编译
2. 点击build 按钮 编译
3. 点击 rebuild 按钮 编译所有目标
4. 打开普中烧录软件

5. 点击程序下载
四.程序流程图
开 始

初始化设置

按键判断

No
Yes

变电平循环体

中断程序

中断

中断

结束
结束判断
Yes

合集下载

蜂鸣器变声控制实验单片机实验报告

蜂鸣器变声控制实验单片机实验报告

蜂鸣器变声控制实验单片机实验报告一、实验目的1、了解单片机控制蜂鸣器发声的原理。

2、学会使用单片机控制蜂鸣器的频率、占空比、时长等特性。

3、掌握编写蜂鸣器变声程序的方法。

二、实验器材1、单片机培训板。

2、蜂鸣器。

3、杜邦线若干。

三、实验原理1、蜂鸣器通常是由震动片、驱动电路和音箱构成的,同时需要满足一定的电源条件和频率特性才能发声。

四、实验内容1、将蜂鸣器与单片机连接好。

3、观察蜂鸣器的变声效果。

五、实验步骤1、将蜂鸣器与单片机连接好。

将蜂鸣器的正极连接单片机的P1.0口,将蜂鸣器的负极连接单片机的GND口。

2、编写蜂鸣器变声程序,具体过程如下:1)定义相关变量和函数:需要定义相关变量和函数,例如频率、占空比、时长等变量,以及控制蜂鸣器发声的函数。

2)初始化:需要对单片机进行初始化设置,包括端口初始化、定时器初始化等。

3)控制蜂鸣器发声:通过改变PWM的频率、占空比、时长等特性,来控制蜂鸣器的发声。

4)停止蜂鸣器发声:在需要停止蜂鸣器发声时,关闭PWM输出端口即可。

3、观察蜂鸣器的变声效果。

根据程序设定的频率、占空比和时长等特性,可以看到蜂鸣器在不同的情况下发出不同的声音。

六、实验结果1、在经过程序设计后,蜂鸣器成功发出变声效果,根据程序的要求可以发出不同的声音。

3、在实验中还可以通过添加其他的控制模块,例如按键、温度传感器等,来实现更复杂的控制操作。

1、本次实验主要掌握了单片机控制蜂鸣器发声的原理和方法,通过自己编写程序来控制蜂鸣器发声。

3、通过本次实验,学生们不仅掌握了相关的电路和编程知识,同时还锻炼了自己的实践能力和创新思维。

单片机C51程序设计 蜂鸣器发声

单片机C51程序设计 蜂鸣器发声
单片机C51程序设计 蜂鸣器发 声
电磁式蜂鸣器
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种 类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜 片及外壳等组成。接通电源后,振荡器产生的音频信号 电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在 电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器
if((!K1)||(!K2)||(!K3)||(!K4)) //发现按键,立即退出播放 { TR0=0; return; }
不
发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电 流
形成回路发出声音。因此,可以通过程序控制P3.7脚的电平 来
使蜂鸣器发出声音和关闭。程序中改变单片机P3.7引脚输出 波
形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、
音调的声音。
用4个按键控制播放音乐。其中K1-K3每 个按键播放一首乐曲,K4按键停止音乐播放。
单片机驱动蜂鸣器原理
蜂鸣器发声原理是电流通过电磁线圈,使电磁线 圈产生磁场来驱动振动膜发声的,因此需要一定的电 流才能驱动它,单片机IO引脚输出的电流较小,单片 机输出的TTL电平基本上驱动不了蜂鸣器,因此需要 增加一个电流放大的电路。S51增强型单片机实验板见 右下图。
蜂鸣器的正极接到+5V 的电源上,负极接三极管发射极 E,基级B经过限流电阻R1后由单片机的P3.7引脚控制,当 P3.7输出高电平时,三极管截止,无电流流过线圈,蜂鸣器
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、 阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由 晶体管或集成电路构成,当接通电源后(1.5~15V直 流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的 音频信号,阻抗匹配器推动压电蜂鸣片发声。

使用按键自动控制LED闪烁及蜂鸣器鸣叫—函数的封装及调用

使用按键自动控制LED闪烁及蜂鸣器鸣叫—函数的封装及调用

单片机技术及应用
评价等级 完成任务最终评价等级
(评价参考:自评20%、组评30%、师评50%)
8
任务小结
•学生小结:总结自己收获; •教师小结:强调程序的核心思想,编 程的要点,以及程序错误查找方法。
9
课后任务
•利用所学知识实现同时控制两个LED灯 循环点亮。学生利用课余时间完成任务, 并将程序拍照传给教师QQ。
函数定义举例如下:
①
delay
//无参数无返回值函数定义
{
}
②
delay( unsigned int i) //有参数无返回值函数定义
{
}
③
unsigned int sum(unsigned char a,unsigned char b)//有参数有返回值函数定义
{
unsigned int k;
//用于存放返回值的变量
评价内容
1.安全用电
2.设备及器材的安全
3.记录整理完整准确 4. 符合6S管理理念 1、函数的概念及作用 2、函数的定义 3、函数的参数 4、函数的返回值 5、函数的调用
自评
小组评价 教师评价
优☆ 良△ 中√ 差×
汇报展示
1.作品展示(可以为实物作品展 示、PPT汇报、简报、作业等形 式)
2. 语言流畅,思路清晰
……
return k;
//返回值
}
四、函数的参数
C51语言的函数采用参数传递方式, 使一个函数可以对不同的变量数据 进行功能相同处理,在调用函数时 实际参数被传入到被调用函数的形 式参数中,在执行完函数后使用 return语句将一个和函数类型相同 的返回值返回给调用语句。 函数定义好以后,要被其他函数调 用才能被执行。定义函数时在函数 名称后面的括号里列举的变量名称 为“形式参数”;调用函数时,函数 名称后面的括号里的变量称为"实 际参数"。

单片机蜂鸣器控制实验报告

单片机蜂鸣器控制实验报告

单片机蜂鸣器控制实验报告摘要:本实验旨在通过使用单片机(Microcontroller Unit,MCU)来控制蜂鸣器发出不同的声音,进一步熟悉单片机的使用和控制技术。

通过实验,我们可以了解如何编程控制蜂鸣器,从而为更复杂的电子设备的开发做好准备。

本实验基于XXXXX单片机平台进行,具体的实验步骤和控制代码将在下文进行详细说明。

1. 实验介绍单片机蜂鸣器控制实验是一项基础实验,旨在让学生了解单片机的控制原理和实践操作。

在实验中,我们使用XXXXX单片机平台。

此平台具有良好的可编程性,且集成了许多功能模块,是学习和使用单片机的理想选择。

2. 实验材料- XXXXX单片机开发板- 蜂鸣器模块- 连接线- 电源3. 实验步骤3.1 连接电路将蜂鸣器模块的正极与单片机开发板的IO口相连,将负极与开发板的GND相连。

使用连接线进行正确的连接。

3.2 编程调试根据单片机平台的要求,采用XXXXX编程语言编写蜂鸣器控制程序。

以下是一段示例代码:```#include <XXXXX.h>int main() {while(1) {// 产生蜂鸣器控制信号XXXXX_WritePin(GPIOX, PinX, HIGH);delay_ms(1000);XXXXX_WritePin(GPIOX, PinX, LOW);delay_ms(1000);}}```在该示例代码中,通过控制GPIOX的PinX引脚输出高电平或低电平,来控制蜂鸣器的工作状态。

通过设置适当的延迟时间,我们可以调整蜂鸣器的鸣叫频率和持续时间。

3.3 烧录程序将编写好的程序烧录到单片机开发板中。

按照开发板的烧录方法进行操作。

3.4 调试和测试烧录完成后,将开发板连接到电源,并观察蜂鸣器的工作情况。

根据我们在代码中设定的参数,蜂鸣器应该会发出特定频率和持续时间的声音。

4. 结果与分析在实验过程中,我们可以根据需要编写不同的程序来控制蜂鸣器的状态,例如不同的频率、间隔时间和持续时间。

单片机蜂鸣器

单片机蜂鸣器

单片机蜂鸣器(总5页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验原理51单片机的一个I/O口控制speaker发声,演唱祝你平安歌曲。

主要器件以及电路图单片机——AT89C51,蜂鸣器——speaker。

一、电磁式蜂鸣器驱动原理二、蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。

S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图三、如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的引脚控制,当输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。

因此,我们可以通过程序控制脚的电平来使蜂鸣器发出声音和关闭。

四、五、程序中改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。

另外,改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。

;------------------------------------; 蜂鸣器演奏--祝你平安; 功能:蜂鸣器-蜂鸣器奏乐-祝你平安;------------------------------------SPK bitORG 0000HLJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0EFH ;12M晶振,形成10毫秒中断RETISTART:MOV SP,#60H ;计数器中断初始化MOV TH0,#0D8HMOV TL0,#0EFHMOV TMOD,#01HMOV IE,#82HMUSIC0:NOPMOV DPTR,#DAT ;表头地址送DPTRMOV 20H,#00H ;中断计数器清0MOV B,#00H ;表序号清0MUSIC1:NOPCLR AMOVC A,@A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5LJMP MUSIC3MUSIC5:NOPMOV R6,AINC DPTRMOV A,BMOVC A,@A+DPTR ;取节拍代码送R7MOV R7,ASETB TR0 ;启动计数MUSIC2:NOPCPL SPKMOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTR; INC BLJMP MUSIC1MUSIC3:NOPCLR TR0 ;休止100毫秒MOV R2,#0DHMUSIC4:NOPMOV R3,#0FFHLCALL DELDJNZ R2,MUSIC4INC DPTRLJMP MUSIC1END0:NOPMOV R2,#64H ;歌曲结束,延时1秒后继续MUSIC6:MOV R3,#00HLCALL DELDJNZ R2,MUSIC6LJMP MUSIC0DEL:NOPDEL3:MOV R4,#02HDEL4:NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETNOPDAT: ;祝你平安db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h db 20h,10h,2bh,10h,26h,30h,30h,80h,00HEND ;程序结束。

单片机蜂鸣器音乐

单片机蜂鸣器音乐

单片机蜂鸣器音乐单片机在我们的生活中无处不在,它被广泛地应用在各种电子产品中,为我们的生活带来了便利。

今天,我要向大家介绍的是一种基于单片机的蜂鸣器音乐播放器。

一、硬件部分1、单片机:我们选用的是AT89C51单片机,它具有低功耗、高性能的特点,非常适合用于音乐播放器。

2、蜂鸣器:蜂鸣器是用来发出声音的,我们将其连接在单片机的输出口上。

3、存储芯片:为了能够播放存储在芯片中的音乐,我们需要将音乐以某种格式存储在芯片中。

常用的存储芯片有EEPROM和Flash芯片。

4、按键:为了能够选择播放不同的音乐,我们需要添加一个按键。

二、软件部分1、音乐编码:我们需要将音乐转换成二进制编码,这样才能被单片机读取并播放。

常用的音乐编码格式有MIDI、WAV等。

2、音乐播放:当按下按键时,单片机读取存储芯片中的音乐数据,并通过蜂鸣器播放。

3、音乐选择:通过按键可以选择不同的音乐进行播放。

4、音量控制:我们可以通过编程来控制蜂鸣器的音量大小。

三、调试与测试1、硬件调试:检查连接是否正确,确保没有短路或断路的情况。

2、软件调试:将程序下载到单片机中进行调试,确保能够正常播放音乐。

3、综合测试:将所有硬件和软件都连接起来进行测试,确保能够正常工作。

四、总结与展望通过本次实验,我们成功地制作了一个基于单片机的蜂鸣器音乐播放器。

它具有简单、实用的特点,可以用来播放存储在芯片中的音乐。

未来,我们可以进一步扩展其功能,例如添加更多的按键来选择不同的音乐、添加显示屏来显示歌曲名称等。

我们也可以将其应用到其他领域,例如智能家居、智能安防等。

单片机蜂鸣器唱歌程序在许多应用中,单片机蜂鸣器经常被用来发出声音或音乐。

下面是一个使用单片机蜂鸣器唱歌的程序示例。

我们需要确定单片机和蜂鸣器的连接方式。

通常,单片机具有一个内置的蜂鸣器输出引脚,可以将蜂鸣器连接到这个引脚上。

在以下的示例中,我们将假设单片机具有一个内置蜂鸣器输出引脚,并将其连接到P1.0端口上。

1-按键电路蜂鸣器电路设计讲解


4、一键多功能控制编程讲解
• 一个按键按不同的次数输出不同的信号, 控制3个彩色LED点亮。
一键多功能参考程序
• • • • • • • • • • • • • • • • • • • • • • • • /* 功能:一键多功能控制 L2-4-CX1.C 设计:杨荣国 时间:2010-11-23 */ #include<reg51.h> sbit KEY=P1^0; main() { int t=0; while(1) { if(KEY==0) { while(KEY==0); //如果KEY仍然为低电平,则执行; t=t+1; if(t>=4) t=1; } if(t==1) P2=0xfe; if(t==2) P2=0xfd; if(t==3) P2=0xfb; } }
三极管间接控制
• S9012为PNP三极管 基极接收高电平信号E 级与C级导通。 • S9013为NPN三极管 S9013 NPN 基极接收低电平信号C 级与E级导通。 • 经测试基极链接1K的 电阻C级与E级流过的 电流 ma。
三极管的用法
• 三极管分为PNP和NPN。 有三个引脚组成分别是基 极b,发射极e,集电极c。 • PNP三极管b极串联1k电 PNP b 1k 阻接低电平e和c极导通, 电流方向与箭头方向相同, 为高电平则断开。 • 经过测试与字符S靠近的 为e极,中间的为b极。
SFC51入门实验板按键部分
• 从图可知四个按键分 别与单片机引脚的 P3.3、P3.4、P3.5、 P3.6连接。定义P3.6 为1号按键,P3.3为4 号按键。Leabharlann 3、蜂鸣器工作原理仿真讲解
• 图1 测试蜂鸣器额定电压 与电流分别为5V,20MA • 图2 输出高电平控制蜂鸣 器。(电流流出)蜂鸣器 不能正常工作。 • 图3 输出低电平控制蜂鸣 器。(电流流进)蜂鸣器 不能正常工作。

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单⽚机开发板上的即为⽆源蜂鸣器。

蜂鸣器相关电路图可以看出,信号是通过P15传递到ULN2003D芯⽚后进⽽传递到芯⽚的OUT5(即BEEP端⼝)再传递到蜂鸣器中的,其中ULN2003D芯⽚起着电流放⼤的作⽤。

控制代码⾸先我们先获得控制蜂鸣器的引脚,从电路图可以看出是P15,所以:sbit BEEP= P1^5;因为这是⽆源蜂鸣器,所以我们需要给它提供脉冲信号输⼊才能使它⼯作。

⽽当BEEP为0时有电流,BEEP为1时⽆电流,所以我们需要循环改变BEEP的值,主函数代码如下所⽰:int main() {while (1){BEEP = ~BEEP;deley(10);}}如果我们希望改变蜂鸣器的⾳调,只需要改变脉冲信号的频率即可,也就是while循环中deley()的参数。

我们也可以不断改变deley()中填⼊的参数来使蜂鸣器发出奇怪的声⾳ :int main() {u16 time = 10;u8 cnts = 50;u8 i;for(time=10;time<200;time++) {for(i=0;i<cnts;i++) {BEEP = ~BEEP;deley(time);}}}独⽴按键独⽴按键电路图可以看到,这4个独⽴按键都是⼀端和单⽚机的引脚(P3[0..3])相连,⽽另⼀端直接接地的。

这些按键的效果是,当按键没有按下时,它们对应的端⼝的输出是⾼电平,⽽当按键按下之后,这些端⼝的输出则变为低电平了。

因此我们可以使⽤轮询的⽅式查看这些端⼝的电平情况来检测按钮是否被按下,如果按下,则我们可以进⾏计数等控制其他元件的操作。

按键控制⼀个LED的点亮和熄灭我们希望当点击按键时,第⼀个LED点亮,⽽在此单击时则熄灭。

按照之前的思路,我们很容易就能写出对应的控制代码:sbit OneLED = P2^0; // 使⽤OneLED来控制对应的引脚的输出sbit k1 = P3^1;void keypros() {if (k1 == 0) {deley(1000); // 消抖if (k1 == 0) {OneLED = ~OneLED;}while (!k1);}}int main() {while (1) {keypros();}}重要的是keypros()函数中的内容,当我们点击第⼀个按钮时,k1的值会变为0,因此我们进⾏轮询的时候就会进⼊到keypros()函数的第⼀个if中。

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

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit SPK=P1^2; //定义喇叭端口
unsigned char frq;
void DelayUs2x(unsigned char t);//函数声明
void DelayMs(unsigned char t);
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数unsigned char t,无返回值
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
定时器中断子程序
------------------------------------------------*/
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档