基于51单片机两种音乐编码的比较及用法
- 格式:wps
- 大小:134.50 KB
- 文档页数:14
随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。
我们都会抽空欣赏世界名曲,作为对精神的洗礼。
本论文设计一个基于单片机的简易电子琴。
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经融入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89C51单片机为核心控制元件,设计一个电子琴。
以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高,具有一定的实用和参考价值。
关键词:AT89C51单片机;数码管;电子琴1 系统方案设计 (1)1.1 设计指标 (1)1.2 系统方案综述 (1)1.3 系统设计思路 (1)2 硬件设计 (2)2.1 电路图 (2)2.2 单片机AT89C51简介 (2)2.3 单片机的工作过程 (4)2.4 键盘电路 (5)2.5 显示电路 (5)2.6 声音电路 (7)3 系统软件设计 (7)3.1延时程序设计 (9)3.2定时器初始化及其中断函数 (9)3.3示例音乐播放程序 (10)3.4单独按键中断处理函数 (10)4 实验结果与分析 (10)4.1 Proteus软件简介 (10)4.2仿真调试 (12)5 设计心得 (13)6 参考文献 (14)附录 (15)附录A 元件清单、器件识别与检测 (15)附录B 程序源代码 (16)1 系统方案设计1.1 设计指标①设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
②演奏时可以选择是手动演奏(由键盘输入)还是自动演奏已存曲目,并且在演奏完已存曲目后可自动复位。
1.2系统方案综述从系统实现的功能上来看,电子琴的设计主要利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出八个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键再发出另外一种音调的声音。
51系列单片机输出PWM的两种方法PWM(Pulse Width Modulation,脉宽调制)是一种常用的调制技术,通过改变信号的脉宽来控制输出电平的占空比。
在51系列的单片机中,常用的PWM输出方式有基于定时/计数器和软件实现两种方法。
一、基于定时/计数器的PWM输出方法:在51系列单片机中,内部有多个定时/计数器可用于实现PWM输出。
这些定时/计数器包括可编程定时/计数器T0、T1、T2和看门狗定时器。
1.T0定时/计数器:T0定时/计数器是最简单和最常用的PWM输出方式之一、通过配置T0定时/计数器的工作模式和重装值来实现PWM输出。
具体步骤如下:(1)选择T0的工作模式:将定时/计数器T0设置为工作在16位定时器模式,并使能PWM输出。
(2)设置T0的重装值:通过设定T0的装载值来定义PWM输出的周期。
(3)设置T0的计数初值:通过设定T0的计数初值来定义PWM输出的脉宽。
(4)启动T0定时/计数器:开启T0定时/计数器的时钟源,使其开始计数。
2.T1定时/计数器:T1定时/计数器相对于T0定时/计数器来说更加灵活,它具有更多的工作模式和功能,可以实现更复杂的PWM输出。
与T0定时/计数器类似,通过配置T1的工作模式、装载值和计数初值来实现PWM输出。
3.T2定时/计数器:T2定时/计数器在51系列单片机中的应用较少,但也可以用于实现PWM输出。
与T0和T1不同,T2定时/计数器没有独立的PWM输出功能,需要结合外部中断请求(INT)来实现PWM输出。
二、软件实现PWM输出方法:在51系列单片机中,除了利用定时/计数器来实现PWM输出外,还可以通过软件来实现PWM输出。
软件实现PWM的核心思想是利用延时控制来生成不同占空比的方波信号。
软件实现PWM输出的步骤如下:(1)设置IO口:选择一个适合的IO口,将其设置为输出模式。
(2)生成PWM信号:根据要求的PWM占空比,通过控制IO口的高低电平和延时的时间来生成PWM方波信号。
51单片机指令使用方法51单片机是一种常用的嵌入式微控制器,广泛应用于各种电子设备中。
它具有强大的控制能力和灵活的指令集,为我们开发各种应用提供了便利。
在使用51单片机时,我们需要熟悉其指令的使用方法,下面我们来介绍一些常用的指令及其应用。
首先,我们来讲解一些与数据传输和处理相关的指令。
MOV指令是最常用的指令之一,用于将一个数据从一个寄存器或内存单元传输到另一个寄存器或内存单元。
通过MOV指令,我们可以在单片机中实现数据的复制、传递和处理等操作。
除了MOV指令,还有一些其他常用的数据传输和处理指令,比如ADD指令用于进行加法运算,AND指令用于进行逻辑与操作,OR指令用于进行逻辑或操作等。
这些指令可以实现各种数据处理、逻辑运算和位操作等功能,为我们的程序提供灵活性和多样性。
接下来,我们介绍一些与控制流程相关的指令。
循环结构是程序中常用的一种控制结构,而JMP指令和CJNE指令可以实现跳转和循环控制。
JMP指令用于无条件跳转到指定的地址,而CJNE指令则根据比较结果决定是否跳转到指定的地址。
通过这些指令,我们可以实现程序的分支、循环和条件控制等功能。
此外,还有一些与中断处理相关的指令需要我们熟悉。
中断是单片机中常用的一种事件触发机制,通过中断处理,我们可以实现对外部事件的及时响应。
EA指令用于使能全局中断,而EN和DIS指令用于使能和禁止外部中断。
通过这些指令,我们可以合理利用中断机制,提高程序的响应速度和实时性。
最后,我们来介绍一些与IO口操作相关的指令。
单片机的IO口是与外部设备进行通信的接口,而P1、P2等寄存器则是与IO口对应的数据寄存器。
通过MOV指令和SETB/C指令,我们可以实现对IO口数据的读写操作和控制。
通过这些指令,我们可以与外部设备进行数据交互,实现各种输入输出功能。
总结起来,51单片机的指令使用是嵌入式开发中的基础知识,熟练掌握各种指令的使用方法能够提高我们的开发效率和程序的性能。
基于单片机STC89C52的数字音乐盒设计一、引言1.1设计的目的通过课程设计,让学生熟悉单片机微机应用系统开发、研制的过程,软硬件设计的工作方法、工作内容、工作步骤。
对学生进行基本技能训练,例如:组成系统、编程、调试、查阅资料、焊接电路板等。
使学生理论联系实际,提高动手能力和分析问题、解决问题的能力。
1.2 设计的基本要求(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏不同的乐曲(至少3首歌曲);(2)采用七段数码管显示当前播放的歌曲序号;(3)可通过功能键选择乐曲,暂停,播放,上一首,下一首;扩展功能:利用一个循环跟每一个音调同步,每改变一个音调就变换一下彩灯,从而实现音乐控制彩灯的功能。
二、总体设计2.1基本工作原理1、播放音乐的原理发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。
首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。
对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。
另外,音符的频率有所不同。
基于上面的内容,这样就对发音的原理有了一些初步的了解。
音符的发音主要靠不同的音频脉冲。
利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
2、音符频率的产生 音符及定时器的初值:例如:中音1(DO )的音频=523HZ,周期T=1/523s=1912s μ 定时器/计数器0的定时时间为:T/2=1912/2s μ=956s μ定时器956s μ的计数值=定时时间/机器周期=956s μ/1s μ=956(时钟频率=12MHZ)计算得到定时器0的初值为65536-956=64580,将初值装入T0的寄存器里,启动T0后,每计数956次后就溢出中断,进入中断服务程序后,只要将I/O 口的输出值取反,就可以得到中音1(DO )的音符音频。
基于51单片机的电子音乐门铃设计摘要:本文介绍了一种基于51单片机的电子音乐门铃设计方案。
门铃采用51单片机作为主控芯片,运用PWM技术实现音乐的合成播放,同时添加呼叫功能,能够实现多种音效与呼叫声音的切换。
该门铃具有音效美观、使用方便、可靠稳定的特点,适用于门口、房间、企业单位等场景使用。
关键词:51单片机、电子音乐门铃、PWM技术、合成播放、呼叫功能1.引言随着科技的不断发展,人们对产品音效的要求也有了不断提高。
而门铃作为家庭中不可缺少的部件,其音效的美观性和使用功能性愈加被用户所关注。
本设计基于51单片机,采用PWM技术实现音乐的合成播放,同时添加呼叫功能,能够实现多种音效与呼叫声音的切换。
2.硬件设计2.1 硬件框图本门铃主要由两部分组成:音乐合成模块和呼叫模块。
其中,音乐合成模块采用51单片机作为主控芯片,连接PWM模块和音频输出模块;呼叫模块连接按键模块和寻呼机,如图1所示。
2.2 电路设计音乐合成模块采用了PWM技术,可以实现多种音效的合成播放,并通过DAC模块输出到音频输出模块。
具体电路设计如图2所示,其中,M1是51单片机的控制引脚,P1.0是按键输入引脚,J1是音频输出插座。
呼叫模块采用了按键控制寻呼机的方式,如图3所示,K1是呼叫按钮,K1下方是寻呼机。
3.软件设计3.1 软件流程图本门铃的软件设计采用了C语言,其流程如图4所示,主要分为四个模块:音乐模块、呼叫模块、按键模块和主程序模块。
3.2 代码本设计的代码主要分为以下几个部分:1. 定义51单片机端口和PWM模块2. 定义音频合成数组,各种音效数组3. 接口设计以及中断服务程序的编写4. 设计菜单系统以及音频切换具体代码如下所示:#define led P2#define PWM P3//定义音频合成数组code unsigned char WAVE[12][25] ={{0, 126, 224, 152, 48, 24, 18, 12, 6, 4, 2, 1},{0, 1, 2, 4, 6, 12, 18, 24, 48, 152, 224, 126}, ……};//定义各种音效数组code unsigned char DINGDONG[25] = {1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1};code unsigned char BIRTHDAY[25] = {1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1};//初始化函数void Init(void) {……}//主程序void main(void) {Init();while (1) {……}}如上代码所示,我们对51单片机端口和PWM模块进行了定义,在菜单系统中,我们使用各种音效数组并根据按键代码进行音频切换。
微控制器和音乐盒硬件功能随着当代单片机技术的飞速进步,单片机的功能也越来越强大,包括:(1)单片机集成度高;(2)系统结构简单、使用方便、模块化;(3)单片机可靠性高、处理功能强、速度快;(4) 低电压、低功耗,便于生产便携产品;(5) 强大的控制功能。
本文的设计采用了AT89C51单片机,是一款性价比非常高的单片机。
2.1 AT89C51芯片功能AT89C51 是一款低压、高性能 CMOS 8 位微处理器,具有 4K 字节的闪存可编程可擦除只读存储器。
俗称单片机[ 2 ] 。
如图所示:图 2-1 AT89C51 MCU 引脚图图 2-2 AT89C51 单片机实物图引脚功能[ 3 ] :P0.0-P0.7 :8位开漏双向I/O口;P1.0-P1.7:8位双向I/O口,提供上拉电阻;P2.0-P2.7:8位双向I/O口,带上拉电阻;P3.0-P3.7:引脚为8个带上拉电阻的双向I/O口;P3.0:RXD(串口输入);P3.1:TXD(串行输出口);P3.2:INT0(外部中断0);P3.3:INT1(外部中断1);P3.4:T0(定时器0外部输入);P3.6:WR(外部数据存储器写选通);P3.7:RD(外部数据存储器读选通);EA:当EA保持低电平时,在此期间外部程序存储器(0000H-FFFFH),无论是否有程序存储器。
请注意,在加密模式 1 中,EA 将被锁定为 RESET;当EA端保持高电平时,这部分程序内存;P3.5:T1(定时器1的外部输入);ALE:访问外部存储器时,地址锁存器使能的输出电平用于锁存地址的状态字节;PSEN:外部程序存储器的选通信号;RST:复位输入;XTAL1:反向振荡放大器的输入,部分时钟工作电路的输入;XTAL2:反相振荡器的输出。
2.2 八音盒的硬件和功能本文设计的数字音乐盒所需硬件为:AT89C51芯片:主控制器;LED灯:灯光闪烁,P1.0-P1.7控制八路LED灯;数码管:音乐序号显示,P0.0-P0.6控制数码管;晶振:为单片机的正常工作提供稳定的时钟信号。
调号-音乐上指用以确定乐曲主音高度的符号。
很明显一个八度就有12个半音。
A、B、C、D、E、F、G。
经过声学家的研究,全世界都用这些字母来表示固定的音高。
比如,A这个音,标准的音高为每秒钟振动440周。
升C调:1=#C,也就是降D调:1=BD;277(频率)升D调:1=#D,也就是降E调:1=BE;311升F调:1=#F,也就是降G调:1=BG;369升G调:1=#G,也就是降A调:1=BA;415升A调:1=#A,也就是降B调:1=BB。
466,C 262 #C277D 294 #D(bE)311E 330F 349 #F369G 392 #G415A 440. #A466B 494所谓1=A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。
1=C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。
同样是“导”,不同的调唱起来的高低是不一样的。
各调的对应的标准频率为:单片机演奏音乐时音调和节拍的确定方法经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这样。
在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。
音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。
在音乐中所谓“音调”,其实就是我们常说的“音高”。
在音乐中常把中央C 上方的A音定为标准音高,其频率f=440Hz。
当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与.1,2(来)与.2……正好相差一个倍频程,在音乐学中称它相差一个八度音。
51 单片机编程语言
51单片机是一种非常常见的单片机,它广泛应用于各种电子设
备中。
在51单片机上进行编程是非常重要的,因为它可以控制设备
的各种功能和操作。
在这篇文章中,我们将探讨51单片机的编程语
言以及它的重要性。
51单片机的编程语言主要有汇编语言和C语言两种。
汇编语言
是一种底层的语言,它直接操作单片机的寄存器和内存,可以实现
非常精细的控制。
但是汇编语言的编写和调试相对困难,需要对硬
件有较深的了解。
相比之下,C语言是一种高级语言,它更加易于理解和编写。
使用C语言编程可以大大提高开发效率,减少出错的可能性,并且
可以在不同的单片机上进行移植。
因此,大部分的51单片机的应用
都是使用C语言进行编程。
无论是汇编语言还是C语言,都可以实现对51单片机的控制和
操作。
通过编写程序,可以实现各种功能,比如控制LED灯的闪烁、读取传感器的数值、驱动电机等等。
因此,编程语言是掌握51单片
机的关键,它直接影响到设备的功能和性能。
总之,51单片机的编程语言是非常重要的,它直接影响到设备的功能和性能。
无论是汇编语言还是C语言,都可以实现对单片机的控制和操作。
因此,掌握好编程语言,对于想要从事单片机开发的人来说是至关重要的。
(2).音乐产生的方法;一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。
现在以单片机12MHz晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO 262 63628 # 4 FA# 740 64860#1DO# 277 63731 中5 SO 784 64898低2RE 294 63835 # 5 SO# 831 64934#2 RE# 311 63928 中6 LA 880 64968低 3 M 330 64021 # 6 932 64994低 4 FA 349 64103 中7 SI 988 65030# 4 FA# 370 64185 高1 DO 1046 65058低 5 SO 392 64260 # 1 DO# 1109 65085# 5 SO# 415 64331 高2 RE 1175 65110低 6 LA 440 64400 # 2 RE# 1245 65134# 6 466 64463 高3 M 1318 65157低7 SI 494 64524 高 4 FA 1397 65178中 1 DO 523 64580 # 4 FA# 1480 65198# 1 DO# 554 64633 高5 SO 1568 65217中 2 RE 587 64684 # 5 SO# 1661 65235# 2 RE# 622 64732 高6 LA 1760 65252中 3 M 659 64777 # 6 1865 65268中 4 FA 698 64820 高7 SI 1967 65283下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数据低音0-19之间,中音在20-39之间,高音在40-59之间TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0DW 0,63731,63928,0,64185,64331,64463,0,0,0DW 0,64580,64684,64777,64820,64898,64968,65030,0,0DW 0,64633,64732,0,64860,64934,64994,0,0,0DW 0,65058,65110,65157,65178,65217,65252,65283,0,0DW 0,65085,65134,0,65198,65235,65268,0,0,0DW 02、音乐的音拍,一个节拍为单位(C调)曲调值DELAY 曲调值DELAY调4/4 125ms 调4/4 62ms调3/4 187ms 调3/4 94ms调2/4 250ms 调2/4 125ms本系统的具体电路如右图所示。