c51单片机程序-驱动蜂鸣器
单片机实验报告-蜂鸣器驱动实验
本科实验报告课程名称:单片机原理与接口技术实验项目:蜂鸣器驱动实验实验地点:电机馆专业班级:学号:学生姓名:指导教师:2015年 6 月9 日蜂鸣器驱动实验一、实验目的1、学习输入/输出端口控制方法2、了解音频发声原理二、实验说明本实验是利用89C51端口定时器输出控制端口,驱动扬声器发声,声音的频率高低由延时快慢控制。
本实验是利用单片机唱歌的声音控制程序,请用户思考如何修改程序,可以让蜂鸣器发出不同频率,不同长短的声音。
三、实验原理1、通过单片机控制驱动信号使蜂鸣器发出不同音调的声音,驱动方波的频率越高,音调就越高;驱动方波频率越低,音调越低。
由此,我们可以根据驱动方波的频率使蜂鸣器凑出各种音调的声音。
2、由于单片机I/O口的输出电流较小,因此需要三极管放大电路驱动蜂鸣器。
四、主要仪器设备单片机仿真试验箱,THKL-C51型单片机仿真器,计算机五、实验内容及步骤INT1输出音频信号接音频驱动电路,使蜂鸣器的发声。
1、使用单片机最小应用系统和蜂鸣器模块。
蜂鸣器模块的短路帽J1插到VCC方向,用导线将INT1接到蜂鸣器输入端。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“MUSIC.ASM”源程序,进行编译,直到编译无误。
4、全速运行程序,扬声器周期性的发出“八月桂花开”歌曲。
(添加“MUSIC1.ASM”程序为“祝你平安”歌曲)5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。
(ISP烧录器的使用查看附录二)六、流程图及源程序开始输出音频脉冲低电平延时输出音频脉冲高电平延时;标题 '祝你平安'发声程序ORG 0000HLJMP STARTORG 000BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0EFH ;12M晶振,形成10毫秒中断RETISTART:mov dptr,#2000h ;站长添加,使得程序开始运行时在数码管上显示一个小数点 mov a,#80hmovx @dptr,aMOV SP,#50HMOV 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 P2.2MOV A,R6MOV R3,ALCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码cpl p1.0 ;站长添加,使得程序运行时小数点跟着音乐节拍闪烁 INC DPTRINC 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 db30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h db20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h db30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h db30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h db2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h db20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h db20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h db20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h db20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h db18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h db30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h db39h,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. 熟悉51单片机的基本结构和工作原理。
2. 掌握51单片机的I/O口编程方法。
3. 学习蜂鸣器的驱动原理和应用。
4. 通过实验,提高动手实践能力和问题解决能力。
二、实验原理蜂鸣器是一种将电信号转换为声音信号的器件,常用于产生按键音、报警音等提示信号。
根据驱动方式,蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。
1. 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。
2. 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才能发声,调整提供振荡脉冲的频率,可发出不同频率的声音。
在本次实验中,我们使用的是无源蜂鸣器。
51单片机通过控制P1.5端口的电平,产生周期性的方波信号,驱动蜂鸣器发声。
三、实验器材1. 51单片机实验板2. 蜂鸣器3. 连接线4. 电路焊接工具5. 编程软件(如Keil)四、实验步骤1. 电路连接:- 将蜂鸣器的正极连接到51单片机的P1.5端口。
- 将蜂鸣器的负极接地。
2. 程序编写:- 使用Keil软件编写程序,实现以下功能:1. 初始化P1.5端口为输出模式。
2. 通过循环,不断改变P1.5端口的电平,产生方波信号。
3. 调整方波信号的频率,控制蜂鸣器的音调。
3. 程序下载:- 将程序下载到51单片机中。
4. 实验观察:- 启动程序后,观察蜂鸣器是否发声,以及音调是否与程序设置一致。
五、实验结果与分析1. 实验结果:- 成功驱动蜂鸣器发声,音调与程序设置一致。
2. 结果分析:- 通过实验,我们掌握了51单片机的I/O口编程方法,以及蜂鸣器的驱动原理。
- 在程序编写过程中,我们学习了方波信号的生成方法,以及如何调整方波信号的频率。
六、实验总结本次实验成功地实现了51单片机控制蜂鸣器发声的功能,达到了预期的实验目的。
通过本次实验,我们提高了以下能力:1. 对51单片机的基本结构和工作原理有了更深入的了解。
2. 掌握了51单片机的I/O口编程方法。
3. 学习了蜂鸣器的驱动原理和应用。
51单片机项目教程项目 5 蜂鸣器实验
图5- 9蜂鸣器实物结果
当SM0、SM1=01时,串行口设为方式1的双机串行通信。TXD脚和 RXD脚分别用于发送和接收数据。
5.2技术准备
方式1发送时,数据位由TXD端输出,发送一帧信息为10位:1位起始 位0,8位数据位(先低位)和1位停止位1。当CPU执行一条数据写 SBUF的指令,就启动发送。发送开始时,内部发送控制信号变为有 效,将起始位向TXD脚(P3.0)输出,此后每经过一个TX时钟周期, 便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部 发送完毕后,中断标志位TI置1。 方式1接收时(REN = 1),数据从RXD(P3.1)引脚输入。当检测到 起始位的负跳变,则开始接收。当一帧数据接收完毕后,同时满足以 下两个条件,接收才有效。 (1)RI = 0,即上一帧数据接收完成时,RI = 1发出的中断请求已被 响应,SBUF中的数据已被取走,说明“接收SBUF”已空。 (2)SM2 = 0或收到的停止位 = 1(方式1时,停止位已进入RB8), 则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标 志RI置“1”。
5.2技术准备
5.2.2 了解实验板蜂鸣器电路
图5- 3蜂鸣器电路
5.2技术准备
5.2.3 蜂鸣器驱动电路
蜂鸣器驱动电路如图5-4所示。
图5- 4蜂鸣器驱动电路
5.2技术准备
5.2.4串行口的结构
单片机串口结构如图5-5所示。有两个物理上独立的接收、发送缓冲器 SBUF(属于特殊功能寄存器),可同时发送、接收数据。控制寄存器共 有两个:特殊功能寄存器SCON和PCON。发送和接收引脚分别是TXD (P3.0)和RXD(P3.1)。
SM0 0 0 1 1 SM1 0 1 0 1 工作 方式 0 1 2 3 功能简介 移位寄存器 8位UART 9位UART 9位UART 比特率 OSC/12 可变 OSC/32或 OSC/64 可变
单片机驱动蜂鸣器原理与程序学习资料
单片机驱动蜂鸣器原理与程序单片机驱动蜂鸣器原理与设计作者:mcu110 来源:51hei 点击数:12159 更新时间:2007年08月01日【字体:大中小】蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。
多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
下面是电磁式蜂鸣器的外形图片及结构图。
电磁式蜂鸣器实物图:电磁式蜂鸣器结构示意图:图 1 图 2 电磁式蜂鸣器内部构成:1. 防水贴纸2. 线轴3. 线圈4. 磁铁5. 底座6. 引脚7. 外壳8. 铁芯9. 封胶10. 小铁片11. 振动膜12. 电路板一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。
S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:图 3如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。
51单片机实现蜂鸣器警车、救护车、消防车声
------------------------------------------------*/
main()
{
Init_Timer0(); //初始化定时器
while(1)
{
DelayMs(1); //延时1ms,累加频率值
frq++;
}
}
/*------------------------------------------------
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数unsigned char t,无返回值
unsigned char是定义无符号字符变量,其值的范围是
日期:2009.5
修改:无
内容:模拟警车发声
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbit SPK=P1^2; //定义喇叭端口
unsi现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
1.
/*-----------------------------------------------
名称:喇叭
论坛:
编写:shifang
//TH0=0x00;//给定初值
//TL0=0x00;
EA=1; //总中断打开
基于c51单片机编写简单蜂鸣器音乐程序的方法
uint i;
for(i=0;i<jp;i++)
{
sound(s);
if(s==0xff)break;
}
}
//*******************************************************************
void main()//主函数
{
while(1)
{
c=0;//用来使数组从头开始读取
/*3*/case 0x0d:j=s/330;break;case 0x0e:j=s/659;break;case 0x0f:j=s/1318;break;
/*4*/case 0x10:j=s/349;break;case 0x11:j=s/370;break;case 0x12:j=s/698;break;case 0x13:j=s/740;break;case 0x14:j=s/1379;break;case 0x15:j=s/1480;break;
0x01,0x0d,0x16,0x1c,0xff,0x1c,0x1c,0x16,0x07,0x07,0x10,0x0d,0xff, 0x01,0x0d,0x16,0x1c,0xff,
0x1c,0x1c,0x22,0x1c,0x16,0x10,0x0d,0x10,0x0d,0x07,0x01,0x00} ;//*
uint code music[]=//这是一个“童话”谱子的数组,与m_t()子程序中的十六进制数一一对应,0xff代表每次音乐的停顿,0x00表示音乐的结束
{0x16,0x10,0x0d,0xff, 0x0d,0x10,0x0d, 0xff, 0x0d,0x10,0x0d,0x10,0x0d,0x07,0x01,0xff,
51单片机蜂鸣器代码理解
51单片机蜂鸣器代码理解1.引言1.1 概述概述:蜂鸣器是一种广泛应用于电子设备中的声音输出装置,它通过控制某个频率的电信号使蜂鸣器发出特定的声音。
而51单片机,则是一种常见的单片机芯片,具有广泛的应用领域。
本文将主要探讨51单片机蜂鸣器的代码理解和应用。
通过对其基本原理的概述以及相关代码的解析,希望读者能够深入理解51单片机蜂鸣器的工作原理和实现方式。
在第二部分中,我们将介绍单片机蜂鸣器的基本原理。
包括如何通过单片机控制蜂鸣器的电信号频率和时长,从而实现不同的声音效果。
接着,在第二点中,我们将详细解析51单片机蜂鸣器的代码。
通过对代码的分析,读者可以了解到如何使用51单片机的引脚功能和定时器功能来控制蜂鸣器。
最后,在结论部分,我们将对所述内容进行总结,并展望51单片机蜂鸣器在未来的应用前景。
蜂鸣器作为一种重要的声音输出装置,具有广泛的应用前景,可以应用于报警系统、提醒装置等领域。
通过本文的阅读,读者将能够全面了解51单片机蜂鸣器的工作原理和代码实现方式,为相关领域的应用开发提供参考和指导。
让我们开始探索吧!1.2 文章结构文章结构的部分主要介绍了本文的组织和分类方式,以帮助读者更好地理解文章的内容和思路。
本文按照以下结构进行组织:1. 引言部分:介绍了文章的概述、结构和目的。
通过引言部分,读者可以初步了解到本文的内容和主题,并对文章的结构和目的有一个整体的认识。
2. 正文部分:主要分为两个小节,分别是"单片机蜂鸣器的基本原理"和"51单片机蜂鸣器代码解析"。
2.1 单片机蜂鸣器的基本原理:该部分将详细介绍单片机蜂鸣器的基本工作原理,包括蜂鸣器的构成和工作原理,以及单片机如何控制蜂鸣器发出指定的声音。
2.2 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语言程序
本例使用延时函数实精品文档按键发音/* 名称:按键发音说明:按下不同的按键会是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); // 播放完后暂停一段时间}精品文档。
(原创)51单片机C语言程序设计--速学教程实例(进阶篇)之蜂鸣器奏乐
/******************************************************************//*名称:蜂鸣器奏乐演示程序*//*作者:苏涛*//*时间:2011-01-18*//*单位:安徽建筑工业学院电子与信息工程学院*//*07级电子信息工程专业二班*//******************************************************************/#include<reg52.h>//头文件调用,写程序时都要加上#include"SoundPlay.h"/******************************************************************//*名称:延时函数*//*功能:C语言中常用的for循环延时方法*//*延时长短可以通过变量初值来改变*//******************************************************************/void Delay1ms(uint count){uint i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}/*****************************Music***************************************************/ //挥着翅膀的女孩unsigned char code Music_Girl[]={0x17,0x02,0x17,0x03,0x18,0x03,0x19,0x02,0x15,0x03,0x16,0x03,0x17,0x03,0x17,0x03,0x17,0x03,0x18,0x03,0x19,0x02,0x16,0x03,0x17,0x03,0x18,0x02,0x18,0x03,0x17,0x03,0x15,0x02,0x18,0x03,0x17,0x03,0x18,0x02,0x10,0x03,0x15,0x03,0x16,0x02,0x15,0x03,0x16,0x03,0x17,0x02,0x17,0x03,0x18,0x03,0x19,0x02,0x1A,0x03,0x1B,0x03,0x1F,0x03,0x1F,0x03,0x17,0x03,0x18,0x03,0x19,0x02,0x16,0x03,0x17,0x03,0x18,0x03,0x17,0x03,0x18,0x03,0x1F,0x03,0x1F,0x02,0x16,0x03,0x17,0x03,0x18,0x03,0x17,0x03,0x18,0x03,0x20,0x03,0x20,0x02,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x20,0x03,0x21,0x03,0x20,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x1F,0x03,0x1B,0x03,0x19,0x03,0x19,0x03,0x15,0x03,0x1A,0x66,0x1A,0x03,0x19,0x03,0x15,0x03,0x15,0x03,0x17,0x03,0x16,0x66,0x17,0x04,0x18,0x04,0x18,0x03,0x19,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x20,0x03,0x21,0x03,0x20,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x1F,0x03,0x1B,0x03,0x19,0x03,0x19,0x03,0x15,0x03,0x1A,0x66,0x1A,0x03,0x19,0x03,0x19,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x00,0x1A,0x03,0x1A,0x03,0x1A,0x03,0x1B,0x03,0x1B,0x03,0x1A,0x03,0x19,0x03,0x19,0x02,0x17,0x03,0x15,0x17,0x15,0x03,0x16,0x03,0x17,0x03,0x18,0x03,0x17,0x04,0x18,0x0E,0x18,0x03,0x17,0x04,0x18,0x0E,0x18,0x66,0x17,0x03,0x18,0x03,0x17,0x03,0x18,0x03,0x20,0x03,0x20,0x02,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x20,0x03,0x21,0x03,0x20,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x1F,0x04,0x1B,0x0E,0x1B,0x03,0x19,0x03,0x19,0x03,0x15,0x03,0x1A,0x66,0x1A,0x03,0x19,0x03,0x15,0x03,0x15,0x03,0x17,0x03,0x16,0x66,0x17,0x04,0x18,0x04,0x18,0x03,0x19,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x20,0x03,0x21,0x03,0x20,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x66,0x1F,0x03,0x1B,0x03,0x19,0x03,0x19,0x03,0x15,0x03,0x1A,0x66,0x1A,0x03,0x19,0x03,0x19,0x03,0x1F,0x03,0x1B,0x03,0x1F,0x00,0x18,0x02,0x18,0x03,0x1A,0x03,0x19,0x0D,0x15,0x03,0x15,0x02,0x18,0x66,0x16,0x02,0x17,0x02,0x15,0x00,0x00,0x00}; //同一首歌unsigned char code Music_Same[]={0x0F,0x01,0x15,0x02,0x16,0x02,0x17,0x66,0x18,0x03,0x17,0x02,0x15,0x02,0x16,0x01,0x15,0x02,0x10,0x02,0x15,0x00,0x0F,0x01,0x15,0x02,0x16,0x02,0x17,0x02,0x17,0x03,0x18,0x03,0x19,0x02,0x15,0x02,0x18,0x66,0x17,0x03,0x19,0x02,0x16,0x03,0x17,0x03,0x16,0x00,0x17,0x01,0x19,0x02,0x1B,0x02,0x1B,0x70,0x1A,0x03,0x1A,0x01,0x19,0x02,0x19,0x03,0x1A,0x03,0x1B,0x02,0x1A,0x0D,0x19,0x03,0x17,0x00,0x18,0x66,0x18,0x03,0x19,0x02,0x1A,0x02,0x19,0x0C,0x18,0x0D,0x17,0x03,0x16,0x01,0x11,0x02,0x11,0x03,0x10,0x03,0x0F,0x0C,0x10,0x02,0x15,0x00,0x1F,0x01,0x1A,0x01,0x18,0x66,0x19,0x03,0x1A,0x01,0x1B,0x02,0x1B,0x03,0x1B,0x03,0x1B,0x0C,0x1A,0x0D,0x19,0x03,0x17,0x00,0x1F,0x01,0x1A,0x01,0x18,0x66,0x19,0x03,0x1A,0x01,0x10,0x02,0x10,0x03,0x10,0x03,0x1A,0x0C,0x18,0x0D,0x17,0x03,0x16,0x00,0x0F,0x01,0x15,0x02,0x16,0x02,0x17,0x70,0x18,0x03,0x17,0x02,0x15,0x03,0x15,0x03,0x16,0x66,0x16,0x03,0x16,0x02,0x16,0x03,0x15,0x03,0x10,0x02,0x10,0x01,0x11,0x01,0x11,0x66,0x10,0x03,0x0F,0x0C,0x1A,0x02,0x19,0x02,0x16,0x03,0x16,0x03,0x18,0x66,0x18,0x03,0x18,0x02,0x17,0x03,0x16,0x03,0x19,0x00,0x00,0x00};//两只蝴蝶unsigned char code Music_Two[]={0x17,0x03,0x16,0x03,0x17,0x01,0x16,0x03,0x17,0x03,0x16,0x03,0x15,0x01,0x10,0x03,0x15,0x03,0x16,0x02,0x16,0x0D,0x17,0x03,0x16,0x03,0x15,0x03,0x10,0x03,0x10,0x0E,0x15,0x04,0x0F,0x01,0x17,0x03,0x16,0x03,0x17,0x01,0x16,0x03,0x17,0x03,0x16,0x03,0x15,0x01,0x10,0x03,0x15,0x03,0x16,0x02,0x16,0x0D,0x17,0x03,0x16,0x03,0x15,0x03,0x10,0x03,0x15,0x03,0x16,0x01,0x17,0x03,0x16,0x03,0x17,0x01,0x16,0x03,0x17,0x03,0x16,0x03,0x15,0x01,0x10,0x03,0x15,0x03,0x16,0x02,0x16,0x0D,0x17,0x03,0x16,0x03,0x15,0x03,0x10,0x03,0x10,0x0E,0x15,0x04,0x0F,0x01,0x17,0x03,0x19,0x03,0x19,0x01,0x19,0x03,0x1A,0x03,0x19,0x03,0x17,0x01,0x16,0x03,0x16,0x03,0x16,0x02,0x16,0x0D,0x17,0x03,0x16,0x03,0x15,0x03,0x10,0x03,0x10,0x0D,0x15,0x00,0x19,0x03,0x19,0x03,0x1A,0x03,0x1F,0x03,0x1B,0x03,0x1B,0x03,0x1A,0x03,0x17,0x0D,0x16,0x03,0x16,0x03,0x16,0x0D,0x17,0x01,0x17,0x03,0x17,0x03,0x19,0x03,0x1A,0x02,0x1A,0x02,0x10,0x03,0x17,0x0D,0x16,0x03,0x16,0x01,0x17,0x03,0x19,0x03,0x19,0x03,0x17,0x03,0x19,0x02,0x1F,0x02,0x1B,0x03,0x1A,0x03,0x1A,0x0E,0x1B,0x04,0x17,0x02,0x1A,0x03,0x1A,0x03,0x1A,0x0E,0x1B,0x04,0x1A,0x03,0x19,0x03,0x17,0x03,0x16,0x03,0x17,0x0D,0x16,0x03,0x17,0x03,0x19,0x01,0x19,0x03,0x19,0x03,0x1A,0x03,0x1F,0x03,0x1B,0x03,0x1B,0x03,0x1A,0x03,0x17,0x0D,0x16,0x03,0x16,0x03,0x16,0x03,0x17,0x01,0x17,0x03,0x17,0x03,0x19,0x03,0x1A,0x02,0x1A,0x02,0x10,0x03,0x17,0x0D,0x16,0x03,0x16,0x01,0x17,0x03,0x19,0x03,0x19,0x03,0x17,0x03,0x19,0x03,0x1F,0x02,0x1B,0x03,0x1A,0x03,0x1A,0x0E,0x1B,0x04,0x17,0x02,0x1A,0x03,0x1A,0x03,0x1A,0x0E,0x1B,0x04,0x17,0x16,0x1A,0x03,0x1A,0x03,0x1A,0x0E,0x1B,0x04,0x1A,0x03,0x19,0x03,0x17,0x03,0x16,0x03,0x0F,0x02,0x10,0x03,0x15,0x00,0x00,0x00};/*************************************************************************************/ void main(){InitialSound();while(1){Play(Music_Girl,0,3,360);Delay1ms(500);Play(Music_Same,0,3,360);Delay1ms(500);Play(Music_Two,0,3,360);Delay1ms(500);}}/******************************************************************//*头文件:SOUNDPLAY.H*//*说明:此头文件来源于网络*//******************************************************************//*说明**************************************************************曲谱存贮格式unsigned char code MusicName{音高,音长,音高,音长....,0,0};末尾:0,0表示结束(Important)音高由三位数字组成:个位是表示1~7这七个音符十位是表示音符所在的音区:1-低音,2-中音,3-高音;百位表示这个音符是否要升半音:0-不升,1-升半音。
基于C51单片机矩阵键盘控制蜂鸣器的应用讲解
学校代码 10126 学号科研创新训练论文题目基于C51单片机的蜂鸣器和流水灯的应用院系内蒙古大学鄂尔多斯学院专业名称自动化年级 2013 级学生姓名高乐指导教师高乐奇2015年06月20日基于C51单片机的蜂鸣器和流水灯的应用摘要当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
本文介绍了单片机的发展及应用,和基于单片机的蜂鸣器和流水灯的知识及应用,还介绍了此次我所设计的课题。
关键词:C-51单片机,控制系统,流水灯,蜂鸣器,程序设计The application of buzzer and flowing water light based on C51 MCUAuthor:GaoLeTutor:GaoLeQiAbstractThis age is a new technology emerge in endlessly era, in the electronic field especially automation intelligent control field, the traditional schism components or digital logic circuit, is composed of control system with unprecedented speed was replaced by micro-controller intelligent control system. SCM has small, strong function, low cost, etc, it can be said that wide application, intelligent control and automatic control core is themicro-controller.This article introduces the MCU development and application,the knowledge and application of buzzer and flowing water light based on MCU,then introduces the task I have designed this time. Keyword:C51 micro-controller,control system,flowing waterlight,buzzer ,programming目录第一章绪论第二章概述2. 1什么是单片机2.2 单片机的发展2.3 单片机的应用第三章硬件3.1 单片机流水灯电路原理图及工作原理3.2 单片机蜂鸣器电路原理图及工作原理3.3 STC-51单片机的硬件结构第四章单片机应用系统的软件设计第五章结论致谢参考文献附录第一章绪论在单片机的应用过程中,单片机只是应用系统的一个核心部件,为把单片机系统应用于不同的领域,只掌握单片机的基础知识是远远不够的,要想构成一个完善的应用系统,还要熟悉执行机构及硬件接口电路的应用特性,同时,还应该掌握系统的结构布局、印刷电路板的结构布局及软件的设计技巧这些书本上学不到的知识,因此为设计出完善的应用系统,必须在实际工作中勤于实践,逐步积累这方面的经验。
单片机驱动蜂鸣器的程序设计
时代农机TIMES AGRICULTURAL MACHINERY2019年第2期第46卷第2期Vol.46No.22019年2月Feb.2019摘要:驱动蜂鸣器是编程中的基本程序,从中能掌握单片机产生不同频率方波的编程方法。
关键词:编程;蜂鸣器;程序设计作者简介:纪瀚涛(1997-),男,辽宁大连人,大学本科,主要研究方向:机械电子工程。
单片机驱动蜂鸣器的程序设计纪瀚涛,王伟(沈阳工学院,辽宁抚顺113122)1可编程控制器运用MCS-51单片机,使用I/O 输出音频脉冲,脉冲经放大滤波后,驱动扬声器发声。
若要产生f 的频率,则需于T 时间内(其中T=1/f ),进行吸、放各一次,换言之,磁铁产生磁性、磁铁失去磁性的时间各为T /2,成为半周期。
2驱动蜂鸣器程序的编制如图1所示,由单片机的P3.7口联接一个NPN 型的三极管,并于蜂鸣器BUZ1相连接。
当P3.1口输出信号时,蜂鸣器会产生相应频率的奉命信号。
由单片机的P3.7口输出1kHz 的信号,持续0.1s ,停止0.5s ,则蜂鸣器发出0.1s 的“哔”的声音。
要产生1kHz 的频率,则半周期为0.5ms ,P3.7所送出的信号中,0.5ms 为高电平,0.5ms 为低电平。
若0.5ms 为高电平与0.5ms 为低电平为一组信号(总共1ms ),连续送出100组,即可得到1kHz 的声音约0.1s ;停止输出0.1s 后,再送出0.5s 的信号。
2.1电路图图12.2程序#include<reg51.h>sbit buzzer=P3^7;void delay (int );void pulse_BZ (int ,int ,int );//声明蜂鸣器发声函数main (){while (1){pulse_BZ (100,1,1);//蜂鸣器发声100×(0.5ms+0.5ms )=0.1sdelay (1000);//延迟1000×0.5ms=0.5s}}void delay (int x )//0.5ms 延迟函数{int i ,j ;for (i=0;i<x ;i++)for (j=0;j<60;j++);}void pulse_BZ (int count ,int TH ,int TL )//蜂鸣器发声函数{int i ;for (i=0;i<count ;i++)//计数count 次{buzzer=1;//输出高电平delay (TH );//延迟TH ×0.5msbuzzer=0;//输出低电平delay (TL );//延迟TL×0.5ms}}3结语运用MCS-51单片机控制驱动信号使蜂鸣器发出不同音调的声音,声音的频率由延时程序控制,频率越高,音调就越高;频率越低,音调越低。
单片机四位连体共阴数码管与蜂鸣器程序
单片机四位连体共阴数码管与蜂鸣器程序以下是单片机四位连体共阴数码管与蜂鸣器的程序示例(以51单片机为例):```C#include <reg51.h>unsigned char code displacement[10]= //码盘;0-9对应的码值{0xc0, //00xf9, //10xa4, //20xb0, //30x99, //40x92, //50x82, //60xf8, //70x80, //80x90 //9};void delay_ms(unsigned int msec) //延时函数{unsigned int i,j;for(i=0;i<msec;i++)for(j=0;j<1275;j++);}void main(){unsigned int count=1111; //计数器的初始值为1111unsigned char i,j,k;while(1){k=count%10;//个位i=count/10%10;//十位j=count/100%10;//百位P0=displacement[k];//显示个位P2=0x0c;//使能个位显示器delay_ms(5);//延时5ms,即刷新频率为20HzP0=displacement[i];//显示十位P2=0x14;//使能十位显示器delay_ms(5);P0=displacement[j];//显示百位P2=0x24;//使能百位显示器delay_ms(5);P0=0xff;//关闭所有数码管P2=0x34;//关闭所有数码管delay_ms(5);count++; //计数器加1if(count==10000) //计数到9999后从头开始count=0;if(count<=9999 && count>=999) //计数到999时蜂鸣器发出声音{P1=0x01;//控制蜂鸣器开启delay_ms(10);P1=0x00;//控制蜂鸣器关闭delay_ms(10);}}}```在这个示例程序中,使用了一个计数器来循环计数,同时将计数器的个位、十位、百位分别显示在三个共阴数码管中。