课件二十单片机控制的演奏音乐1
- 格式:pdf
- 大小:428.58 KB
- 文档页数:18
单片机控制定时器播放设计简介本文档介绍了使用单片机控制定时器实现音乐播放的设计方法。
通过定时器的计时功能,可以精确控制音乐的播放时长和节奏,实现各种音乐效果。
设计步骤步骤一:选择合适的单片机及开发环境在开始设计之前,需要确定使用的单片机型号和相应的开发环境。
常见的单片机型号包括STC89C52、AT89C52等,开发环境常用的有Keil、IAR等。
根据自己的需求和熟悉程度选择合适的单片机和开发环境。
步骤二:连接音乐模块将音乐模块与单片机连接,通常使用串口通信进行控制。
连接时需要将音乐模块的TX引脚连接到单片机的RX引脚,同时接地,以实现数据的传输。
步骤三:编写音乐播放代码使用开发环境编写音乐播放的代码。
代码中需要使用定时器的计时功能来控制音乐的播放时长和节奏。
首先需要初始化定时器,设置合适的计时周期和中断触发方式。
在定时器中断函数中实现音乐播放的控制逻辑,根据需要发送相应的控制命令给音乐模块。
以下是一个简单的示例代码:#include <reg52.h>// 定时器中断函数void Timer0_ISR() interrupt 1{// 控制音乐播放// ...}// 主函数void main(){// 初始化定时器// ...// 设置定时器中断使能// ...// 主循环while (1){// ...}}步骤四:编译、烧录和调试将编写好的代码进行编译,生成可执行文件。
然后使用相应的烧录工具,将可执行文件烧录到单片机中。
完成烧录后,连接相应的硬件,通过调试工具进行调试。
通过调试可以验证代码的正确性和音乐播放效果。
优化设计在实际设计中,还可以对音乐播放模块进行优化设计,以提升音乐播放的效果和性能。
使用中断优化音乐播放可以使用外部中断来检测按键事件,当按下某个按键时,触发相应的中断处理函数。
通过中断函数来控制音乐的播放,实现更加灵活的交互方式。
使用编码器实现音乐控制可以使用旋转编码器来实现音乐的控制,例如调整音量、切换曲目等。
漳州师范学院设计报告题目:基于单片机音乐演奏曲Title: instrumental music based on single chip姓名:学号:系别:专业:年级:指导教师:题目:基于单片机音乐演奏曲摘要单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。
本文的主要内容是用AT89C2051单片机为核心控制元件,设计一个奏乐器,以单片机作为主控核心与LM386、扬声器等模块组成。
本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。
关键词: AT89C2051;LM386Title: instrumental music based on single chipAbstractMCU control with powerful and flexible programming features, it has been integrated into modern people's lives and become an irreplaceable part. The main content of this article is AT89C2051 MCU as the core control elements, to design a musical instrument to master MCU as the core and LM386, speakers and other modules. The system is stable, the advantage of simple hardware circuit, software, functional, and reliable control system, high cost, etc., has certain practical and useful. Keywords:AT89C2051;LM386目录摘要 (1)引言 (2)一、系统整体结构 (4)1.1 AT89C2051简介 (4)1.1.1 电源和晶振 (4)1.2.1 I/O口 (4)1.2.2控制线 (4)1.3.1 LM386简介 (5)1.3.2 LM386内部电路及特性 (5)二、系统硬件设计 (6)1.1、设计原理 (6)1.2. 单片机最小系统 (6)三、软件设计 (7)四、总结 (8)五、参考文献 (9)六、附录 (9)附录一:原理图 (10)附录二;PCB图 (11)附录三:元器件清单 (12)附录四:程序框图 (14)附录五:程序 (15)附录六:歌谱 (16)致谢: (19)引言单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
;sing a song//T0定时中断控制音符,T1定时中断控制节拍,基准定时50msTH1_DA TA EQU 03CHTL1_DA TA EQU 0B0HYINFU EQU 30HJIEPAI EQU 31HBUZZER BIT P1.0ORG 0000HAJMP STARTORG 000BHAJMP INT_T0 ;控制音符(音调)ORG 001BHAJMP INT_T1 ;控制节拍(音符持续时间)ORG 0100HSTART:MOV SP, #60HMOV TMOD, #11H //定时器T0/T1都是方式1MOV R2, #0 ;取歌曲音符和节拍的偏移量MOV A, R2MOV DPTR, #TABLE_SONGMOVC A, @A+DPTR ;取歌曲音符MOV YINFU, AMOV DPTR, #TABLE_TH0MOVC A, @A+DPTR ;取音符对应定时器T0的初始值MOV TH0, AMOV A, YINFUMOV DPTR, #TABLE_TL0MOVC A, @A+DPTRMOV TL0, AMOV A, R2MOV DPTR, #TABLE_LENGTHMOVC A, @A+DPTR ;取该音符对应的节拍MOV JIEPAI, AMOV TH1, #TH1_DA TA ;节拍基准定时50ms(12MHz晶振)MOV TL1, #TL1_DA TASETB PT1 ;设置节拍中断为高优先级中断SETB ET0SETB ET1SETB EASETB TR0SETB TR1SJMP $;--------------------------------------------------------;控制音符的定时中断,依据R2的值决定取歌曲中哪个音符;读到音符为0代表歌曲结束,则关中断,停止定时器。
否则继续;根据读到的音符查表选择对应的定时器初始值;---------------------------------------------------------INT_T0:PUSH ACCPUSH PSWCPL BUZZER //改变蜂鸣器状态MOV A, R2MOV DPTR, #TABLE_SONGMOVC A, @A+DPTRMOV YINFU, AJNZ SING //判断是否到歌曲结束CLR TR0CLR TR1CLR EASJMP EXITSING:MOV A, YINFUMOV DPTR, #TABLE_TH0MOVC A, @A+DPTRMOV TH0, AMOV A, YINFUMOV DPTR, #TABLE_TL0MOVC A, @A+DPTRMOV TL0, AEXIT:POP PSWPOP ACCRETI;-------------------------------------------------------------------------;控制节拍的定时中断,每个音符节拍时间到,调整R2指向下一音符INT_T1:PUSH ACCMOV TH1, #TH1_DA TA ;节拍基准定时50ms(12MHz晶振)MOV TL1, #TL1_DA TADJNZ JIEPAI, EXIT_T1INC R2MOV A, R2MOV DPTR, #TABLE_LENGTHMOVC A, @A+DPTRMOV JIEPAI, AEXIT_T1:POP ACCRETITABLE_TH0:DB 0FCH, 0FCH, 0FCH, 0FDH, 0FDH, 0FDH ,0FDHDB 0FEH, 0FEH, 0FEH, 0FEH, 0FEH, 0FEHDB 0FEH, 0FFHTABLE_TL0:DB 00H, 44H, 0ACH, 09H, 34H, 82H, 0C8HDB 06H, 22H, 56H, 85H, 9AH, 0C1HDB 0E3H, 03HTABLE_SONG:DB 1,2,3,1,1,2,3,1,3,4,5,5,3,4,5,5DB 5,6,5,4,3,2,5,6,5,4,3,2,1,5,1,1DB 1,5,1,1,0TABLE_LENGTH:DB 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10DB 5,5,5,5,10,10,5,5,5,5,10,10,10,10,10,10DB 10,10,10,10,10,10END。
简易的单片机音乐控制作者:侯静针对以前转贴的那篇单片机音乐控制,其算法对初学者不是很容易弄懂此,我根据网上提供的资料。
用C语言写了一个《八月桂花香》的音乐控制。
音调是由不同的频率产生的,而每一个音调都是由一个音符和一个节拍组成,音符决定该音调的高低,节拍则决定了该音调是多少拍。
因此,一个音调是由两个字节组成的。
根据音符字节产生该大小次数的延时,声音输出口取反,就可以得到该音调的高低音。
根据设置单位节拍的延时大小,可以控制音乐演唱速度。
因此算法很简单:定义单片机的一个I/O端脚为声音输出口,在规定的节拍内,根据音符字节的大小产生延时,将声音输出口不断的置高置低(即取反),就可以得到该音调。
只要选取合适的单位节拍延时,就可以输出动听的音乐。
算法流程图如下://**********主程序*********#include<reg51.h>#include"SoundPlay.h"uchar data count=0;void init_com(){TMOD=0x01;TH0=0xff;TL0=0xff;EA=1;ET0=1;}void timer0(void) interrupt 1 using 3 {counter=counter+1;//节拍次数计数TH0=0xd8;//定义单位节拍的延时大小TL0=0xef;}void delay(uchar n){uchar i;while(n--)for(i=0;i<125;i++);//延时1毫秒}void sound_delay(uchar n){uchar i;while(n--){for(i=0;i<2;i++);}}void main(){uint i;uchar sound_signal;//定义音符大小uchar sound_pace;//定义节拍大小init_com()//array[i]=0x00 代表歌曲演唱完毕//array[i]=0xff 代表是休止符while(1){i=0;while(array[i]!=0x00){//如果是休止符,延时100ms,并终止本次循环,进入下一个循环 if(array[i]==0xff){TR0=0;i++;delay(100);continue;}//从表中取得音符大小sound_signal=array[i];i=i+1;//从表中取得节拍大小sound_pace=array[i];TR0=1;//当节拍数未达到时候,继续循环,产生该音调的声音while(counter!=sound_pace)0x20, 0x26, 0x20, 0x20, 0x20, 0x30, 0x80, 0xFF, 0x20, 0x20, 0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x20, 0x1C, 0x10, 0x18, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20, 0x26, 0x40, 0x20, 0x20, 0x2B, 0x20, 0x26, 0x20, 0x20, 0x20, 0x30, 0x80, 0x20, 0x30, 0x1C, 0x10, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x15, 0x1F, 0x05, 0x20, 0x10, 0x1C, 0x10, 0x20, 0x20, 0x26, 0x20, 0x2B, 0x20, 0x30, 0x20, 0x2B, 0x40, 0x20, 0x30, 0x1C, 0x10, 0x18, 0x20, 0x15, 0x20, 0x1C, 0x20, 0x20, 0x20,。
郑州科技学院《单片机原理及应用》课程设计题目基于单片机的音乐控制器的设计与实现学生姓名专业班级学号院(系)指导教师完成时间目录0引言 (2)1 设计方案 (3)2系统设计 (6)2.1硬件原理 (6)2.2软件原理 (11)3 实验与仿真 (13)4结论 (15)参考文献 (17)附录1 仿真电路图 (18)附录2 程序 (18)0 引言单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了II/O设备概括的讲:一块芯片就成了一台计算机。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
利用单片机实现音乐播放有很多要点,例如外部电路简单,控制方便等,因而备受广大单片机爱好者的喜爱。
通过音乐发声器的设计方案,掌握C语言的编程方法。
并熟练的运用AT89S52单片机定时器产生固定频率的方波信号,驱动喇叭发出旋律,按下按键可以演奏预先设置的歌曲旋律,最重要的是自己还可以通过程序设计输入自己喜欢的歌曲来演奏,本设计采用简易音阶编码直觉式输入法方便设计音乐旋律。
单片机演奏音乐实验
利用单片机演奏音乐大概是单片机爱好者感兴趣的问题之一。
这里我们用
网站提供的实验板来做这个实验,并且了解单片机演奏音乐的基本原理,和相
关的源程序。
首先来完成必要的硬件部分,硬件部分比较简单,如下图:
AT89C51单片机的P2.5口控制一个8550的三极管,三极管控制电磁蜂鸣器的电源通断。
我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处
机某个口线的高电平或低电平,则在该口线上就能产生一定频率的矩形波,接
上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续
时间,就能改变输出频率,从而改变音调。
例如,要产生200HZ的音频信号,200HZ音频的变化周期为1/200秒,即
5ms。
这样,当P2.5的高电平或低电平的持续时间为2.5ms时就能发出200HZ 的音调。
乐曲中,每一音符对应着确定的频率,我们将每一音符的时间常数和其相应
的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后由查表
程序依次取出,产生音符并控制节奏,就可以实现演奏效果。
此外,结束符和体止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。
为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间
单位的频率略有不同的音符。
项目四 音乐演奏器设计项目目标导读学习目标技能目标熟练掌握51单片机的定时/计数器的内部结构、工作原理。
掌握延时程序、发音程序的编写。
掌握独立式键盘和矩阵式键盘的使用方法,按键的识别方法。
通过学习定时器的过程,诱导学生思考快速掌握新知识点的方法。
会运用定时器的几种工作方式编写延时程序,能用定时器查询方式和中断两种方式编写控制程序。
能利用定时器的定时功能产生不同频率的音符和音调。
会按照歌谱编写演奏程序。
会用独立式键盘和矩阵式键盘。
能采用查询或中断方式编写键盘程序。
项目目标导读知识教学点1.单片机定时器/计数器的概念,定时器/计数器工作方式的设置方法 。
2.独立式键盘和矩阵式键盘的使用方法(采用查询或中断方式) 。
方法切入点1.通过音乐门铃和音乐演奏器的分析与设计,从简到繁实现学习目标,了解单片机定时/计数器和键盘的实际应用。
参考学时:10学时~12学时任务一音乐门铃的分析与仿真任务导入声音是由物体振动产生的,振动的频率不同,发出的声音也就不同,有规律的振动发出的声音叫技术来实现音乐门铃呢?任务一音乐门铃的分析与仿真任务分析门铃按键从P1.0大电路,经过放大后送入扬声器发声; 首先实现“滴、滴响0.25s,停0.25s任务一音乐门铃的分析与仿真相关知识:定时/计数器任务一音乐门铃的分析与仿真TMOD-TCON-任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务实施1、确定设计方案选用AT89C51构成门铃电路控制的最小系统并行接口任务一音乐门铃的分析与仿真任务实施2、硬件电路设计图4-8 门铃电路原理图任务一音乐门铃的分析与仿真任务实施2、硬件电路设计图4-9 实用门铃电路原理图任务一音乐门铃的分析与仿真任务实施3、源程序设计(1)实现“滴、滴要求:产生频率为500Hz1)步骤1:定时参数①要产生频率为晶振,利用定时器T0任务一音乐门铃的分析与仿真任务实施3、源程序设计步骤2:流程图设计任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真)步骤2:流程图设计图4-13 实现“叮咚”门铃中断服务程序流程图任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真任务一音乐门铃的分析与仿真INC T05SB ;0.5s计数2+1任务一音乐门铃的分析与仿真任务实施4、实物制作待在Proteus元器件名称任务一音乐门铃的分析与仿真技能提高控制要求:实现音乐门铃,由单片机演奏任意一首乐曲要求:采用单片机,演奏《军港之夜》乐曲,如图1)步骤1:定时参数① T0的方式控制字M1M0=01,GATE=0②计算计数初值X晶振为12MHz,《军港之夜》为③节拍时间计算任务一音乐门铃的分析与仿真图4-14 “军港之夜”乐谱任务一音乐门铃的分析与仿真步骤2:流程图设计图4-15 实现音乐门铃主程序流程图知识拓展:乐音的生成任务一 音乐门铃的分析与仿真1、调号音乐上指用以确定乐曲主音高度的符号。
88河南科技2011.03 下如何让单片机演奏音乐河南信息工程学校 李 峡分析图2可知,1KHz 的信号周期为1ms ,信号电平每0.5ms 取反1次,因此100ms 内信号电平要变化200次。
同理,500Hz 信号周期为2ms ,信号电平为每1ms 取反1次,200ms 内信号电平也要变化200次。
只要在单片机的I/O 口循环输出1KHz (持续100ms )和500Hz (持续200ms )的信号就可以了,输出信号时的持续时间可以用软件产生,也可以用定时/计数器产生。
以软件延时为例,可编程如下:MAIN: MOV R0, #DATA1 ;R0中存放循环次数DATA1,决定第1种音 频的持续时间LOOP1: CPL P1.0;输出取反,产生第1种音频信号LCALL DELAY1;DELAY1的延时时间决定第一种音频信号频率DJNZ R0, LOOP1;第1种音频信号持续一定时间,直到R0为0MOV R0, #DATA2 ;R0中存放循环次数DATA2,决定第2种音频的持续 时间LOOP2: CPL P1.0;输出取反,产生第2种音频信号LCALL DELAY2;DELAY2的延时时间决定第2种音频信号的频率DJNZ R0, LOOP2;第2种音频信号持续一定时间,直到R0为0LJMP MAIN;依次循环以上程序段中DELAY1、DELAY2为延时子程序,只要让DA-LAY1的延时时间为0.5ms ,让DALAY2的延时时间为1ms ,每次向R0中存放循环次数200,即可得到图2所示的双音频信号。
修改DE-LAY1、DELAY2,可以改变2种音频信号的频率;而改变R0的值,则可以改变每种音频持续的时间。
三、让单片机演奏一首乐曲要想让单片机演奏乐曲,首先要了解一些简单的乐理知识,这样才能进行编程。
所有音乐都由4个基本要素构成,即音的高低、音的长短、音的力度和音质,而其中最重要的是“音的高低”和“音的长短”。