用51系列单片机实现语音输出

上传人:桔**** 文档编号:508507695 上传时间:2024-02-13 格式:DOC 页数:8 大小:591.50KB
返回 下载 相关 举报
用51系列单片机实现语音输出_第1页
第1页 / 共8页
用51系列单片机实现语音输出_第2页
第2页 / 共8页
用51系列单片机实现语音输出_第3页
第3页 / 共8页
用51系列单片机实现语音输出_第4页
第4页 / 共8页
用51系列单片机实现语音输出_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《用51系列单片机实现语音输出》由会员分享,可在线阅读,更多相关《用51系列单片机实现语音输出(8页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! 用 51 系列单片机实现语音输出本文是一编介绍如何通过51系列单片机来实现语音输出的文章,相信现在大家可以轻松地在网上,各种书本上找到如何用单片机来实现音乐及各种报警声的输出。当我在撑握了各音乐及报警声的输出技巧后,我就一直在想,是否可以用单片机实现语音的输出?且要如何才能实现语音的输出?后来在我查找和学习了各方面的资料后,终于找到了一种可以使单片机实用语音输出的方法,并且是一种很简单的方法,下面我就同大家分享我的成果。原理在这样的,先在电脑中用COOL EDIT PRO 2.0来记录我的语音,记录完成后再进行一定的编辑和处理,把一些多余的声音删

2、去(因为在这里一秒的语音数据就要占去8k的空间)。然后再通过这个软件把我所要的语音信号输出转换为取样率为8k的数据(为文本格式),然后再编程使单片机每间隔1/8k秒输出一字节的数据。这样每一次输出的8位数据通过DAC0800数模转换,转换成相应的电流信号,然后再通过运放LM358转换成电压信号来驱动扬声器来发出语音信号。下面就一步一步详细教大家如何完成这些工作。1硬件我们先按图(1)用面包板焊接好所需的线图(我就是用面包板做的),有条件的朋友可以自已做热转印板或请PCB厂家加工。只要大家的元零焊接正确且参数正确,硬件部份是没问题的。元零的参数如下:R1 R2 R4 R5 R61kR32kC1

3、C230PC3100PC410uFY112MU189C52U2DAC0800U3LM358图(1)2软件写入到单片机中的程式如下面所示。每个指令我做了注释,相信大家应都可在看得明的了。*dac_out equp2 ;定义p2口为DAC的数据输出端口;*org00hjmpstart ;程式从100开始org0100hstart:out_loop:movp2,#0h;清p2口movdptr,#dac0800_table;取DAC输出数据的首址到dptr中mova,#0h;清累加器Amovca,a+dptr;取A+dptr所指位置的数据到累加器A中movdac_out,a;把刚才取出的数据送到DAC

4、输出口p2call delay_125us;延时125us,也即是1/8kincdptr;dptr指针加一cjnea,#255d,out_loop;识别到了数据的结尾,不是则继续。jmp$ ;送完所有的语音数据后,程式运行到此delay_125us:;延时125us的子程式movr5,#55djnzr5,$retdac0800_table:;DAC数据的首址;*星号之间是处理好的数据db119db120db121db122。db107db114;*db255;此255是数据结束标志end大家要注意的是,在程式中db119到db114之间的数据(为十进制)是我从cool edit pro 2.0

5、中转出来的语音数据,而db 255这一行是我自已加入去的数据结束示志位,而不是数据。因为单片机的空间有限,所以我的程式的取样率定的是8K(我觉用8K的取样率 语音质量也不差了),比较小(但一秒钟也有8000行数据),所以程式每输出一行数据要延时125US(1/8K),如果延时时间不对,语音会变调,大家到时可以试试,很爽的。另如果在软件COOL EDIT PRO 2.0中的数据取样率有所变动,在单片机的程式中的延时时间也要相映变动。取样率越大数据所占的空间就会越大,这里就是为什么我选用AT89C52的原因了,52有8K的程式空间,而一秒钟的数据也是8K,当我取不到 一秒钟的数据时再加上几十个字节

6、的程式空间,就刚可以放入到52中去了。大家可能 觉一秒钟的语音太少了,不够爽。那怎么办?有两个为法,一是选用空间更大的单片 机,另一办法是扩展外部的数据空间,外接一个EEPROM这样就行了。扩展多大你就看着办吧,呵呵!是不是。3语音数据的处理在PC机中可以进行语音数据处理的工具软件实用太多了,但我试了各种软件,还是觉得COOL EDIT PRO 2.0(大家可以在网上下载这个软件,我用的就是汉化版的) 这个工具软件用得比较顺手,所以下面我就按这个软件来价绍如何进语音数据的处理。图(2)就是这个软件的界面,不错吧!图(2)(1)打开此软件后,点击软件左上角的“文件”菜单选择“新建“命令就可进到图

7、(3) 所示的选项界面。图(3)(2)进入图(3)的选项界面后,按图中所示的选项进行设定就可以了。点击“确定”按 钮后就完成了对将要采样的语音信号的格式定义,如图(4)所示就是确认后的界面。这样 下一步就可以开始记录我们需要的语音信号了。图(4)(3)在开始录音之前,大家要做的工作就是先在电脑上插上一个话筒(大家可以在电脑市场买到,如果有条件也可以自已做一个,很简单的,找来一个驻极体话筒,焊上两根线,其中与话筒的外壳相连的是地,另一为信号输出端,再在线的另一端焊上一个立体声插头就可以了),接着确认你的话筒是否能正常工作。(4)完成输入设备话筒的准备工作后,大家就可以开始录音了。点击图(5)中红

8、色的录 音按钮就可以开始录音,这时你就可以对着话筒说话。这样此软件就会记录下你的语音信息了,再次点击红色的按钮你就完成了语音输入的工作,数据如图(6)所示。接下来就你 需要对刚才录下的语音信息进行编辑处理。图(5)图(6)(5)你需要将图(6)中的语音信号的头尾处没用的数据删掉,删掉后的数据如图(7)所示。大家可能会觉删掉头尾的数据后怎么两图会相差那么远,其实你删除头尾的数据后软件会自动拉长,所以就会变成这样了。同时大家在处理数据时也要相应地注意一下左下角的时间值如图(8)所示(图(8)所示的时间为0.9秒,数据所占空间为7K左右),以保证在一秒以内,因为现在选用的是有8K内存空间的89C52

9、,所以数据加程式不能大于8K(用8000的采样率,一秒就占用8K的空间),如果大家用更大空间的单片机,记录的数据就可以相应更大一些。大家就自已计算了。图(7)图(8)(6)完成数据的处理工作后,就可以输出此数据了。点击左上角的“文件”菜单选择“保存为”的命令,就会出现图(9)所示的对话框,大家按图所示那样将刚才处理好的数据保存为文本格式(*.TXT)就完成了本步骤的工作。完成后的数据如图(10)所示。不知大家是否有注意到图中的数据都没有大于255的(当然啦8位的取样采一定不会大于255的)。图(9)图(10)(7)完成数据输出后,还要做一些简单的处理。在每一行数据的前面加上“DB”。只有这样处

10、理后,单片机的程式才能调用。可能大家又会问,这7000多行我一行一行要加到何时啊,大家不要急,开始时我就是这样一行一行处理的,共花了几个钟的时间才加好,但到了后来我想到一个好办法。下面我就教大家这个好办法。(8)大家先打开微软的EXCEL,将你输出的数据文件中的数据部份复制到ECCEL中,将数据的头部删去,注意是复制到第二列,如图(11)所示。图(11)(9)完成上面的工作后,再利用EXCEL的特殊复制功能(这个功能是这样的,你先在第一行输入“DB”,再选取这一个栏,接着按着CTRL键,再点选这一栏进行拖动,一直拖到再后一行,就可以了),在第一列复制出一列的“DB”,如图(12所示)图(12)(10)完成加“DB”的工作后,就可以把这些处理好的数据复制到单片机的程式中了,结果如前面程式中所示。好了,到了这一步,所有的工作就算已经完成了,大家接着好做的工作就是编绎程式,写入到单片机中,再插入到线路板,加上电源就可以工作。爽吧! /

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号