当前位置:文档之家› 蜂鸣器音乐

蜂鸣器音乐

蜂鸣器音乐
蜂鸣器音乐

学号10780219

实习报告

(生产实习)

起止日期:2013 年6 月24 日至2013 年7 月19 日

学生姓名闵金涛

班级电信科二班

成绩

指导教师(签字)

计算机与信息工程学院

2012年7 月19 日

第一章系统开发 (3)

1.1 生产实习介绍 (3)

1.1.1生产实习的目的 (3)

1.1.2生产实习的意义 (3)

1.2单片机开发系统介绍 (3)

1.2.1单片机简介及功能介绍 (3)

1.2.2开发系统总的原理图 (5)

1.2.3开发系统的组成 (6)

1.3单片机开发板的焊接 (9)

1.3.1焊接原则: (9)

1.3.2焊接前准备: (9)

1.3.3焊接前知识准备: (9)

1.3.4焊接步骤: (9)

第二章程序下载 (11)

2.1程序生成 (11)

2.2具体操作 (11)

2.2.1第一步:建立工程项目文件 (11)

2.2.2第二步:建立源文件 (14)

2.2.3第三步:将源程序文件添加到工程项目中 (16)

2.2.4第四步:为添加到工程项目的程序文件进行编译和链接 (17)

第三章基于单片机的片外开发 (19)

3.1前向通道的组成及其特点 (19)

第四章主要相关程序 (21)

4.1 1602的相关程序 (21)

4.2 A/D的相关程序 (24)

4.3按键控制数码管 (30)

4.4 串口发送 (30)

4.5串口接收 (32)

4.6 蜂鸣器唱歌 (34)

4.7流水灯 (37)

第五章开发过程遇到的问题及解决办法 (39)

第六章实习体会 (40)

第七章参考文献 (402)

第一章系统开发

1.1生产实习介绍

1.1.1生产实习的目的

1.联系电路板焊接技术,熟悉STC12C5A60S2单片机的电路图;

2. 学习Keil uVision2集成开发工具的操作及调试程序的方法;

3.熟悉STC12C5A60S2单片机系统版及试验系统的结构及使用;

4.进行STC12C5A60S21单片机指令系统软件编程设计与硬件接口功能设计;

5.独立完成STC12C5A60S2单片机有关的相关作业;

6.完成STC12C5A60S21单片机有关的片外扩展;

7.独立完成实习报告;

1.1.2生产实习的意义

生产实习是本科教学计划中非常重要的实践性教学环节,是理论教学的完善和补充;生产实习也将理论知识和实际应用联系起来,增强学生的感性认识;了解电子信息产品组成、生产工艺过程及信息网络的构成。此次生产实习是将理论知识与实际应用结合起来,从实际出发分析、研究和解决问题,将单片机的知识系统化,而且能对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、纠错、调试、焊接技术相关仪器设备的使用技能方面得到全面的锻炼和提高,为今后独立进行某些单片机应用系统的开发设计打下坚实基础。

1.2单片机开发系统介绍

1.2.1单片机简介及功能介绍

1.单片机简介

STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合

2.功能特性:

1)为一般控制应用的 8 位单芯片

2)晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)

3)内部程式存储器(ROM)为 4KB

4)内部数据存储器(RAM)为 128B

5)外部程序存储器可扩充至 64KB

6)外部数据存储器可扩充至 64KB

7)32 条双向输入输出线,且每条均可以单独做 I/O 的控制

9)2 组独立的 16 位定时器

10)1 个全多工串行通信端口

11)8751 及 8752 单芯片具有数据保密的功能

12)单芯片提供位逻辑运算指令

图1.1 STC12C5A60S2各引脚

VCC:

STC12C5A60S2 电源正端输入,接+5V。

VSS:

电源地端。

XTAL1:

单芯片系统时钟的反相放大器输入端。

XTAL2:

系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。

RESET:

STC12C5A60S2的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。

EA/Vpp:

"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用

时,可以利用此引脚来输入21V的烧录高压(Vpp)。

ALE/PROG:

ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。STC12C5A60S2可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为STC12C5A60S2是以多工的方式送出地址及数据。平时在程序执行时ALE 引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。

PSEN:

此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。

PORT0(P0.0~P0.7):

端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0~P2.7):

端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在STC12C5A60S2扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。

PORT1(P1.0~P1.7):

端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。

PORT3(P3.0~P3.7):

端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。

其引脚分配如下:

P3.0:RXD,串行通信输入。

P3.1:TXD,串行通信输出。

P3.2:INT0,外部中断0输入。

P3.3:INT1,外部中断1输入。

P3.4:T0,计时计数器0输入。

P3.5:T1,计时计数器1输入。

P3.6:WR:外部数据存储器的写入信号。

P3.7:RD,外部数据存储器的读取信号。

1.2.2开发系统总的原理图

图1.2 开发板原理图

1.2.3开发系统的组成

1.电源模块

STC12C5A60S21单片机芯片的第40脚为正电源引脚VCC,一般外接+5V电压,第20脚为接地引脚GND。

