当前位置:文档之家› 蜂鸣器实验

蜂鸣器实验

蜂鸣器实验
蜂鸣器实验

课程设计报告书

课程设计名称:蜂鸣器实验

班级:

报告人:

报告时间:2012.10.25

一.51单片机简介

51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。

当前常用的51系列单片机主要产品有:

*Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;

*ATMEL的:89C51、89C52、89C2051等;

*Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品

89C51单片机的基本组成:

·一个8位的80C51微处理器(CPU)。

·片内256字节数据存储器RAM/SFR,用以存放可以读/写的数据,如:运算的中间结果、最终结果以及欲显示的数据等。

·片内4KB程序存储器Flash ROM,用于存放程序、一些原始数据和表格。

·4个8位并行I/O端口P0~P3,每个端口既可以用作为输入,也可作为输出。·两个16位的定时器/计数器,每个定时器/计时器都可以设置成计时方式,用于对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。

·具有5个中断源、两个中断优先级的中断控制系统。

·一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与PC机之间的串行通信。

·片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许震荡频率为24MHz。

·89C51单片机与8051相比,具有省电工作方式,即休闲方式及掉电方式。(以上各个部分通过片内8位数据总线(DBUS)相连接)

二.设计方案

1、选型

本次试验采用STC89C52RC单片机来实现蜂鸣器的实验,11.0592MHz的晶振,用USB通信的1,4针脚作为电源接口,DB9作为通信接口,采用MAX232单芯片实现89C51系列单片机与PC机的RS—232C标准接口通信电路。

MAX232的电源变换电路部分的电容选型为4个1uF的瓷片电容或者钽电容(独石电容效果不好),MAX232中的与Vcc相连的去耦电容用0.1uF的瓷片或钽电容。

MAX232介绍:由于89C51单片机输入、输出电平为TTL电平,而PC机配置的是RS232C标准串行接口,二者的电气规范不一致,因此,要完成PC机与单片机的数据通信,必须进行电平转换。

2、原理图的绘制

本课程设计用Protel 99SE软件绘制原理图,绘制图如下:

3、外围电路

外围电路主要有:蜂鸣器电路,复位电路,P1口的LED显示电路,晶振电路,接口电路(USB,BD9,MAX232芯片),电源电路(USB线路供电),按键开关电路(4P开关,6P锁开关)。附加:排针电路,作为以后单片机扩展用。

三.电路板构成

1、电路板的焊接

焊接过程需要注意虚焊、脱焊。电路板选用的是通用板,不能持续受高温,所以焊接的时候不能让电烙铁在板子上接触时间太长,否则,板子就会损坏,导致板子焊接口的金属环脱落,金属锡焊接不上。

焊接晶振的时候,不能让晶振离单片机太远,最好是紧紧挨着XTAL1和XTAL2口进行焊接,布线的时候,不能让长线和排线布局在晶振的上方,否则,都会引起晶振的非正常工作。

2.烧入程序

单片机的烧入程序是通过RS-232协议进行传输程序,通过DB9数据线连接单片机和PC机,利用STC-ISP下载器下载程序,先关断单片机电源,开启下载程序下载,等提示开启电源后开启,考试自动烧入程序。

3、关于复位电路

复位操作有上电自动复位和按键手动复位两种方式,本电路板采用手动复位和上电自动复位组合方式。

复位电路虽然简单,但其作用非常重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。

晶振频率X1为4MHz时,C2、C3应为100pF;晶振频率X1为6MHz时,C2、C3应为47pF~100pF;晶振频率X1为12MHz~25MHz,C2、C3应为47pF。

(1)、阻容复位时,电容C1为10uF,电阻R1为10K。

(2)、RC/RD+系列单片机HD版本,RST脚内部已有45K~100K下拉电阻。

4、蜂鸣器电路

蜂鸣器的电路由蜂鸣器和放大电路组成,本次试验采用PNP型三极管放大。

四.实验内容

1、proteus仿真软件的使用

设计出初始电路,在proteus中画出简要图形,如下:

2、Keil C 的使用

利用Keil C 编写程序,使P1.0口发出不同频率的声音,从而形成各种歌曲。

(本次试验采用《生日快乐》歌曲)

程序编写完成后,编译无误后,生产.HEX 文件,将.HEX 文件导入到proteus

