当前位置:文档之家› 蜂鸣器驱动源代码

蜂鸣器驱动源代码

蜂鸣器驱动源代码
蜂鸣器驱动源代码

/*************************************************

文件名称:main.c

功能描述:系统上电后,数码管低五位显示00000,按下PLUSE按键,显示数值加1 作者:安徽合创科技公司

编译环境:Freescale CodeWarrier V5.0 For S12

版本:V4.1

说明:

修改记录:

创建日期:2011-3-20

**************************************************/

#include /* common defines and macros */

#include "derivative.h" /* derivative-specific definitions */

#include "CRG.h" /* some deal about PLL */

/**********************************宏定义*******************************************/

#define SEG_DD DDRA //段码口方向

#define DIG_DD DDRK //位码口方向

#define SEG_NUM PORTA //段码数据

#define DIG_NUM PORTK //位码数据

/**********************************函数声明*******************************************/

void Delay(unsigned int loop_times); //延时子程序void PACA_Init(void); //累加器初始化子程序

/**********************************全局变量声明*******************************************/

const unsigned char g_LED_Seg_Table[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x4e,0x79,0x71, 0x00};

//共阴数码管字形表定义

//************主程序************//

/****************************************************************************** ********

函数:void main(void)

功能:调用LED显示程序

说明:实时的调用LED显示程序

调用函数:void Delay(unsigned int loop_times)-------- main.c文件中

******************************************************************************* ********/

void main(void)

{

unsigned char led_dig; //数码管位选值

unsigned char i; //循环变量unsigned char SM_SBUFF[5]; //用户缓冲显示内容

unsigned int PCA_Result; //脉冲计数数值

SEG_DD = 0xFF; //D端口设置为输出口

DIG_DD = 0xFF; //E端口设置为输出口

SEG_NUM = 0x00; //D端口输出全0

DIG_NUM = 0x00; //E端口输出全0

SetBusCLK_32M();

PACA_Init(); //累加器初始化

for(;;)

{

PCA_Result = PACNT; //读取脉冲累加器计数寄存器数值

SM_SBUFF[4] = PCA_Result/10000; //拆分转换结果以便送显示

SM_SBUFF[3] = PCA_Result%10000/1000; //拆分转换结果以便送显示

SM_SBUFF[2] = PCA_Result%1000/100; //拆分转换结果以便送显示

SM_SBUFF[1] = PCA_Result%100/10; //拆分转换结果以便送显示

SM_SBUFF[0] = PCA_Result%10; //拆分转换结果以便送显示

led_dig=0x01; //数码管动态显示

for(i=0;i<5;i++)

{

SEG_NUM = g_LED_Seg_Table[SM_SBUFF[i]];

DIG_NUM = led_dig;

Delay(5);

led_dig=led_dig<<1;

}

} /* loop forever */

/* please make sure that you never leave main */

}

/******************函数实现***********************/

/****************************************

函数:void delay(void)

功能:延时

说明:延时500*loop_times个机器周期

****************************************/

void Delay(unsigned int loop_times)