图1.3 电源模块

2.串口通信模块

串行通信模块传送可靠性高,并行传输速率高。在串行通信中按照数据传送方向,串行通信可分为单工、半双工和全双工三种制式。在进行串行通信接口设计时,必须根据需要确定选择标准接口、传输介质及电平转换等问题。和并行传送一样,现在已经有很多种串行标准总线,如RS-232C,RS-422、RS-485和20mA电流环等。采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地连接起来,从而构成一个测控系统。

此次开发板采用的是MAX232芯片提供由电脑串口到开发板的+10V到+5V的电平转换。

MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。主要特点为符合所有的RS-232C技术标准,只需要单一 +5V电源供电,片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V- 功耗低,典型供电电流5mA 内部集成2个RS-232C驱动器,内部集成两个RS-232C接收器。

图 1.4 串口通信电路

3.时钟电路设计

单片机是一种时序电路,必须要有时钟信号才能正常工作。芯片的18脚(XTAL2)、19脚(XTAL1)

一个晶振,再加上2个30PF的瓷片电容即可构成单片机所需的时钟电路。注意,当采用外部时钟时,19脚(XTAL1)接地,18脚(XTAL2)接外部时钟信号

图1.5 时钟电路设计

4.复位电路的设计

单片机芯片的第9脚RST(Reset)是复位信号输入端。在开机或工作中因干扰而使程序失控,或工作中程序处于某种死循环状态等情况下都需要复位。MCS-51系列单片机的复位靠外部电路实现,信号从RST引脚输入,高电平有效,只要保持RST引脚高电平2个机器周期,单片机就能正常复位。常见的复位电路有上电复位电路和按键复位电路二种。

4.程序存储器选择电路

单片机芯片的第31脚(EA)为内部与外部程序存储器选择输入端。当EA引脚接高电平时,CPU 先访问片内4KB的程序存储器,执行内部程序存储器中的指令,当程序计数器超过0FFFH时,将自动转向片外程序存储器,既是从1000H地址单元开始执行指令;当EA引脚接低电平时,不管片内是否有程序存储器,CPU只访问片外程序存储器。AT89S51内部有4KB的程序存储器,所以根据该脚的引脚功能,只有将该脚接上高电平,才能先从片内程序存储器开始取指令。常见的程序存储器选择电路就是将第31脚直接接到正电源上。

5.定时中断电路

两个外部中断(INT0 和INT1),三个定时中断(定时器0、1、2)和一个串行中断。每个中断源都可以通过置位或清除特殊寄存器IE 中的相关中断允许控制位分别使得中断源有效或无效。对于AT89S52,IE.5位也是不能用的。用户软件不应给这些位写1。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。中断服务程序必须判定是否是TF2 或EXF2激活中断,标志位也必须由软件清0。定时器0和定时器1标志位TF0 和TF1在计数溢出的那个周期的S5P2被置位。定时器2 的标志位TF2 在计数溢出的那个周期的S2P2被置位,在同一个周期被电路捕捉下来。中断允许控制位=1,允许中断;中断允许控制位=0,禁止中断。

1.3单片机开发板的焊接

1.3.1焊接原则:

1.熟练使用电烙铁等焊接工具焊接贴片等元器件

2.熟练掌握单片机最小系统工作原理并学会运用

3.此次焊接训练不是为了焊接而焊接,是为了让大家从理论到实践的一个过渡,也是为了让大家更好地掌握单片机的工作原理。

1.3.2焊接前准备:

1.旧毛巾一块(自带):用来抨放电路板;

2.电烙铁一个(提供):焊接最重要的工具,用来焊接元器件;

3.镊子一个(提供):用来夹取贴片元件;

4.元器件盒(提供):用来盛放元器件;

5.模仿板一块(提供)

1.3.3焊接前知识准备:

1.认识学习板上的每一个元器件(包括每一个贴片电阻、电容、、、)

2.会区分LED(发光二极管)的正负

3.知道芯片座的方向(注意缺口)

1.3.4焊接步骤:

1.注意事项:

拿到练习板之后先不要焊接,把板子上的电路看清楚,知道什么元器件放在什么位置上在进行焊接(检测板子有无短路现象)。

1)电源模块:

(1)领取电源模块所需的元器件

(2)焊接贴片元件

(3)焊接插件(先焊小的再焊大的):依次焊LED→拨动开关→DC座

(4)检测环节:用万用表检测贴片元件有无短路、断路;检查LED的方向有没有焊反,以上都没问题的话进入下一步

(5)通电检测,给DC座供上5V电源,拨动开关,观察指示灯是否正常发光,用万用表检测其供电电压是多少,检测LED的压降是多少。

2)复位电路

(1)领取复位电路所需的元器件

(3)焊接复位按键

(4)检测环节:用万用表检测贴片元件有无短路、断路;以上都没问题的话进入下一步(5)通电检测,给DC座供上5V电源,用万用表的20V电压档检测,红表笔接在复位(RST)9号引脚上黑表笔接地,拨动开关观察电压表示数变化