仿真软件的单片机中,运行仿真,蜂鸣器会出现生日快乐歌。

3、Protel 99SE 的使用

初步的设计已经实现,接下来要具体设计电路的各个细节,利用Protel 99SE

设计出电路。

五.总结

1、总结

本次课程设计主要是让我们初步了解单片机的结构、工作原理,所以本次课程设计让我们熟悉了仿真软件protues 的使用、对Protel99SE 的巩固和对程序编写的能力的提升。

本次的课程设计分别从硬件和软件两个方面学习单片机的相关内容。硬件方面,我们学习其硬件构造,工作基础,工作原理;软件方面,我们学习其根据硬件来实现软件的配置,如:指令的使用,汇编的使用,中断系统的使用,定时器的使用,89C51串行口及串行通信技术,应用系统配置及接口技术。

2单片机检查其是否正常工作方法

(1)用示波器探头监视RST 引脚,按下复位键,观察是否有足够幅度的波形输出,还可以通过改变复位电路阻容值进行实验。

(2)用示波器查看XTAL2端是否有脉冲信号输出。

(3)用示波器查看ALE 端是否有脉冲信号输出,若有脉冲信号输出,则89C51基本上是好的。

(4)要检查一个89C51小系统上电后CPU 能否正常工作,也可以用示波器看 PSEN __________

端有无脉冲输出。如有,则说明基本上工作正常。

(5)E A ————/V PP 脚的选用

在89C52中,当EA 口接高电平时,CPU 只访问片内Flash ROM 并执行内部程序存储器中的指令;当EA 接低电平(接地)时,CPU 只访问片外ROM 并执行片外程序存储器中的指令,而不管是否有片内程序存储器。

而在本次课程设计89C52芯片中,EA 有内置的上拉电阻,所以,当访问片内ROM 时,无需再外部接上拉电阻,只需要悬空EA 口即可。

3 组员分工

主要负责电路设计 主要负责报告的编写

主要负责仿真软件proteus 的使用 主要负责查询各种器件的资料

单片机按键控制蜂鸣器发声程序(严选参考)

#include typedef unsigned char uint8; typedef unsigned int uint16; uint8 Count,i; sbit Speak =P1^2; //蜂鸣器器控制脚 sbit key1 =P3^2;//按键控制引脚 sbit key2 =P3^3; sbit key3 =P3^4; /*以下数组是音符编码*/ uint8 code SONG[] ={ 0xff,0x39,0x30,0x33,0x30,0xff,0x30,0x30,0x00,}; void Time0_Init()//定时器T0方式1,定时10ms { TMOD = 0x01; IE = 0x82; TH0 = 0xDC; TL0 = 0x00; } void Time0_Int() interrupt 1 { TH0 = 0xDC; TL0 = 0x00; Count++; } void delay (uint8 k)//按键防抖延时 { uint8 j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } void Delay_xMs(uint8 x)//发声延时 { uint8 i,j; for(i=0; i

} } void Play_Song(uint8 i)//蜂鸣器发声函数 { uint8 Temp1,Temp2; uint8 Addr; Count = 0; //中断计数器清0 Addr = i *3; while(1) { Temp1 = SONG[Addr++]; if (Temp1 == 0xFF) //休止符 { TR0 = 0; Delay_xMs(100); } else if (Temp1 == 0x00) //歌曲结束符 { return; } else { Temp2 = SONG[Addr++]; TR0 = 1; while(1) { Speak = ~Speak; Delay_xMs(Temp1); if(Temp2 == Count) { Count = 0; break; } } } } } void keyscan (void)//按键切换声音函数 { if(key1==0) { delay(10);

两个定时器蜂鸣器,一个控制频率,另一个控制时间

//同时利用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同一个频率持续的时间,间隔300ms依次输出 1、"1 0、" // 50、" 100、" 200、" 400、"800HZ的方波 #include//52单片机头文件 #include //包含有左右循环移位子函数的库 #define uint unsigned int//宏定义 #define uchar unsigned char sbit Waveout=P1^0; uchar tt; uint fre,flag; uint Freq[]={1,10,50,100,200,400,800,1000} void main()//主函数{fre=500; TMOD=0x11;//设置定时器0,定时器1为工作方式1 TH0=(65536-fre)/256;

