智力抢答语音报号器总结报告_第1页
智力抢答语音报号器总结报告_第2页
智力抢答语音报号器总结报告_第3页
智力抢答语音报号器总结报告_第4页
智力抢答语音报号器总结报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课题名称智力抢答语音报号器COMMENTD1待完善目录第一章绪论3第二章整体设计方案321课题名称及设计要求322功能和技术指标分析423方案设计与论证5第三章硬件设计831单元电路设计932总电路原理图1533所需元器件15第四章软件设计1741抢答器系统软件设计的流程图1742主程序1743中断程序1844语音程序1945按键程序2046数码管程序21第五章组装调试2251系统调试方案2252具体调试步骤22第六章问题与分析27总结29参考文献30COMMENTD2赵凯,你根据实际做的改一下第一章整体设计方案11课题名称及设计要求111课题名称智力抢答语音报号器112设计任务设计一个可用于智力竞赛抢答语音报号器。除了具有一般的智力抢答器的功能外,要求增加语音报号和提示功能。112设计要求18路抢答按钮,有启动/停止按钮以及限时设置按钮;2用数码管显示抢答号和回答限时的倒计时;3采集按钮号码控制语音芯片输出语音信号;4有抢答定时时间和回答定时时间的时间设置以及语音提示。12功能分析由设计要求出发,该抢答器要实现以下功能1为8位参赛选手各提供一个抢答按钮,分别编号18;2为主持人设复位键和开始/停止键,以控制系统的复位与抢答开始/停止;3抢答器要有数据锁存与显示的功能。抢答开始后,若有任何一名参赛者按动抢答按钮,抢答有效,定时器停止工作,一位数码管显示其编号,并且语音报号提示抢答成功,同时其他人再按对应按钮无效。4抢答器要有抢答定时和回答定时功能,主持人可自行设置定时时间。当主持人启动“开始/停止”键后,定时器自动减计时,并在两位数码管上显示,同时语音提示抢答计时开始;5参赛者只有在设定时间内抢答方为有效抢答。若设定时间内无选手进行抢答(按对应按钮),语音提示抢答结束,并封锁输入电路,防止选手超时抢答;6抢答成功后,语音提示回答计时开始,程序进入回答倒计时状态,倒计时时间在两位数码管上显示;7当回答倒计时为0时,语音提示回答时间到,程序进行初始化。13方案设计131设计思想框图见附录一。132方案论证(一)以89C52单片机作为控制核心控制核心我们选用51系列的单片机,为了得到更大的程序存储空间,我们选用AT89C52。用单片机作为控制核心会使系统电路变得相对简单,外部电路先对较少,因为单片机内部资源很丰富。单片机SINGLECHIPMICROCOMPUTER具有以下特点片内存储容量较小、可靠性高、便于扩展、控制功能强、实用性好等等。由于单片机具有优越的高集成电路性,使其工作速度快,效率高。另外,89C52单片机采用12MHZ晶振,提高了信号的测量精度,并使该系统可通过软件来扩展功能。下面我们来比较89C51和89C52表1189C51和89C52的比较数据存储器程序存储器定时器中断51系列128B4KB2552系列256B8KB38(二)采用ISD4004语音芯片语音芯片采用ISD4004芯片完成语音提示功能。ISD4004系列工作电压3V,单片录放时间8至16分钟,音质好。芯片采用多电平直接模拟量存储技术,每个采样值直接存贮在片内闪烁存贮器中,因此能非常真实、自然地再现语音,采样频率可为40、53、64、80KHZ。下表为ISD4004芯片的引脚说明表12ISD4004芯片引脚管脚号标号功用1/SS片选信号输入端,此端为低,即向该ISD4004芯片发送指令,两条指令之间为高电平2MOSI串行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD输入。4VSSD数字电源接地端11VSSA模拟电源接地端12VSSA模拟电源接地端13AUTOUT音频输出提供音频输出,可驱动5K的负载14AMCMP自动静噪端,当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰弱,这样有助于养活无信号静音时的噪声。16IN反相模拟输入端,这是录音信号的反向相输入端,输入放大器可用单端或差分驱动。17IN同相模拟输入端,这是录音信号的同相输入端,输入放大器可用单端或差分驱动。18VCCA模拟电源,采用5V电压23VSSA模拟电源接地端26XCLK外部时钟端,本端内部有下拉元件,在不外接地时钟时,此端必须接地27VCCD数字电源,采用3V电压28SCLK串行时钟ISD的时钟输入端,由主控制器产生,用于同步MOSI和MISO的数据传输。数据在SCLK上升沿锁存到ISD,在下降沿移出ISD。(三)选用LM386音频放大器音频功放选用LM386,它主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。输入端以地为参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24MW,使得LM386特别适用于电池供电的场合。与通用型集成运放相类似,LM386是一个三级放大电路。第一级为差分放大电路,第二级为共射放大电路,第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。133系统框图定时抢答器的系统框图如下图11所示,它由主体电路和扩展电路两部分组成。主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答按键时,能显示选手编号,同时能封锁输入电路,禁止其他选手抢答。扩展电路完成定时抢答、语音提示等功能。图11定时抢答器系统硬件框图第二章硬件设计21工作原理8路智力抢答语音报号器由八大部分组成AT89C52单片机控制电路,按键电路,复位电路,晶振电路,语音提示电路,数码管显示电路,蜂鸣器报警电路和LED灯电路。下面分别详细介绍各个模块电路的设计原理。211AT89C52单片机控制电路选用的单片机型号P89C52X2BN,封装DIP40,内涵8K字节FLASH;89C52单片机内置8位中央处理单元、256字节内部数据存储器RAM、8K片内程序存储器(ROM),32个双向输入/输出I/O口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。设计原理如图21所示,将AT89C52单片机控制电路作为整个电路系统的核心,通过控制I/0口电平的高低,来驱动和控制其外围的设备,即控制发光二极管的亮灭,数码管显示不同的数字,蜂鸣器响,检测按键是否按下以及控制语音芯片进行录音和语音提示。图21AT89C52单片机控制电路212按键电路按键电路的原理电路之间的连线是与操作的关系,即只有当两个高电平相与结果才为高电平,而只要当其中有一个位为低电平的时候,相与的结果就为低电平;这样16个按键的电路即可设计如下图所示检测方法先给S3S0赋1110,检测S7S4的电平,假设为1101,则说明是S2按键按下;假设为1111,则再给S3S0依次赋值1101、1011、0111,再依次检测S7S4的电平。这样每循环一次即可检测一次16个按键是否按下。图22按键电路213复位电路AT89C52单片机的RST引脚为硬件复位引脚,当上电时或者RST引脚持续4个机器周期的高电平时即可如图实现单片机复位,复位后单片机恢复到初始状态。对于复位电路如图23所示,当上电时5V电压立刻通过10UF电解电容充电,当达到3V左右时即可实现单片机复位,而后又通过R1放电,使得RST保持为低电平;当开关S0持续按下4个周期时,RST引脚即可获得45V的电压,这样也可实现单片机的复位。图23复位电路214晶振电路AT89C52单片机内部有一个时钟振荡器,只需外接一个振荡器就能产生时钟信号送到单片机内部。图24所示电路通过将12M石英晶体以及2个30PF的极性电容C1、C2接在放大器的反馈回路(即89C51单片机的XTAL1、XTAL2口),构成并联振荡电路,并为XTAL2引脚产生大约幅度为3V,频率为12M的正弦波时钟信号。电路中的两个30PF的极性电容的作用为一是帮助振荡器起振,二是对振荡器频率进行微调。图24晶振电路215语音提示电路在本课题中,我们要实现语音提示功能,采用的芯片为ISD4004,而在放音的过程当中,我们则采用LM386功放芯片。其具体的电路图如下图25所示。ISD4004芯片引脚说明/SS引脚为片选引脚,用于ISD4004芯片的选通;SCLK引脚为ISD4004芯片的串行时钟引脚;MOSI引脚为串行输入口此引脚为单行输入端,主控制器应在串行时钟上升沿之前半个周期将数据放到本端,供ISD输入,我们通过此引脚输入录音和放音的地址;AMCAP引脚主要是通过串联一个1UF的电容用于语音芯片的静噪;AUDOU引脚为语音输出端,其通过一个47UF的电容可以驱动5K的电阻,在本课题中其先通过连接一个放大器进行信号放大,然后再接扬声器进行语音输出。而IN和IN引脚主要是通过各自串接一个01UF的电容,然后再外接一个麦克风进行语音输入。LM386功放芯片引脚说明LM386的外形和引脚的排列如下图所示。引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端。图25语音提示电路216数码管显示电路数码管显示电路包括一个位锁存器,一个段锁存器和一个4位数码管三部分电路。首先,我们选用的4位数码管接法为共阴极,即我们传送的数据低电平有效;由于4位数码管的数据信号端口都连在一起,即四个数码管的A、B、C、D、E、F、G、H都各自连在一起;故为了能让4位数码管能显示不同的数字,我们必须采用位锁存器和段锁存器控制在不同的时刻,选择不同的数码管,并显示不同的数字的办法。通常完成一次显示4个数码管需要4个机器周期。具体原理为在第一个机器周期选中第一个数码管,再送入其要显示的数字,在第二个机器周期选中第二个数码管,再送入其要显示的数字这样每4个周期即可送往4个不同数据,由于时钟频率超过了我们人眼分辨率,故我们看起来就好像4个数码管是同时显示的。图261位锁存器电路图图262段锁存器电路图图263四位数码管显示电路图217蜂鸣器报警电路电路设计原理通过AT89C52单片机的P26引脚控制FM的电平高低,当FM即其为高电平的时候,C、E极不导通,蜂鸣器不响;当FM为低电平的时候,C、E极导通,蜂鸣器间有电流通过,蜂鸣器响。其中R7的功用为限流作用。图27蜂鸣器报警电路图218LED灯电路电路设计原理通过AT89C52单片机的P20P23引脚控制L1、L2、L3、L4的电平高低,当为高电平的时候,由于发光二极管两端的电平都为高电平,所以二极管中没有电流流过,发光二极管不亮;而当为低电平的时候,由于发光二极管的正向端为高电平,负向端为低电平,所以发光二极管中有电流流过,发光二极管亮。同时为了保证发光二极管不被烧坏,限流电阻大小的选择非常重要。发光二极管的导通电流为310MA,导通电压为17V;故电阻在这里我们选择的限流电阻为1K。517/10117/1图28LED灯电路22总电路原理图见附录一。23元器件清单表21抢答器设计所需元器件序号名称规格型号数量1微处理器AT89C52(DIP)12语音芯片ISD400413锁存器74HC57324晶振12MHZ15放大器LM386M16按键197峰鸣器18杜邦线89单孔排阵810发光二极管611NPN三极管2124位数码管共阴极113扬声器114小话筒115电路板316电阻75欧姆217电阻1K818电阻3K119滑动变阻器47K120极性电容30PF321极性电容01UF322极性电容220UF323电解电容1UF224电解电容47UF225电解电容10UF326插孔直列底座40孔127插孔直列底座28孔128插孔直列底座20孔229插孔底座4孔1308位排阻10K231焊锡若干32导线若干第三章软件设计在本设计中包括了以下十个主要程序主程序,初始化程序,抢答/回答时间预置程序,倒计时程序,抢答按键检测程序,抢答处理程序,数码管显示程序,语音报号程序,LED灯显示程序,中断处理程序。系统主程序设计对于单片机,当一上电,则调用初始化程序对其进行初始化。而为了能够达到抢答的公平公正合理,应该在主持人发布抢答开始命令之前必须先设定抢答和回答的时间,因而在编开始抢答前的程序得先编写这段时间预设的程序,当时间设定好了之后,主持人发布抢答命令按下开始按键,程序开始打开定时中断开始倒计时,然后调用抢答按键检测程序进行检测,当扫描到有人按下了答题键时,就调用抢答处理程序,进入到答题阶段,并调用数码管显示程序,语音报号程序和LED等显示程序进行响应;若没有,则调用中断处理程序;而在答题阶段与抢答阶段类似,首先进行时间预设,然后开中断计时器,最后进行中断处理。软件流程图图41软件流程图31主程序进入程序之后首先是抢答和答题时间的设置步骤,在这个步骤中,使用者输入答题时间和抢答时间,输入完两位的抢答时间之后按“确认键”(KEY16),然后接着输入两位的答题时间,输入完成同样按“确认键”(KEY16),然后程序用QDTIME和DTTIME(都定义在PROTOH文件中)两个变量分别记录。再输入过程中,正在输入的位上,光标闪动以提示输入。退格键(KEY15)可以撤销输入,回到上一位。然后,数码管闪动显示刚刚设置好的两个时间,直到使用者按下“开始键”(KEY14)之后,抢答时间开始每秒减一。在减一过程中,当18按键被按下的时候,则说明有人抢答,此时数码管的第一位显示0,第二位显示抢答人的号码(由之前的按键按下而确定),第三位,第四位的答题时间开始倒计时。如果抢答时间倒计时到了0但是仍没有键按下(没有人抢答),则程序回到数码管闪动的阶段。在答题倒计时过程中,当KEY16(确认键)被按下的时候,计时停止,四位数码管前两位显示答题人序号,后两位显示答题人从抢答到答题结束所用时间。当KEY14(答题键)被按下的时候,再次开始进入抢答的环节。第四章系统调试方案41通电检查通电前,检查各部分接线是否正确,检查电源线、接地线、信号控制线和元器件引脚间有无短路开路现象,器件有无接插错误,排除虚焊。用万用表检测电源和地线之间电阻是否足够大。上电后,观察电路有无异常现象,如出现异常则立即关闭电源检查,待排除故障后方可重新上电。在通电情况下,检查各电路的电源、接地、固定电位点及接入信号是否可靠地接入。42具体调试421硬件调试(1)AT89C52最小工作方式检测(包括复位按键的检测)给单片机上电,利用示波器检测ALE引脚输出的模型是否为脉冲波;若是,则单片机工作正常,否则工作不正常。(2)16路按键的检测在16路按键电路焊接好之后,先不要使用单片机,将万用表(发光二极管档位检测)一端放置P20,另一端分别放置P24,P25,P26,P27,对应分别按键1,2,3,4;对应每按一个键万用表都能响,则说明按键1,2,3,4电路连接正确。同理检测其他12个键盘连接是否正确。(3)ISD4004语音电路的检测当语音电路连接好之后,也先不要使用ISD4004芯片和LM386芯片。给电路上电,检测ISD4004芯片底座18,27号管脚电压是否为3V,23,26引脚电压是否为0V。LM386芯片底座2,4引脚是否为0V,6号引脚是否为5V。如若是,则说明芯片的驱动电压连接正确,但要说明整个电路连接正确,还需通过软件检测才能说明。(4)4位数码管检测在4位数码管电路焊接好后,先不要使用单片机,直接给74HC573芯片的输出端WEI1,WEI2,WEI3,WEI4分别加低电平,再给另一块74HC573芯片的输出端A,B,C,D,E,F,G,H,依次赋高电平,若四位数码管的8个发光二极管依次亮,若4832个数码管都能亮,则说明4位数码管物理电路连接正常。(5)蜂鸣器检测在蜂鸣器电路焊接好后,先不要使用单片机,给蜂鸣器的正极上正电压,在三极管的另两端同时给低电平,看蜂鸣器是否响,若响则说明物理电路连接正确。(6)4路LED灯检测在LED灯检测焊接完后,先不要使用单片机,将电源直接加到LED灯两端(内涵一个保护电阻),看发光二级管亮不亮,如亮则说明物理电路焊接正确。422软件调试软件调试我们是用的PROTUES仿真的方法来调试的。在PROTUES中对我们的主要电路进行仿真,画出电路图如下这样就能在不上板子的情况下看自己写的程序的效果,及时纠错,我觉得这是个很好的工具。1四位数码管显示四位数码管显示我采用的是中断的方式,中断时间选择的是5MS,很多资料都建议数码管显示的时间间隔设定在20MS比较合适,但是我把中断时间设为20MS的时候闪动的效果很明显,不能达到要求,所以改为5MS。可能是我的初值计算的有问题,但是我觉得,怎么计算初值和时间,以及时间具体是多少毫秒这都是次要的,关键问题是你能不能调出合适的初值,能让数码管合理的显示,并不增加运算单元额外的负担。中断服务程序不仅用来四位轮流点亮的数码管,还负责产生一个周期为2S的方波,用来驱动在输入阶段的光标闪动。另外,方波二分频还产生一个秒计时器,用来在答题和抢答阶段准确计时。这样,实现了一个计数器的多用。2按键驱动按键驱动我采用的是最简单最傻瓜的方法P2口输出0X0F;然后记录此时P2口的输入数据TEMP1,然后P2口输出0XF0,记录TEMP2。这样,第一次确定是哪一行的按键被按下,第二次确认是哪一列的按键被按下。两次扫描确定按键,最后用16个IF语句,来判断按下的按键。相比于很多资料中逻辑性很强的按键驱动方法,我所采用的方法很简单,但是单片机判断的次数增加,加大了复杂度。但是程序理解起来相当简单,通过简单的更改可以适应很多相同结构的按键,是十分方便的。3发光二极管电路这部分电路很简单,基本上就是给管脚赋值0,查看是否亮就行了。4晶振电路由于PROTUES本身默认了,语音电路相关芯片PROTUES芯片库中没有,所以没有仿真,这也是我们最终没能做出语音功能的原因之一。最后谈谈软件设计的总体思想在整个软件流程中,采用了很分离的思想。比如说,在PROTOH文件中定义了很多变量,其中有A1,A2,A3,A4四个变量,分辨代表着四位数码管的四位。而中断服务程序点亮数码管的时候,就使用的这四个变量。也就是说服务程序不用去管数码管究竟应该显示什么,而是只完成显示的任务,这样把内容和行为分离开来,是很好的思想。其他的程序块,比如说倒计时模块,也只用改变A1A4的值,而不用管数码管究竟怎么显示,就能完成数码管显示倒计时的功能,采用这种分离的思想,可以将整个程序分解成不相干的小模块,只玩完成模块的功能,整个程序就能运行起来。最后我们电路板焊完后在板子上调试了语音电路1多语音录制程序设计。要实现8路智力抢答语音报号功能,首先必须在ISD4004语音芯片当中我语音报号的声音录制下来。故编写程序使得具有以下功能。表52录音地址录音内容0X000X00程序初始化0X000X80请设置抢答时间和回答时间0X100X00抢答开始0X100X80抢答时间到0X200X001号抢答成功,回答开始0X200X802号抢答成功,回答开始COMMENTD3赵凯,按照我们的改一下0X300X003号抢答成功,回答开始0X300X804号抢答成功,回答开始0X400X005号抢答成功,回答开始0X400X806号抢答成功,回答开始0X500X007号抢答成功,回答开始0X500X808号抢答成功,回答开始0X600X00回答结束0X600X80回答时间到编写的程序不能完成录制播放功能,没能发现问题所在第五章问题与分析问题0数码管显示的仿真调试过程中,发现仿真结果不是预期,显示乱码。后来经分析,原来是在位选到下一位的时候,由于我们是段选和位选都是P0口,没有及时关闭段选的输出造成的。比如说,第一位输出8;WELA1/开位选P0/位选选到第一位,WELA0/关位选DULA1/开段选P0/段选输出8DULA0/关闭段选然后第二位的时候重复上述过程,只是更改位选和段选的输出。而上述过程是有毛病的。因为在关位选之后,P0口上是有输出的,而且输出的是位码,而此时打开段选,也就是P0上的位码会直接输出到段锁存器上,直到接下来给P0赋值为止。而在关段选之后,紧接着下一位开位选的时候也会同样有这种问题,所以造成了干扰,形成乱码。而解决的方法也很简单,就是在开段选/位选之前,就给P0口赋上新要输出的的值,而不是在开了段选/位选之后,再给P0口赋值。问题1当电路板焊完之后,用仿真正确的程序烧录进电路板运行,结果数码管显示乱码。后来经老师检查,是锁存器焊接错误。由于锁存器元器件的引脚和仿真图上的引脚分布有差异,导致将接地端焊错,最终不能正确显示。分析PROTUES仿真图上的元器件引脚分布是不同于实际元器件的,焊接的时候要格外小心。问题2数码管显示的时候总是最后一位比较亮,但是在仿真的时候是没有问题的。开始我认为是电阻焊接的问题,因为电阻大了当然会使数码管显得暗一些。但是后来经过思考,认为这种可能不不存在的,因为数码管的电阻有八个,明显是接在段选引脚上的,即使是电阻焊接问题,造成的应该是八段数码管的某一段显示很暗,而不是四位中的某一位显示很暗。然后我分析了以下程序,发现了问题所在数码管驱动程序上,我每个周期依次点亮一次四位数码管,第二个周期再点亮一次。周期为20MS。这样是有问题的。因为我一个周期内依次点亮四位,那么前三位的点亮状态是一闪而过的,很短,第四位的点亮状态却会被保留,直到下一周期的到来,又重复刷新四位数码管,所以第四位的点亮状态会在每个点亮周期之外的时间保留,而那个时间明显是远远大于点亮四位数码管的时间的,所以第四位特别的亮,而前三位很暗淡。解决的方法是,没个周期来的时候,只点亮一位数码管,下一周期的时候,点亮下一位,这样循环移位,可以保证每一位的亮度都很均衡。问题3语音电路由于PROTUES元件库中没有相关芯片,没能仿真,而是在板子上调试的,编写的简单的录制播放程序没有效果,录制的声音不能播放,也不清楚是录制还是放音部分的毛病,之前出现的锁存器焊接的问题,由于PROTUES仿真是没问题的,问题很容易锁定在板子上,而语音功能没有仿真,也不能确定到底是板子的问题,还是指令的问题,导致语音功能不能实现。总结参考文献5V30PC130PC25V12MY15VR110KR21KS0C310UFRSTRSTX1X2X2X1VCC20GND10Q019Q118Q217Q316Q4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论