(6)测试手动复位:红黑表笔仍然不动,按下复位键不松观察万用表的示数为多少,松开按键又为多少?

3)晶振电路

(1)领取晶振电路所需的元器件

(2)焊接贴片元件

(3)焊接晶振

(4)检测环节:用万用表检测贴片元件有无短路、断路;

(5)通电检测检测晶振电路工作是否正常;

4)单片机模块

(1)领取单片机模块所需的元器件

(2)焊接贴片元件

(3)焊接40脚芯片座(注意芯片座方向)

(4)检测环节:用万用表检测贴片元件有无短路、断路;(注意:这里不焊排阻和排针)4)串行通信电路:、、

(1)领取串行通信电路所需的元器件

(2)焊接贴片元件

(3)焊接16脚芯片座(注意芯片座方向),焊接串口座等元件

(4)检测环节:用万用表检测贴片元件有无短路、断路;检查芯片座方向有没有焊反。

第二章 程序下载

2.1程序生成

2.1.1步骤:

1.首先建立工程项目文件;

2.为工程选择目标器件(如TA89S52);

3.工程项目设置软硬件调试环境;

4.创建源程序文件并输入程序代码;

5.保存创建的源程序项目文件;

6.把源程序文件添加到项目中;

2.2具体操作

2.2.1第一步:建立工程项目文件

1.

双击桌面Keil uVision3.LNK 快捷图标 2.在打开的下界面中点 工程项 得到图6。

图2.1

3.打开工程下拉菜单,选择点击“新建工程“,首先在这里要新建一个工程项目文件。

图2.2

4.为工程文件取一个名称,确定选择存放的路径(事先为每一个工程单独建立一个目录),在建立工程时形成的所有文件全部存放在这个目录下,如起工程名y2(此时不加后缀),保存类型选择 Project Files(*.uv2)点保存

选择新建工

图2.3

5.接下来选择CPU驱动芯片,如AT89S52芯片,然后点确定。

图2.4

6.这时提示:复制标准的8051开始代码到工程项目文件夹或添加文件到工程项目文件夹?(如果选择Y之后将会产生一个STARTUP文件,对我们实验是一个无用的文件,会在个别计算机上会导致不能创建目标文件,同时会产生一个空白的工程项目文件),选择N之后只

建立一个空白的工程项目文件,我们选N便于操作。

图2.5

至此用户就完成了建立一个空白的工程项目文件,并为工程选好了目标器件,但却是空白的工程项目文件。

2.2.2第二步:建立源文件

1.在界面中打开文件下拉菜单,在打开的选项中点“新建”,产生一个新建空白文件。

点新建

图2.6

2.在新建空白文件中输入源程序文件

图2.7

3.在确认源程序无错时点保存,这时界面上弹出提示“另存为”菜单,选择好保存路径,也就是刚才保存建立工程项目文件的目录路径,输入文件名,如y2.asm(要有后缀,汇编程

序是*.asm),然后点击保存。

图2.8

在还没建立任何关系,此时应把y2.asm源程序文件添加到y2.Uv2工程中,构成一个完整的工程项目。

2.2.3第三步:将源程序文件添加到工程项目中

1. 在左侧Project Windows窗口内右击 Source Group1,在弹出下拉菜单中选种 Add

Files to Group‘Source Group1’(向工程中添加源文件)命令,

点Target,

选右键点

Source

Group1

选择

图2.9

2.在弹出的菜单栏中点文件类型一栏下拉菜单,选Asm Source Files(*.a*:*.src:*.a*)即(汇编程序),文件框中选择将刚才创建的源程序文件y2.asm然后点Add,这时在文件名框后出现刚才选中y2.asm文件,在点击CLOSE完成源程序文件向工程项目的添加。

图2.10

2.2.4第四步:为添加到工程项目的程序文件进行编译和链接

1.在界面上点工程(Project)选项,在下拉菜单中选择(Options For Target ‘Target

‘),命令为目标设置工具选项。

图2.11

2.在“目标”(Target)选项卡片外代码内存,片外Xdata内存都为空白。

图2.12

3.在“输出”选项卡中选择创建HEX文件。

图2.13

第三章 基于单片机的片外开发

单片机主要用于实时控制,因此具有一般计算机控制系统的普遍特征。其典型应用系统应包括单片机系统、用于测控目的前向传感器输入通道,后向伺服控制输出通道以及基本的人机对话通道。大型复杂的测控系统是一个多机系统,还包括机与机之间进行通信的互相通道。

图3.1是一个典型单片机应用系统的结构框图。

3.1前向通道的组成及其特点

前向通道是单片机与测控对象相连的部分,是应用系统的数据采集的输入通道。 来自被控对象的现场信息有多种多样。按物理量的特征可分为模拟量和数字、开关量两

种。

对于数字量(频率、周期、相位、计数)的采集,输入比较简单。它们可直接作为计数输入、测试输入、I/O 口输入或中断源输入进行事件计数、定时计数,实现脉冲的频率、周期、相位及记数测量。对于开关量采集,一般通过I/O 口线或扩展I /O 口线直接输入。一般被控对象都是交变电流、交变电压、大电流系统。而单片机属于数字弱电系统,因此在数字量和开关量采集通道中,要用隔离器件进行隔离(如光电耦合器件)。