TL0=(65536-fre)%256; TH1=(65536-500)/256; TL1=(65536-500)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 ET1=1; TR1=1; TR0=1;//启动定时器0 while (1) //等待中断产生{if(tt=a){tt=0; Waveout=~Waveout;}}}void timer0() interrupt 1//定时器0中断{TR0=0;//进中断后先把定时器0中断关闭,防止内部程序过多而造成中断丢失TH0=(65536-fre)/256; TL0=(65536-fre)%256; tt++;}void timer1() interrupt 3//定时器1中断用来产生300微秒时间定时{TH1=(65536-500)/256; TL1=(65536-500)%256; flag++; if(flag==6){flag=0; freq=Freq[i];}}

嵌入式- 蜂鸣器控制实验

实验二蜂鸣器控制实验 实验目的:1 了解ARM处理器PWM接口的处理机制 2 掌握在S3C2440A平台下进行PWM接口应用编程实验器材:Sinosys-EA2440实验箱PC机 实验原理:脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。即通过改变方波的占空比表示不同的模拟信号的电平。 在ARM嵌入式实验中,其实是通过微处理器中的计数器,对经过频率变换的输出频率周期进行计数,在PWM中,是通过两个寄存器(TCNTBn和TCMPBn)对输出信号的占空比进行调制,TCNTBn可以设置为TCMPBn+X,当TCNTBn在TCMPBn和TCMPBn+X 之间计数时,TOUTn(即输出信号)输出低电平,当TCNTBn计数下降到TCMPBn时,TOUTn电平反转,变为高电平,直到TCNTBn计数减到0,如果此时开启了重载,则又把预定的值重新装入TCNTBn和TCMPBn中,重复以上过程。 在ARM嵌入式PWM中,会提供一个基准时钟作为输入时钟,PWM调制会对输入的时钟进行分频等操作进入计时器逻辑,其电路图2.1如下:

图2.1 PWM计时器框图 如图2.1,输入的时钟PCLK经过一个8bit预置器和一个分频器,将得到的时钟进入计数器逻辑板块作为驱动时钟,而输出的TOUT则作为蜂鸣器(蜂鸣器控制电路如图2.2)的驱动信号。 图2.2 蜂鸣器控制电路

实验总结:实验的主函数首先设置时钟,端口初始化,并捕捉进入测试函数的指令,与实验一大致相同,在此不在赘述,重点分析测试函数。测试函数如下: void Beep(int freq,int ms) { int div,i rGPBCON&=~0x3; //将GPB0作为输入口rGPBCON|=0X2; // 接入TIMER0 rTCFG0&=~0XFF; // 设置prescaler为32 rTCFG0|=0XF; rTCFG1&=~0XF; //选择mux=1/16 rTCFG1|=0X3; div=plck/32/16/freq 计算TCNTB0的值rTCNTB0=div; rTCMPB0=rTCNTB0>>2; 占空比为4:1 rTCON&=~0X1F; 设置死区自动重载反转人工载入开始rTCON|=0XB; 关闭死区开启重载关反转开人工载入开始rTCON&=~2; 关闭人工载入 for(i=1,i

单片机按键控制蜂鸣器发声程序

#include typedef unsigned char uint8; typedef unsigned int uint16; uint8 Count,i; sbit Speak =P1A2; //蜂鸣器器控制脚 sbit keyl =卩3人2;〃按键控制引脚 sbit key2 =P3A3; sbit key3 =P3A4; /* 以下数组是音符编码 */ uint8 code SONG[] ={ 0xff,0x39,0x30,0x33,0x30,0xff,0x30,0x30,0x00,}; void Time0_Init()// 定时器 T0 方式 1 ,定时 10ms { TMOD = 0x01; IE = 0x82; TH0 = 0xDC; TL0 = 0x00; void Time0_Int() interrupt 1 { TH0 = 0xDC; TL0 = 0x00; Count++; } void delay (uint8 k)// 按键防抖延时 { uint8 j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } void Delay_xMs(uint8 x)// 发声延时 { uint8 i,j; for(i=0; i

Count = 0; // 中断计数器清 0 Addr = i *3; while(1) { Temp1 = SONG[Addr++]; if (Temp1 == 0xFF) //休止符 { TR0 = 0; Delay_xMs(100); } else if (Temp1 == 0x00) //歌曲结束符 { return; } else { Temp2 = SONG[Addr++]; TR0 = 1; while(1) { Speak = ~Speak; Delay_xMs(Temp1); if(Temp2 == Count) { Count = 0; break; } } } } }void keyscan (void)// 按键切换声音函数{ if(key1==0) { delay(10); if(key1==0) {

单片机实验报告-蜂鸣器驱动实验

本科实验报告 课程名称:单片机原理与接口技术实验项目:蜂鸣器驱动实验 实验地点:电机馆 专业班级:学号: 学生姓名: 指导教师: 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烧录器的使用查看附录二)

