基于凌阳单片机的多路语音灯光控制.doc_第1页
基于凌阳单片机的多路语音灯光控制.doc_第2页
基于凌阳单片机的多路语音灯光控制.doc_第3页
基于凌阳单片机的多路语音灯光控制.doc_第4页
基于凌阳单片机的多路语音灯光控制.doc_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

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

文档简介

河南科技学院2010届本科毕业论文(设计)论文题目:基于凌阳单片机语音识别的多路灯光控制系统学生姓名: 张双洋所在院系: 机电学院所学专业: 应用电子技术教育导师姓名: 徐君鹏完成时间: 2010年5月01日摘要随着人们生活水平的提高,对于智能家居的要求也越来越高,为了帮助那些行动不方便的残疾人,和老年人方便的实现开灯与关灯,本文是以一种具有DSP(数字信号处理)功能的16位凌阳单片机SPCE061A为核心处理器的语音识别系统,它能完成针对特定人的若干命令(特定的孤立词)的语音识别。本设计在具体实践时,以汉语的短命令为识别对象,体现汉语特征;本系统设计、制作了系统硬件电路,然后对系统软件进行了设计,其中硬件电路包括:电源模块,凌阳单片机的最小系统,语音输入模块,语音输出模块,无线发射部分,无线接收部分;软件部分主要包括:主程序,语音识别子程序,语音存储,语音播放程序,等;本系统该系统结构简单,具有很高的性价比,便于推广和应用。关键字:SPCE061A, 特定人语音识别, PT2262/2272 , 无线收发模块Based on Sunplus Speech Recognition lighting control systemAbstractWith the improvement of living standard, the requirements for the smart home become more sophisticated and less mobile in order to help those with disabilities, and olderly people to facilitate the realization of lights and turn off the lights, This is a kind of DSP (Digital signal processing) functions Sunplus 16-bit MCU SPCE061A core processor speech recognition system that can complete a number of orders for a particular person (a specific isolated word) speech recognition. In practice this design when, in the Chinese language short order to identify the object, reflects Chinese characteristics; The system is designed and manufactured hardware circuit, then the system software design, Hardware which includes: Power module, MCU of Sunplus Minimum System,Voice input module, Voice output module, wireless transmitter, wireless receiver part; Software part includes: The main program, Speech recognition subroutine, Vice storage, Voice, player, etc.; The system is simple, with very high cost, ease of promotion and application.Keyword:SPCE061A, Specific Speech recognition, PT2262/2272, Wireless Transceiver目录1 绪论12 设计要求13 方案论证13.1 整体方案选择.14 系统硬件电路设计24.1 SPEC061A简介.24.2 SPEC061A芯片特性.34.3 SPEC061A 最小系统.44.4 电源电路.54.5 音频输出模块.64.7 无线发射模块.74.8 无线接收模块.85 系统软件设计85.1 程序流程图.85.2 Flash存储器读写.105.3 语音训练模块.155.4语音播放模块.186 结束语.20致谢.20参考文献.21附录一 系统原理图22附录二 主程序231 绪论语音识别技术就是让机器通过识别和理解把语音信号转变为相应的文本或命令的技术。语音识别是一门交叉学科,正逐步成为信息技术中人机接口的关键技术,语音识别技术与语音合成技术的结合,使人们能够甩掉键盘,通过语音命令进行操作。近年来语音学研究的深入和数字信号处理软硬件技术的发展,语音技术的应用己经逐步具备走出实验室,服务于社会的能力。尤其在孤立词语音识别技术已基本成熟,逐渐开始应用于家电产品、智能玩具等对识别率要求不是极其严格的领域。现在的灯光控制系统中,只是简单的通过手动开关来控制不同位置的灯,或者是采用声光控的方式实现灯光的控制,手动的控制方式对于病人,老人以及残疾人等这些特殊群体,开关灯光控制系统的弊端就体现出来了。如果是声光控的方式,它比较适合楼道,厕所等公共场所,不适合在家庭,房间里安装,而且控制起来比较单一,触发需要一定的条件。而本文提供的语音控制的灯光系统它可以安装在房间里的任何一个位置,具有特定人的语音识别功能,不仅给人们的生活带来了极大的方便,而且让人们体验到了高科技带来的神奇方便的生活。2 设计要求系统具体设计要求:硬件电路部分:(1) SPEC061A单片机最小系统;(2) 语音A/D输入部分;(3) SPEC061A 的DAC音频输出;(4) PT2262/2272 无线发射接收部分软件部分:(1) 主程序的设计;(2) 语音训练,存储,子程序的设计;(3) 音频播放程序的设计;(4) 语音识别程序的设计;3 方案论证3.1 整体方案选择方案一:基于DSP的孤立词语识别系统,随着语音信号处理技术的不断发展与成熟,语音识别正逐步成为信息技术中人机接口的关键技术,DSP芯片,即数字信号处理器,是专门为快速实现各种信号处理算法而设计的,具有特殊结构的微处理器,其处理速度比最快的CPU还快1050倍,整个系统核心以DSP芯片,语音输入采用TLC320AD50C进行A/D转换,但是这种方案成本较高,同时使用的嵌入式操作系统也会占用一部分额外的硬件资源,这样会大大的提高开支。目前情况下我们不考虑这种方案。方案二:基于ARM+DSP 的语音识别子系统,由于多数的嵌入式系统都使用了ARM、DSP等高速的芯片,本系统采用ARM为系统的主控芯片,DSP芯片负责对语音信号的隐马尔可夫模型建立 ,从而使得嵌入式系统的语音识别更为方便简捷 ,但是由于该系统的技术要求较高,在现阶段灵活使用这些高端芯片有一定的困难,因此目前我们也不采用该方案。方案三:基于SPEC061A的语音识别系统,系统采用凌阳SPCE061A单片机作为语音识别系统的主控芯片。这是一款包含DSP功能并集成了A/D,D/A等一系列功能的语音处理专用SOC,通过硬件电路设计和软件代码部分成功的设计并实现了一种具有语音识别功能、语音提示(语音合成)及语音回放(语音编码记录)功能的嵌入式语音识别系统。语音识别模型采用(DHMM)离散隐马尔可夫模型,利用Baum-welth重估算法、前向后向算法、viterbi算法来完成语音模板的训练和语音识别的任务,系统硬件框图如图1所示:SPEC061A 凌阳单片机MIC语音输入模块语音输出模块电源电路无线发射模块图 1 语音识别系统的硬件框图4系统硬件电路的设计4.1 SPCE061A简介 SPCE061A是凌阳科技研发生产的性价比很高的一款十六位单片机,具有易学易用且效率较高的一套指令系统和集成开发环境。在此环境中,支持标准C语言,可以实现C语言与汇编语言的互相调用,并且,提供了语音录放和语音识别的函数库,只要了解库函数的使用方法,就可以很容易完成语音录放,为软件开发提供了方便的条件。 SPCE061A主要包括输入/输出端口、定时器/计数器、数/模转换、模/数转换、串行设备输入/输出、通用异步串行接口、低电压监测和复位等电路,并且内置在线仿真电路ICE接口,使其能够快速地处理复杂的数字信号。SPCE061A片内还集成了一个ICE(在线仿真电路)接口,使得对该芯片的编程、仿真变得非常方便,而ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSP IDE),用户可以进行在线调试、仿真;而程序的下载(烧写)也是通过该接口完成。SPCE061A内部结构图如图2所示。图2 SPCE061A内部结构图4.2 SPCE061A芯片特性 16位nSP微处理器; 工作电压:内核工作电压VDD为3.03.6V(CPU),I/O口工作电压VDDH为VDD5.5V(I/O); CPU时钟:0.32MHz49.152MHz; 内置2K字SRAM; 内置32K闪存ROM; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态); 2个16位可编程定时器/计数器(可自动预置初始计数值); 2个10位DAC(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; 锁相环PLL振荡器提供系统时钟信号; 32768Hz实时时钟; 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; 具备串行设备接口; 低电压复位(LVR)功和低电压监测(LVD)功能; 内置在线仿真板(ICE,In- Circuit Emulator)。4.3 SPCE061A最小系统 SPCE061A最小系统包括SPCE061A芯片及其外围的基本模块,其中外围的基本模块有:实时时钟模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等,如图3所示。实时时钟电路采用晶体振荡电路,外接32768HZ晶振和连个20PF的电容。SPEC061A锁相环的作用是将系统提供的实时钟基频(32768HZ)进行倍频,调至49.152MHZ、40.96MHZ、32.768MHZ、24.567MHZ或20.480MHZ。系统预设的PLL振荡频率为24.567MHZ。图 3 SPCE061A最小系统4.4 电源电路图4 电源电路SPCE061A板采用3节5号电池进行供电,由J4接入,其中前后两组电容用来去耦滤波,使其供给芯片的电源更加干净平滑。为了获得标准的3.3伏电压,在电路上加入SPY0029三端稳压器和两个二极管,是为了防止误将电源接反造成不必要损失而设置的。在操作过程中千万不要将电源接反,因为反向电压超过一定值,二极管将会被损坏,达不到保护的目的。后面的零电阻及其电源分成不同的几路是为了减少电磁干扰设置的。图 1是电源部分的电路,4.5V直流电压经过SPY0029后产生3.3V给整个系统供电。 SPY0029是凌阳公司设计的电压调整IC,采用CMOS工艺。SPY0029具有静态电流低、驱动能力强、线性调整出色等特点。图中的VDDH3为SPCE061A的I/O电平参考,接SPCE061A的51脚,这种接法使得I/O输出高电平为3.3V;VDDP为PLL锁相环电源,接SPCE061A的7脚;VDD和VDDA分别为数字电源与模拟电源,分别接SPCE061A的15脚和36脚;AVSS1是模拟地,接SPCE061A的24脚;VSS是数字地,接SPCE061A的38脚; AVSS2接音频输出电路的AVSS2。61板电源模块电路如图4,SPCE061A的内核供电为3.3V,而I/O端口可接3.3V5V,所以在电源模块(61板上)中有一个端口电平选择跳线,如图中的J5。本系统需要的端口高电平为3.3V,所以图8中的J5跳线需要跳到2和3上。4.5 音频输出模块音频输出(D/A)部分的原理图如图5所示,可以直接听喇叭输出的声音。图中的SPY0030也是凌阳公司的产品。它的详细说明可以参见SPY0030 data sheet。和LM386相比,SPY0030还具有下述优势,比如LM386工作电压需在4V以上, SPY0030仅需2.4V即可工作(两颗电池即可工作);LM386输出功率100mW以下, SPY0030约700mW。芯片将声音处理后输出(J2),经SPY0030音频放大输出(J3)通过扬声器还原为声音。 图 5 音频输出电路SPY0030A是凌阳公司开发的专门用于语音放大的芯片。SPY0030的输入电压的范围是2.46.0伏,该电路中采用的电压是3.3伏。SPCE061A内置2路10位DAC,只需要外接功放电路即可完成语音的播放。4.6 音频输入模块音频输入部分如图6 所以,MIC_IN通道的信号从MIC_IN引脚输入,ADC最大参考电压为VDD,模拟信号电压范围也是0VDD.经过寄存器后有AGC将MIC_IN信号控制在制定的范围内,AGC的电压增益倍数可通过外部电路调整。图 6 音频输入电路 4.7 无线发射模块发射模块的电路如图7所示,本系统的发射部分采用PT2262发射模块,不仅可以实现自动控制,还能够强制进行灯光控制。图 7 无线发射模块4.8 无线接收部分无线接收模块电源电路如图8 所示,无线接收模块如图9所示,接收部分是控制灯光和插座的开关的。首先,对于整个模块的供电部分采用阻容降压的方式,实现模块+5V的供电,接收模块采用PT2272,并通过CD4013电路进行控制,实现无线控制。图 8 无线接收电源模块图 9 无线接收模块5 系统软件设计5.1 程序流程图在主函数中调用相关函数完成特定人语音的训练,然后在训练成功后进行语音识别,根据识别的命令执行相关的操作。程序流程框图如图10所示:开始初始化I/O是否第一次上电?擦除指定的FLASH置相关标志位语音识别初始化是否为触发状态?判断是第几组命令?设置触发判断是第几条?名称A组B组全亮全灭判断是第几条?判断是第几条?是否为触发名称?A组第一路亮第一路灭第二路亮第二路灭B组第三路亮第三路灭第四路亮第三路灭训练是否超时?清除触发标志训练键按下否擦除FLASH标志图 10 主流程图根据FLASH中的标志位来进行判断是否为第一次下载。使用库函数BSR_ExportSDWord(uiCommandID)将训练好的语音模型导出存储到FLASH中进行操作,然后再调用读写FLASH函数。在进行语音识别时,首先读取FLASH将语音模型取得,然后调用BSR_ImportSDWord(uiCommandID)函数将语音资源载入内存。在识别出命令后,执行相关操作,及打开某路灯,或者是关闭某路灯。5.2 Flash 存储器读写SPEC061A 有32K字的内嵌入闪存(Flash存储器),这32K字内存给划分为128个页,每个页的存储容量为256字,第一页的范围为0x8000x80FF,最后一页的地址范围为0XFF000XFFFF。它们在CPU空闲状态下均可通过编程被设置为只读或出/写方式。全部32K字均可在ICE工作方式下被编程写入或被擦除。Flash存储器的控制端的地址为0x7555(P_Flash_Ctrl = 0x7555;Flash存储器的匹配数据为0Xaaaa(C_FLASH_MATCH = 0xAAAA);Flash存储器的页擦除控制字为0x5511(C_FLASH_PAGE_ERASE = 0x511);Flash存储器字的写入控制字为0x5533(C_FLASH_1WORD_PGM = 0x5533);Flash存储器的顺序写入多字的控制字为0x5544(C_FLASH_SEQUENT_PGM = 0x5544)。(1)Flash存储器的页擦除的过程如图11所示:开始P_Flash_Ctrl = C_FLASH_MATCHP_Flash_Ctrl = C_FLASH_PAGE_ERASEP_Flash_Ctrl = P_age_Address延时20ms结束图11 Flash 页擦除流程32KB的内嵌式闪存地址从0x8000开始被划分为128页(每页存储容量为256B),它们在CPU正常运行状态下均可通过程序擦除或写入。全部32KB闪存均可在ICE工作方式下被编程写入或擦除。擦除一页的流程是:先给命令用户接口地址0x7555里送0xAAAA,然后给命令用户接口地址0x7555里送0x5511,在给要擦除页地址送任意数,约20ms即可完成擦除操作,然后可以执行其他操作。例如,擦除第六页(0x85000x85FF)流程如下:先向0x7555送0xAAAA;在向0x7555送0x5511;最后向0x85XX至0Xxxxx送任意数即可。Flash存储器页擦除程序:=/函数:F_FlashErase()/语法:void F_FlashErase(sector)/描述:擦除256字节/参数: 擦除页的起始地址/返回:无=.PUBLIC _F_FlashErase_F_FlashErase: .proc push bp to spbp = sp + 1r1 = C_FLASH_MATCH/AAAAP_Flash_Ctrl = r1r1 = C_FLASH_PAGE_ERASE/5511P_Flash_Ctrl = r1r1 = bp+3/擦除一页r1 = r1pop bp from spretf.ENDP .END(2)Flash存储器的写入一个字的过程:写入一个字的流程是:先给命令用户接口地址0x7555里送0xAAAA,然后给命令用户接口地址0x7555里送0x5533,再给要写入地址送数据,约40us即可写入操作,然后可以执行其他操作。例如,向0x8000写入0xFFFF流程如下:0x7555到0xAAAA;0x7555到0x5333;0x8000到0Xffff。程序流程图如图12所示。P_Flash_Ctrl = C_FLASH_MATC开始P_Flash_Ctrl = C_FLASH_1WORD_PGMData_Adress = Writed_Data延时40ms结束图12 Flash 写入字流程Flash存储器的写入字的程序:=函数: F_FlashWrite1Word()语法:void F_FlashWrite1Word(int addr,int Value)描述:写一个字到FLASH中参数:1、被写数据的存储地址 2、被写数据返回:无=.PUBLIC _F_FlashWrite1Word_F_FlashWrite1Word: .proc push bp to spbp = sp+1r1 = C_FLASH_MATCH/AAAAP_Flash_Ctrl = r1r1 = C_FLASH_1WORD_PGM/5533P_Flash_Ctrl = r1r1 = bp+3/flash addressr2 = bp+4/datar1 = r2pop bp from spretf.ENDP(3)Flash存储器的顺序写入字:在Flash存储器按顺序写入多字的子程序中,当写入字结束时,需要写入一个数据(可为任意数)到P_Flash_Ctrl寄存器当中,以结束当前多字节写入状态。以上各子程序当中,延时由硬件完成,用户无需在软件当中做软件延时。在没有写入Flash存储器时,(如果Flash存储器已经被擦除)读出0xA000的数据是0xFFFF,所以在开始时读出的数据是0xFFFF。写多个字节流程是:先给命令用户接口地址0x7555里送0xAAAA,然后给命令用户接口地址0x7555里送0x5544,再给要写入字首地址送数据,约40us即可完成1个字节写入操作。在给命令用户接口地址0x7555里送0x5544,给写入字节地址数据,等40us即可,循环操作,即可完成多字的写入。程序流程图如图13所示。开始P_Flash_Ctrl = C_FLASH_MATCP_Flash_Ctrl = C_FLASH_SEQUENT_PGMData_Adress = Writed_Data延时40ms数据是否全部写入?写结束控制字结束图 13 FLASH 存储器顺序写入多字NYFlash存储器的顺序写入字的程序:=/函数:F_FlashWrite()/语法:F_FlashWrite(int sector,int &num,int size)/描述:顺序写多个字/参数:1、被写数据的起始地址 / 2、被写数据 / 3、写数据的数量/返回:无= .PUBLIC _F_FlashWrite_F_FlashWrite: .proc push bp to spbp = sp+1r1 = bp+3/flash base addressr2 = bp+4/datar3 = bp+5/多个字节r4 = C_FLASH_MATCH/AAAAP_Flash_Ctrl = r4L_FlashWriteLoop:r4 = C_FLASH_SEQUENT_PGM/5544P_Flash_Ctrl = r4r4 = r2+r1+ = r4r3 -= 1jnz L_FlashWriteLoopP_Flash_Ctrl = r3 /写结束pop bp from spretf.ENDP5.3 语音训练模块当程序检测到训练标志位uiFlagFirst 为1时,就会要求使用者对它进行训练操作,训练采用两次训练获取结果的方式,以训练控制器的名称为例:控制器首先会提问”给我取个名字吧”,这是训练者告诉控制器一个名字。让后就会提示“再说一遍”,这是再次告诉控制器的名字,如果两次输入的差别不大,控制器就能成功的建立模型,此时训练名字成功;如果没有成功建立模型,会提示你错误的原因,平要求重新训练。一条训练命令成功训练后,会给出下一个要训练名称的提示。可以根据相关的提示进行训练。训练系程序流程如图14 所示:训练名称开始训练第一组第二组全亮全灭第一组名称1号灯亮1号灯灭2号灯亮2号灯灭结束第二组名称3号灯亮3号灯灭4号灯亮4号灯灭图 14 语音训练程序流程图训练子程序:unsigned int TrainWord(unsigned int WordID,unsigned int SndIndex)int Result;PlaySnd(SndIndex);/引导训练,播放指令对应动作while(1)Result = BSR_Train(WordID,BSR_TRAIN_TWICE);/训练两次,获得训练结果if(Result=0) break;switch(Result)case -1:/没有检测出声音PlaySnd(S_NOVOICE);return -1;case -2: /需要训练第二次PlaySnd(S_AGAIN);break;case -3:/环境太吵PlaySnd(S_NOISY);return -3;case -4:/数据库满 return -4;case -5: /检测出声音不同if(WordID = NAME_ID)PlaySnd(S_NAMEDIF); /两次输入名称不同else PlaySnd(S_COMDIF); /两次输入命令不同return -5;case -6: /序号错误return -6;default:break;return 0;5.4 语音播放模块在系统正常工作时,会根据语音输入的命令做出相应的应答,并执行相应的操作,去控制其中一路灯光的打开或关闭,语音播放采用SACM_480格式的语音自动播放模式,程序流程图,如图11 所示。入口S480自动放音初始化获取语音数据需要等待播放结束?播放结束了吗?S480停止返回NNYY图11 语音播放程序流程图语音播放程序操作步骤:1. 新建一个工程,在工程里建立一个新的C语言文件。2. 程序中会用到语音识别的API函数,先拷贝语音识别库bsrv222SDL.lib 到工程文件夹。 3. 拷贝语音识别头文件bsrSD.h、bsrSD.inc到工程文件夹。4. 拷贝语音播放库sacmv26e.lib 和头文件A480.h、a480.inc到工程文件夹。5. 拷贝支持sacmv26e.lib 的汇编语言文件hardware.asm 和头文件hardware.h、hardware.inc 到工程文件夹。6. 在IDE 集成开发环境的Project/Setting/link 中链接bsrv222SDL.lib 和sacmv26e.lib 库到工程中。7. 添加hardware.asm、FIQ.asm、hardware.asm、main.c、Flash.asm等文件到工程文件的“Source Files”,添加bsrSD.h、bsrSD.inc、A480.h、a480.inc、hardware.h、hardware.inc头文件到“Head Files”。8. 拷贝语音资源, 并加载到工程当中;9. 按照程序流程图编写程序。10. Rebuild All。11. 按照硬件连接图连接硬件。12. 下载程序,运行。SACM_480格式自动播放程序如下:void PlaySnd(unsigned int SndIndex)BSR_StopRecognizer();SACM_S480_Initial(1);SACM_S480_Play(SndIndex,3,3);while(SACM_S480_Status()&0x0001) != 0)SACM_S480_ServiceLoop();*(unsigned int *)0x7012 = 1;SACM_S480_Stop();BSR_InitRecognizer(BSR_MIC);BSR_EnableCPUIndicator();6 结束语时间过得真快,转眼几个月的时间已经过去了,我的毕业设计也基本上实现了课题的要求,及能对控制器进行语音训练,使其识别特定人的语音,并通过无线发射接收模块,进行相应的灯光控制。本系统的设计主要是应用到家庭里,比如在客厅的一个位置放置一个控制器,能方便的通过语音来控制某个房间或地点的灯光开关或闪烁;该系统还可以为老人或行动不方便的残疾人使用,在漆黑的夜晚开灯或关灯对于行不方便的人来说确实比较困难,如果把该系统给他们使用,将会给他们带来极大的方便,并体会到科技带来的快乐。因此该系统具有较普遍的推广性和实用性。不过目前本系统采用的凌阳单片机对一些语音的识别还不是太好特别是一些发音比较相近的汉字来说,很容易造成混淆,在使用该系统时,要尽量使用发音产别较大的词语,来进行区分以不至于导致系统的混乱。致谢我的这次毕业设计是在老师的精心指导和大力支持下完成的。在课题选定、理论基础和方案的论证上,老师为我们做了认真的分析和耐心的讲解,从理论指导到实际操作徐老师也给我提供了极大的帮助。至此论文定稿之际,对老师表示衷心的感谢! 感谢老师能在繁忙的教学之中抽出时间为我提供耐心的指导,帮我们解决在设计过程中遇到的种种问题。这次的毕业设计是由我个人独立完成的,在这个过程中我还是得到了许许多多同学的帮助和老师的指导,对于凌阳单片机来说,我是没有接触过的,在得到这个题目的时候,我首先要做的是了解一下这个单片机,这个单片机和我们以前学的51单片机的区别在哪儿,它的最小系统是什么,它应该怎么开发,它的编译环境是什么,它的下载方式有是什么,等等一系列的问题摆在了我的面前。从徐老师那儿领到这块开发板开始,我先把元器件焊接好,把单片机的最小系统调整好,开发板焊接好的时候,通电红色的发光亮了说明电源正常,呵呵,心里还是有点高兴的,不过接着的问题是一个接一个的,我按照书上讲的下载方式连接号下载线时,可不知为什么怎么都下不进去程序,我怀疑是不是板子没焊好,还是电脑没有配置好,搞了好长一段时间都不明白,还是在同学的帮助下,原来是我的单片机没有安好,处于悬空中,是接触非接触,哎,总算把问题找到了,程序下进去了,可是怎么搞就是播放不出声音,我就通过凌阳单片机论坛通过一些网友帮助,经过一些有经验的学长指导,原来是I/O口参考电压的问题,总算把单片机的最小系统弄明白了,接着一些相关的问题也迎刃而解。真是有点万事开头难啊,经过不断的努力我的系统终于实现了基本功能,在此向给我提供过帮助的老师,同学,网友等等表示我忠心的谢意!参考文献:1 李朝青.单片机原理及接口技术M.北京航空航天出版社,1999.32 候媛彬.凌阳单片机原理及其毕业设计精选M.科学出版社,2006.13 卢胜利.基于凌阳SPCE061A设计实验平台综合设计教程M.机械工业出版社,2007.14 肖玲妮.Protel 99 SE印刷电路板教程M.清华大学出版社,2003.85 谭浩强.C语言程序设计教程M.清华大学出版社,2005.76 龙佑喜.C语言程序设计教程M.湖南教育出版社,2004.97 康华光.电子技术基础M.高等教育出版社,2005.78 赵明富.EDA技术基础M.北京大学出版社,2007.69 薛均义.凌阳16位单片机原理及应用M.北京航空航天大学出版社2003.710 易克初等.语音信号处理.国防工业出版社M.2000.1111 胡航.语音信号处理.哈尔滨工业大学出版社M.2000.812 康华光,邹寿彬.电子技术基础(第五版)M.高等教育出版社.200513 朱勇单片机原理与应用技术M清华大学出版社.200614 高峰. 单片微机应用系统设计及实用技术M.北京:机械工业出版社.200415 何希才,伊兵,杜煜.实用电子电路设计.北京:电子工业出版社,199816 康华光 电子技术基础 模拟部分(第五版) M.高等教育出版社,2005.717 康华光 电子技术基础 数字部分(第五版) M.高等教育出版社,2005.718 王远.模拟电子技术.北京:北京机械出版社,199419 潭博学,苗江静集成电路原理及应用北京:电子工业出版社.200320 楼然苗,李光飞51系列单片机设计实例北京航空航天大学出版社.2006 附录一:图 15 主控电路原理图图 16 无线发射电路附录二:子程序:#include bsrSD.h#include s480.h#include robot.hvoid LightSystemInit(void);unsigned int IsFirstDownLoad(void);void FormatFlash(void);void TrainFiveCommand(void);void SaveFiveCommand(unsigned int uiAddr);void ImportFiveCommand(unsigned int uiAddr_Import);unsigned int TrainWord(unsigned int WordID,unsigned int SndIndex);void PlaySnd(unsigned int SndIndex);extern void SACM_S480_ServiceLoop();extern unsigned int SACM_S480_Status();extern void F_FlashErase(int);extern void F_FlashWrite1Word(unsigned int,unsigned int);void LightSystemInit(void)*(unsigned int *)0x7012 = 1;*P_IOB_Data = 0xffff;*P_IOB_Attrib = 0xffff;*P_IOB_Dir = 0xffff;*P_IOB_Data = 0xffff;unsigned int IsFirstDownLoad(void)unsigned int uiFlagFirst_Sub;unsigned int uiFlashData;unsigned int *p;p = (unsigned int *)0xfd00;uiFlashData = *p;if(uiFlashData = 0xffff)uiFlagFirst_Sub = 1;return uiFlagFirst_Sub;else if(uiFlashData = 0xaaaa)uiFlagFirst_Sub = 0;return uiFlagFirst_Sub;elseuiFlagFirst_Sub = -1;return uiFlagFirst_Sub;void FormatFlash(void)F_FlashErase(0xF700);/存储第一组命令的Flash空间F_FlashErase(0xF700+100);/每条命令占用96个字,用函数导出占用100个字F_FlashErase(0xF700+200);F_FlashErase(0xF700+300);F_FlashErase(0xF700+400);F_FlashErase(0xF900);/存储第一组命令的Flash空间F_FlashErase(0xF900+100);/每条命令占用96个字,用函数导出占用100个字F_FlashErase(0xF900+200);F_FlashErase(0xF900+300);F_FlashErase(0xF900+400);F_FlashErase(0xFB00);/存储第一组命令的Flash空间F_FlashErase(0xFB00+100);/每条命令占用96个字,用函数导出占用100个字F_FlashErase(0xFB00+200);F_FlashErase(0xFB00+300);F_FlashErase(0xFB00+400);void TrainFiveCommand(void)BSR_DeleteSDGroup(0);/初始化存储器RAMPlaySnd(0);/播放提示音1while(TrainWord(NAME_ID,0) != 0);while(TrainWord(Command_One_ID,1) != 0);while(TrainWord(Command_Two_ID,2) != 0);while(TrainWord(Command_Three_ID,3) != 0);while(TrainWord(Command_Four_ID,4) != 0);void SaveFiveCommand(unsigned int uiAddr)unsigned int uiCommandID;unsigned int uiCount;unsigned int uiRes_Export;for(uiCommandID = 0x100;uiCommandID0x105;uiCommandID+)uiRes_Export = BSR_ExportSDWord(uiCommandID);while(uiRes_Export)uiRes_Export = BSR_ExportSDWord(uiCommandID);for(uiCount = 0;uiCount100;uiCount+)F_FlashWrite1Word(uiAddr,BSR_SDModeluiCount);*(unsigned int *)0x7012 = 1;uiAddr += 1;void ImportFiveCommand(unsigned int uiAddr_Import)unsigned int uiCommand_Import;unsigned int uiCount;unsigned int uiRes_Import;unsigned int *p_Import;BSR_DeleteSDGroup(0);/清除内存p_Import = (unsigned int *)uiAddr_Import;for(uiCommand_Import = 0;uiCommand_Import 5;uiCommand_Import+)for(uiCount = 0;uiCount 100;uiCount+)uiRes_Import = *p_Import;BSR_SDModeluiCount = uiRes_Import

温馨提示

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

评论

0/150

提交评论