模拟量输入通道结构比较复杂,一般包括变换器、隔离放大器、滤波、采样保持器、 多路开关、A/D 转换器及其接口电路,如图11.2所示。

变换器:变换器是各种传感器的总称,它采集现场的各种信号,并变换成电信号(电压信号或电流信号),以满足单片机的输入要求。现场信号各种各样,有电信号,如电压、电流、电磁量等;也有非电信号,如温度、湿度、压力、流量、位移量等,对于不同物理量应选择相应的传感器。

图3.1典型单片机应用系统结构

蜂鸣器唱两只老虎单片机程序

#include<> //包含52单片机寄存器定义的头文件 sbit sound=P3^7; //将sound位定义为 unsigned int C; //储存定时器的定时常数 //以下是C调中音的音频宏定义 #define dao 523 //将"dao"宏定义为中音"1"的频率523Hz #define re 587 //将"re"宏定义为中音"2"的频率587Hz #define mi 659 //将"mi"宏定义为中音"3"的频率659Hz #define fa 698 //将"fa"宏定义为中音"4"的频率698Hz #define sao 784 //将"sao"宏定义为中音"5"的频率784Hz #define la 880 //将"la"宏定义为中音"6"的频率880Hz #define xi 987 //将"xi"宏定义为中音"7"的频率523Hz /******************************************* 函数功能:1个延时单位,延时200ms ******************************************/ void delay() { unsigned char i,j; for(i=0;i<250;i++) for(j=0;j<250;j++) ; } /******************************************* 函数功能:主函数 ******************************************/ void main(void) { unsigned char i,j; //以下是《两只老虎》歌曲 unsigned int code f[]={dao,re,mi,dao, //每行对应一小节音符 dao,re,mi,dao, mi,fa,sao, mi,fa,sao, sao,la,sao,fa,mi,dao, sao,la,sao,fa,mi,dao, dao,sao,dao, dao,sao,dao, 0xff}; //以0xff作为音符的结束标志 //以下是简谱中每个音符的节拍 //"4"对应4个延时单位,"2"对应2个延时单位,"1"对应1个延时单位unsigned char code JP[ ]={2,2,2,2, 2,2,2,2, 2,2,3, 2,2,3,

蜂鸣器歌唱原理以及代码

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;

音乐演奏程序设计

音乐演奏 1 总体要求与分析 1.1设计要求 本文主要编写一段音乐程序,该程序可以进行如下操作:按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选,可重复操作。按Q 退出程序。 1.2设计思路分析 在IBM-PC/XT机中都带有8253-5定时/计数器,IBM-PC/AT中带有8254定时/计数器,这两种芯片功能十分类似。本文通过对8253-5定时/计数器芯片的操作实现音乐演奏。该声音接口通过汇编语言对8253-5的端口直接进行操作,可以不必要过多的使用BIOS的调用和DOS的调用。 计数器芯片有3个通道,各自具有专用功能。通道0时系统的始终节拍计时器,通道1专用于产生动态RAM的定时刷新信号,通道2用来控制计算机的扬声器的声音频率。该音乐演奏主要用到通道2的功能,使通道2工作在“方波发生器”方式,产生相应频率的音调送至喇叭驱动电路,使喇叭发出不同音调的声音。使用8255A的PB0控制通道2的计数,PB1控制通道2的输出对扬声器产生控制的时间。 人机交互包括屏幕显示提示语以及人工输入相应参数,主要应用到BIOS的10H号中断调用以及DOS的21H号中断调用。BIOS的10H号中断调用用于显示器驱动,设置显示模式和光标位置;DOS的21H号中断调用用于单字符输入以及多字符输出显示。 音乐演奏实现的一个主要步骤是乐谱编程。通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对喇叭发音时间的控制,从而实现音符和节拍的数字化。

2 方案设计 音乐的实现主要是对乐谱中的单音符按照一定的音符频率表转化为计数器的计数频率以及喇叭发声的控制时间,通过计数产生相应的控制动作。由此可以有两种方案比较和选择。 2.1 方案一 通过编程使用软件来实现计数和喇叭发声的时间设置,控制8255A并行I/O 接口驱动喇叭发声。CPU每执行一条指令需要耗费一定的时间,这样可以通过循环的方式设置好循环次数,实现软件计数,然后输出相应的高低电平,驱动喇叭发出对应频率和节拍的声音。 利用软件编程方式实现该功能的优点是可以减少硬件开支,便于调试和问题的查找。缺点是CPU开支太大,利用率不高,而且时间不够精准。 2.2 方案二 利用硬件实现频率计数和延时时间的控制,利用8253-5定时/计数器芯片和8255A并行I/O接口芯片。使8253的一个通道工作在“方波发生器”模式,实现对频率的计数;利用8255A的PB3端口实现发声时间的计数控制。这样可以精确的控制时间,减少CPU的开支。 该方案的优点是控制精度提高,同时也减少CPU的开支。缺点是硬件开销比较多。 2.3 方案选择 本文要实现的功能所需要的硬件电路并不是太复杂,一般的IBM-PC/XT/AT 机家族都带有相应的硬件电路。在提高精度与简易程度的比较下,决定采用方案二,这样可以大大提高时间控制精度,同时减少软件程序的复杂度。

