数码管显示音乐盒单片机课程设计戴启盛 090803005.docx
《数码管显示音乐盒单片机课程设计戴启盛 090803005.docx》由会员分享,可在线阅读,更多相关《数码管显示音乐盒单片机课程设计戴启盛 090803005.docx(23页珍藏版)》请在冰豆网上搜索。
数码管显示音乐盒单片机课程设计戴启盛090803005
赣南师范学院
物理与电子信息学院
课程设计Ⅳ设计报告书
基于AT89S52单片机的数码管显示音乐盒的设计
*******
班级:
09电子科学与技术
学号:
*********
*******
时间:
2012/01/03
内容摘要:
本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个音乐盒。
该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。
使用四个按键控制音乐盒,一个复位键,两个控制上一曲和下一曲键,还有一个是作为暂停和开始播放键,本音乐盒共有六首歌曲。
播放歌曲时,蜂鸣器发出某个音调,与之对应歌曲号码以LED显示。
本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。
关键词:
音乐盒;AT89C51单片机;KEIL;PROTEUS;音调
Abstract:
ThisdesignisaseriesbasedonAT89C51microcontrollerMusicBox,basedonprinciplesofSCMtechnology,throughtheproductionofhardwareandsoftwarecompilation,designedamusicbox.Mainlybythekeysofthemusicboxcircuit,resetcircuit,clockcircuitandthebuzzercomposition.Usingfourbuttonscontrolmusicbox,Aresetbutton,twocontrolkeysontheoneandthenextone,thereisapauseandstartplayingasabutton,themusicboxatotalofsixsongs.Playasong,thebuzzersoundedatone,correspondingLEDlightsup.ThisdesignusingKEILprogrammingsoftwaretoprogramthemusicboxanddebugsourcecode,withthePROTEUSsimulationsoftwaretosimulatehardware,debugging,savingdesigntime.
Keywords:
:
MusicBox;AT89C51SCM;KEIL;PROTEUS;TONE
1绪论
现如今单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
随着科学技术的进步和社会的发展,人类所接触的信息也在不断增加并且日益复杂。
面对浩如烟海的信息,人们已经能够利用计算机等工具高效准确地对之进行处理,但要想将处理完的信息及时,清晰地传递给别人,还必须通过寻求更加卓越的显示技术来实现。
单片机技术与液晶显示技术的结合,使信息传输交流向着智能可视化方向迅速发展。
随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。
小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。
传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。
本文设计的音乐盒是以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。
2系统设计
2.1设计任务与要求
(1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲(内存两首乐曲)。
(2)采用七段数码管显示当前播放的歌曲序号。
(3)可通过功能键选择乐曲,K1下一曲,K2上一曲,K3暂停、播放,K4复位。
2.2方案的选择与论证
2.2.1总体设计方案
方案一:
用7个按键控制音乐的播放。
6个按键选择6首不同的音乐播放,另一个按键控制音乐的停止。
按下播放键,用一点简单的控制之后,才开始播放音乐。
比如,用定时器控制,亮灯倒计时10秒然后触发音乐播放。
方案二:
(1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲
(2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。
例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。
2.2.2方案论证
在方案一中,共用了7个按键,其中6个按键控制播放6首音乐,另一个键控制音乐播放的停止。
但是我们却只能选择6首音乐,局限性太强了。
方案二中采用控制模块可避免分立元件过多易于出错、所需元件多等缺点,且采用硬、软件结合的方法优化了功能和调试的过程。
综上所述,选择方案二,使用单片机实现更优。
3系统硬件设计
本系统由控制器模块、按键模块、LED显示模块和播放模块4个模块组成,系统硬件组成框图如图1所示。
系统总体电路原理图如图2所示。
图1系统组成框图
图2系统电路原理图
3.1控制器模块
本系统控制器芯片采用AT89S52单片机,其管脚图如图3所示。
图3AT89S52管脚图
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
AT89S52的主要特性是:
与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;1000次擦写周期;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;8个中断源;全双工UAR串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒;有看门狗定时器;双数据指针。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
3.2数码管显示模块
LED显示电路是由8个LED发光二极管组成,连接方式为共阳极,LED接到单片机的P1口,若为低电平,可使LED亮起。
发光二极管的亮、灭由内部程序控制,8个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、灭。
图4数码管显示电路
3.3时钟震荡模块
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF
10PF,而如果使用陶瓷振荡器建议选择40PF
10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
振荡器电路图如下:
图5单片机内部、外部振荡电路
3.4播放模块
播放模块是由8550NPN三极管和电磁蜂鸣器组成。
AT89S52输出高电平控制信号,启动8550NPN三极管使信号放大,从而启动电磁蜂鸣器。
与LM386和喇叭的组合相比较,该播放模块存在一定噪声.音响效果较差。
但由于所需驱动功率较小,驱动器件要求不高,并能降低设计成本。
因此,必须选用8550NPN三极管和电磁蜂鸣器则能满足系统要求。
3.5硬件元件清单
系统元器件清单见表2。
名称
数量(个)
型号
备注
电阻
6
排阻RX8(1个)1k(2个),5.5k(1个),10k(1个),15(1个)
数码管
1
7SEG-DIGITAL
开关
4
BUTTON
K1\K1\K3\K4
单片机
1
AT89C51
三极管
1
2N3906
扬声器
1
SPEAKER
电源
2
POWER
5V
电容
3
GROUND
30pf(2个),10uf(1个)
晶振
1
CRYSTAL
4软件设计与仿真
本系统程序包括主程序、键盘扫描子程序、发送键码子程序、发送数据子程序、接收命令子程序等。
主程序用于系统初始化,子程序调度等。
键盘扫描子程序用于扫描键盘状态,将被按键的位置号存入缓冲器中。
发送键码子程序用于将缓冲区键的接通码或断开码发送给单片机接口。
发送数据子程序用于将数据发给单片机接口。
接收命令子程序用于接收单片机接口发来的键盘命令。
4.1主程序设计
本程序可以实现课程设计的基本要求,并可以通过按键播放两首歌曲,主程序流程图如图6所示。
图6主程序流程图
4.2仿真软件简介
Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合。
具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
(2)支持主流单片机系统的仿真。
目前支持的单片机类型有:
ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。
(3)提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2、MPLAB等软件。
(4)具有强大的原理图绘制功能。
总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
Proteus7.5是目前最好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、ROM、键盘、马达、LED、AD/DA、部分SPI器件、部分IIC器件等)。
软件编译采用KEILC51软件,KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
4.3仿真结果
按照上面设计的电路在proteus软件内画图,打开单片机软件开发系统Keil,选择89c51单片机,在其中编写程序,运行生成一个后缀名为hex的文件,然后将该文件下载到proteus中的AT89c51单片机中进行仿真,观察实验现象。
仿真能实现播放音乐,按键选择曲目,暂停,播放功能。
仿真成功后,安装好实验板,然后将音乐程序下载到电路板内,观察结果。
能实现播放音乐,按键换曲等功能。
4.4系统调试
程序调试中出现的问题及解决的办法:
(1)有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
(2)程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。
当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。
(3)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
(4)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
(5)编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
(6)LCD计时正常显示的解决办法:
两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。
解决办法:
将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。
但还有问题。
改进方案:
若采用可以定时时间更长的单片机,可以避免所有问题。
结束语
本文设计的音乐盒,是基于单片机设计制作的电子式音乐盒。
本设计特点有:
(1)与传统的机械式音乐盒相比更小巧,音质更优美且能演奏和弦音乐;
(2)电子式音乐盒动力来源是电池,制作工艺简单,可进行批量生产,所以价格便宜;(3)基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便;(4)根据存储容量的大小,可以尽可能多的存储歌曲;(5)可以设计彩灯外观效果,使音乐盒的功能更加丰富。
但由于AT89C51分辨率不是太高,音乐有点单调,另外,由于时间关系具体电路还有的地方不尽完善之处。
(6)因容量问题无法容纳五首歌曲
/*****************************************************
Header:
单片机:
数码管显示音乐播放
FileName:
数码管显示音乐播放
Author:
戴启盛
Date:
2012/01/03
******************************************************/
#include
#defineucharunsignedchar
#defineuintunsignedint
voiddelay(uinttime)
{//delay一次即延时约20ms
uinti;
while(time--)
for(i=0;i<2580;i++);//约20ms
}
uintcodetimer[]={0x0000,//各音符频率对应定时器初值
//timer[]为基本音符对应定时器初值,timerup[]为升音音符对应定时器初值。
//1234567
0xf88c,0xf95c,0xfa15,0xfa68,0xfb05,0xfb90,0xfc0c,
0xfc44,0xfcad,0xfd0a,0xfd32,0xfd83,0xfdc8,0xfe06,
0xfe22,0xfe57,0xfe85,0xfe9b,0xfec2,0xfee4,0xff02
};
uintcodetimerup[]={0x0000,
//timer[]为基本音符对应定时器初值,timerup[]为升音音符对应定时器初值。
//1#2#3#4#5#6#7#
0xf8f3,0xf9b9,0xfa68,0xfab9,0xfb4c,0xfbd0,0xfc44,
0xfc7a,0xfcdd,0xfd32,0xfd5d,0xfda7,0xfde8,0xfe22,
0xfe3e,0xfe6f,0xfe9b,0xfeaf,0xfed3,0xfef4,0xff20
};
ucharth,tl;
sbitout=P2^0;
uinti=0,j=0;
/******************************************************************************
曲子存储格式:
频率,节拍;频率,节拍;
0x00--0---;0x00------
音域,正常为01;频率1~7;是1否0升音节拍1~15
00\02\03降升八度0表示休止是1否0顿音若为0则表示停止标志
********************************************************************************/
ucharcodebas[]={//音符
0x01,0x08,0x02,0x08,0x03,0x08,0x04,0x08,0x05,0x08,0x06,0x08,0x07,0x08,//0x08,0x08,
0x11,0x08,0x12,0x08,0x13,0x08,0x14,0x08,0x15,0x08,0x16,0x08,0x17,0x08,
0x21,0x08,0x22,0x08,0x23,0x08,0x24,0x08,0x25,0x08,0x26,0x08,0x27,0x08,
0,0
};
ucharcodered[]={//红河谷
0x05,0x01,0x11,0x01,0x13,0x03,0x13,0x01,0x13,0x02,0x12,0x01,0x13,0x01,0x12,0x01,0x11,0x03,
0x05,0x01,0x11,0x01,0x13,0x02,0x11,0x01,0x13,0x01,0x15,0x02,0x14,0x01,0x13,0x01,0x12,0x04,
0x15,0x01,0x14,0x01,0x13,0x02,0x13,0x01,0x12,0x01,0x11,0x02,0x12,0x01,0x13,0x01,0x15,0x01,0x14,0x03,
0x06,0x01,0x06,0x01,0x05,0x02,0x07,0x01,0x11,0x01,0x12,0x02,0x13,0x01,0x12,0x01,0x11,0x04,
0,0
};
ucharcodexingyue[]={//星月神话
0x15,0x01,0x16,0x01,0x15,0x01,0x14,0x01,0x15,0x02,0x14,0x01,0x13,0x01,0x14,0x02,0x13,0x01,0x12,0x01,0x11,0x04,
0x12,0x02,0x14,0x02,0x13,0x02,0x11,0x02,0x06,0x04,
0x14,0x01,0x15,0x01,0x16,0x02,0x15,0x01,0x14,0x01,0x15,0x02,0x14,0x01,0x13,0x01,0x14,0x02,0x13,0x01,0x12,0x01,0x11,0x04,
0x12,0x02,0x16,0x01,0x13,0x01,0x13,0x02,0x14,0x01,0x15,0x01,0x14,0x04,
0x12,0x03,0x14,0x01,0x13,0x02,0x14,0x01,0x15,0x01,0x16,0x03,0x21,0x01,0x16,0x03,0x00,0x01,
0x12,0x03,0x14,0x01,0x13,0x02,0x14,0x01,0x15,0x01,0x14,0x04,0x00,0x01,
0x14,0x01,0x15,0x01,0x16,0x02,0x15,0x01,0x14,0x01,0x15,0x02,0x14,0x01,0x13,0x01,0x14,0x02,0x13,0x01,0x12,0x01,0x11,0x04,
0x12,0x02,0x14,0x02,0x13,0x02,0x14,0x01,0x15,0x01,0x16,0x03,0x16,0x01,0x15,0x02,
0x14,0x01,0x15,0x01,0x16,0x02,0x15,0x01,0x14,0x01,0x15,0x02,0x14,0x01,0x13,0x01,0x14,0x02,0x13,0x01,0x12,0x01,0x11,0x04,
0x12,0x02,0x16,0x01,0x13,0x01,0x13,0x02,0x14,0x01,0x15,0x01,0x14,0x04,
0x16,0x01,0x21,0x01,0x22,0x03,0x22,0x01,0x21,0x02,0x15,0x01,0x21,0x01,0x16,0x02,0x14,0x02,0x12,0x02,
0x12,0x01,0x13,0x01,0x14,0x02,0x15,0x01,0x16,0x01,0x15,0x02,0x21,0x02,0x16,0x04,
0x16,0x01,0x21,0x01,0x22,0x03,0x22,0x01,0x21,0x02,0x15,0x01,0x21,0x01,0x16,0x02,0x14,0x02,0x12,0x02,
0x16,0x01,0x15,0x01,0x14,0x02,0x15,0x01,0x16,0x01,0x15,0x02,0x16,0x02,0x12,0x04,
0x16,0x01,0x21,0x01,0x22,0x03,0x22,0x01,0x21,0x02,0x15,0x