课件二十单片机控制的演奏音乐1
单片机控制定时器播放设计

单片机控制定时器播放设计简介本文档介绍了使用单片机控制定时器实现音乐播放的设计方法。
通过定时器的计时功能,可以精确控制音乐的播放时长和节奏,实现各种音乐效果。
设计步骤步骤一:选择合适的单片机及开发环境在开始设计之前,需要确定使用的单片机型号和相应的开发环境。
常见的单片机型号包括STC89C52、AT89C52等,开发环境常用的有Keil、IAR等。
根据自己的需求和熟悉程度选择合适的单片机和开发环境。
步骤二:连接音乐模块将音乐模块与单片机连接,通常使用串口通信进行控制。
连接时需要将音乐模块的TX引脚连接到单片机的RX引脚,同时接地,以实现数据的传输。
步骤三:编写音乐播放代码使用开发环境编写音乐播放的代码。
代码中需要使用定时器的计时功能来控制音乐的播放时长和节奏。
首先需要初始化定时器,设置合适的计时周期和中断触发方式。
在定时器中断函数中实现音乐播放的控制逻辑,根据需要发送相应的控制命令给音乐模块。
以下是一个简单的示例代码:#include <reg52.h>// 定时器中断函数void Timer0_ISR() interrupt 1{// 控制音乐播放// ...}// 主函数void main(){// 初始化定时器// ...// 设置定时器中断使能// ...// 主循环while (1){// ...}}步骤四:编译、烧录和调试将编写好的代码进行编译,生成可执行文件。
然后使用相应的烧录工具,将可执行文件烧录到单片机中。
完成烧录后,连接相应的硬件,通过调试工具进行调试。
通过调试可以验证代码的正确性和音乐播放效果。
优化设计在实际设计中,还可以对音乐播放模块进行优化设计,以提升音乐播放的效果和性能。
使用中断优化音乐播放可以使用外部中断来检测按键事件,当按下某个按键时,触发相应的中断处理函数。
通过中断函数来控制音乐的播放,实现更加灵活的交互方式。
使用编码器实现音乐控制可以使用旋转编码器来实现音乐的控制,例如调整音量、切换曲目等。
第29章 单片机音乐播放

29.2 单片机音乐播放实例——电路图
• 前面介绍了单片机发声的原理,这里通过一个具 体的实例来介绍如何使用单片机进行音乐演奏。 系统中使用单片机外接扬声器来演奏一首音乐片 断。整个系统的电路图,如图所示。
29.3 单片机音乐播放实例——程序设计
• 这里采用Keil C51语言编写程序。
29.3.1 建立项目
第29章 单片机音乐播放
• 单片机以其灵活的指令系统以及强大的功能,除了在测控 领域中有着广泛的应用外,还经常应用于智能玩具、电子 贺卡等场合。在这些产品中,使用单片机驱动蜂鸣器来发 出声音,而且还可以控制其发出不同的声调,从而连接起 来构成一个曲子。 • 目前市场上有很多种音乐芯片或者音乐模块,可以直接产 生各种曲子。但是这种模块价格比较贵,可以使 用单片机配合简单的蜂鸣器而产生需要的音乐效果,这种 方法充分发挥了单片机的优势。 • 本章主要介绍了音调和节拍的基本原理,以及如何使用单 片机进行音乐播放。然后通过一个具体的实例来讲解如何 使用单片机演奏曲子。
• 前面介绍了基本音符的音调和节拍,并详细讲解了如何在 单片机系统中来实现一个基本的音符。在单片机上实现音 乐播放,一般只需逐个播放音符即可。用单片机播发音乐 的方法如下: • (1)初始化单片机定时器; • (2)将乐谱中的每个音符的音调及节拍变换成相应的音调 参数和节拍参数; • (3)将乐谱中音符的参数做成数据表格,存放在存储器中; • (4)通过程序取出一个音符的相关参数,驱动蜂鸣器播放 该音符; • (5)该音符唱完后,接着取出下一个音符的相关参数„„, 如此直到播放完毕最后一个音符,根据需要也可循环不停 地播放整个乐曲。
• 首先在Keil μ Vison3集成开发环境中建立项目, 具体操作步骤如下:
基于单片机音乐演奏曲