单片机控制蜂鸣器概要

单片机控制蜂鸣器20年月日

目录 绪论 (1) 1、硬件设计 (2) 1.1 总体设计图 (2) 1.2 简易结构框图 (2) 1.3各部分硬件设计及功能 (3) 1.3.1 蜂鸣器发声电路:(如图1.3.1) (3) 1.3.2 电源稳压电路: (4) 1.4 元件清单 (4) 2、软件设计 (5) 2.1设计思想 (5) 2.2 程序流程图 (5) 2.3 音调、节拍以及编码的确定方法 (6) 2.3.1音调的确定 (6) 2.3.2 节拍的确定 (8) 2.3.3 编码 (9) 3、电路仿真与分析 (10) 4、电路板焊接、调试 (11) 4.1 焊接 (11) 4.2 调试 (12) 5、讨论及进一步研究建议 (12) 6、心得 (12) 7、单片机音乐播放器程序实例(卡农) (13)

绪论 蜂鸣器播放音乐电路设计对于单片机初学者来说是一个简单易实现的课题。通过编写程序使单片机产生一定频率的方波信号,方波信号进入蜂鸣器便产生我们熟知的音调。 我们用定时/计数器使单片机产生方波,利用定时/计数器使输出管脚在一定周期内反复翻转,达到所需频率,而我们给定时/计数器的初始值就是我们的音符—半周期数据表,通过我们播放的音乐的乐谱,来对数据表进行调用。 我们用延时子程序来表示节拍,不同的节拍代表不同的延时。 完成此次设计之后完全可以进行扩展,例如增加按键以及LED灯光效果,制成一个简易的音乐盒,给人以视觉听觉等全方位的享受。

1、硬件设计1.1 总体设计图 1.2 简易结构框图

1.3各部分硬件设计及功能 1.3.1 蜂鸣器发声电路:(如图1.3.1) 图1.3.1 如图所示,蜂鸣器发声电路是播放音乐电路的主要执行电路,它由一个蜂鸣器,一个三极管和一个电位器组成。蜂鸣器负责发声,三极管将电流放大,而电位器则控制流过蜂鸣器电流的大小,来达到控制音量的目的。

中断定时蜂鸣器实验