{

unsigned int loop_i,loop_j;

for (loop_i=0; loop_i

{

for (loop_j=0; loop_j<500;loop_j++)

{

;

}

}

}

/****************************************

函数:PACA_Init(void)

功能:累加器初始化

说明:

****************************************/

void PACA_Init(void)

{

/* APCTL1 = (0 | PAEN | PAMOD | PEDGE | //

CLK1 | CLK0 | PAOVI | PAI | //

) */

PACTL=0x40; // 16位脉冲累加器A使能,事件计数模式,对输入信号下降沿计数

/*

* 0x01000000

* ||||||||__脉冲累加器输入中断允许位,1-允许;0-禁止

* |||||||___脉冲累加器A溢出中断允许位,1-允许;0-禁止

* ||||||____

* |||||_____CLK1:CLK0]时钟选择位.00表示用定时器预分频时钟PCLK作为自由运行计数器时钟TIMCLK

* ||||______累加器边沿控制位,1-信号上升沿计数,0-信号下降沿计数

* |||_______脉冲累加器模式位,1-门控时间累加模式;0-事件计数模式

* ||________脉冲累加器A系统允许位,1-允许;0-禁止

* |_________只读位

*/

PACNT=0x0000; //脉冲累加器计数寄存器数值初始化

}

蜂鸣器驱动程序设计

合肥师范学院 嵌入式系统开发技术 课程设计 专业:计算机科学与技术(嵌入式) 班级:嵌入式应用技术 学号: 110441034 1110441047 1110441060 姓名:钱鹏鹏汪新妹郭航峰 设计题目:蜂鸣器驱动程序设计 2014年05月

1.绪论_______________________________________________________________ 3 1.1概要 _________________________________________________________________ 3 1.2设计内容 _____________________________________________________________ 4 2.开发环境的搭建_____________________________________________________ 4 2.1Redhat的安装 _________________________________________________________ 4 2.2安装arm-linux-gcc交叉编译器__________________________________________ 9 2.3安装及编译linux-2.6.29-mini2440-20090708内核_________________________ 9 3.字符设备驱动相关知识_______________________________________________ 9 3.1模块机制 _____________________________________________________________ 9 3.2字符设备开发基本步骤_________________________________________________ 10 3.3主设备号和次设备号___________________________________________________ 11 3.4实现字符驱动程序_____________________________________________________ 12 4.蜂鸣器原理________________________________________________________ 14 4.1蜂鸣器的种类和工作原理_______________________________________________ 14 4.2开发板上蜂鸣器原理图分析_____________________________________________ 15 4.3GPB0参数 ____________________________________________________________ 15 5.总体设计__________________________________________________________ 16 5.1设计思路 ____________________________________________________________ 16 5.2设计步骤 ____________________________________________________________ 16 6. 驱动及测试程序___________________________________________________ 17 6.1beep.c _______________________________________________________________ 17 6.2beep_tset.c __________________________________________________________ 21 7.运行结果及截图____________________________________________________ 22综合设计总结与思考__________________________________________________ 25

蜂鸣器歌唱原理以及代码

3.3 蜂鸣器播放歌曲原理 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。 1)音调的确定 音调就是我们常说的音高。它是由频率来确定的!我们可以查出各个音符所对应的相应的频率,那么现在就需要我们来用51来发出相应频率的声音!我们常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。 2)节拍的确定 一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms 。 3.3 蜂鸣器播放歌曲程序 #include sbit speaker = P1^5; //定义蜂鸣器端口 unsigned char timer0h, timer0l, time; //-------------------------------------- //单片机晶振采用11.0592MHz

// 频率-半周期数据表高八位本软件共保存了四个八度的28个频率数据code unsigned char FREQH[] = { 0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567 0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 234567 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音 1234567 // 频率-半周期数据表低八位 code unsigned char FREQL[] = { 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音1234567 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 234567 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音 1234567 //-------------------------------------- //世上只有妈妈好数据表要想演奏不同的乐曲, 只需要修改这个数据表 code unsigned char sszymmh[] = { 6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1, 5, 2, 1, //一个音符有三个数字。前为第几个音、中为第几个八度、后为时长(以半拍为单位)。 //6, 2, 3 分别代表:啦, 中音, 3个半拍; //5, 2, 1 分别代表:嗦, 中音, 1个半拍; //3, 2, 2 分别代表:咪, 中音, 2个半拍; //5, 2, 2 分别代表:嗦, 中音, 2个半拍; //1, 3, 2 分别代表:哆, 高音, 2个半拍; 6, 2, 4, 3, 2, 2, 5, 2, 1, 6, 2, 1, 5, 2, 2, 3, 2, 2, 1, 2, 1, 6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2, 3, 3, 2, 1, 5, 2, 2, 5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2, 4, 5, 2, 3, 3, 2, 1, 2, 2, 1, 1, 2, 1, 6, 1, 1, 1, 2, 1, 5, 1, 6, 0, 0, 0}; //-------------------------------------- void t0int() interrupt 1 //T0中断程序,控制发音的音调 { TR0 = 0; //先关闭T0 speaker = !speaker; //输出方波, 发音 TH0 = timer0h; //下次的中断时间, 这个时间, 控制音调高低 TL0 = timer0l; TR0 = 1; //启动T0 } //-------------------------------------- void delay(unsigned char t) //延时程序,控制发音的时间长度 { unsigned char t1; unsigned long t2;

单片机控制LED及蜂鸣器课程设计报告

