单片机课程设计报告蜂鸣器
- 格式:doc
- 大小:75.00 KB
- 文档页数:12
来源于网络 河南师范大学
新联学院
单片机课程设计报告
课 程 单片机原理及接口技术
设计题目 蜂鸣器演奏歌曲
年级专业 2011级计算机科学与技术
学 号 11 047000000
学生姓名 李
指导教师 莹
2014年 6 月 15 日
蜂鸣器演奏歌曲实验报告
一、要求
完成驱动蜂鸣器歌曲演奏的实验
二、目的
1、学习KEIL软件的使用方法;
2、掌握BST-V51单片机学习板设计蜂鸣器音乐的发生;
3、掌握设计中各模块的功能,能够填入并演奏曲子;
4、学习乐谱的基本知识,掌握其演奏的原理。
三、分析
1、基本原理简述
声音是通过振动产生的。单片机对某一引脚以一定的频率循环置
来源于网络 1置0,该引脚便产生一定频率的方波,方波通过放大,作用于一定的物理实件(蜂鸣器),就产生了一定频率的声音。若改变输出方波的频率,产生的声音随之改变。通过控 制 输 出 方 波 的 时 间 长 短,声 音 的长 短 也 可 以 得 到 控 制 ,因 此 ,根 据 乐 谱 ,以 类
似的音及同样的节拍,单片机就可以产生电子音乐。音乐的播放选择可以通过按键的输入得以实现。
为简便起见,以一定的频率方波产生的音在其每个周期内高低幅值得时间各占 一
半 。因 此 ,输 出 引 脚 在 每 个 方 波 周 期 内 要 动 作 两 次 :一 次 升 高 ,一 次 降 低 。即 输出引脚的频率是原音频率的两倍。
2、单片机产生不同频率脉冲信号的原理
(1)要产生音频脉冲,只要算出某一音频的脉冲(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期的时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期的时间再对I/O反相,就可以在I/O脚上得到此频率的脉冲。
(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法如下:
例如,频率为523Hz,其周期天/523 S=1912uS,因此只要令计数器计时956uS/1us=956,在每计数956次时就将I/O反接,就可得到中音DO(532Hz)。
计数脉冲值与频率的关系公式如下:
N=Fi/2/Fr
(N:计数值,Fi:内部计时一次为1uS,故其频率为1MHz,Fr:要产生的频率 )
(4)C调个音符频率与计数值T的对照表如下表所示:
C调各音符频率与计数值T的对照如下:
来源于网络 音符 频率(Hz) 简谱码T值 音符 频率(Hz) 简谱码T值
低1DO 262 63628 #4FA# 740 64860
#1DO# 277 63731 中5SO 784 64898
低2RE 294 63835 #5SO# 831 64923
#2RE# 311 63928 中6LA 880 64968
低3M 330 64130 #6 932 64994
低4FA 349 64130 中7SI 988 65030
#4FA# 370 64260 高1DO 1046 65058
低5SO 392 64260 #1DO# 1109 65085
#5SO# 415 64331 高2RE 1175 65110
低6LA 440 64400 #2RE# 1245 65124
#6 466 64463 高3M 1318 65157
低7SI 494 64524 高4FA 1397 65178
中1DO 523 64580 #4FA# 1480 65198
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。
节拍与节拍码对照如下:
节拍码 节拍数 节拍码 节拍数
来源于网络 1 1/4拍 1 1/8拍
2 2/4拍 2 1/4拍
3 3/4拍 3 3/8拍
4 1拍 4 1/2拍
5 1又1/4拍 5 5/8拍
6 1又1/2拍 6 3/4拍
7 1又3/4拍 7 7/8拍
8 2拍 8 1拍
9 2又1/4拍 9 1又1/8拍
A 2又1/2拍 A 1又1/4拍
B 2又3/4拍 B 1又3/8拍
C 3拍 C 1又1/2拍
D 3又1/4拍 D 1又5/8拍
E 3又1/2拍 E 1又3/4拍
F 3又3/4拍 F 1又7/8拍
1/4节拍与1/8节拍的时间设定如下:
曲调值 DELAY 曲调值 DELAY
调4/4 125毫秒 调4/4 62毫秒
调3/4 187毫秒 调3/4 94毫秒
调2/4 250毫秒 调2/4 125毫秒
来源于网络 (5)建立音乐的步骤:
1)先把吧乐谱的音符找出,然后由上表建立T值表的顺序。
2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。
四、设计
1、硬件设计
1.1总体设计框图
1.2硬件设计及原理
1.2.1 BST-V51单片机学习板简介:
实验板资源配置如下:
BST-V51单片机学习板包括STC89C52单片机,其支持USB口或者是串口两种下载程序方式不用另买烧写器编程器等产品可以方便的烧写程序到单片机里。USB供电系统,直接插接到电脑USB口即可提供电源,不需另接直电源。以及包括8位LED发光二极管(做跑马灯实验交通灯实验)、8位数码管、4*4矩阵键盘、蜂鸣器(做单片机发声实验播放音乐实验报警实验等声响实验)、DS18B20温度传感器、AT24C08外部EEPROM存储芯片、SPI串行实时时钟DS1302、MAX232芯片RS232通讯接口、字符液晶1602LCD接口、图形点阵液晶12864接口和ISP下载接口。 BST-V51单片机学习板如下图:
1.2.2 AT89C52 简介
AT89C52是美国Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含8KB的可反复檫写的程序存储器和12B的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内配置通用AT89C51
单片机 按键输入 蜂鸣器
来源于网络 8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机可灵活应用于各种控制领域。AT89C52单片机属于AT89C51单片机的增强型,与Intel公司的80C52在引脚排列、硬件组成、工作特点和指令系统等方面兼容。其主要工作特性是:
片内程序存储器内含8KB的Flash程序存储器,可擦写寿命为1000次;
片内数据存储器内含256字节的RAM;
具有32根可编程I/O口线;
具有3个可编程定时器;
中断系统是具有8个中断源、6个中断矢量、2个级优先权的中断结构;
串行口是具有一个全双工的可编程串行通信口;
具有一个数据指针DPTR;
低功耗工作模式有空闲模式和掉电模式;
具有可编程的3级程序锁定位;
AT89C52工作电源电压为5(1+0.2)V,且典型值为5V;
AT89C52最高工作频率为24MHz,在这里我们用的是11.0592MHz。
AT89C52图如下:
(一)蜂鸣器的介绍
1.蜂鸣器的作用
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。
2.蜂鸣器的分类
蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
3.蜂鸣器的电路图形符号
来源于网络 蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。
(二)蜂鸣器的结构原理
1.压电式蜂鸣器
压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。
多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。
压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。
2.电磁式蜂鸣器
电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
蜂鸣器电路图:
2、软件编程(包括软件介绍、流程图、完整的汇编源程序及其注释)
2.1 Keil Software简介及开发流程:
Keil Software 的8051开发工具提供以下程序,你可以用它们来编译你的C源码,汇编你的汇编源程序,连接和重定位你的目标文件和库文件,创建HEX文件,调试你的目标程序。Windows应用程序uVision3是一个集成开发环境,它把项目管理,源代码编辑,程序调试等集成到一个功能强大的环境中。
C51美国标准优化C交叉编译器从你的C源代码产生可重定位的目标文件。
A51宏汇编器从你的8051汇编源代码产生可重定位的目标文件。
来源于网络 BL51连接/重定位器组合你的由C51和A51产生的可重定位的目标文件,生成绝对目标文件。
LIB51库管理器组合你的目标文件,生成可以被连接器使用的库文件。
OH51目标文件到HEX格式的转换器从绝对目标文件创建Intel HEX 格式的文件。
RTX-51实时操作系统简化了复杂和对时间要求敏感的软件项目。
软件开发流程 :
1、创建一个项目,从器件库中选择目标器件,配置工具设置。
2、用C语言或汇编语言创建源程序。
3、用项目管理器生成你的应用。
4、修改源程序中的错误。