中断定时蜂鸣器实验 一.实验目的 1.掌握ARM2131开发环境ADS,熟悉开发环境的常用工具以及相应功能。 2.学习建立ADS的工程文件、编译连接设置、调试操作等。 3.学习对中断向量VTC、GPIO口的设置。 4.学习定时器中断的应用 二.实验设备 PC兼容机一台,操作系统WINDOWS 2000,安装ADS1.2(ARM Developer Suite 的成熟版本) 三.实验原理 随着信息技术技术的飞速发展,ARM技术方案架构作为一种具备低功耗、高性能、以及小体积等特性的32位嵌入式微处理器,得到了众多的知识产权授权用户,其中包括世界顶级的半导体和系统公司。目前已被广泛的用于各类电子产品,汽车、消费娱乐、影像、工业控制、海量存储、网络、安保和无线等领域。被业界人士认为,基于ARM的技术方案是最具市场前景和市场优势的解决方案。LPC2131 Philips LPC2131 是基于ARM7TDMI-S 的高性能32 位RISC 微控制器,它一方面具有ARM处理器的所有优点:低功耗、高性能;同时又具有较为丰富的片上资源,非常适合嵌入式产品的开发。其特点如下: ·集成了Thumb 扩展指令集。 ·32KB可在系统中编程(ISP)的片内Flash和可在应用中编程(IAP)的8KB RAM,具有向量中断控制器。 ·2个UART,2个I2C 串行接口,2 个SPI串行接口,2 个定时器(7 个捕获/ 比较通道),PWM单元可提供多达6个PWM输出,8通道10位ADC,实时时钟RTC,看门狗定时器WDT,48 个通用I/O引脚。 ·CPU时钟高达60MHz,具有片内晶体振荡器和片内PLL。 GPIO:(General Purpose Input Output) GPIO是用来进行输入输出的,那么肯定有寄存器进行控制。对于输入的话,可以通过读取寄存器来确定引脚的高电平还是低电平;对于输出的话,可以通过写某个寄存器来让这个引脚输出高低电平.GPxCON,GPACON每一位对应着一根引脚(23根)0:代表输出;1:相应的引脚为地址线或用于地址控制对于PORT B-PORT J的话,GPxCON中每两位控制一根引脚00:输入;01:输出;10:特殊功能;11:保留。GPxDA T用于读或者写。GPxUP,1:不使用内部的上拉电阻;0:使用内部上拉电阻。 向量控制寄存器VICVectCntl0-15记录了各个通道号及其使能位。 当中断发生时,VICVectAddr0-15中的一个值会被copy到VICVectAddr. 如果是非向量中断则VICdefaultAddr被copy到VICVectAddr. 程序跳转到VICVectorAddr指向的地址。 中断返回时,写0x00到VICVectAddr. 非向量中断是指那些虽然已经打开(允许),但是没有在相应的VICVectorCntl0~15 和VICVectorAddr0~15中设置的中断。 关于中断设置: 1、首先,硬复位后所有的Special Function Registor都有默认值。不必考虑设置的顺序问题。可以先设置好中断,再开通模块功能。

蜂鸣器和弦音发声控制

蜂鸣器和弦音发声控制 前言:现在一些带按键显示控制面板的家电(比较常见的是柜式空调)在按键操作的时候会有悦耳的和弦音发出,特别是开关机或操作上下键时会有不同变调的和弦音,相比普通的嘀嘀声给人更愉悦的操作体验。 1.控制方式说明 此处以型号为SH2225T2PA的蜂鸣器(谐振频率2.6KHz)为例。蜂鸣器模块有两个驱动引脚与MCU相连,一个是振荡信号输入引脚,由MCU提供相应频率的方波信号驱动蜂鸣器发声,一个是供电控制端,供电切断后蜂鸣器靠电解电容放电维持其发声,会有音量渐渐变小的效果。 原理图如下所示,MC9为供电控制端,MC8为振荡信号输入端。MC9为高电平时,三极管Q4导通,然后Q2导通,蜂鸣器开始供电,同时电容CD2充电。若MC8有一定频率的方波信号发出,则蜂鸣器可发出鸣叫。若此时先关掉供电,即MC9 置低电平,MC8依然发出方波信号,则蜂鸣器可依靠CD2放电发出声音,但随着电容电量减少,音量会逐渐减小,形成蜂鸣声渐隐的和弦音效果。要实现变调的效果,则可通过短时间内切换发出几种不同频率的蜂鸣声来实现。

以下是3种比较典型的和弦音的实现细节:(符号说明:Tf:频率给定持续时间(ms)Tv:电压给定持续时间(ms)F:输出频率(KHz)) 单声和弦音:短暂鸣响后音量渐隐 F=2.6,Tv=200,Tf=1000 开机和弦音:三升调,按音调分3个阶段 1.F= 2.3,Tv=200,Tf=200 2.F=2.6,Tv=200,Tf=200 3.F=2.9,Tv=100,Tf=2100 关机和弦音:三降调,按音调分3个阶段 1.F= 2.9,Tv=200,Tf=200 2.F=2.6,Tv=200,Tf=200 3.F=2.3,Tv=100,Tf=2100 2.编程实例 MCU:STM8S903K3 开发环境:STVD 4.1.6+Cosmic 4.2.8 /* buzzer.h文件*/ ?[Copy to clipboard]View Code C 1 2 3 4 5 6 #ifndef __BUZZER_H #define __BUZZER_H #include "common.h" #include "beep.h" typedef enum

基于C51单片机矩阵键盘控制蜂鸣器的应用

