可编程作息时间控制器实验报告1.docx
《可编程作息时间控制器实验报告1.docx》由会员分享,可在线阅读,更多相关《可编程作息时间控制器实验报告1.docx(22页珍藏版)》请在冰豆网上搜索。
可编程作息时间控制器实验报告1
物理与电子信息学院
单片机与接口技术课程设计报告
设计题目:
可编程作息时间控制器
专业:
通信工程
班级:
13级通信工程
姓名:
张宏、朱子龙、胡杰
教师评语:
成绩评阅教师日期
课程设计划任务书
通信工程系通信工程专业
学生姓名朱子龙班级13级学号:
130803100
学生姓名胡杰班级13级学号:
130803023
学生姓名张宏班级13级学号:
120803088
课程名称:
单片机原理与接口技术
设计题目:
数字音乐盒
课程设计内容与要求:
课程设计开始日期2016年1月14日指导教师黄云飞
课程设计结束日期2016年3月4日
数字音乐盒
摘要
本设计是基于单片机的数字音乐盒设计,由单片机AT89C51芯片和LCD显示器为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒。
要求利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调并采用LCD显示信息,从而演奏乐曲(最少三首乐曲,每首不少于30秒),开机时有英文欢迎提示字符,播放时显示歌曲序号(或名称),可通过功能键选择乐曲,暂停,播放。
本设计采用4*4键盘,用Protel99来画系统硬件图,采用汇编语言进行编程,编程后利用KEILC51来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能得以正常实现。
该音乐盒的设计可以通过按键选择不同的曲目,播放和暂停,并通过LCD显示歌曲号及播放时间。
本设计键盘采用动态扫描方式。
每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下。
若有键按下,根据读入口的值选择显示值并送至显示值寄存单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音。
同时启动定时器T1,计算音乐的播放的时间。
关键词:
数字音乐盒;AT89C51;KEIL;PROTEUS;数码管
THEDESIGNATIONOF
CONTROLLABLEDIGITALMUSICBOXBASEDON51SCM
ABSTRACT
ThispaperexplainstheprogramdesignationofcontrollabledigitalmusicboxbasedonAT89C51.Thismusicboxisdesignedbytheideathatamulti-functionaldigitalmusicboxcanbemadebasedonthetechnicalprincipleofsinglechipmicrocomputer(SCM),togetherwithusingthePROTEUStosimulatethehardwarecircuitandusingKEILtoprogrammethesourceofmusicboxwhichiscompiledwithClanguage.
ThismusicboxcanproducesquarewavesofdifferentfrequencyincontrolofthetimerinsideSCM,andmusicofdifferenttunesbydrivingspeaker.Theprogramismadeuseoftodrivethesoundingequipmenttoplaypleasantmusicbythewayofchangingmusicscoreintothecorrespondingtimingconstant.
Thismusicboxistotallydesignedwithfivesongs,andalsowiththreechangeablepatternsofLEDcolorfullights.Whilethesongsarebeingperformed,thecolorfullightsareflashingwithtones.Whilethesongsarestoppedplaying,thecolorfullightsstarttoflashwiththreechangeablepatterns.Thesongsandpatternscanbefreetoswitch.Atthesametime,thedigitaltubeisalsoconstantlychangingfigurestoshowtheserialnumberofthesongsandthepatternsofthecolorfullights.
Keywords:
Digitalmusicbox;AT89C51;KEIL;PROTEUS;Digitaltube
目录
1前言------------------------------------------------------------------------------------------------------1
2单片机和音乐盒硬件的功能------------------------------------------------------------------------2
2.1AT89C51芯片的功能----------------------------------------------------------------------------2
2.2音乐盒的硬件及其功能-------------------------------------------------------------------------4
3数字音乐盒的主体设计方案------------------------------------------------------------------------5
3.1音乐盒的主体结构-------------------------------------------------------------------------------5
3.2主设计软件的介绍-------------------------------------------------------------------------------5
3.2.1编程软件KEIL的简介-----------------------------------------------------------------5
3.2.2仿真软件PROTEUS的简介-----------------------------------------------------------6
4音乐盒硬件设计---------------------------------------------------------------------------------------8
4.1总设计框图----------------------------------------------------------------------------------------8
4.2各部分硬件的作用-------------------------------------------------------------------------------8
4.2.1时钟振荡电路------------------------------------------------------------------------------8
4.2.2LED和数码管的设计--------------------------------------------------------------------9
5音调和节拍的设计-----------------------------------------------------------------------------------11
5.1音调和节拍的设计以及音乐基础知识------------------------------------------------------11
5.2音调和节拍的编码------------------------------------------------------------------------------13
6源程序设计--------------------------------------------------------------------------------------------14
6.1音乐程序------------------------------------------------------------------------------------------14
6.2LED花样程序-------------------------------------------------------------------------------------15
6.3数码管程序---------------------------------------------------------------------------------------16
7数字音乐盒总设计图--------------------------------------------------------------------------------17
7.1仿真总设计图------------------------------------------------------------------------------------17
7.2实物总设计图------------------------------------------------------------------------------------18
8结论-----------------------------------------------------------------------------------------------------19
参考文献--------------------------------------------------------------------------------------------------20
致谢--------------------------------------------------------------------------------------------------------21
附录A总程序源代码及注释-------------------------------------------------------------------------22
1前言
随着科技越来越发达,单片机技术也越来越纯熟,单片机的应用也越来越广泛,可以说几乎很难找到哪个领域没有单片机的踪迹。
如今,单片机在各个领域都起着至关重要的作用[1]。
单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
随着人类社会的发展,人们对于视听方面的享受提出了更高的要求。
而传统的音乐盒大部分是机械型的,体积庞大,而且沉重,发音单调,且不悦耳,不能实现大批量的生产,所以很难满足当代人们的需求。
但是本文设计的数字音乐盒是以单片机为核心元件的数字音乐盒。
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。
因此该数字音乐盒也就具有体积小,重量轻,能演奏各种各样的音乐,功能多,外观绚丽多彩,使用非常方便等诸多优点。
而且具有一定的开发价值。
2单片机和音乐盒硬件的功能
随着当代单片机技术的突飞猛进,单片机的功能也越来越强大,主要包括有:
(1)单片机集成度高;
(2)系统结构简单,使用方便,实现模块化;
(3)单片机可靠性高,处理功能强,速度快;
(4)低电压,低功耗,便于生产便携式产品;
(5)控制功能强大。
而本文设计采用的是AT89C51单片机,这是一款性价比非常高的单片机。
2.1AT89C51芯片的功能
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。
俗称单片机[2]。
如图:
2.2音乐盒的硬件及其功能
本文设计的数字音乐盒,所需要的硬件有:
AT89C51芯片:
主控制器;
LED彩灯:
灯光闪烁,P1.0-P1.7控制八路LED彩灯;
数码管:
音乐序号显示,P0.0-P0.6控制数码管;
晶振:
给单片机正常工作提供稳定的时钟信号,电路为12MHZ晶振频率工作,起振电路中C1、C2均为30PF。
电容:
保持一个恒定的偏执电压供给;
喇叭:
发出声音,P3.7控制喇叭
电源:
供电;
电阻;控制电路;
开关:
控制音乐,P3.2控制LED彩灯花样的切换,P3.3控制音乐的切换。
3数字音乐盒的主体设计方案
3.1音乐盒的主体结构
该音乐盒主要是通过控制单片机内部的定时器来产生不同频率的方波,驱动喇叭发出不同音调的音乐。
如图:
本设计是一个基于AT89C51系列单片机的数字音乐盒,一共设计了五首不同风格的歌曲,在播放歌曲同时八路LED彩灯随音调变化而变化,同时利用数码管显示歌曲的序号,以便切换歌曲。
在不播放歌曲的时候还设计了八路LED彩灯,可以随意变化三种花样,给人们带来视听的双重享受。
一共设计了两个开关,一个用以切换LED彩灯花样,一个用以切换歌曲。
3.2主设计软件的介绍
本次设计主要用到了两款软件,一款是用以对源代码进行C语言编程的KEIL软件,另一款则是用以对实物设计进行仿真的PROTEUS软件[4]。
3.2.1编程软件KEIL的简介
要进行单片机的开发设计,首先离不开的就是软件,而如果你使用C语言编程,那么KEIL几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
KEILC51是美国KEILSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
KEIL提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
运行KEIL软件需要WIN98、NT、WIN2000、WINXP等操作系统。
C51工具包的整体结构,uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。
开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。
然后分别由C51及C51编译器编译生成目标文件(.OBJ)。
目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。
ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
KEILC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KEILC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
是一款非常不错的软件。
3.2.2仿真软件PROTEUS的简介
有了编译软件,同样也少不了仿真软件PROTEUS,这是一款非常强大的仿真软件,有了它以后,我们就可以节省大量的精力和资源,仅仅通过电脑就能模拟我们想要的东西,直至满足我们自己的要求为止。
PROTEUS软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
PROTEUS是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC(10、12、16、18、24、30、DsPIC33)、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、KEIL和MPLAB等多种编译器。
在PROTEUS绘制好原理图后,调入已编译好的目标代码文件(.HEX),可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。
PROTEUS是单片机课堂教学的先进助手。
PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例如:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
4音乐盒硬件设计
4.1总设计框图
通过前面的介绍,本文的设计思路已经基本清晰,总设计框图如下:
4.2各部分硬件的作用
硬件除了AT89C51芯片外,主要的就是时钟振荡电路、LED彩灯以及数码管的设计。
4.2.1时钟振荡电路
AT89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或者陶瓷谐振器一起构成自然振荡器。
外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
对外接电容C1,C2虽然没有什么严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易、程序及温度稳定性。
如果使用石英晶体,我们推荐电容使用30PF-10PF,而如果使用陶瓷振荡器建议选择40PF-10PF。
用户也可以采用外部时钟。
采用外部时钟的电路如图示。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。
由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。
振荡器电路图如下:
4.2.2LED和数码管的设计
(1)八路LED彩灯,分别接在P1.0-P1.7这八个端口上,连接方式为共阳极,若为低电平,可使LED亮起。
发光二极管的亮、熄由内部程序控制,八个LED发光二极管分别对应不同的音阶,所以LED会随着音阶的变化按规律亮、熄。
设计如图:
(2)数码管接在AT89C51的P0端口上,数码管采用的是共阴极数码管[5],在数码管与端口之间接了上拉电阻以使数码管能正常工作。
如图所示:
5音调和节拍的设计
5.1音调和节拍的设计以及音乐基础知识
一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能像电子琴那样能奏出多种音色的声音。
因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和节拍表示一个音符唱多长的时间[6]。
不同音高的乐音是用C、D、E、F、G、A、B来表示,这7个字母就是音乐的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,即唱成简谱的1、2、3、4、5、6、7,相当于汉字“多来米发梭拉西”的读音,这是唱曲时乐音的发音,所以叫“音调”,即Tone。
把C、D、E、F、G、A、B这一组音的距离分成12个等份,每一个等份叫一个“半音”。
两个音之间的距离有两个“半音”,就叫“全音”。
在钢琴等键盘乐器上,C–D、D–E、F–G、G–A、A–B两音之间隔着一个黑键,他们之间的距离就是全音;E–F、B–C两音之间没有黑键相隔,它们之间的距离就是半音。
通常唱成1、2、3、4、5、6、7的音叫自然音,那些在它们的左上角加上﹟号或者b号的叫变化音。
﹟叫升记号,表示把音在原来的基础上升高半音,b叫降记音,表示在原来的基础上降低半音。
例如高音DO的频率(1046Hz)刚好是中音DO的频率(523Hz)的一倍,中音DO的频率(523Hz)刚好是低音DO频率(266Hz)的一倍;同样的,高音RE的频率(1175Hz)刚好是中音RE的频率(587Hz)的一倍,中音RE的频率(587Hz)刚好是低音RE频率(294Hz)的一倍。
要产生音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间。
利用定时器计时这半个周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作在计数器模式MODE1下,改变计数值TH0及TL0以产生不同频率的方法。
此外结束符和休止符[7]可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。
在简谱中,数字上面带一个点就是高8度,两个点代表高16度。
数字下面带一个点就是低8度,两个点代表低16度。
若要构成音乐,光有音调是不够的,还需要节拍,让音乐具有旋律(固定的律动),而且可以调节各个音的快满度。
“节拍”,即Beat,简单说就是打拍子,就像我们听音乐不自主的随之拍手或跺脚。
若1拍实0.5s,则1/4拍为0.125s。
至于1拍多少秒,并没有严格规定,就像人的心跳一样,大部分人的心跳是每分钟72下,有些人快一点,有些人慢一点,只要听的悦耳就好。
音持续时间的长短即时值,一般用拍数表示。
休止符表示暂停发音。
一首音乐是由许多不同的音符组成的,而每个音符对应着不同频率,这样就可以利用不同的频率的组合,加以与拍数对应的延时,构成音乐。
了解音乐的一些基础知识,我们可知产生不同频率的音频脉冲即能产生音乐。
对于单片机来说,产