漳州师范学院设计报告题目:基于单片机音乐演奏曲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,则产生相应的停顿效果。
为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间
单位的频率略有不同的音符。
单片机技术与应用教学课件ppt作者朱蓉等项目四音乐演奏器设计
项目四 音乐演奏器设计项目目标导读学习目标技能目标熟练掌握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个基本要素构成,即音的高低、音的长短、音的力度和音质,而其中最重要的是“音的高低”和“音的长短”。
任务音乐播放器的设计与制作精PPT学习教案
TAB: 02H 02H 04H 04H
DB 0FCH,44H,02H,0FCH,44H,02H,0FCH,44H,04H DB 0FBH,04H,04H,0FDH,0AH,02H,0FDH,0AH,
DB 0FDH,0AH,04H, 0FCH,44H,04H,0FCH,44H,
DB 0FDH,0AH,02H,0FDH,82H,04H,0FDH,82H,
{
H=musicTAB[i];
//查音符码
L=musicTAB[i+1];
if((H|L)==0)
//是否为休止符
{
TR0=0;
}
delay(musicTAB[i+2]);
//查节拍/共19页
模拟仿真与软件调试
第17页/共19页
第18页/共19页
九江职业技术学院电气工程系
查音符高八位
查音符低八位
是否为休止符?
Y
N
Y
乐曲是否结束?
N 装定时器初值
启动定时器
关定时器
查节拍延时常数
延时
该音符节拍是否结束? N Y
第12页/共19页
参考程序——汇编语言
START: MOV MOV
LOOP:
ORL JZ
CJNE SJMP
ORG
0000H
LJMP
START
ORG
001BH
;定时器中断入口
任务音乐播放器的设计与制作精
会计学
1
教学目标
知识目标:
1.了解单片机如何控制声音? 2.了解音乐播放器的工作原理
技能目标:
1.掌握中断系统的编程调试方法。 2.掌握定时/计数器的编程调试方法。 3.掌握音乐播放器的制作与调试
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个较为重要的问题:一是乐谱的记录格式,整个程序实际上相当于一个录音机,而乐谱表则 相当于磁带,它们之间需要定义一个协议,这个协议就是乐谱的记录格式;二是对普通音符、 休止符、结束符的不同处理,特别是普通音符,演奏多高的音,要通过置定时器初值实现, 这个初值应为多少,可以查到相关的数据,也可以通过计算得到,但根据我的经验,还是得
5. 体会 1.选购元器件以前,应该做一份元件详单,可以避免跑冤枉路、花冤枉钱,一般的元
微处理器应用—林克明、郭从良、陈羽 第 4页
件应适当多买几个备用,特别是单片机,很有必要买两片,单片机反复插拔,容易损坏引脚,
多买一片备用,两片还可以轮流烧写,节省时间。
2.对于芯片,应当配备芯片插座,焊接前需要在网上查找到相关的资料,记下其管脚
微处理器应用—林克明、次嵌入式系统设计,是一个单片机控制的演奏音乐的板子。核心元件为一只 AT89C52 单片机,再加上有限几个外围元件,便可以演奏出事先烧写在单片机中的乐曲。共写了五首 乐曲,分别是《祝你生日快乐》、《两只老虎》、《送别》、《同一首歌》和《让我们荡起双桨》, 由一个 NEXT 按钮控制选曲,板子上的两只 LED 可以合着节奏不停的闪烁。 2. 设计思想: 声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个端口的高低电 平,在该端口上产生一定频率的方波,接上喇叭就能发出一定频率的声音,若再利用延时程 序控制该特定频率方波的持续时间,有规律的改变音调,就可以实现用单片机演奏音乐。 单片机实现定时控制有两种基本方法,定时器和软件延时。音乐控制实质上也是两个定 时控制,音调和音长,其中,音调的定时周期为 ms 量级,等于音符频率倒数的 2 倍,音长 的定时周期为 s 量级,通常有一个基本单位,各个音符是这个基本单位的 1、2、4 或者 1/2、 1/4、1/8 倍。由于定时器的时间控制更精确而且正好是 ms 量级,故用定时器控制音调,相 应的用软件延时控制音长。 3. 程序流程
出错。如何发现硬件的错误并修改,是个很不简单的问题。我采用的办法是,编写多个小程
序,每次测试电路的一个部分,逐个检验。如:编写 led 闪烁程序检验晶振是否工作正常;
编写数秒计数程序,检验数码管是否工作正常;编写恒定频率方波程序,检验扬声器驱动电
路是否工作正常。实验证明,这是一种很有效的排错方法。
;********************************文件信息************************************* ;文件名 music.c ;功能:使用 51 系列单片机演奏音乐,共五首歌曲 ;说明:单片机 P1.3 口作为音频输出,P1,0 和 P1.1 作为 LED 闪烁输出 ;最后修改时间:2004 年 6 月 10 日 *******************************Copyright (c)********************************/ #include "AT89X51.H" #define pause 0x00 // 休止符 #define mi_l 0x01 // 以下是低音 3~高音 5 #define fa_l 0x02 #define so_l 0x03 #define la_l 0x04 #define xi_l 0x05 #define do_m 0x06 #define re_m 0x07 #define mi_m 0x08 #define fa_m 0x09 #define so_m 0x0A #define la_m 0x0B #define xi_m 0x0C #define do_h 0x0D #define re_h 0x0E #define mi_h 0x0F #define end 0x00 // 结束符 //********************************乐谱表************************************* // 乐谱表说明:相邻的两个字节表示一个音符,前一字节表示音高,后一字节表示音长 // 其中四分音符用 0x10 时延表示,八分音符用 0x08 时延表示,其他类推 // 乐谱表前面的演奏速度标志
分布和典型电路。
3.晶振电路很容易由于焊接质量和走线出问题,为此,晶振的引脚应尽可能短、离单
片机尽可能近、焊点应尽可能光洁,两个缓冲电容最好取资料中给出的参考值。
4.如果走线不是很复杂的话,尽量正面走线。正面走线可靠性好,也比较牢固,特别
是不会因为剥皮过多,引起短路。
5.电路一旦确定下来,特别是焊接好之后,再修改所花的代价会比修改软件大得多。
4. 电路原理:
图 17-17-2 如图 17-17-2,这是本设计在 Protel 中绘制的原理图,可以看到,接线非常简单,除
了基本的电源、复位、晶振、外部中断源、指示灯之外,只需要在 P1.0 和 P1.1 上接两只 LED(低电平驱动),把 P1.2 接到扬声器的驱动电路输入端,即可。
图 17-17-3 扬声器驱动电路如图图 17-17-3 所示,实际使用中,采用 PNP 型的 9012 晶 体管,也可以用蜂鸣器代替扬声器,不过由于蜂鸣器输入电阻较高,晶体管需要 集电极电路中需要加负载电阻。
微处理器应用—林克明、郭从良、陈羽 第 0页
实习报告
实习名称: 学生姓名: 学院名称: 专业班级: 学 号: 指导教师
专业综合实践
电气与信息工程学院 电子 XX41 10 位学号
成绩评定
考核 实习 实习 实习成果 综合评 内容 表现 报告 或答辩 定成绩
成绩
2011 年 7 月 20 日 实习纪律要求和成绩考核办法
这个时候,应该把电路当作“脚”,把程序当作“鞋”,通过修改鞋子,来适合这只脚。
6.程序写好之后,不应急于烧写,应该先在计算机上软件仿真,Keil 的环境下,可以
很方便的实现这种调试,这样可以发现并修改掉绝大多数问题,并可以节省相当多的时间。
7.第一次把烧入程序的单片机插到板子上的时候,通常不会按照预计的方式运行,即
3.参加本次实习时间不足三分之二或旷课 3 天以上者,不得参加本次考核,按不 及格处理。
4.病事假必须有请假条,需经班主任或有关领导批准,否则按旷课处理。 5.实习过程考核和实习成绩在教师手册中要有记载。 6.实习成绩的考核由指导教师根据实习表现(出勤、遵守纪律情况等)、实习报告、 实习成果、现场操作、口试或笔试等几个方面,给出各项成绩或权重,综合后给出实习 总成绩。该实习经考核教研室主任审核,主管院长审批备案。 7.成绩评定采用五级分制,即优、良、中、及格、不及格。 8.实习结束一周内,指导教师提交实习成绩和实习总结。
end,end };
// 《两只老虎》 code const unsigned char speed_1 = 50;// 明快 code unsigned char music_1[] = {
do_m,0x10,re_m,0x10,mi_m,0x10,do_m,0x10,do_m,0x10,re_m,0x10,mi_m,0x10,do_m,0x1 0,
mi_m,0x10,fa_m,0x10,so_m,0x20,mi_m,0x10,fa_m,0x10,so_m,0x20, so_m,0x08,la_m,0x08,so_m,0x08,fa_m,0x08,mi_m,0x10,do_m,0x10, so_m,0x08,la_m,0x08,so_m,0x08,fa_m,0x08,mi_m,0x10,do_m,0x10, re_m,0x10,so_l,0x10,do_m,0x20,re_m,0x10,so_l,0x10,do_m,0x20,
微处理器应用—林克明、郭从良、陈羽 第 3页
听一听,反复调整调整才行,相当于演奏前,乐器的校音。 具体的程序是用 C 语言编写的,C 语音编写单片机程序,效率上作了一点牺牲,但是可
读性、可维护性、可扩充性相当好,程序结构清晰明了,对于我这样一个对执行效率要求并 不高的设计,是很好的选择。程序代码附在报告后面,有着详细的注释,请查阅。
end,end };
// 《同一首歌》 code const unsigned char speed_3 = 80;// 中速 code unsigned char music_3[] =
微处理器应用—林克明、郭从良、陈羽 第 6页
{ so_l,0x20,do_m,0x10,re_m,0x10,mi_m,0x18,fa_m,0x08,mi_m,0x10,do_m,0x10,re_m,0x20,
end,end };
// 《送别》 code const unsigned char speed_2 = 120; // 舒缓 code unsigned char music_2[] = {
so_m,0x10,mi_m,0x08,so_m,0x08,do_h,0x20,la_m,0x10,do_h,0x10,so_m,0x20, so_m,0x10,do_m,0x08,re_m,0x08,mi_m,0x10,re_m,0x08,do_m,0x08,re_m,0x40, so_m,0x10,mi_m,0x08,so_m,0x08,do_h,0x18,xi_m,0x08,la_m,0x10,do_h,0x10,so_m,0x20, so_m,0x10,re_m,0x08,mi_m,0x08,fa_m,0x18,xi_l,0x08,do_m,0x40, la_m,0x10,do_h,0x10,do_h,0x20,xi_m,0x10,la_m,0x08,xi_m,0x08,do_h,0x20, la_m,0x08,xi_m,0x08,do_h,0x08,la_m,0x08,la_m,0x08,so_m,0x08,mi_m,0x08,do_m,0x08,r e_m,0x40, so_m,0x10,mi_m,0x08,so_m,0x08,do_h,0x18,xi_m,0x08,la_m,0x10,do_h,0x10,so_m,0x20, so_m,0x10,re_m,0x08,mi_m,0x08,fa_m,0x18,xi_l,0x08,do_m,0x40,