单片机蜂鸣器播放音乐

#include #define uchar unsigned char #define uint unsigned int sbit speaker = P1^7; uint j; uchar m=1; uchar flag; uchar line; uchar code * data song; // 休止符低6 低7 中1 中2 中3 中4 中5 中 6 中7 高 1 低 3 低 5 低 4 高3 uchar code yin[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,0xF D,0x82,0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85}; uchar code song1[97]={0x34,0x32,0x32,0x34,0x42,0x51, //<<干杯,朋友>> 0x62,0x52,0x42,0x32,0x34,0x04, 0x74,0x74,0x62,0x62,0x64, 0x3c,0x04, 0x64,0x62,0x52,0x42,0x32,0x34, 0x33,0x31,0x32,0x72,0x76,0x72, 0x83,0x81,0x82,0x82,0x82,0x74,0x72, 0x7c,0x04, 0x63,0x61,0x62,0x62,0x64,0x72,0x82, 0x72,0x74,0x72,0x62,0x52,0x42,0x32, 0x42,0x44,0x42,0x42,0x52,0x62,0x52, 0x5c,0x04, 0x64,0x62,0x62,0x64,0x72,0x82, 0x72,0x74,0x72,0x62,0x52,0x42,0x32, 0x42,0x46,0x53,0x41,0x42,0x32, 0x3c,0x04, 0x44,0x48,0x02,0x32, 0x3f, 0x44,0x48,0x02,0x32, 0x3f, 0x34,0x0c, 0xFF}; uchar code song2[46]={0x12,0x52,0x52,0x52,0x56,0x42, //<<兰花草>>

音乐演奏程序设计

课程设计任务书 学生姓名:王琨专业班级:自动化1105班 指导教师:向馗工作单位:自动化学院 题目: 音乐演奏程序设计 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.使用汇编语言设计一个在计算机上运行的音乐演奏程序。 2.屏幕显示钢琴图像。 3.实现以下附加功能:按“D”键,加快播放速度,按“E”键,降低播放速度。 4. 按"X"鍵,退出。 5.撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。 时间安排: 12月30日-----12月31日查阅资料及方案设计 1月2日-----1月3日编程 1月6日调试程序 1月7日-----1月8日撰写课程设计报告 指导教师签名:年月日 系主任(或责任教师)签名:年月日

摘要 汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。 使用的编译软件是masm for windows ,MASM是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32asm,是Windows下开发汇编的利器。它与Windows平台的磨合程度非常好,但是在其他平台上就有所限制,使用MASM 的开发人员必须在Windows下进行开发。 关键词:汇编语言、MASM、DOS环境

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;

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

课程设计:电子设计 题目名称:音乐流水灯 姓名:戴锦超 学号:08123447 班级:信科12-3班 完成时间:2014年10月23日

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.蜂鸣器及其工作原理: 蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。本实验采用的是电磁式 蜂鸣器。

蜂鸣器按其是否带有信号源又分为有源和无源两种类型。 有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固定频率的信号,驱动蜂鸣器发出声音。无源 蜂鸣器可以理解成与喇叭一样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。本实验采用的是有源蜂鸣器。 (蜂鸣器与单片机连接电路图) 2.2 软件设计过程 1.蜂鸣器发声原理 本实验由于采用有源蜂鸣器,只需将引脚端口P1^4清

音乐演奏程序设计

信息与电气工程学院 电子信息工程CDIO一级项目(2013/2014学年第一学期) 题目:音乐演奏程序设计 专业班级:xxxxxxxxxxxxxxxxx 学生姓名:xxxxxxx 学号:xxxxxxxxx 指导教师:xxxxxxx 设计周数: 设计成绩: 2013年12月28日