学校代码 10126 学号科研创新训练论文 题目基于C51单片机的蜂鸣器和流水灯的 应用 院系内蒙古大学鄂尔多斯学院 专业名称自动化 年级 2013 级 学生姓名高乐 指导教师高乐奇 2015年06月20日

基于C51单片机的蜂鸣器和流水灯的应用 摘要 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。本文介绍了单片机的发展及应用,和基于单片机的蜂鸣器和流水灯的知识及应用,还介绍了此次我所设计的课题。 关键词:C-51单片机,控制系统,流水灯,蜂鸣器,程序设计

The application of buzzer and flowing water light based on C51 MCU Author:GaoLe Tutor:GaoLeQi Abstract This 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 the micro-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 water light,buzzer ,programming

蜂鸣器程序

单片机蜂鸣器实验 C程序: #include "reg51.h" #define uchar unsigned char #define uint unsigned int sbit FM=P2^3; void delay ( uchar x) { uint y; for (; x > 0 x-- ) for( y=500 y>0;y--); } void main() { FM=0; while(1) { delay(20); FM=1; delay(20); FM=0; } } 因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音

单片机驱动蜂鸣器原理与设计 蜂鸣器是一种一体化结构的电子讯响器,本文介绍如何用单片机驱动蜂鸣器,他广泛应用于计算机、打印机、复印机、报警器、电话机等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。下面是电磁式蜂鸣器的外形图片及结构图。。。电磁式蜂鸣器实物图:一、电磁式蜂鸣器驱动原理蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图见下面图3:S51增强型单片机实验板蜂鸣器驱动原理图:如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的P3.7引脚控制,当P3.7输出高电平 时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.7输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制P3.7脚的电平来使蜂鸣器发出声音和关闭。程序中改变单片机P3.7引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P3.7输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。二、蜂鸣器列子下面我们举几个简单的单片机驱动蜂鸣器的编程和电路设计的列子。1、简单的蜂鸣器实验程序:本程序通过在P3.7输出一个音频范围的方波,驱动实验板上的蜂鸣器发出蜂鸣声,其中DELAY延时子程序的作用是使输出的方波频率在人耳朵听觉能力之内的20KHZ以下,如果没有这个延时程序的话,输出的频率将大大超出人耳朵的听觉能力,我们将不能听到声音。更改延时常数,可以改变输出频率,也就可以调整蜂鸣器的音调。大家可以在实验中更改#228为其他值,听听蜂鸣器音调的改变。 ORG 0000H AJMP MAIN ;跳转到主程序 ORG 0030H MAIN: CPL P3.7 ;蜂鸣器驱动电平取反 LCALL DELAY 延时 AJMP MAIN 反复循环 DELAY:MOV R7,#228 ;延时子程序,更改该延时常数可以改变蜂鸣器发出的音调 DE1: DJNZ R7,DE1 RET

单片机控制蜂鸣器唱歌的原理

单片机控制蜂鸣器唱歌 的原理 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。1)音调的确定 音调就是我们常说的音高。它是由频率来确定的!我们可以查出各个音符所对应的相 应的频率,那么现在就需要我们来用51来发出相应频率的声音! 我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢? 以标准音高A 为例: A 的频率f = 440 Hz, 其对应的周期为:T = 1/ f = 1/440 =2272μs 那么,单片机上对应蜂鸣器的I/O 口来回取反的时间应为: t = T/2 = 2272/2 = 1136 μs ,也就是清零、置位在一个周期内完成. 这个时间t 也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0 ,则定时器的予置初值由下式来确定: t = 12 * (TALL – THL)/ f0 式中TALL = 216= 65536,T HL为定时器待确定的计数初值。因此定时器的高低计数器的初值为: TH =THL/ 256 = ( TALL – t* f0/12) / 256

嵌入式系统原理实验四蜂鸣器

