打鼓游戏机设计报告 本文关键词:打鼓,游戏机,报告,设计
打鼓游戏机设计报告 本文简介:综合实验设计设计名称:打鼓游戏机专业班级:通信01班组员姓名:王忠潘杨维李春晓旦增维色指导教师:王永东设计时间:2013年6月摘要本实验设计的是一个打鼓游戏机,通过构建系统电路来实现打鼓游戏的功能。设计首先用音频线将背景音乐输送至飞思卡尔单片机进行AD转换分析出音乐的节奏点,通过节奏点控制游戏的开始
打鼓游戏机设计报告 本文内容:
综合实验设计
设计名称:
打鼓游戏机
专业班级:
通信01班
组员姓名:
王忠潘
杨维
李春晓
旦增维色
指导教师:
王永东
设计时间:
2013年6月
摘要
本实验设计的是一个打鼓游戏机,通过构建系统电路来实现打鼓游戏的功能。设计首先用音频线将背景音乐输送至飞思卡尔单片机
进行AD转换分析出音乐的节奏点,通过节奏点控制游戏的开始,通过敲击外接鼓面电路会启动、切换LCD12864的游戏界面和难度,游戏开始之后敲击鼓面作为游戏输入以此来进行游戏,敲击鼓面的不同会相应触发ISD1760存放的前景音乐,前景音乐和背景音乐通过两路运算放大电路和一个加法器进行叠加产生立体声效果。
关键字
打鼓游戏机,飞思卡尔,LCD12864,ISD1760
1、
绪论
1.1电子技术综合设计性质
电子技术综合设计是在学完《模拟电子术》、《数字电子技术》课程之后,安排的实践教学环节。使学生能综合运用所学知识,进行实际电子线路的设计、装接、调试等。
通过完成一个课题的电路设计、理论计算及实验调试任务,巩固和加深电子技术课程中所学理论知识和实验技能。
在实践中提高分析问题、解决实际问题的能力,为今后的毕业设计、工程实践打下一定基础。
1.2综合设计主要特点
(1)
不同于平时的习题
作习题主要是为了加深对课堂上讲解知识的理解,题目内容涉及面较单一,在给定的理想化的条件下,经过抽象加工后,不难得出标准答案。
电子技术综合设计任务,多是实际的“模拟”或“数字”电路装置,它涉及的知识多而广,没有固定的答案,只能从实际出发,通过调查研究,查询资料,方案比较,设计计算得到比较好的设计方案后,再通过实验调试,使理论设计逐步完善,最后达到实际要求。
(2)
不同于一般的基础实验
基础实验着重点是放在验证基本理论和电路性能上,通过实验只能初步了解电路实验的步骤和基本方法,熟悉常用电子仪器设备的使用方法。
电子技术综合设计,正是为学生创造一个动脑又动手,独立开展电路设计、调试的机会。可以运用实验手段检验理论设计中的问题所在,又可运用学过的知识,指导电路调试工作,使电路更加完善。
(3)
不同于毕业设计
毕业设计是培养工科学生的最后一个教学环节,它要求学生综合运用公共基础课、专业基础课和专业课的知识,去解决工程实际问题;完成工程技术人员必须具有的基本能力的训练;从题目的广泛和深度上,毕业设计比电子技术综合设计要难。
(4)
电子技术综合设计特点
它围绕一门课程内容做综合性的训练,题目虽出自实际电路,但比较简单,比较定型,一般不是真实的生产、科研任务,基本上是有章可循。
着眼点是让学生开始从理论学习轨道→引向实际方面。把过去熟悉的定性分析,定量计算方法与工程估算,实验调整等手段结合起来。
逐步掌握工程设计的步骤和方法,了解科学实验的程序和实施办法。使理论和实际有机结合,真正实现由知识向智能的转化。
锻炼分析问题、解决电路实际问题的本领。
1.3综合设计目的
(1)、巩固和加深对电子线路基本知识的理解,提高学生综合运用电子技术课程所学知识的能力,使理论和实际有机结合,真正实现由知识向智能的转化。
(2)、培养学生根据课题需要选学参考书,查阅手册和文献资料的自学能力。通过独立思考,深入钻研有关问题,学会自己分析问题、解决问题的能力。
(3)、通过实际电路的设计方案的分析比较、参数计算、元件选取,安装调试等环节,初步掌握简单实用电路的分析方法和工程设计方法。
(4)、掌握常用仪器设备的正确使用方法,学会简单电路的实验调试和整机指标测试方法,提高动手能力。
(5)、能按设计任务书的要求,编写设计说明书,能正确反映设计和实验成果,能正确绘制电路图。
(6)、培养严肃认真的工作作风和科学态度,发扬团队精神。
2
、总体方案
2.1方案图(构建一个大致系统框架图不是电路图)
图1-1打鼓机原理框架图
2.2
器件选择
CPU控制:飞思卡尔单片机开发板
显示模块:LCD12864液晶显示屏
背景音乐:MP3成品电路
前景音乐:用ISD1760录放音芯片
立体声模块:两块LM741运算放大器
鼓面模块:用555构成多谐振荡器
2.3
技术指标(这个需要设计任务书,把基本功能和我们的提高功能抄上去)
2.3.1
基本功能
(1);
(2);
(3);
2.3.2扩展功能
3、打鼓机硬件原理
3.1
CPU模块
3.1.1芯片介绍
芯片封装图
9S12XS128
单片机
S12XS
16
位微控制器系列针对一系列成本敏感型汽车车身电子应用进行了优化。S12X
产品满足了用户对设计灵活性和平台兼容性的需求,并在一系列汽车电子平台上实现了可升级性、硬件和软件可重用性、以及兼容性。
S12XS
系列可以经济而又兼容地扩展至带
XGate
协处理器的
S12XE
系列单片机,从而为用户削减了成本,并缩小了封装尺寸。S12XS系列帮助设计者迅速抓住市场机遇,同时还能降低移植成本。
3.1.2主要特性
1、S12X
CPU,
最高总线速度
40MHz
2、64KB、128KB
和256KB
闪存选项,均带有错误校正功能(ECC)
3、带有
ECC
的、4KB
至8KB
DataFlash,用于实现数据或程序存储
4、可配置
8-
、10-
或12-
位模数转换器(ADC),转换时间
3μs
5、支持控制区域网(CAN)、本地互联网(LIN)和串行外设接口(SPI)协议模块
6、带有
16-位计数器的、8-通道定时器
7、出色的
EMC,及运行和停止省电模式
3.1.3管脚定义
开发板实物图
板上有构成最小系统必要的复位电路、晶体振荡器及时钟电路,串行接口的RS-232
驱动电路,+5V电源插座。单片机中已经写入了开发的监控程序。单片机的大部分I/O端口都通过两个64芯的欧式插头引出。这两个插头在PCB上的距离为190mil,用户可以根据图2和表
1的定义设计自己的应用系统,即目标母板,然后将开发板插在目标母板上调试。
3.2显示模块
3.2.1
LCD12864介绍
HS12864-15系列产品硬件特性如下:
·提供
8
位,4
位并行接口及串行接口可选
·并行接口适配
M6800
时序
·自动电源启动复位功能
·内部自建振荡源
·64×16
位字符显示
RAM(DDRAM
最多
16
字符×4
行,LCD
显示范围
16×2
行)
·2M
位中文字型
ROM(CGROM)
,总共提供8192个中文字型(16×16点阵)
·16K
位半宽字型
ROM(HCGROM),总共提供
126
个西文字型(16×8
点阵)
·64×16
位字符产生
RAM(CGRAM)
HS12864-15系列产品软件特性如下:
·文字与图形混合显示功能
·画面清除功能
·光标归位功能
·显示开/关功能
·光标显示/隐藏功能
·显示字体闪烁功能
·光标移位功能功能
·显示移位功能
·垂直画面旋转功能
·反白显示功能
·休眠模式
3.2.2连接电路
左图为电路连接图,右图为实物图
RS/CS----PA0
RW/SID----PA1
E/SCLK----PA2
PSB------PA3
NC--------PA4
/RESET----PA5
DB0—DB7-------(这些你自己填)
3.2.3电路原理
当LCD12864在接受指令前,MCU
必须先确认12864处于非忙状态。即读取
BF=0,才能接受新的指令;如果在送出一条指令前不检查
BF
状态,则需要延时一段时间,以确保上一条指令执行完毕,具体指令执行时间参照指令表。
“RE”是基本指令集与扩充指令集的选择控制位,当变更
“RE”的状态后,以后的指
令维持在最后的状态。除非再次变更“RE”的状态,否则使用相同的指令集时,不需要重新设置“RE”
。
3.2.4
初始化流程
3.3
前景音乐模块
3.3.1
ISD1760介绍
SD1700系列芯片是华邦公司新推出的单片优质语音录放电路,该片提供多项新功能,包括内置专利的多信息管理系统,
新信息提示
(vAlert),双运作模(独立&嵌入式),以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。
3.3.2
ISD1760
SPI电路
左图为小组设计电路理图,右图为其滤波电路
3.3.3
ISD1760
SPI工作原理
因为要与飞思卡尔单片机进行连通控制,所以使用了ISD1760
SPI模式。在SPI模式下,存储位置都可以通过行地址很容易地进行访问。主控单片机可以访问任何行地址,包括存储SE音效的行地址(0x000-0x00F)
。像SET_PLAY,
SET_REC和SET_ERASE这些命令需要一个精确地起始地址和结束地址。如果开始地址和结束地址相同,那么ISD1760将只在这一行进行操作。SET_ERASE操作可以精确地擦除在起始地址和结束地址间的所有信息。SET_REC操作从起始地址开始录音,并结束于结束地址,并且在结束地址自动加上EOM标志。同理,SET_PLAY操作从起始地址播放语音信息,在结束地址停止播放。
另外,SET_PLAY,SET_REC和SET_ERASE命令有一个先入先出缓存器,使得从一个存储块到下一个存储块之间实现无缝转移。这个先入先出的缓存器只有在相同类型的SET命令下才有效。也就是说SET_PLAY在SET_ERASE之后将不能利用这个缓存器,并且这是一个错误的命令,SR0中的COM_ERR位将被置1。当芯片准备好接收第二个SPI命令时,在SR1中的RDY位将置1。同样,在操作完成时会输出一个中断。例如,如果两个连续但带有两对不同地址的SET_PLAY命令被正确发送后,此时缓存器装满。在完成第一个语音信息的播放后,第一个SET_PLAY操作会遇到一个EOM,这时不会像一般遇到EOM时自动STOP,而是继续执行第二个SET_PLAY命令,芯片将播放第二个语音信息。这个动作将最小化任何两个录音信息之间潜在的停留时间,且使芯片流畅地连接两个独立的信息。
如果循环存储体系处于令人满意的状态,那么可以使用PLAY,REC,FWD,RESET,ERASE和G_ERASE这些命令,功能类似于1760的独立模式中相应的功能。这些命令将确保在独立模式下操作时储存机构保持一致,但是,音效提示将不同于独立模式。如果希望在SPI模式和独立模式之间转换,注意必须使用SET_REC和SET_ERASE以遵循循环存储体系。
3.4
立体声模块
3.4.1
LM741芯片介绍
1和5为偏置(调零端),2为正向输入端,3为反向输入端,4接地,6为输出,7接电源,8空脚
LM741
是一种应用非常广泛的通用型运算放大器。由于采用了
有源负载,
所以只要两级放大就可以达到很高的电压增益和很宽的共模及差模输入电压范围。本电路采用内部补偿,电路比较简单不易自激,工作点稳定,使用方便,而且设计了完善的保护电路,不易损坏。LM741可应用于各种数字仪表及工业自动控制设备中。
芯片电路原理图
运算放大器属于使用回授电路进行运算的高放大倍率型放大器,其放大倍率完全由外界元件所控制,透过外接电路或电阻的搭配,即可决定增益(即放大倍率)大小。图2为运算放大器于电路中的表示符号,可看出其包含两个输入端,其中(+)端为非反相(Non-Inverting端,而(-)端称为反相(Inverting)端,运算放大器的作动与此二输入端差值有关,此差值称为“差动输入”。通常放大器的理想增益为无穷大,实际使用时亦往往相当高(可放大至105或
106倍)
,故差动输入跟增益后输出比较起來几乎等于零。
3.4.2
LM741电路图及原理分析
该模块设计实现的功能是将背景音乐和前景音乐进行放大之后叠加输出,从上面电路图可以看到,背景音乐从音频接口接入之后分成两路信号分别进行放大,原因是输入的音频信号分为左右声道所以要分成两路单独操作,在其中一路中把ISD1760输出的前景音乐叠加进来,两路信号非反相放大之后又通过一个音频接口输出可实现立体声效果,因为要分析背景音乐的节奏点实现音乐和游戏同步,所以放大之后的信号要接入单片机AD
0通道进行转换。
3.5
鼓面模块
3.5.1
555芯片介绍
图1-2555管脚图
3.5.2
555构成多谐振荡器(f=1HZ)
vO
VCC
R1
Vc
0.01uF
1
2
3
4
8
7
6
5
R2
图1-3
555电路图
555工作波形
(1)、参数计算(这里把我们的参数带进去算一下)
R1=6.8kohm
R2=3.3kohm
VC=0.1mf
C2=0.01uf
(2)、多谐振荡器的特点:
①
不需外触发的自激振荡器;
②
无稳定状态,均为暂稳态;
③
矩形波中含有丰富的高次谐波,习惯称多谐振荡器。
(1)
Vcc通过R1、R2向C充电,在VC
没有充电到
2/3VCC
之前,Vo
保持
1
不变。
(2)
当VC=2
/3VCC时→Vo由1翻转为
0
。
→T
导通,→电容C
经R2、T放电。
(3)当Vc降至VCC
/3时,使得→Vo回到
1
,→T截止,→电容C
再充电,进入循环。
3.5.3
工作原理
采用4个555震荡电路作为鼓面,通过手接触铜板改变震荡器的外界电容来改变输出频率,飞思卡尔单片机里面的输入捕捉模块可以很容易的获得振荡器输出的频率变化,从而判断是否有敲击动作。
打鼓机软件原理
(=
=这个我不晓得要把哪些贴上去)
4、设计流程
1.任务安排:
组员
任务分工
王忠潘
电路图设计,软件编写与调试
杨维
电路图设计,硬件制作与调试
李春晓
鼓面传感器制作,硬件制作,报告撰写
旦增维色
游戏界面开发,规则设计及游戏模式制定
2.设计过程:
第一周:电路图设计,游戏设计,确定硬件。
在这周我们小组讨论了游戏的运行模式,初步确定了元器件材料(后附元器件列表),规划了制作方案。
第二周:硬件制作及调试,软件设计
本周开始进行并且完成了硬件的焊接,下图为初步完成的电路板
可见完成的效果还是挺理想的,连接上显示屏后LED等和显示屏均有响应。与此同时,经过王老师的建议,鼓面的设计和初步调试也完成,下图为用手接触鼓面前和接触后输出频率的变化:
接触前
接触后
可见频率发生了明显的变化(2倍),得出鼓面的方案是可行的。
图为硬件电路焊接检测
第三周:软件设计及调试,硬件的改进
本周主要软件的调试工作,由于写入指令后显示频无法正常显示图片,所以要进行修改。在分析和询问老师后发现,出了底层函数出了一些问题,硬件上也出现了原理性错误,于是当机立断决定重新焊一块电路板。
图为王忠潘在进行软件的调试
图为杨维在进行软件的修改
第四周:硬件软件的综合改进,鼓的组装,成绩评定
设计在本周进入尾声,但也是最忙碌的阶段。在调试的过程中发现了各种问题,大部分均解决,本次设计的成品如图:
整体系统搭建实物图
5、设计心得
在整个过程中,我们碰到了各种各样“稀奇古怪”甚至是“不可思议”的问题,每一天都是抱着一大堆的问题到处询问,我们很庆幸自己的设计的题目网上没有任何参考资料,这样才能逼着我们不停学习不停提问不停思考,在每一天的纠结与痛苦之中挖掘成长的快乐,不断体会着收获的乐趣。在王老师的引导下,我们解决了一波又一波的问题浪潮,不断尝试和失败之中我们一次又一次整装出发,不停前进永不懈怠。也所幸有许多优秀的同学与我们作伴,我们经常就某个问题商量讨论,寻找解决方案,最后再进行优化。其实,我们觉得,最后的结果并不是最重要的,一路上我们的成长和收获以及同学之间的互帮互助才是最重要的!
碰到问题并不可怕,可怕的是我们不堪一击。有时候电路板焊接有问题或是程序函数不能实现功能,我们都不能着急乱了阵脚要用积极的形态去面对,一步一步踏踏实实往前走。
本次综合设计对于我们来说是一次严峻的挑战,它体现出了我们每个人的综合素质的水平;同时,这也是一次难得的机会。近一个月的时间里,我们的个人能力有了显著地提高,对于之前所学知识也更加熟练,加强我们的团队意识,磨砺了自身的意志。它教会了我们,每一次遇到难题,我们都要灵活运用所学的知识去克服,不懂的要学会寻求团队的帮助,对于学习要有不断探索的精神,敢于创新,同时也要能与解决自己的创新。
6、调试日志
6月8号
年级大会宣布组员和设计题目。
6月9号
与指导老师见面初步了解设计题目,小组成员讨论、构建大体框架,最后经过讨论决定硬件由五个部分组成:CPU、12864显示、mp3背景音乐模块、ISD1760前景音乐模块、鼓,游戏流程由维色同学负责。
6月12号
小组会议,讨论电路原理图并分配管脚及软件中I/O端口和其他功能模块的初始化。
6月13号
课程设计正式开始的一天,经过王永东老师的指导,我们对设计做出了一下几点修正:
1、
MP3模块背景音乐模块不用ISD1760实现,直接用MP3成品或电脑即可;
2、
ISD1760前景音乐模块采用SPI模式,将功能按键省去;
3、
增加立体声模块,具体实现方法是通过两路运算放大电路将背景音乐和前景音乐进行叠加,因为分为左右声道所以可产生立体声效果,音频的输入输出都通过音频接口与硬件相连;
4、
增加按键指示,在前期调试阶段可代替鼓面进行测试,方面调试;
5、
增加电源、地指示灯;
6、
实现游戏的同步,包括背景音乐和游戏开始、前景音乐和游戏状态的同步,方法是运用飞思卡尔单片机内部FFT功能模块将背景音乐的节奏点分析得出,然后计算游戏方块掉落时间从而实现同步。
6月14号
鼓面的方案一直都定不下来,最后指导老师提供了一种新颖的思路:
使用555定时器振荡电路的特性,将鼓面(铜片)与输入端电容相连,当触碰鼓面的时候即改变了输入从而引起输出波形频率明显的改变,CPU捕捉输出,软件内部为该输出频率设定阈值,当输出频率超过阈值时可判定鼓面触碰有效。
6月15号
硬件焊接并对鼓面方案进行测试,效果佳,输入和输出的频率差别很大,容易检测。
6月17号
硬件电路焊接完成。
6月18号
硬件电路查错,软件工作同步开展(主要是针对LCD12864的显示)。
6月19号
ISD1760前景音乐模块软件完成,LCD12864显示不出,电路查错并
|
发现以下错误:
|
1、ISD1760电源滤波焊接有误;
6月22号
2、LCD12864对比度调节滑动变阻器不能正常工作;
3、两条线路焊接电阻、电容有误。
4、
6月23号
运行同题目同学调出来的LCD12864程序仍然没有任何显示,经过指导老师的查错,修改部分底层函数并发现致命错误----飞思卡尔的E口不能随便乱用,因为其第二功能会带来很大影响,而我们当时为了电路焊接简单就近使用I/O口,导致LCD12864的DB4和ISD1760都使用到了E口,因此电路不能正常工作。
6月24号
重新焊接的测试电路板12864可以正常工作,且模拟部分电路可以使用,但是声音有失真,经过老师指导在模拟电路部分加了偏置电路,调节使声音不失真。
6月25号
因为第一次焊接电路的失误,所以小组决定对硬件电路重新布局并重新焊接。
6月26号
电路焊接开始,同步进行软件的编写。
6月27号
焊接完成并进行测试,可以实现的功能:
1、
模拟电路可以不失真工作,且实现立体声效果;
2、
LCD12864可以显示汉字和图片;
3、
ISD1760录音完成并能实现指定播放。
6月28号
经过王老师讲解和指导,重新构建12864打点函数,不使用液晶屏自带显示符及行显示规则(四行指定地址显示)。而是重新把地址打乱使用0~127,0~31实现自定地址的打点显示,实现的效果是任意位置、任意图形显示,把整个界面竖屏显示。
7月1号
实现的效果:
1、
背景音乐和游戏同步;
2、
前景音乐、背景音乐立体声效果;
3、
LCD12864能够指定地址显示图片和字符;
4、
按键正常识别。
仍然存在的问题:
1、
方块不能连续掉落;
2、
Great、come
on、囧不能根据游戏状态实时改变;
3、
情景音乐放音是方块会停止;
4、
两个鼓同时接入电路中时不能正常工作;
5、
分数显示是重叠效果;
6、
方块掉落速度过慢;
解决办法:
1、
通过一个构建游戏数组实现方块的连续掉落;
2、
游戏算法上实现,例如连续5次摁对则显示great;
3、
把延时和放音函数读状态注释掉;
4、
可能是中断(鼓面)频率太高,解决方法是中断服务程序尽量简单,不考虑中断的优先级,中断占用时间尽量短;
5、
不读回数据直接写;
6、
改变打点算法,不采用一个一个打点的方式,可以凑齐一个字节或几个字节的方式再一次性进行打点;
老师提供的建议:
1、
背景可以以图片的方式一次画出,可以解决背景闪烁以及背景显示过慢的问题;
2、
打点函数的算法优化,填满数据之后一次性打点;
3、
方块掉落时,对方块设地址标识,主函数每执行一次搜寻相当于定位了方块的位置;
4、
先忽略节奏,游戏流程通过构建游戏流程数组来控制整个游戏的流程,相当于实现规定好了方块的数目和掉落情况;
5、
前景音乐叠加到背景音乐时会出现失真的情况,原因是加法器使得直流偏置偏离原来的值,因此之前调好的现在就会出现失真,解决办法是sp端与加法器的连接中加上电容隔离,参考值为10uf。
7月2号
经过修改昨天的问题大部分解决,但仍然存在一些小问题:
1、
防作弊问题和按一次键会出现多次声音;
2、
界面的不和谐;
王老师提出的解决办法和一些建议:
1、
第一个问题的解决办法:设两个标志位,构造两个函数。
函数1中标志位1等于上一次的检测键值,进入程序之后如果当前键值等于上一次键值,不执行任何键使能操作,否则的话令标志2=1,最后标志1=当前键值;函数2中,如果标志2=1,则执行相关键使能操作,操作完之后标志2清零直至下一次键有效;
2、
界面左边加一条竖线;
3、
界面鼓面上加两根小棒;
4、
真实的鼓必须进行检测测试;
5、
细化加分细则;
6、
难度不同,构造的流程数组也不同;
7、
加一个前景音量调节键,使游戏更具人性化。
7月3号
需要细化的问题:
1、
细化加分细则,包含两个加分点:连续按对、按的情况;
2、
游戏难度选择画面切换;
3、
页面布局,为了画面的和谐需要重新布局一下;
4、
调节音量功能键;
5、
左边按键不能实现加分;
7、参考文献
[1]《单片机原理及应用》
王永东
任勇:清华大学出版社,2012
[2]《电子线路》
谢嘉奎
宣月清
冯军:高等教育出版社,2000
[3]《模拟电子技术基础》
华成英
童诗白:高等教育出版社,2000
[1]《数字电路与逻辑设计》王毓银
陈鸽:高等教育出版社,1999
8、附录