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

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

ID:51710359

大小:589.00 KB

页数:6页

时间:2020-03-15

用51系列单片机实现语音输出.doc_第1页
用51系列单片机实现语音输出.doc_第2页
用51系列单片机实现语音输出.doc_第3页
用51系列单片机实现语音输出.doc_第4页
用51系列单片机实现语音输出.doc_第5页
资源描述:

《用51系列单片机实现语音输出.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

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

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

3、数如下:R1R2R4R5R6——1kR3———2kC1C2———30PC3———100PC4———10uFY1———12MU1———89C52U2———DAC0800U3———LM358 图(1)2.软件写入到单片机中的程式如下面所示。每个指令我做了注释,相信大家应都可在看得明的了。****************************** dac_outequ p2                               ;定义 p2 口为 DAC 的数据输出端口;*****************************org     00hjmp    sta

4、rt                                   ;程式从 100 开始org     0100hstart:out_loop:mov    p2,#0h                               ;清 p2 口mov    dptr,#dac0800_table         ;取 DAC 输出数据的首址到 dptr 中mov    a,#0h                                 ;清累加器 Amovc  a,@a+dptr                          ;取 A+dptr 所指

5、位置的数据到累加器 A 中mov    dac_out,a                           ;把刚才取出的数据送到 DAC 输出口 p2 calldelay_125us                              ;延时 125us,也即是 1/8kinc      dptr                                    ;dptr 指针加一cjne    a,#255d,out_loop              ;识别到了数据的结尾,不是则继续。jmp    $                         

6、               ;送完所有的语音数据后,程式运行到此 delay_125us:                                   ;延时 125us 的子程式mov    r5,#55djnz    r5,$ret dac0800_table:                                ;DAC 数据的首址;***************************星号之间是处理好的数据db   119db   120db   121db   122。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。db   107

7、db   114;***************************db   255                                           ;此 255 是数据结束标志end大家要注意的是,在程式中 db  119 到 db  114 之间的数据(为十进制)是我从 cooleditpro2.0 中转出来的语音数据,而 db255 这一行是我自已加入去的数据结束示志位,而不是数据。因为单片机的空间有限,所以我的程式的取样率定的是 8K(我觉用 8K 的取样率语音质量也不差了),比较小(但一秒钟也

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。