单片机设计报告 课程单片机课程设计 设计题目 LED灯及蜂鸣器 设计题目: 一、要求 1.了解LED显示流水灯的原理。 2.能够在LED上显示和控制蜂鸣器的工作。 3.熟悉掌握keil软件的使用。 二、分析 本设计使用AT89C52RC做为主控制模块,利用简单的外围电路来驱动LED蝴蝶。设计分为三个模块:单片机控制模块,输出显示模块和驱动模块,单片机控制模块以单片机为核心,以软件KEIL编程实现信号输出,以驱动LED及蜂鸣器为目的。 三、设计 1、硬件方面 (1)、LED驱动模块 图文显示有静态和动态两种方案,本设计中静动态都用到了。动态扫描的意思简单的说就是轮流点亮。具体就图案来说,把内部同行的发光管的阳极相连在一起,先送出对应行的发光管亮灭的数据并锁存,然后选通其它行使其燃亮相同的时间,然后熄灭。反复循环。 蜂鸣器的控制则是加入三极管接在VCC,单片机的第20引脚和负极上,以此来控制蜂鸣器的工作。 (2)、硬件设计 实验板上设计一个蝴蝶状的LED显示,可用于简单的图形图像。蝴蝶的图案是由74个LED绿灯、8个红灯、10个黄灯拼接而成。 其中绿灯直接接到正负极上,黄灯和红灯接到单片机的P2口,来控制其闪动。 2、软件编程(包括流程图、完整的汇编源程序及其注释) 1.电路图 本软件要求实现如下要求:外圈绿灯亮度明亮,红灯和黄灯都不停地闪动,蜂鸣器自动播放歌曲。 电路图如下:

2.主程序 本设计的系统软件能使系统LED各点亮度均匀,充足,可显示清晰图案,并且闪动。 系统主程序开始后,首先是对系统环境初始化,包括设置串口,中断和端口;然后闪动红黄灯,由于单片机没有停机指令,所以可以设置系统程序不断循环。 3.序代码如下: #include #include #include #include #define uchar unsigned char #define uint unsigned int #define DY_PORT P2 //设置LED连接的I/O组 #define DY_SPEED 100 //设置每一个明亮级的停留时间(值域: 0~65535) struct music_type { uchar tone; uchar delay; }; void delay (unsigned int a){ // 1ms延时程序 unsigned int i; while( --a != 0){

无源蜂鸣器常规驱动电路设计

一种低成本无源蜂鸣器的设计 在实际的应用中,虽然有源蜂鸣器控制简单,缺陷是成本比较高,在潮湿的环境用久了,容易损坏。而无源蜂鸣器弥补了有源蜂鸣器缺点,但问题是无源蜂鸣器需要PWM驱动。在系统的设计中,微控制器的PWM资源往往是比较紧张的,同时使用PWM驱动也加大了软件开发的难度。接下来笔者将引领大家学习如何设计一个无需PWM也能驱动无源蜂鸣器的低成本电路。 1.1 无源蜂鸣器常规驱动电路 图1 无源蜂鸣器常规驱动电路 如图1所示,此图为无源蜂鸣器的常规驱动电路。需要在输入端输入一定频率PWM的信号才能使蜂鸣器发声。为了解放PWM资源,实现简单控制,必须如有源蜂鸣器一样提供一个振荡电路。而有源蜂鸣器主要使用LC振荡,如果要实际搭建此电路,电感参数比较难控制,而且成本高。此时,自然会想到简易的RC振荡,而由三极管构成的RC多谐振荡电路显然是一个不错的选择。

1.2 三极管多谐振荡电路 图2 三极管多谐振荡电路 三极管多谐振荡的通用电路如图2所示。这个电路起振的原理主要是通过电阻与电容的充放电使三极管交替导通。首先,在电路上电时,分别通过R1与R4对电容C1与C2进行充电。由于三极管元件的参数不可能完全一致,可以假设三极管Q1首先饱和导通,由于电容两端的电压不能突变,Q2的 B极此时变成负压,Q2截止,Vo端输出高电平;C1通过R2进行充电,当 C2的电位使BE极正向偏置时,Q2导通,Vo端输出低电平;同理C2电容两端电压不能突变,Q1的B极电压变为负压,此时Q1截止。这样循环往复,使在Vo端输,一定频率的方波信号。如图3所示,笔者使用示波器截取了 Q1与Q2的B极和E极的波形,可以发现与上面的分析是吻合的。

单片机 利用蜂鸣器演奏音乐