实验四蜂鸣器实验 实验目的: 控制ALIENTEK 战舰STM32 开发板上的蜂鸣器发出:“嘀”…“ 嘀”… 的间隔声,进一步熟悉STM32 IO 口的使用 内容要点: 1.硬件介绍 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 战舰STM32 开发板板载的蜂鸣器是电磁式的有源蜂鸣器 这里的有源不是指电源的“源”,而是指有没有自带震荡电路, 有源蜂鸣器自带了震荡电路,一通电就会发声 STM32的单个IO 最大可以提供25mA 电流(来自数据手 册),而蜂鸣器的驱动电流是30mA 左右,两者十分相近,但是全盘考虑,STM32 整个芯片的电流,最大也就150mA,如果用IO 口直接驱动蜂鸣器,其他地方用电就得省着点了…所以,我们不用STM32 的IO 直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样STM32 的IO 只需要提供不到1mA 的电流就足够了。IO 口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。 蜂鸣器在硬件上也是直接连接好了的,不需要经过任何设置,直接编写代码就可以了。蜂鸣器的驱动信号连接在STM32 的PB8 上。 图1 蜂鸣器与STM32 连接原理图 当PB.8 输出高电平的时候,蜂鸣器将发声,当PB.8 输出低电平的时候,蜂鸣器停止发声 2.软件设计 可以直接打开本实验工程,也可以按下面的步骤在实验 1 的基础上新建蜂鸣器实验工程。复制上一章的LED 实验工程,然后打开USER 目录,把目录下面工程LED.uvprojx 重命名为BEEP.uvprojx。,然后在HARDWARE 文件夹下新建一个BEEP 文件夹,用来存放与蜂鸣器相关的代码

单片机驱动蜂鸣器原理与程序学习资料

单片机驱动蜂鸣器原 理与程序

单片机驱动蜂鸣器原理与设计 作者: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增强型单片机实验板蜂鸣器驱动原理图:

项目三蜂鸣器的发声控制

项目三蜂鸣器的发声控制 陈超然 汕头职业技术学院

目录 1.认识蜂鸣器 ?蜂鸣器应用领域 ?蜂鸣器分类 2.与单片机的接口电路设计 ?I/O口驱动能力 ?接口电路设计 3.让有源/无源蜂鸣器发声 ?程序设计 4.改变蜂鸣器的音调和音量 5.实战作业

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

①工作原理: ?有源蜂鸣器: (自激式) ?无源蜂鸣器: (他激式) ②如何区分: ?有源蜂鸣器:底部为黑胶、引脚高度9mm 、电阻上百欧甚至几百欧 ?无源蜂鸣器:底部为绿色电路板、引脚高度8mm 、电阻为 8Ω/16Ω按驱动方式分类:有源蜂鸣器和无源蜂鸣器

?电磁式蜂鸣器:运用电磁感应原理,由线圈、磁铁、振 动膜片及外壳等组成。 ?音频电流通过线圈,电磁线圈产生交变磁场,振动膜片 在交变磁场的吸引力作用下,周期性地振动发声,同时 外壳形成一共鸣腔,使声音更响亮。 ?压电式蜂鸣器主要由压电蜂鸣片(金属基板+压电陶瓷层) 及助声腔盖等组成。 ?对压电陶瓷层施加音频电压时,由于压电效应的作用, 压电陶瓷片随音频信号产生机械变形振动而发声,同时 助声腔盖形成一共鸣腔,使声音更响亮。 按构造方式分类:电磁式蜂鸣器和压电式蜂鸣器

?引脚输出低电平时,外部电路向引脚灌入电流,这个电流称为“灌电流”,外部电路称为“灌电流负载”?引脚输出高电平时,外部电路从引脚拉出 电流,这个电流称为“拉电流”,外部电路称为“拉电流负载”。?单个引脚允许的灌电流最大为10 mA ?P0 口允许的灌电流最大为26 mA ?P1、P2 和P3 口允许的灌电流最大为15 mA ?四个I/O 口允许的灌电流之和最大为71 mA ?I/O 口的拉电流能力太差,不到1mA

实验蜂鸣器实验

