八音盒设计实用版.docx
- 文档编号:12057869
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:12
- 大小:109.71KB
八音盒设计实用版.docx
《八音盒设计实用版.docx》由会员分享,可在线阅读,更多相关《八音盒设计实用版.docx(12页珍藏版)》请在冰点文库上搜索。
八音盒设计实用版
《单片机原理及应用》课程设计
—八音盒设计
完成日期:
2013年06月11日
一、单片机设计课程的目的和基本要求
大学本科生动手能力的培养和提高时大学本科的一个重要内容。
本次课程的设计目的,是让我们通过课程设计建立起单片机应用系统的概念,根据系统设计要求,掌握初步的单片机系统设计方法,让学生的动手能力和对单片机系统从硬件系统和软件系统设计两个方面都得到实际的提高。
为今后的毕业设计打下良好的基础。
课程设计的基本要求有:
(1)在课程设计过程中,学会使用89S51单片机及相应绘图软件,根据设计要求设计,编程,运行,调试最后提供课程设计报告;
(2)课程设计应由学生本人独立完成,严禁抄袭;
(3)认真编写课程设计报告。
二、八音盒的设计要求
8051八音盒
本设计利用8051单片机结合内部定时器LCD设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。
本设计可以学习8051定时器程序设计,按键扫描及歌曲旋律简单直觉式输入法的设计方法。
其基本功能为:
1使用LCD显示器来显示目前演奏的歌曲编号;2具有16个按键操作来选择演奏哪一首歌曲;3内建10首歌曲旋律,按下单键可以演奏歌曲;4演奏时可以按键中断。
程序执行后工作指示LED闪动,表示程序开始执行,按下单键0~9便可以演奏歌曲,歌曲演奏中,可以按键中断。
三、关于AT89C51
3.1、对于AT89C51的性能介绍
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
它可以提供以下的功能标准:
(1)4K的字节闪烁存储器;
(2)128字节随机存取数据存储器;
(3)32个I/O口;
(4)2个16位定时/计数器;
(5)1个5向量两级中断结构;
(6)1个串行通信口;
(7)片内振荡器和时钟电路。
另外AT89C51还可以警醒OHZ的惊涛逻辑操作,并支持两种软件的节点模式。
3.2、AT89C51的管脚介绍
图3.1AT89C51的管脚图
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
4.芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
四、总体设计
(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)。
记数脉冲值与频率的关系公式如下:
N=Fi/2/FrN:
记数值
Fi:
内部计时一次为1微秒.故其频率为1MHZ
Fr;要产生的频率
(3):
起记数值的求法如下:
T=65536-N=65536-Fi/2/Fr
例如:
设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。
T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr
低音D0的T=65536-500000/262=63627
中音D0的T=65536-500000/523=64580
低音D0的T=65536-500000/1047=65059
表4.1调个音符频率与计数值T的对照表
企鹅1。
16-5。
86-4.375
五、硬件原理及设计说明
企鹅1。
16-5。
86-4.375
六、软件设计流程图
七、程序输入窗口、编码及音乐程序
7.1程序输入窗口
图7.1keil5环境下的程序输入窗口
7.2编码
建立音乐的步骤
(1)先把乐谱的音符找出,然后建立T值表的顺序;
(2)把T值表建立在TABLE1,构成发音符的计数值放在"TABLE"。
(3)简谱码(音符)为高位,节拍为(节拍数)低四位,音符节拍码放在程序的TABLE处。
表7.1拍与节拍的对照
企鹅1。
16-5。
86-4.375
表7.2简谱对应的简谱码、T值、节拍数
企鹅1。
16-5。
86-4.375
7.3音乐程序
企鹅1。
16-5。
86-4.375
八、仿真和调试
企鹅1。
16-5。
86-4.375
图9.1在Isis环境下进行图形编辑和元器件选择
上面设计的电路在Proteus软件内画图,打开成单片机软件开发系统keil,选择89c51单片机,在其中编写程序,运行生成一个后缀名为hex的文件,然后将该文件下载到Proteus中的AT89C51单片机中进行仿真,观察实验现象。
仿真能实现播放音乐,按键选择曲目、暂停、播放功能。
程序调试中出现的问题及解决的办法:
(1)有时会出现程序一点错误也没有,但就是不能正常运行的现象,最后我们发现是因为程序中有的指令书写得不规范导致的,例如有的RET返回指令一定要按正确格式书写或在两行指令间最好不要留空行。
(2)程序中的跳转指令的运用很重要,为保险起见,都用LJMP,我们就遇到过跳转指令用错程序无法正常运行的现象。
当用JNZ指令时,跳转范围比较少,这时要用一个标号中转。
(3)编程时要注意,在程序开始时,要写入各定时器中断的入口地址。
(4)编程过程中要注意加注释或分割线,否则,在程序过长时容易变得很乱,不便于查找或更改。
(5)编程前要加流程图,这样会使思路清晰,例如数字音乐盒的设计思路完全可以按着MP3的工作方式列写流程图。
(6)LCD计时正常显示的解决办法:
a.两个定时器同时工作,存在中断时序问题,刚开始时我们把定时器1设定在方式3,计250us,由于定时中断过于频繁,使CPU负载过大,导致音乐不能正常播放,时间不能正常显示。
解决办法:
将定时器1设定在工作方式1,16位计数,计50ms,效果有很大改观。
但还有问题。
b.当音乐为全4拍起始时,此时音乐节奏与定时器T1中断频率错开,LCD显示和音乐播放都会好一些。
c.另外,在歌曲中,当遇到一个音符发音为4拍,在编曲中为*CH,因时间较长,当定时器T1此时来中断时,就会对歌曲播放产生影响,若改为发音一拍,中断对歌曲播放影响减弱,但音乐效果变差。
九、元器件清单
名称
数量(个)
型号
备注
电阻
6
排阻RX8(1个)1k(2个),5.5k(1个),10k(1个),15(1个)
数码管
1
7SEG-DIGITAL
按钮
4
BUTTON
单片机
1
AT89C51
三极管
1
2N2905
扬声器
1
SPEAKER
电源
2
5V
电容
3
30pf(2个),10uf(1个)
晶振
1
CRYSTAL
十、电路总图
图10.1单片机八音盒的设计总电路图
十一、实验总结
信息革命的深入和计算机技术的飞速发展,单片机的应用越来越广泛,并逐渐发展成为一门关键的技术学科,单片机具有体积小、重量轻、耗电少、电源单一、功能强、价格低、运行速度快、抗干扰能力强、可用性高等优点。
单片机是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
本次课程设计是为了培养我们的动手能力,同时也让我们对单片机有更为直观的了解,对其相关软件了解并熟悉使用,我了解了keilC51软件包含的窗口及其功能,且学会使用Proteus软件进行仿真。
通过此次课程设计,明显的改善了,首先对于硬件电路的工作原理有了进一步的学习,同时有了一个提升;软件方面,在程序的设计,程序的调试方面都有了很大的进步。
通过这次课程设计,我体会到了成功的喜悦,听着自己设计的程序下载到单片机中播放出音乐,心理非常自豪。
这次的课程设计在一定程度上改变了我学习单片机这门课程的态度,从最初的认为学它没有什么实际意义,到如今喜欢单片机学习,并希望能将理论运用到实践,设计出更好更完整的系统。
我明白了一个人要想做好一件事,就必须具备自信心,耐心,还要有毅力,要胆大心细,要勇于尝试,要手脑并用,最后才能交出一份令人满意的答卷。
感谢林老师对我的指导,我学会单片机其相关绘图软件的使用,了解单片机的使用原理,增强动手能力,为今后的毕业设计打下良好的基础。
参考文献:
【1】何立名,《单片机应用系统设计》,北京航空航天大学,1996
【2】李广第,《MCS-51单片机原理及应用》没背景机械工业出版社,2001
【3】为青,程国钢.单片机KeilCx51应用开发技术[M].北京:
人民邮电出版社,2007.02
【4】康化光,《电子技术基础》.北京:
高等教育出版社,2001
【5】邓元庆.数字电路与逻辑设计[M].北京:
电子工业出版社,2001
【6】曹巧媛,《单片机原理及应用》,北京电子工业出版社
【7】INTEAL.MEMORYCOMPONENTSHANDBOOK,1990
【8】XX中文网
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 八音盒 设计 实用