1、项目设计目的 1.1掌握接口电路的应用和设计技术。 1.2掌握汇编语言的设计思路。 1.3掌握8086的控制流程,以及8255和8253芯片的功能。 1.4用汇编程序完成键控音乐播放器,用8253定时器来产生声音。 1.5使学生能够较全面地巩固和应用课堂中所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。 2、项目设计正文 2.1设计内容 要求完成一个音乐程序,即通过按下键盘上某个按键就可以按预先设定的程序播放音乐或者终止程序。比如:按大写字母“1”,唱乐曲“沂蒙山小调”;按大写字母“2”,唱乐曲“生日快乐”按大写字母“3”,唱乐曲“棉花糖”;按"4"键,退出。并且可以重复操作。 2.2总体设计思路 在IBM-PC/XT机中都带有8253-5定时/计数器,IBM-PC/AT中带有8254定时/计数器,这两种芯片功能十分类似。本文通过对8253-5定时/计数器芯片的操作实现音乐演奏。该声音接口通过汇编语言对8253-5的端口直接进行操作,可以不必要过多的使用BIOS的调用和DOS的调用。 计数器芯片有3个通道,各自具有专用功能。通道0时系统的始终节拍计时器,通道1专用于产生动态RAM的定时刷新信号,通道2用来控制计算机的扬声器的声音频率。该音乐演奏主要用到通道2的功能,使通道2工作在“方波发生器”方式,产生相应频率的音调送至喇叭驱动电路,使喇叭发出不同音调的声 音。使用8255A的PB 0控制通道2的计数,PB 1 控制通道2的输出对扬声器产生控制的时间。 人机交互包括屏幕显示提示语以及人工输入相应参数,主要应用到BIOS的10H号中断调用以及DOS 的21H号中断调用。BIOS的10H号中断调用用于显示器驱动,设置显示模式和光标位置;DOS的21H号中断调用用于单字符输入以及多字符输出显示。 音乐演奏实现的一个主要步骤是乐谱编程。通过相应的频率表将乐谱中对应的音符转化为计数器的计数初值,节奏通过延时程序转化为对喇叭发音时间的控制,从而实现音符和节拍的数字化。 2.3流程图 2.3.1主程序流程图

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

实验三-利用蜂鸣器演奏音乐 一、实验目的 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

音乐演奏器设计

山东工商学院 电子设计大赛 作品设计报告 题目:音乐演奏器设计 队名: XXXXXX 成员: XXXXXXXXXXXXXXXXXXXX 提交时间: 2016.7.1

目录 一、引言....................................................................................................................................... 3 二、方案比较以及选择................................................................................................................. 3 2.1 控制模块选择方案......................................................................................................... 3 2.2 按键选择方案.................................................................................................................. 4 三、硬件设计及说明..................................................................................................................... 4 3.1系统组成及总体框图...................................................................................................... 4 3.2元件简介........................................................................................................................... 5 3.3 各功能模块原理图.......................................................................................................... 6 四、软件设计................................................................................................................................. 8 4.1 音乐相关知识.................................................................................................................. 8 4.2用单片机实现音乐的节拍............................................................................................... 9 4.3用单片机产生音频脉冲................................................................................................... 9 五、系统调试................................................................................................................................. 9 5.1硬件调试........................................................................................................................... 9 5.2 软件调试...................................................................................................................... 10 六、总结..................................................................................................................................... 10 七、参考文献............................................................................................................................. 10附录1:元器件清单...................................................................................... 错误!未定义书签。附录2:电路原理图.................................................................................................................. 11

Arduino控制蜂鸣器播放音乐设计说明书

目录 一、新媒体装置艺术 1、作品原理介绍 (1) 2、作品设计的意义 (1) 3、作品的主要内容 (1) 4、制作方法和流程 (1) 5、成果 (9) 6、价值和影响 (9) 7、创新点 (10) 二、结论 8、技术方面 (10) 9、艺术方面 (10) 10、不足及展望 (11) 11、谢辞 (11)

设计说明书 一、作品原理介绍: 能感应到物体靠近并且低于50CM时,蜂鸣器发出音乐,并且小灯泡随着音乐节奏变化。 二、作品设计意义: 将它应用到图书馆或者购物的地方,当人们靠近的时间能只能朗读出这一栏或者这一块区域有什么东西,能够更加让人们更快速的找到自己需要的东西,很大程度上节约的时间!也可以应用到车上,当开车的人快要和前面或者后面的物体撞上的时候,会发出声音来提醒你,从而给生命和财产加上保护套。 三、作品主要内容: 1、Arduino控制蜂鸣器播放音乐、小灯泡。 2、小灯泡跟随蜂鸣器的音乐节奏变化。 3、当物体离超声波低于50CM时发出指令,控制蜂鸣器、 小灯泡。 四、制作方法和流程: adruinouno一块(其他Arduino板子也可,注意引脚就行),面保线若干条,蜂鸣器或小喇叭一个。 原理: 首先讲下简单的乐理知识,知道音乐是怎么演奏出来的自然就可以通过代码来进行编排了。

1.演奏单音符的原理 一首音乐由若干音符组成,每一个音符唯一对应一个频率。如果我们知道了音符相对应的频率,再让 Arduino 按照这个频率输出到蜂鸣器或喇叭,蜂鸣器或喇叭就会发出相应频率下的声音。 Arduino官方网站给出了不同音符对应的不同频率的头文件,具体请见下文介绍。 2.音符演奏的持续时间 每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是每个音符都播放一样长的时间。如何确定每个音符演奏的单位时间呢?我们知道,音符节奏分为1拍、1/2拍、1/4拍、1/8拍等等,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125……,所以我们可以为每个音符赋予这样的拍子播放出来,音乐就成了。 制作过程:所需硬件:Arduino板子一块,小型扬声器/蜂鸣器一个,导线两根。如果扬声器声音太大,也可适当配置220欧姆电阻一个与扬声器串联。 我们将扬声器一端串联电阻后接到数字6接口,另一端接地(GND)。数字接口可以自己选择,只是在代码中要对应修改一下。 函数的参数说明: pin: 你要接扬声器的接口,是整数(int 型) frequency:频率,是一个整数(int 型) duration: 音符持续的时间,是毫秒值,无符号长整型

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

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

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.蜂鸣器及其工作原理: 蜂鸣器按其结构分主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产 生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