实验8 蜂鸣器实验 (仿真部分) 1.实验任务 用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。 2.电路原理图 3.硬件连线 (1.P1.0端口用导线通过“音频放大模块”连接到喇叭SOUNDER上; (2.把P1.7端口用导线连接到“拨动开关”K1端口上; 4.程序设计内容 (1.信号产生的方法 500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms, 信号电平每500us变反1次; 5.程序框图

图4.6.2 6.汇编源程序(非中断软延时) FLAG BIT 00H ORG 00H START: JB P1.7,START JNB FLAG,NEXT MOV R2,#200 DV: CPL P1.0 LCALL DELY500 LCALL DELY500 DJNZ R2,DV CPL FLAG NEXT: MOV R2,#200 DV1: CPL P1.0 LCALL DELY500 DJNZ R2,DV1 CPL FLAG SJMP START DELY500: MOV R7,#250 LOOP: NOP DJNZ R7,LOOP RET END 7.C语言源程序(非中断软延时) #include #include bit flag;

unsigned char count; void dely500(void) { unsigned char i; for(i=250;i>0;i--) { _nop_(); } } void main(void) { while(1) { if(P1_7==0) { for(count=200;count>0;count--) { P1_0=~P1_0; dely500(); } for(count=200;count>0;count--) { P1_0=~P1_0; dely500(); dely500(); } } } } 8.汇编源程序(计数方式采用中断方式) ORG 0000H LJMP MAIN ORG 0003H LJMP INT0P ORG 0013H LJPM INT1P MAIN: MOV SP,#60H SETB IT0 SETB IT1 SETB IE0 SETB IE1 SETB EA MOV R0,#00H LOOP: MOV P1,R0 JMP LOOP INT0P:INC R0 RETI INT1P:DEC R0 RETI END 9.实验要求 学会C51和ASM51两种编程工具。并尝试采用定时器实现定时。

和弦音蜂鸣器

前言:现在一些带按键显示控制面板的家电(比较常见的是柜式空调)在按键操作的时候会有悦耳的和弦 音发出,特别是开关机或操作上下键时会有不同变调的和弦音,相比普通的嘀嘀声给人更愉悦的操作体验。
1.控制方式说明
此处以型号为 SH2225T2PA 的蜂鸣器(谐振频率 2.6KHz)为例。蜂鸣器模块有两个驱动引脚与 MCU 相连,一个是振荡信号输入引脚,由 MCU 提供相应频率的方波信号驱动蜂鸣器发声,一个是供电控制端, 供电切断后蜂鸣器靠电解电容放电维持其发声,会有音量渐渐变小的效果。
原理图如下所示, MC9 为供电控制端,MC8 为振荡信号输入端。MC9 为高电平时,三极管 Q4 导通, 然后 Q2 导通,蜂鸣器开始供电,同时电容 CD2 充电。若 MC8 有一定频率的方波信号发出,则蜂鸣器可 发出鸣叫。若此时先关掉供电,即 MC9 置低电平,MC8 依然发出方波信号,则蜂鸣器可依靠 CD2 放电 发出声音,但随着电容电量减少,音量会逐渐减小,形成蜂鸣声渐隐的和弦音效果。要实现变调的效果, 则可通过短时间内切换发出几种不同频率的蜂鸣声来实现。

以下是 3 种比较典型的和弦音的实现细节:(符号说明:Tf:频率给定持续时间(ms) Tv:电压给定持 续时间(ms) F:输出频率(KHz))
单声和弦音:短暂鸣响后音量渐隐
?
F=2.6,Tv=200,Tf=1000
开机和弦音:三升调,按音调分 3 个阶段
1. F=2.3,Tv=200,Tf=200 2. F=2.6,Tv=200,Tf=200 3. F=2.9,Tv=100,Tf=2100
关机和弦音:三降调,按音调分 3 个阶段
1. F=2.9,Tv=200,Tf=200 2. F=2.6,Tv=200,Tf=200 3. F=2.3,Tv=100,Tf=2100
2.编程实例
MCU:STM8S903K3 开发环境:STVD 4.1.6+Cosmic 4.2.8
/* buzzer.h 文件 */
?
[Copy to clipboard]View Code C
1 2 3 4 5 6 7 8 9
#ifndef __BUZZER_H #define __BUZZER_H #include "common.h" #include "beep.h" typedef enum { MONO = 0, //单音

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

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

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

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

说明:按下不同的按键会是SOUNDER发出不同频率的声音。本例使用延时函数实现不同频率的声音输出,以后也可使用定时器 */ #include #define uchar unsigned char #define uint unsigned int sbit BEEP=P3^7; sbit K1=P1^4; sbit K2=P1^5; sbit K3=P1^6; sbit K4=P1^7; //延时 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 #define uchar unsigned char #define uint unsigned int sbit BEEP=P3^7; //生日快乐歌的音符频率表,不同频率由不同的延时来决定 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_LONG为拍子长度 for(j=0;j

相关主题
文本预览
相关文档 最新文档