实验三-利用蜂鸣器演奏音乐 一、实验目的 1.了解BlueSkyC51单片机实验板中蜂鸣器的硬件电路 2.学会利用蜂鸣器实现音乐的演奏 3.掌握蜂鸣器实现音乐演奏的编程 二、实验硬件设计及电路 1. BlueSkyC51单片机实验板 ` 2.单片机最小系统

。 3.蜂鸣器电路连接 三极管主要是做驱动用的。因为单片机的IO口驱动能力不够让蜂鸣器发出声音,所以

我们通过三极管放大驱动电流,从而可以让蜂鸣器发出声音,你要是输出高电平,三极管导通,集电极电流通过蜂鸣器让蜂鸣器发出声音,当输出低电平时,三极管截止,没有电流流过蜂鸣器,所以就不会发出声音。 三、实验原理 1.音调及节拍 用一个口,输出方波,这个方波输入进蜂鸣器就会产生声音,通过控制方波的频率、时间,就能产生简单的音乐。一般说来,单片机演奏音乐基本都是单音频率,因此单片机奏乐只需控制音调和节拍。 (1)音调的确定 音调是由频率来确定的。通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O 口来回取反,从而让蜂鸣器发出不同频率的声音。只需将定时器给以不同的定时值就可实现。通过延时,即可发出所需要的频率。 … (2)节拍的确定 一拍的时长大约为400—500ms,每个音符的时长通过节拍来计算。详细见程序代码。 2.软件设计相关 (1)头文件 #include<> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long sbit beep=P1^4; 译实验相关问题 ; (1)实际发音颤音重 解决方法为修改蜂鸣器的驱动频率. (2)实际节奏过快或者过慢 调整延时 四、C51程序代码(部分来源于网络) #include<> #define uint unsigned int #define uchar unsigned char #define ulong unsigned long ~ sbit beep=P1^4; //蜂鸣器与口连接 uchar th0_f; //中断装载T0高8位 uchar tl0_f; //T0低8位 uchar code freq[36*2]={ //音阶码表 0xf7,0xd8, //440hz , 1 //0 0xf8,0x50, //466hz , 1# //1

蜂鸣器的介绍

蜂鸣器的介绍 推荐 一)蜂鸣器的介绍 1.蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 2.蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 3.蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。 (二)蜂鸣器的结构原理 1.压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。 多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 2.电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 一、常规电磁蜂鸣器产品是如何工作的? 无源电磁蜂鸣器工作原理是:交流信号通过绕在支架上的线包在支架的芯柱上产生一交变的磁通,交变的磁通和磁环恒定磁通进行叠加,使钼片以给定的交流信号频率振动并配合共振腔发声。产品的整个频率和声压的响应曲线与间隙值、钼片的固有振动频率(可粗略折射为小钼片的厚度)、外壳(亥姆霍兹共振声腔)频率、磁环的磁强漆包线的线径有直接关系。 二、常规电磁无源蜂鸣器产品由哪些材料组成? 三、常规压电蜂鸣器产品是如何工作的?

51单片机蜂鸣器奏乐实验汇编代码

LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5:NOP MOV R6,A INC DPTR MOV A,#0 MOVC A,@A+DPTR MOV R7,A SETB TR0 MUSIC2:NOP CPL P3.2 MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 MOV 20H,#00H INC DPTR LJMP MUSIC1 MUSIC3:NOP CLR TR0 MOV R2,#0DH

MOV R2,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1 END0:NOP MOV R2,#0FFH MUSIC6:MOV R3,#00H LJMP MUSIC0 DEL:NOP DEL3:MOV R4,#02H DEL4:NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: DB 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H DB 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H DB 30H, 1CH, 10H , 18H DB 20H, 15H, 20H , 1CH DB 20H, 20H, 20H , 26H DB 40H, 20H , 20H , 2BH DB 20H, 26H, 20H , 20H DB 20H, 30H , 80H , 0FFH DB 20H, 20H, 1CH , 10H DB 18H, 10H, 20H , 20H DB 26H, 20H , 2BH , 20H DB 30H, 20H , 2BH , 40H DB 20H, 20H , 1CH , 10H DB 18H, 10H, 20H, 20H DB 26H, 20H , 2BH, 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H DB 26H, 40H, 20H , 20H

单片机蜂鸣器奏乐实验大全代码

单片机蜂鸣器奏乐实验大 全代码 This manuscript was revised by the office on December 10, 2020.

O R G0000H LJMP START ORG 000BH INC 20H ;中断服务,中断计数器加1 MOV TH0,#0D8H MOV TL0,#0EFH ;12M晶振,形成10毫秒中断 RETI START: MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H MUSIC0: NOP MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MUSIC1: NOP CLR A MOVC A,@A+DPTR ;查表取代码 JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5:NOP MOV R6,A INC DPTR MOV A,#0 MOVC A,@A+DPTR MOV R7,A SETB TR0 MUSIC2:NOP CPL MOV A,R6 MOV R3,A LCALL DEL MOV A,R7 CJNE A,20H,MUSIC2 MOV 20H,#00H INC DPTR LJMP MUSIC1 MUSIC3:NOP CLR TR0

MOV R2,#0DH MUSIC4:NOP MOV R2,#0FFH LCALL DEL DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1 END0:NOP MOV R2,#0FFH MUSIC6:MOV R3,#00H LJMP MUSIC0 DEL:NOP DEL3:MOV R4,#02H DEL4:NOP DJNZ R4,DEL4 NOP DJNZ R3,DEL3 RET NOP DAT: DB 18H, 30H, 1CH, 10H DB 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H DB 1CH, 10H, 18H, 40H DB 1CH, 20H, 20H, 20H DB 1CH, 20H, 18H, 20H DB 20H, 80H, 0FFH, 20H DB 30H, 1CH, 10H , 18H DB 20H, 15H, 20H , 1CH DB 20H, 20H, 20H , 26H DB 40H, 20H , 20H , 2BH DB 20H, 26H, 20H , 20H DB 20H, 30H , 80H , 0FFH DB 20H, 20H, 1CH , 10H DB 18H, 10H, 20H , 20H DB 26H, 20H , 2BH , 20H DB 30H, 20H , 2BH , 40H DB 20H, 20H , 1CH , 10H DB 18H, 10H, 20H, 20H DB 26H, 20H , 2BH, 20H DB 30H, 20H, 2BH , 40H DB 20H, 30H, 1CH , 10H DB 18H, 20H , 15H , 20H DB 1CH, 20H , 20H , 20H

几种驱动蜂鸣器的编程示例

几种驱动蜂鸣器的编程示例 以下介绍几种在S3F9454/9444下驱动蜂鸣器的编程示例,供参考 A.第一种,普通IO高低电平驱动法 ;运行环境: S3F9454,Fosc= 3.2MHz无分频 ;P2.0为蜂鸣输出端口 ;本例输出频率为4KHZ,即每250US一个周期,高低电平时间分别为125US BEEP: LD BTCON,#10100011B ;看门狗禁用 DI PUSH R5 PUSH R6 ;首先配置P2.0为普通推挽输出端口 AND P2CONL,#0FEH OR P2CONL,#02H LD R6,#0FAH ;R6设置输出方波个数,本例为250个(计时62.5MS) ONE_BEEP: LD R5,#27H ;R5为频率发生计时器,本例为近似125US(4KHZ) XOR P2,#01H _LOOP: DEC R5 JR NZ,_LOOP DEC R6 JR NZ,ONE_BEEP LD BTCON,#02H ;恢复看门狗运行 EI POP R6 POP R5 RET ;----------------------------------------------------------- B.利用P2.0配置为T0定时器匹配输出方式产生 ;注: 该方式可用于带多位数码显示扫描的软件中,可有效避免因蜂鸣器 ;输出而造成的数码显示抖动闪烁 ;因定时器T0被分配作为T0匹配输出定时器,所以本例中利用看门狗定时器 ;的实时计时器BTCNT作为数码显示实时扫描计时器 ;R0为蜂鸣时间长短计时器,由主调用程序进行予设置 ;运行环境: S3F9454,Fosc= 3.2MHZ无分频 ;P2.0为蜂鸣输出端口 ;本例输出频率为4KHZ,即每250US一个周期,高低电平时间分别为125US ;----------------------- BEEP: DI PUSH R1 PUSH T 0CON PUSH T0DATA ;在蜂鸣输出前首先扫描一次数码显示 CALL LED_SCAN OR P2CONL,#03H ;set P2.0 as T0 match output/every 12 5us LD T0CON,#10001000B ;set T0 input cLOCk=Fosc/8 LD T0DATA,#32H LD BTCON,#10100011B ;DISAble Watch-dog run, ;but btcnt clk input fxx/4096= 1.280ms NEXT_BEEP: LD R1,#0AH WAIT_CNT: OR BTCON,

有源与无源蜂鸣器的区别

一)蜂鸣器的介绍 1.蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 2.蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 3.蜂鸣器的电路图形符号蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。 (二)蜂鸣器的结构原理 1.压电式蜂鸣器压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。 多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 2.电磁式蜂鸣器电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 蜂鸣器的制作 (1)制备电磁铁M:在长约6厘米的铁螺栓上绕100圈导线,线端留下5厘米作引线,用透明胶布把线圈粘好,以免线圈松开,再用胶布把它粘在一个盒子上,电磁铁就做好了. (2)制备弹片P:从铁罐头盒上剪下一条宽约2厘米的长铁片,弯成直角,把电磁铁的一条引线接在弹片上,再用胶布把弹片紧贴在木板上. (3)用曲别针做触头Q,用书把曲别针垫高,用胶布粘牢,引出一条导线,如图连接好电路. (4)调节M与P之间的距离(通过移动盒子),使电磁铁能吸引弹片,调节触点与弹片之间的距离,使它们能恰好接触,通电后就可以听到蜂鸣声.有源蜂鸣器和无源蜂鸣器 教你区分有源蜂鸣器和无源蜂鸣器 现在市场上出售的一种小型蜂鸣器因其体积小(直径只有llmm)、重量轻、价格低、结构牢靠,而广泛地应用在各种需要发声的电器设备、电子制作和单片机等电路中。有源蜂鸣器和无源蜂鸣器的外观如图a、b所示。 图:有源和无源蜂鸣器的外观

蜂鸣器驱动程序的设计说明

蜂鸣器驱动 课程设计 专业: xxxxxxxxxxxxxx 班级: xxxxxxxxx 学号: xxxxxxxxx 姓名: xxxx 设计题目:蜂鸣器驱动程序设计 2016年12月

目录 一.任务 (2) 1.目标 (2) 2.环境 (2) 3.需求: (2) 二.总体设计 (2) 1.处理流程 (2) 2.模块介绍 (3) 3.模块接口设计 (3) 4.各个模块设计 (3) 三.PWM蜂鸣器字符设备驱动 (3) 1.模块设计 (3) 1. 模块介绍 (3) 2. 模块结构图 (4) 2.接口设计 (4) 1. 数据结构设计 (4) 2. 驱动程序接口 (4) 3.函数设计 (4) 1.初始化函数 (5) 2. 字符设备打开函数 (6) 3. 字符设备关闭函数 (7) 4. 模块卸载函数................................................................... ...................... (8) 5. 文件操作接口函数 (8) 四. PWM蜂鸣器字符设备驱动测试 (8) 1.调用系统函数ioctl实现对蜂鸣器的控制 (8) 五.tiny210开发板调试............................................................................. (9)

六.综合设计总结与思考................................................................... .. (10) 一.任务 1.目标: 编写按键蜂鸣器驱动程序函数与测试文件,实现上位机与tiny210-SDK开发板的连接,利用函数实现对蜂鸣器通过按键来启动与关闭。 2.环境: ①软件环境:windows 7 系统和VMware Workstation 软件 ②硬件环境:tiny210 开发板,核部分 Linux-3.0.8 ,交叉编译版本arm-linux-gcc-4.5.1-v6-vfp1 Linux系统介绍: Linux是一种自由开发源码的类Unix操作系统,存在这许多不同的Linux 版本,但它们都使用了Linux核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。 Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来说,Linux这个词本身只表示Linux核,但实际上人们已经习惯了用Linux来形容整个基于Linux核,并且使用GNU工程各种工具和数据库的操作系统。Linux得名于天才程序员林纳斯·托瓦兹。 tiny210开发板中模块介绍: ①PWM蜂鸣器模块

51单片机蜂鸣器播放音乐代码

/*生日快乐歌曲*/ #include <> #define uint unsigned int #define uchar unsigned char sbit beep = P1^5; 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 // 这是单片机音乐代码生成器生成的代码 #define uchar unsigned char sbit beepIO=P1^5; // 输出为可以修改成其它 IO 口uchar m,n;

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

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

单片机驱动蜂鸣器原理与设计 作者: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。声音频率可控,可以做出“多来米发索拉西”的效果 3。在一些特例中,可以和LED复用一个控制口 而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。必须用2K~5K的方波去驱动它。 有源蜂鸣器往往比无源的贵,就是因为里面多个震荡电路。 有源蜂鸣器的优点是:程序控制方便 区分 1 把蜂鸣器一脚朝天,如果电路板是黑色的表明是有缘的,如果电路板是绿色的表示无源的。 2 把万用表调到欧姆挡RX1位,用黑表笔接蜂鸣器的正极,慢慢触碰,如果发出咔咔生,电阻组织为8Ω或16Ω表示无源蜂鸣,如果发出持续的声音,表示有源! 现在很常用的是一种有源蜂鸣器,内部有振荡、驱动电路。加电源就可以响,你所说的估计就是那种。优点是用起来省事,缺点是频率固定了,就只一个单音。 有源蜂鸣器和无源蜂鸣器的差别主要差别为:有源蜂鸣器和无源蜂鸣器的根本区别是产品对输入信号的要求不一样;有源蜂鸣器工作的理想信号是直流电,通常标示为VDC、VDD等。因为蜂鸣器内部有一简单的振荡电路,能将恒定的直流电转化成一定频率的脉冲信号,从面实出磁场交变,带动钼片振动发音。但是在某些有源蜂鸣器在特定的交流信号下也可以工作,只是对交流信号的电压和频率要求很高,此种工作方式一般不采用。而无源蜂鸣器没有内部驱动电路,有些公司和工厂称为讯响器,国标中称为声响器。无源蜂鸣器工作的理想信号方波。如果给预直流信号蜂鸣器是不响应的,因为磁路恒定,钼片不能振动发音。 实例中,把驱动方式给为交流驱动(PWM输出)控制,频率选为5kHz。 在实际使用蜂鸣器时,区分是有源还是无源蜂鸣器,电磁式还是压电式。 对于后者,他们的区别是: 电磁无源蜂鸣属于感性负载器件,理想输入是正向方波通常记作:VO-P。压无源蜂鸣属于容性负载器件,理想输入是双向方波通常记作:VP-P。但是如果IC是反向器4049等,取一非门的输入和输出接蜂鸣器也是很理想的,只是有时IC的输出功率太小,声音达不到预期要求。如果蜂鸣器是作为高声压报警用的,普通的两引脚电感还不能满足要求,一般会采用三脚抽头电感,一般为10倍的升压比,有些高声压110dB以上的可能要用小功率变压器实现升压。

蜂鸣器驱动程序设计

蜂鸣器驱动 课程设计 专业:xxxxxxxxxxxxxx 班级:xxxxxxxxx 学号:xxxxxxxxx 姓名:xxxx 设计题目:蜂鸣器驱动程序设计 2016年12月

目录 一.任务 (2) 1.目标 (2) 2.环境 (2) 3.需求: (2) 二.总体设计 (2) 1.处理流程 (2) 2.模块介绍 (3) 3.模块接口设计 (3) 4.各个模块设计 (3) 三.PWM蜂鸣器字符设备驱动 (3) 1.模块设计 (3) 1. 模块介绍 (3) 2. 模块结构图 (4) 2.接口设计 (4) 1. 数据结构设计 (4) 2. 驱动程序接口 (4) 3.函数设计 (4) 1.初始化函数 (5) 2. 字符设备打开函数 (6) 3. 字符设备关闭函数 (7) 4. 模块卸载函数......................................................................................... (8) 5. 文件操作接口函数 (8) 四. PWM蜂鸣器字符设备驱动测试 (8) 1.调用系统函数ioctl实现对蜂鸣器的控制 (8) 五.tiny210开发板调试 (9) 六.综合设计总结与思考 (10)

一.任务 1.目标: 编写按键蜂鸣器驱动程序函数与测试文件,实现上位机与tiny210-SDK开发板的连接,利用函数实现对蜂鸣器通过按键来启动与关闭。 2.环境: ①软件环境:windows 7 系统和VMware Workstation 软件 ②硬件环境:tiny210开发板,内核部分Linux-3.0.8 ,交叉编译版本arm-linux-gcc-4.5.1-v6-vfp1 Linux系统介绍: Linux是一种自由开发源码的类Unix操作系统,存在这许多不同的Linux 版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。 Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来说,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。Linux得名于天才程序员林纳斯·托瓦兹。 tiny210开发板中模块介绍: ①PWM蜂鸣器模块 PWM(脉冲宽度调制)简单的讲是一种变频技术之一,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。来看看我们实际生活中的例子,我们的电风扇为什么扭一下按扭,风扇的转速就会发生变化;调一下收音机的声

单片机课程设计报告利用蜂鸣器播放音乐

课程设计:嵌入式系统应用 题目名称:利用蜂鸣器实现音乐播放功能 姓名: 学号: 班级: 完成时间:

1设计的任务 设计内容:动手焊接一个51单片机 设计目标:利用单片机上的蜂鸣器实现音乐播放功能 2 设计的过程 2.1 基本结构 1.STC89C52RC 在本次的试验中采用了STC89C52RC单片机,STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期,工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机),工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz,用户应用程序空间为8K 字节。 (STC89C52RC引脚图)

STC89C52RC单片机的工作模式: (1)典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序(2)空闲模式:典型功耗2mA (3)正常工作模式:典型功耗4Ma~7mA (4)唤醒,适用于水表、气表等电池供电系统及便携设备 2.蜂鸣器及其工作原理: 蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 本实验采用的是电磁式蜂鸣器。 蜂鸣器按其是否带有信号源又分为有源和无源两种类型。有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。无源蜂鸣器可以理解成与喇叭一

蜂鸣器驱动电路

简易自控电路大全(1) 在简易自动控制电路中,将介绍一些模拟实验电路,利用一些物理现象产生的力、热、声、光、电信号,实现自动控制,以达到某种控制效果。 磁控和热控电路 在磁力自动控制电路中,传感元件是干簧管,当磁铁靠近时,常开触点闭合而接通传感电路,完成位置传感作用。 能不能用干簧管开关直接控制电动机的转与停呢?玩具电动机是常用的动力装置,它能够把电能转换为机械能,可用于小电风扇转动、小离心水泵抽水等执行功能。通常玩具直流电动机工作电压低,虽然在1.5~3V就可以启动,但起动电流较大(1~2安培),如果用触点负荷仅为几十毫安的干簧管进行开关控制,将大大缩短其使用寿命。因此,在自动控制电路中,常使用电子开关来控制电动机的工作状态。 三极管电子开关电路见图1 。由开关三极管VT,玩具电动机M,控制开关S,基极限流电阻器R和电源GB组成。VT采用NPN型小功率硅管8050,其集电极最大允许电流ICM可达1.5A,以满足电动机起动电流的要求。M选用工作电压为3V的小型直流电动机,对应电源GB亦为3V 。 VT基极限流电阻器R如何确定呢?根据三极管的电流分配作用,在基极输入一个较弱的电流IB,就可以控制集电极电流IC有较强的变化。假设VT电流放大系数hfe≈250,电动机起动时的集电极电流IC=1.5A,经过计算,为使三极管饱和导通所需的基极电流IB≥(1500mA/250)×2=12mA。在图1电路中,电动机空载时运转电流约为500mA,此时电源(用两节5号电池供电)电压降至2.4V,VT基极-发射极之间电压VBE≈0.9V。根据欧姆定律,VT基极限流电阻器的电阻值R=(2.4-0.9)V/12mA≈0.13kΩ。考虑到VT在IC 较大时,hfe要减小,电阻值R还要小一些,实取100Ω。为使电动机更可靠地启动,R甚至可减少到51Ω。在调试电路时,接通控制开关S,电动机应能自行启动,测量VT集电极—发射极之间电压VCE≤0.35V,说明三极管已饱和导通,三极管开关电路工作正常,否则会使VT过热而损坏。 自动灭火的热量自动控制电路见图2。该电路是将图1中的控制开关S换成双金属复片开关ST,就成为热控电路了。当蜡烛火焰烧烤到双金属复片时,复片趋于伸直状态,使得开关ST接通,电动机启动,带动小风扇叶片旋转,对准蜡烛吹风,自动将火焰熄灭;当双金属片冷却后,开关断开,小电风扇自动停转,完成了自动灭火的程序。 自动停车的磁力自动控制电路见图3。开启电源开关S,玩具车启动,行驶到接进磁铁时,安装在VT基极与发射极之间的干簧管SQ闭合,将基极偏置电流短路,VT截止,电动机停止转动,保护了电动机及避免大电流放电。

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