本实验采用的是电磁式蜂鸣器。 蜂鸣器按其是否带有信号源又分为有源和无源两种类型。有源蜂鸣器只需要在其供电端加上额定直流电压,其内部的震荡器就可以产生固 定频率的信号,驱动蜂鸣器发出声音。无源蜂鸣器可以理解成与喇叭一 样,需要在其供电端上加上高低不断变化的电信号才可以驱动发出声音。 本实验采用的是有源蜂鸣器。 (蜂鸣器与单片机连接电路图) 2.2 软件设计过程 1.蜂鸣器发声原理 本实验由于采用有源蜂鸣器,只需将引脚端口P3^4清零,蜂鸣器即可发声;P3^4置位,蜂鸣器停止发声。采用置1置0的方法只 能使蜂鸣器发声或停止发声,想要使蜂鸣器发出声音,必须对蜂鸣 器发出声音的音频和节拍进行控制。 (音乐基础 音调: 不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱

音乐演奏程序设计

微机原理及接口技术 课程设计 题目音乐演奏小程序 学院自动化学院 专业电气工程及其自动化班级 姓名 指导教师 2014 年12 月28 日

课程设计任务书 学生姓名:专业班级:电气 指导教师:工作单位:自动化学院 题目: 音乐演奏小程序 初始条件: 音乐程序,按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选。按Q退出程序。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)设计任务及要求分析 (2)方案比较及认证说明 (3)系统原理阐述 (4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明 (5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释 (6)调试记录及结果分析 (7)总结 (8)参考资料 (9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图

目录 音乐演奏小程序 (1) 1 总体要求与设计原理 (1) 1.1设计要求 (1) 1.2设计原理 (1) 2 方案设计 (1) 2.1 方案一 (2) 2.2方案二 (2) 2.3 方案三 (2) 2.4 方案选择 (2) 3 硬件电路 (2) 4 软件设计 (3) 4.1 音乐选择模块 (3) 4.2 频率产生模块 (3) 4.3 控制音符的演奏时间 (4) 4.4 音乐乐谱编程 (5) 4.5屏幕显示设计 (7) 4.6 程序流程图 (9) 5 程序调试及运行结果 (10) 6 小结与体会 (12) 参考文献 (13) 附录1 程序源代码 (14) 附录2 芯片资料 (18)

音乐演奏小程序 1 总体要求与设计原理 1.1设计要求 本文主要编写一段音乐程序,该程序可以进行如下操作:按大写字母“A”,奏一首歌曲;按大写字母“B”;奏另一首歌曲,曲目自选,可重复操作。按Q退出程序。 1.2设计原理 在本次课程设计中大家利用课上所学的各种知识,对自己的课程设计题目进行设计。我所要设计的题目是音乐程序设计。看到大多数同学选择了8253定时器,为了与同学区分开来,我在设计的过程选择利用计数器/定时器8254芯片和可编程并行接口8255A芯片,完成2个开关选择歌曲,能用扬声器播放歌曲。 首先我们利用定时器产生各种频率的声音,如“DO”“RE”“ME” 然后将各个单音连接起来就组成了一首简单的曲子或者旋律,旋律及拍数可以按音乐简谱而定。 对8255芯片PA0和PA6口的置0和1来选择歌曲。其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。 2 方案设计 音乐的实现主要是对乐谱中的单音符按照一定的音符频率表转化为计数器 的计数频率以及喇叭发声的控制时间,通过计数产生相应的控制动作。由此可以有三种方案比较和选择。

单片机蜂鸣器播放音乐

#include #define uchar unsigned char #define uint unsigned int sbit sp eaker = P1^7; uint j; uchar m=1; uchar flag; uchar line; uchar code * data song; // 中4 高3 中5 休止 符 低6 中7 低7 高1 中1 低3 中2 低5 中3 低4 uchar code yin[30]={0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,0xF D,0x82,0xFD,0xC8,0xFE,0x06,0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85}; uchar code song1[97]={0x34,0x32,0x32,0x34,0x42,0x51, 0x62,0x52,0x42,0x32,0x34,0x04, //<< 干杯,朋友>> 0x74,0x74,0x62,0x62,0x64, 0x3c,0x04, 0x64,0x62,0x52,0x42,0x32,0x34, 0x33,0x31,0x32,0x72,0x76,0x72, 0x83,0x81,0x82,0x82,0x82,0x74,0x72, 0x7c,0x04, 0x63,0x61,0x62,0x62,0x64,0x72,0x82, 0x72,0x74,0x72,0x62,0x52,0x42,0x32, 0x42,0x44,0x42,0x42,0x52,0x62,0x52, 0x5c,0x04, 0x64,0x62,0x62,0x64,0x72,0x82, 0x72,0x74,0x72,0x62,0x52,0x42,0x32, 0x42,0x46,0x53,0x41,0x42,0x32, 0x3c,0x04, 0x44,0x48,0x02,0x32, 0x3f, 0x44,0x48,0x02,0x32, 0x3f, 0x34,0x0c, 0xFF}; uchar code song2[46]={0x12,0x52,0x52,0x52,0x56,0x42, //<< 兰花草>>

五年级下册信息技术教案- 18《弹奏音乐》 苏教版新版

弹奏音乐 【教材分析】 本课属于Scratch编程模块的范畴,教材介绍了超声波传感器的工作原理,以及与主控板的连接方法;根据发出超声波与接收到超声波的距离差,计算出超声波传感器与物体之间的距离,根据测量出不同的距离发出不同的声音。 【学情分析】 在此之前学生对Scratch编程有一定的编程基础,认识了声音、光敏、滑杆、摇杆等传感器,已初步了解传感器的作用及用法。在编程方面学生也均已尝试编写过顺序、选择、循环三种不同结构的写法,对编写条件判断语句程序有相应的基础。 【教学目标与要求】 1. 认识超声波传感器。 2. 了解超声波传感器的工作原理。 3. 利用超声波来测量距离,并根据不同的距离发出不同的声音。 4. 培养学生实事求是的科学态度和严谨的思维推导能力。 5. 通过对超声波传感器的应用设想,拓展思维,培养创新能力。 【教学重点与难点】 重点:正确连接超声波传感器,并正确运用其测距功能。 难点:根据超声波传感器测量的不同距离,让机器人执行不同的动作。 【教学方法与手段】 任务驱动法,实践操作。 【课时安排】 安排1课时。 【教学准备】 超声波传感器,Arduino板,数据线,课件。 【教学过程】 一、导入 播放歌曲《Do Re Mi》,让同学们一起来唱一唱这首耳熟能详的童谣,在轻松、欢快的环境中进入新课。 老师给同学们带来了一种新的传感器,也可以实现机器人弹奏歌曲,请大家猜一猜

这是什么传感器? 教师总结:是利用超声波传感器来实现音调的变化,今天就一起来学习《弹奏音乐》并板书。 二、新授 1. 认识超声波传感器。 请学生通过看书、上网查阅等方法,了解超声波传感器的相关知识与定义,并向同学解释超声波的定义、功能并举例说明它在生活中的应用。教师总结:超声波是一种频率高于20000赫兹的声波,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。根据发出超声波与接收到的超声波的时间差,可以计算出超声波传感器与物体之间的距离。今天我们就利用超声波的测距功能来编译一个可以弹相同音符的程序。 2.布置任务一:使超声波正确连接到Arduino板。请参看书自学,并以小组为单位进行学生自主操作,将超声波传感器正确地连接到主控板上。小组合作,教师巡视,给予帮助和指导。 3.布置任务二:设置舞台背景,打开“背景库”对话框,选择“室内”,选择“spolight-stage”背景图。 4.布置任务三:设置小猫演奏音符。 (1)分析: 教师给出4个音符,分别是:Do Re Mi Fa 教师给出一个X 并平均分成4 段。 总结出每一个数值范围内对应了一个音符: X<5 Do X﹥5<10 Re X﹥10<15 Mi X﹥20<25 Fa (2)教师给学生讲解“且”运算的含义,并修改板书为:X﹥0且X<5 Do X﹥5且X<10 Re

51单片机蜂鸣器播放单音节音乐

51单片机的唱歌实验 晶振:11.0592MHZ 程序: #include #define uchar unsigned char bit flag; //标志音乐输出脚电平的高低 uchar ptr = 0x00; //取音符 uchar high; //计数器高位 uchar low; //计数器低位 // 本曲谱为"新年好",前两个十六进制表示发声频率,后一个表示发声时间,0xFF,0xFF 表示休止符 // 0x00 表示结束 // 1 _ 1_ 1 .5 uchar code music[] = { 0xFC,0x44,0x7F, 0xFC,0x44,0x7F, 0xFC,0x44,0xFF, 0xFA,0x68,0xFF, // 3 _ 3_ 3 1 0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF, // 1_ 3_ 5 5 0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFD,0x82,0xFF, 0xFD,0x82,0xFF, // 4_ 3_ 2 - 0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFF,0xFF,0xFF, // 2_ 3_ 4 4 0xFC,0xAC,0x7F, 0xFD,0x23,0x7F, 0xFD,0x34,0xFF, 0xFD,0x34,0xFF, // 3_ 2_ 3 1 0xFD,0x23,0x7F, 0xFC,0xAC,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF, // 1_ 3_ 2 .5 0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFA,0x68,0xFF, // .7_ 2_ 1 - 0xFC,0x0C,0x7F, 0xFC,0xAC,0x7F, 0xFC,0x44,0xFF, 0xFF,0xFF,0xFF, 0x00//结束 }; void Init(void); //初始化函数 void DelayMs(unsigned int time); //毫秒级延时函数 void main() { uchar time; Init(); TH0 = high; TL0 = low; while (1) {

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