凌阳音频压缩算法--SPCE061A单片机教材书
基于SPCE061A的交通灯倒计时语音输入输出的设计
基于SPCE061A的交通灯倒计时语音输入输出的设计作者:杨岚涂小敏王玉芬来源:《现代电子技术》2009年第01期摘要:常见的语音控制系统多采用单片机和专用的语音处理芯片来完成,其缺点是语音处理芯片的性价比普遍不高,导致开发成本高,且开发周期较长。
在深入研究凌阳SPCE061A单片机在语音处理方面的优越性能后,设计了一套智能交通灯语音播报控制系统。
给出了控制系统方案设计,并重点讲述系统语音设计方案,包括语音输入电路、语音输出电路以及语音输入和语音输出的流程图等。
关键词:SPCE061A;交通灯;语音输入;语音输出中图分类号:TP368.1 文献标识码:B文章编号:1004-373X(2009)01-192-03Design of Traffic Light Countdown Voice Input and Output Based on SPCE061AYANG Lan,TU Xiaomin,WANG Yufen(College of Information Science and Engineering,Wuhan University of Science and Technology,Wuhan,430081,China)Abstract:The designing of voice control system often uses single chip computer and voice processing chip.The shortcoming is the lower cost-effective of voice processing chip and longer development cycle.After an in-depth study on the advan-tages of voice processing of SunplusSPCE061A,a smart traffic light voice broadcast control system is designed.The system′s design is given and the voice system′s design is foc used on.Including the circuit of voice input,voice output and the flow chart of voice input,voice output.Keywords:SPCE061A;traffic light;voice input;voice output近年来,随着城市交通的智能化和人性化,语音控制技术在智能交通方面的的应用越来越广泛。
基于凌阳SPCE061A的语音控制小车设计
语音控制是最为直接的人机对话方式,而小车以其生动、典型、学习形式喜闻乐见、涉及知识面广等特点,可作为电子类专业同学们学习、实践的良好载体。
凌阳SPCE061A单片机,具有简单的语音处理功能,不需要外挂语音处理芯片,因此采用SPCE061A作为主控芯片。
1、智能小车总体结构框图:智能小车主要由语音接收、语音处理、语音播报和机械控制四大部分组成,如图1所示。
图1智能小车总体结构框图系统以SPCE061A单片机为核心,实时接收来自控制人的语音命令,提取其特征码,与预先存储在ROM中的特征码比较,若相符则进行如下操作:(1)通过语音播报电路重复当前命令。
(2)根据命令控制驱动电路及转向电路执行相应操作。
2、语音信号接收模块SPCE06lA语音单片机片内集成有7通道10位电压A/D转换器和单通道声音A/D转换器,以及2个10位D/A转换输出通道。
声音A/D转换器输入通道内置麦克风放大器并具有自动增益控制(AGC)功能,专门用于对输入的语音信号进行采样,并使进入该通道的模拟信号维持在最佳电平。
因此外围电路可设计的相对简单,如图2所示。
话筒的偏压由SPCE06lA的VMIC、VCM脚提供。
声音输入模块只需外接1个话筒、5个电阻和5个电容。
图2语音接收模块3、语音播报模块语音播报由双通道10位D/A输出接口DAC1外接扬声器来实现,采用PNP三极管8550作为功放,具体电路参见图3。
图3语音播报模块4、机械控制模块结构及工作原理小车为轮式结构,机械控制模块分为转向机构和驱动机构。
转向机构由步进电机、转向架和两个前轮组成。
单片机接收到转向命令后控制步进电机正向或反向旋转一定角度,电机通过齿轮、齿条系统带动转向架摆动一定角度,最终带动与转向架固定在一起的前轮偏摆一定角度,从而实现精确转向。
考虑到小车在转向时内、外侧车轮的转弯半径不同,所以内外侧驱动轮的转速也应不同。
所以驱动机构采用双电机驱动方案,包括两个电机和两个后轮,如图4所示。
凌阳单片机 5.3 语音自动播放
Sunplus SPCE061A 微控制器语音播放(自动播放)语音播放一、单片机实现语音播放的原理二、语音播放程序示例三、创建一个语音播放程序四、小结和注意事项五、疑难解答一、单片机实现语音播放的原理语音录制存储流程 语音采样在定时中断的控制下,以一定的速率(8KHz )进行AD 转换压缩编码将采集到的数据以某种算法压缩编码存储将编码后的数据保存到存储介质中语音资源压缩编码存储数据队列定时中断AD采样语音语音播放流程数据提取语音数据送入解压缩队列数据解码解压缩数据并送入输出队列转换为模拟信号在定时中断的控制下进行数模转换转换为声音模拟信号经滤波、放大,通过扬声器输出解压缩队列语音资源解压缩取数据输出队列定时中断DAC输出语音用SPCE061A播放语音开始播放播放初始化语音资源播放完毕?开始解码,填入播放队列停止播放定时中断从播放队列取出数据送DAC输出返回YN播放队列设置中断播放循环中断服务自动播放与手动播放 自动播放解压缩队列语音资源解压缩取数据输出队列定时中断DAC输出语音SACM_Decoder(); SACM_A2000_FillQueue();SP_GetResource();手动播放二、语音播放程序示例语音播放程序示例// 中断服务程序 //用户接口函数在hardware.asm 中定义的用户API ,用户可以根据需要修改 F_SP_SACM_A2000_In it_ F_SP_InitQueue F_SP_ReadQueueF_SP_WriteQueueF_SP_RampUpDAC1…… ……语音函数库用户API语音播放程序三、创建一个语音播放程序创建一个语音播放程序 第1 步:新建工程创建一个语音播放程序 第2 步:复制语音播放需要的文件到工程所在的文件夹语音播放支持文件,在“IDE安装目录->Example -> 61_Exa -> Record”文件夹下可以找到sacmv26e.libhardware.inchardware.asmA2000格式的语音资源,在“IDE安装目录-> Example -> VoiceExa-> ex1_A2000->Voice”文件夹下可以找到这里选择了d1.24k和ww.24k两个文件在Project 菜单项,选择Add to Project -> Files 找到工程所在的文件夹,选择hardware.asm 、hardware.inc 两个文件(按住Ctrl 键点选),确定。
声控小车设计论文
声控小车设计中文摘要:声控小车指的是能够在人的语音命令控制下完成具体动作的小车,主要由控制板、驱动电路和车体组成,同时还要编辑合适的软件来具体控制小车的动作。
控制板主要负责软件的写入,能够完成语音信号的压缩、存储、辨识、响应等功能,而驱动电路则能够根据控制板送来的驱动信号对车体上的直流电机和继电器进行控制,从而完成具体的动作。
在本次设计中,控制板我们将采用凌阳公司的16位单片机,驱动电路将根据单片机的控制原理由我们利用模拟器件自己焊接。
软件的编写将主要参考单片机的C语言程序设计,编译环境为凌阳公司的IDE 1.16.1.具体软件编写和硬件功能实现将在正文中详细讲述。
关键词:凌阳16位单片机,语音识别,单片机C语言编程,驱动电路设计英文摘要:The audio-control car is a kind of car that can be controlled by human's voice and can achieve many functions such as Turn-right ,Turn-left, Go-ahead and Back-off.The car is composed of 3 parts: control board, drive board and base. The software should be downloaded in the control board is also necessary. For the control board, it should have 2 qualifications: first, the software can be planted in, second, the voice signal can be compacted, stored, differentiated and responded. For the drive board, it should control the DC motor and the relay directly via the signal that sent by the control board.For this design, we will use the Single Chip Microprocessor (SCM) manufactured by Sunplus Corporation as the control board, so the drive board should be fit for the SCM. The software will be compiled in the IDE 1.6.1 also provided by Sunplus Corporation. The design process will be introduced in the following text in details.Keywords: Single Chip Microprocessor, Audio control, program design.目录:前言 (3)一、硬件电路设计及连接 (3)1.1 SPCE061A (3)1.1.1 SPCE061A总述 (3)1.1.2SPCE061A 性能 (3)1.1.3 选择SPCE061A的理由 (4)1.1.4 凌阳16位单片机SPCE061A实物图 (4)1.1.5 SPCE061A内部结构框图 (5)1.2.车体驱动电路 (6)1.2.1车体驱动电路设计思路 (6)1.2.2实际驱动电路 (7)1.3、小车车底部分 (8)1.4.硬件部分结论 (8)二、软件编写与调试 (9)2.1主程序流程图 (9)2.2 控制口连接方式 (10)2.3.RAM中数据存取方式 (11)2.4语音训练和识别 (12)2.4.1语音命令训练过程 (12)2.4.2语音识别过程 (13)2.5 具体动作的实现 (13)2.6语音命令的重新训练 (14)2.7程序的组成和调试 (14)2.8程序代码下载 (15)三、小车的操作说明: (15)3.1使用方法 (15)3.2使用时的注意事项 (15)四、结论 (16)五、参考书目 (16)正文:前言:本次设计的目的是利用凌阳16位单片机SPCE061A的语音播放和语音识别资源进行语音控制,使小车能在具体的语音命令下完成前进、后退、左拐、右拐的动作。
基于16位单片机SPCE061A的导览器初步实现
基于16位单片机SPCE061A的导览器初步实现
任德学;高强;张亮;郑晓庆
【期刊名称】《天津理工大学学报》
【年(卷),期】2008(24)6
【摘要】本文介绍了凌阳16位单片机SPCE061A的主要特点,设计了一种基于SPCE061A的导览器系统,并给出了硬件的设计扩展和软件设计流程.实验表明,该系统可以有效的用于博物馆、展览馆等博览景点中.
【总页数】3页(P77-79)
【作者】任德学;高强;张亮;郑晓庆
【作者单位】天津理工大学,自动化学院,天津,300191;天津理工大学,自动化学院,天津,300191;天津理工大学,自动化学院,天津,300191;天津理工大学,自动化学院,天津,300191
【正文语种】中文
【中图分类】TP205
【相关文献】
1.基于Freescale 16位单片机抢答器的设计与实现 [J], 程启明;常琳;汪明媚;王映斐
2.基于凌阳16位单片机SPCE061A悬挂运动控制系统 [J], 贡雪梅;李新钊;胡春雷;钱建松
3.u'nSP16位单片机与PIC8位单片机基于CAN总线的通信实现 [J], 王兴贵;房伟;李楠
4.基于16位单片机SPCE061A的智能家居系统设计 [J], 高荣山;周东辉;张颜岭
5.基于新型16位单片机SPCE061A的波形发生器 [J], 蔡教武
因版权原因,仅展示原文概要,查看原文内容请购买。
SPCE061A是凌阳公司设计的一种16位单片机
SPCE061A是凌阳公司设计的一种16位单片机,该款单片机资源丰富,具有极高的性价比,该单片机内置有2路DA转换,8路AD转换及在线仿真,并且有16×16位的乘法运算和内积运算的DSP功能,这为它进行复杂的语音数字信号的压缩编码与解码提供了便利,还可以做数字滤波器。
这些特点为我们进行在语音处理尤其是语音识别领域的应用提供了便利。
语音识别技术在各个层面均有广泛的应用前景。
电脑软件领域,例如:语音命令、语音输入,对话系统、查询系统、教学软件、游戏软件等;消费性电子产品领域,例如:电子记事本、声控玩具、语音拔号功能的手机等;工业产品领域,例如:车用移动电话、车用导航系统等;电话系统领域,例如:语音识别总机服务、语音拔号、语音订票订位等。
1 语音识别基本原理语音识别就是让机器听得懂人们所讲的话,基本框架如图1和图2所示。
图1是语音训练模型的部分:将已知的语音信号经由端点侦测(End Point Detection)及特征参数求取(Feature Extraction)而产生标准的语音参考样本。
将待测的语音信号,经与图1同样的处理步骤求得特征参数后再与前述的标准语音参考样本对比,找出最相似的参考样本作为辨识的结果。
2 语音识别分类若依使用者的限制而言可分为特定人语音与非特定人语音识别。
2.1 特定人语音识别使用特定人语音识别系统前,须先把使用者的语音参考样本存入当成比对的资料库,即特定人语音识别系统在使用前就必须先进行图1的训练学习步骤。
2.2 非特定人语音识别使用本系统前根本不需要先学习,便能直接使用。
一套最佳的语音识别系统是不须经过学习便能进行语音识别,但通常辩识率都比较低。
另外以说话方式的连续是否又可分为非连续语音识别和连续语音识别。
对于非连续语音来说,识别所说的每一个字必须分开辨认;而连续语音识别可以一般自然流利的说话方式来进行人性化的语音识别,但由于关系到相连音的问题,很难达到好的辨认效果。
基于凌阳SPCE061A单片机远程家电控制器的研制
2
系统 硬 件 电路 的 设计
统 会 发 出 挂 机 指 令 ,O 8恢 复 高 电平 , 电 器 断 开 , 话 线 两 端 的 电 IA 继 电 压 恢 复 到 6 V左 右 的 正 常 电 压 , 而 实现 挂 机 。其 电路 如 图 4所 示 : 5 从
后 . 片 机 就 可 以控 制 摘 机 电 路 , 现模 拟 摘机 。其 电路 如 图 3所 示 : 单 实
图 3 铃 音检 测 模 块
23 摘 机 模 块 -
当 C U检 测 到 有 振 铃 信 号 并 且 计 数 已经 达 到 系 统所 设 定 的 可 以 P 摘 机 的次 数 . 片 机 会 送 出 摘 机信 号, I A 单 使 O 8脚 为 低 电平 , 即继 电 器 工
一
铃音检测模块 的主体芯片是 HT 0 0 振铃信号经 过隔直 电容后 , 93 。
1 系 统 工 作过 程
对 家 电进 行 远 程控 制 , 当有 电话 接 入 时 , 制 器 首 先 进 行 振 铃 计 控 数 . 振 铃 次数 大于 六 次 而 无 人 接 听 时 , 备 会 自动 摘 机 , 现 控 制 器 当 设 实 的 网络 联 机 , 作 者 根 据 语 音 提 示 输 入 密 码 , 操 当系 统 接 收 到 来 自对 方 的 按 键 信 号后 . 过 按 键 译 码 分 析 处 理 , 配 密 码 。 密 码 正 确 之 后 , 经 匹 根 据 语 音 提示 进 行 相 应 操 作 。系 统 会 根 据 按 键 所 对 应 的 操 作 发 出 指 令 , 进 行 状 态 查 询 . 电控 制 , 话 , 改 密 码 的 选 择 , 现 对 家 电 的 远 程 家 通 修 实 控制。如图 1 示 : 所
SPCE061A单片机引脚
锁相环
RAM
FLASH
CPU时 钟
时 基 双 16位 中 断 控 制 T/C
低电压 监测与复位
’nSP内 核
7通 道
单通道
双通道
串行设备
10位 ADC 语 音 ADC 10位 DAC 接 口 SIO
异步串行通 信 口 UART
内部总线
32位 通 用 I/O端 口
图4.2 SPCE061A内部结构图
第7页
第2页
● 具有可编程音频处理功能。 ● 低功耗,系统处于备用状态下(时钟处于停止状态)耗电 小于2 μA@3.6 V。 ● 两个16位可编程定时器/计数器(可自动预置初值)。 ● 两路10位数/模转换(DAC)输出通道。 ● 32位通用可编程输入/输出端A口和B口。 ● 14个中断源(定时器A、B,时基信号,两个外部时钟源, 触键唤醒等)。 ● 具有触键唤醒功能。 ● 使用凌阳音频编码SACM_S240方式(2.4 kb/s),能容纳 210 s语音数据。
第10页
SLEEP
63
VCP
8
XROMT PVPP XTEST (61. 69.14 )
VDDH
51. 52. 75
VDD VSS VSS VSS VDD
7 9 19. 24 38. 49. 50. 62 15. 36
睡眠状态指示,当 CPU 进入睡眠状态时,输出高电平 锁相环压控振荡器阻容输入端
第9页
DAC2
22
VREF2
23
AGC
25
OPI
26
MICOUT
27
MICN
28
MICP
33
VRT
35
VCM
34
音频压缩算法
音频压缩算法压缩第7章凌阳音频压缩算法261第7章凌阳音频压缩算法7.1背景介绍7.1.1音频的概述(特点,分类)我们所说的音频是指频率在20Hz~20kHz的声音信号,分为:波形声音,语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础.语音也可以表示为波形声音,但波形声音表示不出语言,语音学的内涵.语音是对讲话声音的一次抽象.是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号.音乐与语音相比更规范一些,是符号化了的声音.但音乐不能对所有的声音进行符号化.乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息内容.7.1.2数字音频的采样和量化将模拟的(连续的)声音波形数字元化(离散化),以便利数字计算机进行处理的过程,主要包括采样和量化两个方面.数字音频的质量取决于:采样频率和量化位数这两个重要参数.此外,声道的数目,相应的音频设备也是影响音频质量的原因.7.1.3音频格式的介绍音频文件通常分为两类:声音文件和MIDI文件(1)声音文件:指的是通过声音录入设备录制的原始声音,直接记录了真实声音的二进制采样数据,通常文件较大;(2)MIDI文件:它是一种音乐演奏指令序列,相当于乐谱,可以利用声音输出设备或与计算机相连的电子乐器进行演奏,由于不包含声音数据,其文件尺寸较小.1)声音文件的格式WAVE文件――*.WAVWAVE文件使用三个参数来表示声音,它们是:采样位数,采样频率和声道数. 在计算机中采样位数一般有8位和16位两种,而采样频率一般有__Hz(11KHz),__Hz(22KHz),__Hz(44KHz)三种.我们以单声道为例,则一般WAVE文件的比特率可达到88K~704Kbps.具体介绍如下:(1)WAVE格式是Microsoft公司开发的一种声音文件格式,它符合RIFF(Resource InterchangeFileFormat)文件规范;第7章凌阳音频压缩算法262(2)用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持.(3)WAVE格式支持__,__aw,CCITTLaw和其它压缩算法,支持多种音频位数,采样频率和声道,是PC机上最为流行的声音文件格式.(4)但其文件尺寸较大,多用于存储简短的声音片段.AIFF文件――AIF/AIFF(1)AIFF是音频交换文件格式(AudioInterchangeFileFormat)的英文缩写,是苹果计算机公司开发的一种声音文件格式;压缩(2)被Macintosh平台及其应用程序所支持,NetscapeNavigator浏览器中的LiveAudio也支持AIFF格式,SGI及其它专业音频软件包同样支持这种格式.(3)AIFF支持ACE2,ACE8,MAC3和MAC6压缩,支持16位44.1Kz立体声. Audio文件――*.Audio(1)Audio文件是SunMicrosystems公司推出的一种经过压缩的数字声音格式,是Internet中常用的声音文件格式;(2)NetscapeNavigator浏览器中的LiveAudio也支持Audio格式的声音文件. MPEG文件――*.MP1/*.MP2/*.MP3(1)MPEG是运动图像专家组(MovingPictureExpertsGroup)的英文缩写,代表MPEG标准中的音频部分,即MPEG音频层(MPEGAudioLayer);(2)MPEG音频文件的压缩是一种有损压缩,根据压缩质量和编码复杂程度的不同可分为三层(MPEGAudioLayer1/2/3),分别对应MP1,MP2和MP3这三种声音文件;(3)MPEG音频编码具有很高的压缩率,MP1和MP2的压缩率分别为4:1和6: 1~8:1,而MP3的压缩率则高达10:1~12:1,也就是说一分钟CD音质的音乐,未经压缩需要10MB存储空间,而经过MP3压缩编码后只有1MB左右, 同时其音质基本保持不失真,因此,目前使用最多的是MP3文件格式.RealAudio文件――*.RA/*.RM/*.RAM(1)RealAudio文件是RealNerworks公司开发的一种新型流式音频(Streaming Audio)文件格式;(2)它包含在RealMedia中,主要用于在低速的广域网上实时传输音频信息;(3)网络连接速率不同,客户端所获得的声音质量也不尽相同:对于28.8Kbps的连接,可以达到广播级的声音质量;如果拥有ISDN或更快的线路连接,则可获得CD音质的声音.2)MIDI文件――*.MID/*.RMI(1)MIDI是乐器数字接口(MusicalInstrumentDigitalInterface)的英文缩写,是数字音乐/电子合成乐器的统一国际标准;(2)它定义了计算机音乐程序,合成器及其它电子设备交换音乐信号的方式,还规第7章凌阳音频压缩算法263定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,可用于为不同乐器创建数字声音,可以模拟大提琴,小提琴,钢琴等常见乐器;(3)在MIDI文件中,只包含产生某种声音的指令,这些指令包括使用什么MIDI 设备的音色,声音的强弱,声音持续多长时间等,计算机将这些指令发送给声卡,声卡按照指令将声音合成出来,MIDI在重放时可以有不同的效果,这取决于音乐合成器的质量;(4)相对于保存真实采样资料的声音文件,MIDI文件显得更加紧凑,其文件尺寸通常比声音文件小得多.7.1.4语音压缩编码基础语音压缩编码中的数据量是指:数据量=(采样频率×量化位数)/8(字节数)×声道数目.压缩压缩编码的目的:通过对资料的压缩,达到高效率存储和转换资料的结果,即在保证一定声音质量的条件下,以最小的资料率来表达和传送声音信息.压缩编码的必要性:实际应用中,未经压缩编码的音频资料量很大,进行传输或存储是不现实的.所以要通过对信号趋势的预测和冗余信息处理,进行资料的压缩,这样就可以使我们用较少的资源建立更多的信息.举个例子,没有压缩过的CD品质的资料,一分钟的内容需要11MB的内存容量来存储.如果将原始资料进行压缩处理,在确保声音品质不失真的前提下,将数据压缩一半,5.5MB就可以完全还原效果.而在实际操作中,可以依需要来选择合适的算法.常见的几种音频压缩编码:1)波形编码:将时间域信号直接变换为数字代码,力图使重建语音波形保持原语音信号的波形形状.波形编码的基本原理是在时间轴上对模拟语音按一定的速率抽样,然后将幅度样本分层量化,并用代码表示.译码是其反过程,将收到的数字序列经过译码和滤波恢复成模拟信号.如:脉冲编码调制(PulseCodeModulation,PCM),差分脉冲编码调制(DPCM), 增量调制(DM)以及它们的各种改进型,如自适应差分脉冲编码调制(ADPCM),自适应增量调制(ADM),自适应传输编码(AdaptiveTransferCoding,ATC)和子带编码(SBC)等都属于波形编码技术.波形编码特点:高话音质量,高码率,适于高保真音乐及语音.2)参数编码:参数编码又称为声源编码,是将信源信号在频率域或其它正交变换域提取特征参数,并将其变换成数字代码进行传输.译码为其反过程,将收到的数字序列经变换恢复特征参量,再根据特征参量重建语音信号.具体说,参数编码是通过对语音信号特征参数的提取和编码,力图使重建语音信号具有尽可能高的准确性,但重建信号的波形同原语音信号的波形可能会有相当大的差别.第7章凌阳音频压缩算法264如:线性预测编码(LPC)及其它各种改进型都属于参数编码.该编码比特率可压缩到2Kbit/s-4.8Kbit/s,甚至更低,但语音质量只能达到中等,特别是自然度较低.参数编码特点:压缩比大,计算量大,音质不高,廉价!3)混合编码:混合编码使用参数编码技术和波形编码技术,计算机的发展为语音编码技术的研究提供了强有力的工具,大规模,超大规模集成电路的出现,则为语音编码的实现提供了基础.80年代以来,语音编码技术有了实质性的进展,产生了新一代的编码算法,这就是混合编码.它将波形编码和参数编码组合起来,克服了原有波形编码和参数编码的弱点,结合各自的长处,力图保持波形编码的高质量和参数编码的低速率.如:多脉冲激励线性预测编码(MPLPC),规划脉冲激励线性预测编码(KPELPC), 码本激励线性预测编码(CELP)等都是属于混合编码技术.其数据率和音质介于参数和波形编码之间.总之,音频压缩技术之趋势有两个:压缩1)降低资料率,提高压缩比,用于廉价,低保真场合(如:电话).2)追求高保真度,复杂的压缩技术(如:CD).语音合成,辨识技术的介绍: 按照实现的功能来分,语音合成可分两个档次:(1)有限词汇的计算机语音输出(2)基于语音合成技术的文字语音转换(TTS:Text-to-Speech)按照人类语言功能的不同层次,语音合成可分为三个层次:(1)从文字到语音的合成(Text-to-Speech)(2)从概念到语音的合成(Concept-to-Speech)(3)从意向到语音的合成(Intention-to-Speech)图7.1是文本到语音的转换过程:文本处理语音合成韵律处理语音数据库词典及语言规范合成语音输出文本输入图7.1从文本到语音转换过程示意语音辨识:语音辨识技术有三大研究范围:口音独立,连续语音及可辨认字词数量. 口音独立:1)早期只能辨认特定的使用者即特定语者(SpeakerDependent,SD)模式,使用者可针对特定语者辨认词汇(可由使用者自行定义,如人名声控拨号),作简单快速的训第7章凌阳音频压缩算法265练纪录使用者的声音特性来加以辨认.随着技术的成熟,进入语音适应阶段SA(speakeradaptation),使用者只要对于语音辨识核心,经过一段时间的口音训练后,即可拥有不错的辨识率.2)非特定语者模式(SpeakerIndependent,SI),使用者无需训练即可使用,并进行辨认.任何人皆可随时使用此技术,不限定语者即男性,女性,小孩,老人皆可. 连续语音:1)单字音辨认:为了确保每个字音可以正确地切割出来,必须一个字一个字分开来念,非常不自然,与我们平常说话的连续方式,还是有点不同.2)整个句子辨识:只要按照你正常说话的速度,直接将要表达的说出来,中间并不需要停顿,这种方式是最直接最自然的,难度也最高,现阶段连续语音的辨识率及正确率,虽然效果还不错但仍需再提高.然而,中文字有太多的同音字,因此目前所有的中文语音辨识系统,几乎都是以词为依据,来判断正确的同音字.可辨认词汇数量:内建的词汇数据库的多寡,也直接影响其辨识能力.因此就语音辨识的词汇数量来说亦可分为三种:1)小词汇量(10-100)2)中词汇量(100-1000)3)无限词汇量(即听写机)图7.2是简化的语音识别原理图,其中实线部分成为训练模块,虚线部分为识别压缩模块.复杂声学,言语条件下的语音输入语音模型声学模式训练语音匹配语音模式训练语音处理识别结果,理解结果语言模型图7.2语音识别原理简图第7章凌阳音频压缩算法2667.2凌阳音频简介7.2.1凌阳音频压缩算法的编码标准表7.1是不同音频质量等级的编码技术标准(频响): 表7.1信号类型频率范围(Hz)采样率(kHz)量化精度(位) 电话话音200~__宽带音频(AM质量)50~__-__调频广播(FM质量)20~15k37.816高质量音频(CD质量)20~20k44.116凌阳音频压缩算法处理的语音信号的范围是200Hz-3.4KHz的电话话音.7.2.2压缩分类压缩分无损压缩和有损压缩.无损压缩一般指:磁盘文件,压缩比低:2:1~4:1. 而有损压缩则是指:音/视频文件,压缩比可高达100:1.凌阳音频压缩算法根据不同的压缩比分为以下几种(具体可参见语音压缩工具一节内容):SACM-A2022年:压缩比为8:1,8:1.25,8:1.5SACM-S480:压缩比为80:3,80:4.5SACM-S240:压缩比为80:1.5按音质排序:A2022年S480S2407.2.3凌阳常用的音频形式和压缩算法1)波形编码:sub-band即SACM-A2022年特点:高质量,高码率,适于高保真语音/音乐.压缩2)参数编码:声码器(vocoder)模型表达,抽取参数与激励信号进行编码.如: SACM-S240.特点:压缩比大,计算量大,音质不高,廉价!3)混合编码:CELP即SACM-S480特点:综合参数和波形编码之优点.除此之外,还具有FM音乐合成方式即SACM-MS01.第7章凌阳音频压缩算法2677.2.4分别介绍凌阳语音的播放,录制,合成和辨识凌阳的__A是16位单片机,具有DSP功能,有很强的信息处理能力,最高时钟频率可达到49MHz,具备运算速度高的优势等等,这些都无疑为语音的播放,录放,合成及辨识提供了条件.凌阳压缩算法中SACM_A2022年,SACM_S480,SACM_S240主要是用来放音,可用于语音提示,而DVR则用来录放音.对于音乐合成MS01,该算法较繁琐,而且需要具备音乐理论,配器法及和声学知识,所以对于特别爱好者可以到我们的网站去了。
基于凌阳单片机的语音控制小车---毕业设计 - 副本
基于凌阳单片机的语音控制小车摘要声音控制功能是凌阳单片机的一个特色,通过这个功能更能够实现普通单片机无法实现的一些任务,本设计是通过凌阳单片机的语音处理功能实现语音控制小车的前进和方向,并让小车作出相应的回答,设计系统主要包括三大部分,其中两部分为硬件部分:凌阳单片机的小系统,包括I/O端口、DAC转换、ADC转换等等;另一部分是控制板部分,用于控制电机的旋转方向;第三部分为软件部分。
关键词:语音控制小车;声控;小车;SPCE061ABased on Ling Y ang monolithic integrated circuit's voice control carAbstractThe phonic control function is a Ling Y ang monolithic integrated circuit's characteristic, suffices some duties which through this function realizes the ordinary monolithic integrated circuit to be unable to realize, this design is realizes the voice control car's advance and the direction through the Ling Y ang monolithic integrated circuit's pronunciation processing function, and lets the car make the corresponding reply, the design system mainly includes three major parts, two parts for hardware part: The Ling Y ang monolithic integrated circuit's small system, including the I/O port, DAC transforms, ADC transformation and so on; Another part is the control panel part, uses in controlling electrical machinery's hand of rotation; The third part is the software part.Key word: V oice control car;V oice control;Car;SPC061A目录1 引言 (1)2方案论证 (2)2.1方案论证 (2)3语音控制小车设计要求 (3)3.1功能要求 (3)3.2备注 (3)3.2.1 参数说明 (3)3.2.2 注意事项 (3)3.3扩展功能 (3)4 凌阳芯片的介绍 (4)4.1SPCE061A芯片的特点及其功能 (4)4.2SPCE061A芯片内核结构 (5)5硬件系统设计 (6)5.1系统的总体方案 (6)5.1.1 16位微处理器芯片的外围结构 (6)5.261板的各部分硬件模块 (7)5.2.1 麦克录音输入及AGC电路 (7)5.2.2 数摸转换电路 (7)5.2.3 按键,LED和复位电路 (8)5.2.4 电源电路 (8)5.2.5 下载线接口电路和在线调制电路 (9)5.2.6 16位微处理器的连接电路 (9)5.3车体介绍 (10)5.4小车的行走原理 (10)5.5控制电路原理板 (11)5.6控制电路原理 (12)5.6.1 后轮电机驱动电路原理 (12)5.6.2 前轮电机驱动电路原理 (13)6 系统软件设计 (14)6.1系统主程序设计流程图 (14)6.2语音识别 (15)7硬件制作及系统调试 (17)7.1硬件制作 (17)7.2调试和下载程序 (17)7.3调试小车 (17)7.4初试小车 (17)7.5重新调试 (18)结束语 (19)致谢 (20)参考文献 (21)附录附录1 电路原理图(61板)附录2 电路原理图(控制板)附录3 元件清单附录4 PCB图附录5 小车图片附录6 主控制源程序基于凌阳单片机的语音控制小车1 引言语音控制技术是一门新兴技术,可以通过语音直接控制电子产品,摆脱了遥控器的束缚。
基于凌阳SPCE061A单片机的语音导弓系统的设计与总结报告
【 关键词 】 音频接收电路 ; 凌阳单片机; 电机驱动 ; 无线传输 ; MMC- 1
1 方 案 设计 与 论 证
整 体 方 案 主要 包 括 移 动 声 源 的驱 动 控 制 、音 频 接 收 器 的设 计 、 无 线 模 块 的传 输 、 源管 理 、 频 定 位 算 法 的 研 究 等 方 面 。 电 音
危险 , 舍弃 。 故 方 案二 : 择 动 力 充 足 的 直 流 电 机 , 然 不 易 控 制 其 运 行 精 度 , 选 虽 但
其 响应 快速 , 大 的起 动 转 矩 , 效 率 , 转 矩 特 点 ; 时 具 有 体 积 小 , 较 高 高 同 重 量轻 , 有 价 格 廉 的 优 势 。 具 鉴 于初 选 的 步 进 电机 无 法 满 足 速 度 要 求 .及 直 流 电机 的 以 上 优 点, 我们 决 定 采 用 直 流 电 机 , 加 自制 码盘 的测 速 装 置 。 外
科技信息
0机械 与 ̄- O 7 -
S I N E E H O O YIF R TO CE C &T C N L G N O MA I N
21 年 01
第1 期
基于凌阳 S C 0 1 P E 6A单片机的语音导 引 系统的设计与总结报告
余 彦 霖
( 津工 业大 学信 息学 院 中国 天津 天
22 音 频 接 收 电路 的设 计 : . 音 频 接 收 电路 的 工作 原 理 分 析 : 我 们 所 设 计 的 音 频 接 收 电路 , 射 极 跟 随 器 、 二 两 级 三 极 管 音 由 一
频 放 大 电 路 、 用 音 调 译 码 集 成 电路 L 6 通 M57组 成 ,M5 7的基 本 工 作 L 6 11 控制 核 心 — — C U 的选 择 . P 状 况 就像 一 个 低 压 电源 开 关 , 当其 接 收 到 一 个 位 于 所 选 定 的 窄频 带 内 方 案 一 : 用 大 家 所 熟 悉 的 、 术 已经 非 常成 熟 的 5 选 技 1单 片 机 , 此 的输入音调时, 关就接通 , 开 同时 置 低 7脚 , 检 测 得 的 中 心频 率 可 以 所 款 单 片 机操 作 简单 方 便 , 于 控 制 。 易 设定 于 01 z至 5 k z内 , 测 带 宽 可 以 设 定 在 中 心频 率 1% 内。而 .H  ̄ H 检 4 方 案 二 : 用 凌 阳单 片 机 开 发 板 S C 0 1 功 能 强 大 , 有 D P 选 P E 6 A, 具 S 且 ,输 出 开 关 延 迟 时 间 可 以 通 过选 择 外 电 阻 和 电容 自行 设 定 。L 6 M5 7 功 能 、 音 特 色 的 凌 阳十 六 位 单 片机 开 发 系 统 , 别 是 其 3 V低 电压 语 特 . 3 的环 路 带 宽 B 可 由下 式 计 算 : W 设 计 有 利 于节 省 功 耗 。 B I 0 / 2 W=  ̄ @ f ) 但 是 考 虑 到 低 功 耗 、 算 速 度 和 功 能 特 色 问 题 , 们 决 定 选 择 一 运 我 式 中 , , 输 入 信 号 的 幅 值 ( )。 滤 波 电 容 的 容 量 ( 位 为 V为  ̄ C为 ms 单 块 凌 阳单 片 机 做 移 动 声 源 的主 机 , 责 系 统 的无 线 收 发 , 动决 策 及 负 运 ) 。 声光报警 , 另一 块 凌 阳 单 片 机 做从 机 l完 成 时 间 信 号 的 处 理 , 传 送 并 当L 6 M5 7信 号 输 入 端 加 入 幅度 为 2 mV 以 上 的 交 流 信 号且 频 率 0 回主 机 , 外 由 5 单 片机 做 从 机 2主 要 负 责 移 动 声 源 的 电 机驱 动 。 另 1 落 人 f B 范 围 内 时 , 出端 输 出 一 个 低 电 平 的 检 测 信 号 , 就 是 所 o W  ̄ 输 这 1 - 电 机 的 选 型 2 谓 的 “ 率 继 电器 ” 频 特性 。 利 用这 一 特 性 , 们 就可 以 得 到 从 远处 传 来 我 方 案 一 : 择 易 于 精 确 控 制 的 步 进 电 机 行 走 距 离 , 计 初 期 我 们 选 设 的单 一 频 率 的 音频 信 号 首 先 选 择 了 振 荡 的 中 心频 率 可 以 由下 式 计 算 : 111 P f /.R C n 这 套 方 案 , 是 经 过 试 验 , 法 让 步 进 电机 达 到 理 想 的速 度 。 加 但 无 若 音 频接 收 电路 原 理 图如 下 : 大 电 压 , 将 加 大 电机 功 耗 , 必 同时 增 加 驱 动 器 L 9 N 因 发 热 而 烧 毁 的 28
SPCE061A语音单片机自主实验报告
SPCE061A语音型单片机自主实验高等工程学院39032415李柏2010-10-30、11-6一、S PCE061A芯片简介SPCE061A实验箱是以台湾凌阳16位单片机SPCE061A为核心设计的实验培训系统能完成教学大纲所规定的各项基础实验和毕业设计并能感受到凌阳独具特色的语音处理功能该系统集成度高驱动能力大扩展方便语音处理功能强大是各高校学生学习凌阳单片机必备的实验工具也是验证教学从事科研专案的开发科技制作及竞赛的实用教学设备特别是其独具的语音实验处理功能为相关教学和专案研发赋予许多新的内容和功能从而更实用更符合潮流更具有竞争力。
PCE061A 是继μ’nSP™(Microcontroller and Signal Processor)系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。
与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。
较高的处理速度使μ’nSP™能够非常容易地、快速地处理复杂的数字信号。
因此,与SPCE500A相比,以μ’nSP™为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。
其主要性能如下,内置2K字SRAM;内置32K FLASH;具有2个16位可编程定时器/计数器(可自动预置初始计数值);2个10位DAC(数-模转换)输出通道;32位通用可编程输入/输出端口;14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒等等。
使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;具有WatchDog功能。
图1 实验箱整体图二、工作记录10月30日主要内容:运行example文件夹中的诸多例程。
具体实验步骤:1、使用数据线连接单片机与电脑主机,单片机与电源,打开相应开关。
2、打开,进入IDE界面。
基于SPCE061A的通用汉字文本播音系统
∀ 28∀
第 34卷第 3 期
黄丽敏 , 等 : 基于 SPCE061A 的通用汉字文本播音系统
∀ 通信技术 ∀
试接口与 PC 机并行口连接。 SPCE061A 除可编程音 频处理功能外 , 还具有丰富的 I /O 口、 时钟源 及中断 源 , F lash 存储达 32 k 字, RAM 有 2 k 字, 在语音播放 的同时还能进行复杂的控制操作。 SPR4096A 容量为 512 k # 8 位 , 分 256 个扇区, 每 个扇区为 2 kB, 可配置为 B M I( 总线存储器 接口 ) 或 S IF( 串行 接口总线 ) 。为节省 I/O 口, 本系统 使用串 行接口。此串行接口是凌阳自行定义的 SIO 接口, 也 2 用 SCK 和 SDA 两根信号线, 但数据格式与 I C 或 SP I 略有不同 , SPCE061A 的 I O B0 为时钟信号 SCK, I OB1 为数据信号 SDA。
∀ 通信技术 ∀
电 子 工 程 师Fra bibliotek2008 年 3 月
RAM 中才能解码, 故只能采用手动方式播放语音, 初 始化、 读取资源数据、 填充语音队列、 解码、 停止播放等 都用相应的 AP I实现, 函数原型在流程图中有详细的 表示。
序的编程、 播放函数的详细介绍和其他相关函数如音 量控制、 暂停播放、 恢复播放等见文献 [ 1] 。 3 . 3 主程序流程 主程序流程如图 4 所示, 对硬件及播音函数初始 化后, 循环执行语音数据解码播放和其他操作。文本 输入并写入循环缓冲区的操作在串行口中断子程序中 进行。为了不互相影响, 这 3 个操作都不能占用太长 时间。
512 kB 的 F lash 存储器中 , 实现了基于 SPCE061A 的嵌入式通用汉字文本语音播放系统。 阐述了系统 的硬件原理和软件流程。 本系统硬件结构简单, 成本低廉 ; 软件有汉字语音资源地址的计算、 文本语 音播放及语音播放操作与其他操作的配合等关键算法 。系统采用环形缓冲区很好地解决了文本播放 与输入间的配合问题 , 播放语音流畅 、 清晰。 关键词 : SPCE061A; 语音播放系统; 汉字读音序号索引表 ; 语音资源地址索引表; 环形缓冲区 中图分类号 : TP 912 . 34 上语音解压缩速度不快会影响其他操作。而若采用嵌 入式微处理器实现语音播放系统 则成本太高。凌阳 16 位 单片机 SPCE061A 是 一个 最佳的 选择, 它带 有 DSP 指令 , 将嵌入式语音系统所需的 A /D、 D /A 等功 能模块都集成在一个芯片中, 具有很强的可编程音频 处理功能。凌阳还提供 SACM _L IB 语音库 ( 本系统使 用 SACMV26e . lib ) 可实现录音、 播放和语音识别等功 能。 本系统硬件原理如图 1 所示 , 主要由 SPCE061A 单片机和外部 F lash 存储器 SPR4096A 两个芯片组成。 SPCE061A 运行所有语音解码播放及其他操作的软件 功能, 它的 D /A 输出经音频功放 SPY0030 接扬声器。 SPR4096A 存储包括 汉字读音序号索 引表、 语 音资源 地址索引表和语音资源数据的所有语音信息。
凌阳SPCE061A单片机实验程序
本实验程序是凌阳SPCE61A单片机的程序代码!希望大家能够把单片机学好,部分程序有C语言版本的,有一部分没有,我认为C语言版本的其实是按照汇编版的改编的,都是大同小异,所以后面一部分中断程序就没有写C语言版本的!望理解^_^//使用汇编语言实现A 口的输出.RAM.CODE.public _main.define P_IOA_Dir 0X7002.define P_IOA_Attrib 0X7003.define P_IOA_Data 0X7000.define P_watchdog_clear 0X7012 _main:R1=0x00FF //初始化[P_IOA_Dir] = R1[P_IOA_Attrib] = R1R1 = 0x0000[P_IOA_Data] = R1LP1: [P_IOA_Data] = R1R1 += 1CALL delayR2 = 0X0001 //清狗[P_watchdog_clear] = R2JMP LP1delay: .PROCBP = 0LPN: BP += 1CMP BP,0X9000JNZ LPNRETF.ENDP//使用C语言实现A 口的输出#define P_IOA_Data (volatile unsigned int *)0x7000 #define P_IOA_Dir (volatile unsigned int *)0x7002 #define P_IOA_Attrib (volatile unsigned int *)0x7003 #define P_watchdog_clear (volatile unsigned int *)0X7012 int main (void){unsigned int i = 0 ,j = 0;*P_IOA_Dir = 0xffff;*P_IOA_Attrib = 0xffff;*P_IOA_Data = 0x0000;while (1){for (i = 0;i <= 255;++i){for (j = 0 ; j <= 2222; ++j) //延时,可以更改*P_IOA_Data = i ;*P_watchdog_clear = 0x0001;}}}//使用汇编语言实现A 口作为输入口、B 口作为输出口.RAM.CODE.public _main.define P_IOA_Dir 0X7002 //定义地址.define P_IOA_Attrib 0X7003.define P_IOA_Data 0X7000.define P_IOB_Dir 0X7007.define P_IOB_Attrib 0X7008.define P_IOB_Data 0X7005.define P_watchdog_clear 0X7012_main:R1=0x0000 //A口初始化[P_IOA_Dir] = R1[P_IOA_Attrib] = R1[P_IOA_Data] = R1R1=0x00FF //B口初始化[P_IOB_Dir] = R1[P_IOB_Attrib] = R1R1=0x0000[P_IOB_Data] = R1LPP:R1 = [P_IOA_Data] //键盘程序调用取键值CMP R1,0JZ LP2CALL delayR2 = [P_IOA_Data]CMP R1,R2JZ LP2[P_IOB_Data] = R1delay: .PROCBP = 0LPN: BP += 1CMP BP,0X9000JNZ LPNRETF.ENDPLP2: R1 = 0X0001 //清狗[P_watchdog_clear] = R1JMP LPP//使用C 语言实现A 口作为输入口、B 口作为输出口#define P_IOA_Data (volatile unsigned int *)0x7000 #define P_IOA_Dir (volatile unsigned int *)0x7002 #define P_IOA_Attrib (volatile unsigned int *)0x7003 #define P_IOB_Data (volatile unsigned int *)0X7005 #define P_IOB_Dir (volatile unsigned int *)0X7007 #define P_IOB_Attrib (volatile unsigned int *)0X7008 #define P_watchdog_clear (volatile unsigned int *)0X7012 int f (unsigned int t){unsigned int s;t = *P_IOA_Data;if (t == 0 )return t;else{delay();s = *P_IOA_Data;if (t ==s)return t;elsereturn 0;}}void delay (void){unsigned int m;for(m = 0;m<100; ++m){*P_watchdog_clear = 0x0001;}}int main (void){unsigned int i,t;*P_IOA_Dir = 0x0000; // //A口初始化*P_IOA_Attrib = 0x0000;*P_IOA_Data = 0x0000;*P_IOB_Dir = 0x00FF; //B口初始化*P_IOB_Attrib = 0x00FF;*P_IOB_Data = 0x0000;while (1){t = *P_IOA_Data; //取键值i = f(t); //返回键值if (i == 0)*P_IOB_Data = i;else{*P_IOB_Data = i;}*P_watchdog_clear = 0x0001;}}//使用汇编语言实现A 口的输出//系统时钟.RAM.CODE.public _main.define P_IOA_Dir 0X7002 .define P_IOA_Attrib 0X7003.define P_IOA_Data 0X7000 .define P_SystemClock 0X7013 .define P_watchdog_clear 0X7012_main:R1 = 0X0000 //24.576MHZ[P_SystemClock] = R1R1=0x00FF //初始化[P_IOA_Dir] = R1[P_IOA_Attrib] = R1R1 = 0x0000[P_IOA_Data] = R1LP1: [P_IOA_Data] = R1CALL delayCALL delayR1 = 0XFFFF[P_IOA_Data] = R1CALL delayCALL delaydelay: .PROCBP = 0xFFFFLPN: BP -= 1JNZ LPNRETF.ENDPR2 = 0X0001 //清狗[P_watchdog_clear] = R2JMP LP1//系统时钟//使用C语言实现A 口的输出#define P_IOA_Data (volatile unsigned int *)0x7000 #define P_IOA_Dir (volatile unsigned int *)0x7002 #define P_IOA_Attrib (volatile unsigned int *)0x7003 #define P_SystemClock (volatile unsigned int *)0X7013 #define P_watchdog_clear (volatile unsigned int *)0X7012 int main (void){unsigned int i,j;*P_IOA_Dir = 0x00FF;*P_IOA_Attrib = 0x00FF;*P_IOA_Data = 0x0000;*P_SystemClock = 0x0000;while (1){for (i = 0;i < 2222;++i)for (j = 0;j < 22;++j){*P_IOA_Data = 0x0000 ;*P_watchdog_clear = 0x0001;}for (i = 0;i < 2222;++i)for (j = 0;j < 22;++j){*P_IOA_Data = 0xFFFF ;*P_watchdog_clear = 0x0001;}}}//使用汇编语言定时器TimerA.RAM.CODE.public _main.define P_IOB_Dir 0x7007.define P_IOB_Attrib 0x7008.define P_IOB_Data 0x7005.define P_watchdog_clear 0x7012.define P_TimerA_Data 0x700A.define P_TimerA_ctrl 0x700B_main:R1=0x0FFF //B口初始化同相低电平输出[P_IOB_Dir] = R1[P_IOB_Attrib] = R1R1=0x0000[P_IOB_Data] = R1R1 = 0x0215 // 输入256HZ 输出1秒占空比8/16[P_TimerA_ctrl] = R1R1 = 0xFFEF //计数初值[P_TimerA_Data] = R1LP1:R2 = 0x0001 //清狗[P_watchdog_clear] = R2 JMP LP1//使用C语言定时器TimerA#define P_IOB_Data (volatile unsigned int *)0X7005 #define P_IOB_Dir (volatile unsigned int *)0X7007#define P_IOB_Attrib (volatile unsigned int *)0X7008#define P_watchdog_clear (volatile unsigned int *)0X7012#define P_TimerA_Data (volatile unsigned int *)0X700A #define P_TimerA_ctrl (volatile unsigned int *)0X700Bint main (void){*P_IOB_Dir = 0x0F00; //B口初始化同相低电平输出*P_IOB_Attrib = 0x0F00;*P_IOB_Data = 0x0000;*P_TimerA_ctrl = 0x0215; // 输入256HZ 输出1秒占空比8/16*P_TimerA_Data = 0xFFEF; //计数初值while (1){*P_watchdog_clear = 0x0001;}}// 使用汇编语言A/D转换.RAM.CODE.public _main.define P_IOA_Dir 0X7002 //定义地址.define P_IOA_Attrib 0X7003.define P_IOA_Data 0X7000.define P_IOB_Dir 0X7007.define P_IOB_Attrib 0X7008.define P_IOB_Data 0X7005.define P_watchdog_clear 0X7012.define P_ADC_MUX_Ctrl 0X702B.define P_ADC_Ctrl 0X7015.define P_ADC_MUX_Data 0X702C_main:R1=0x0000 //A口初始化悬浮输入口[P_IOA_Dir] = R1[P_IOA_Data] = R1R1=0x00FF[P_IOA_Attrib] = R1[P_IOB_Dir] = R1 //B口初始化同相低电平输出口[P_IOB_Attrib] = R1R1=0x0000[P_IOB_Data] = R1R1=0x0001 //选择通道LINE_IN为IOA0[P_ADC_MUX_Ctrl] = R1R1=0x0001 //允许A/D转换[P_ADC_Ctrl] = R1ZH:R1 = [P_ADC_MUX_Data] //判断是否转换完成? 读取P_ADC_MUX_Data的值TEST R1,0x8000JZ ZHR1 = [P_ADC_MUX_Data]R1 = R1 LSR 4R1 = R1 LSR 2[P_IOB_Data] = R1R1 = 0X0001 //清狗[P_watchdog_clear] = R1JMP ZH// 使用C语言A/D转换#define P_IOA_Data (volatile unsigned int *)0x7000#define P_IOA_Dir (volatile unsigned int *)0x7002#define P_IOA_Attrib (volatile unsigned int *)0x7003#define P_IOB_Data (volatile unsigned int *)0X7005#define P_IOB_Dir (volatile unsigned int *)0X7007#define P_IOB_Attrib (volatile unsigned int *)0X7008#define P_watchdog_clear (volatile unsigned int *)0X7012#define P_ADC_MUX_Ctrl (volatile unsigned int *)0X702B#define P_ADC_Ctrl (volatile unsigned int *)0X7015#define P_ADC_MUX_Data (volatile unsigned int *)0X702Cint main (void){unsigned int i ;unsigned int j ;*P_IOA_Dir = 0x0000 ; //A口初始化悬浮输入口*P_IOA_Data = 0x0000 ;*P_IOA_Attrib = 0x00FF ;*P_IOB_Dir = 0x00FF ; //B口初始化同相低电平输出口*P_IOB_Attrib = 0x00FF ;*P_IOB_Data = 0x0000 ;*P_ADC_MUX_Ctrl = 0x0001; //选择通道LINE_IN为IOA0*P_ADC_Ctrl = 0x0001 ; //允许A/D转换for(i = 0;i < 5;++i) ; //等待while(1){i = *P_ADC_MUX_Data ; //判断是否转换完成? 读取P_ADC_MUX_Data的值i = i & 0x8000 ;if(i == 0);else{j = *P_ADC_MUX_Data;j >>= 6 ; //右移6位*P_IOB_Data = j ;}*P_watchdog_clear = 0X0001 ; //清狗}}//使用汇编语言实现A 口作为输入口、B 口作为输出口触键唤醒.RAM.CODE.public _main.define P_IOA_Dir 0X7002 //定义地址.define P_IOA_Attrib 0X7003.define P_IOA_Data 0X7000.define P_IOB_Dir 0X7007.define P_IOB_Attrib 0X7008.define P_IOB_Data 0X7005.define P_watchdog_clear 0X7012.define P_INT_Ctrl 0X7010.define P_IOA_Latch 0X7004.define P_SystemClock 0X7013.define P_INT_Clear 0X7011_main:R1=0x00FD //设置IOA1为带下拉电阻的输入口,其他IOA口都设置为输出口[P_IOA_Dir] = R1[P_IOA_Attrib] = R1R1=0x0000[P_IOA_Data] = R1R1=0x00FF //B口初始化初始化IOB口为同相低电平输出口[P_IOB_Dir] = R1[P_IOB_Attrib] = R1R1=0x0000[P_IOB_Data] = R1INT OFFR1 = 0X0080 //开启唤醒中断[P_INT_Ctrl] = R1R1 = 0X0000 //熄灭灯[P_IOB_Data] = R1R1 = [P_IOA_Latch] //锁存IOA数据[P_IOA_Data]INT IRQR1 = 0X0007 //睡眠[P_SystemClock] = R1LP2: R1 = 0X0001 //清狗[P_watchdog_clear] = R1JMP LP2.TEXT.PUBLIC _IRQ3_IRQ3:INT OFFPUSH R1,R4 TO [SP]R1 = 0X0080 //是否是触键唤醒TEST R1,[P_INT_Ctrl]JZ EXITR1 = 0XFFFF //点亮8颗灯[P_IOB_Data] = R1EXIT:R1 = 0X0080 //清中断[P_INT_Clear] = R1POP R1,R4 FROM [SP]INT IRQRETI.END//使用C 语言实现A 口作为输入口、B 口作为输出口#define P_IOA_Data (volatile unsigned int *)0x7000#define P_IOA_Dir (volatile unsigned int *)0x7002#define P_IOA_Attrib (volatile unsigned int *)0x7003#define P_IOB_Data (volatile unsigned int *)0X7005#define P_IOB_Dir (volatile unsigned int *)0X7007#define P_IOB_Attrib (volatile unsigned int *)0X7008#define P_watchdog_clear (volatile unsigned int *)0X7012#define P_INT_Ctrl (volatile unsigned int *)0X7010#define P_IOA_Latch (volatile unsigned int *)0X7004#define P_SystemClock (volatile unsigned int *)0X7013#define P_INT_Clear (volatile unsigned int *)0X7011int main(void){unsigned int i ;ASM (" INT OFF ") ;*P_IOA_Dir = 0x00FD ; //设置IOA1为带下拉电阻的输入口,其他IOA口都设置为输出口*P_IOA_Attrib = 0x00FD;*P_IOA_Data = 0x0000;*P_IOB_Dir = 0x00FF ; //B口初始化初始化IOB口为同相低电平输出口*P_IOB_Attrib = 0x00FF;*P_IOB_Data = 0x0000;*P_INT_Ctrl = 0X0080; //开启唤醒中断*P_IOB_Data = 0X0000; //熄灭灯i = *P_IOA_Latch ; //锁存IOA数据ASM (" INT IRQ ") ; //开中断*P_SystemClock = 0X0007; //睡眠while(1){*P_watchdog_clear = 0X0001 ; //清狗}}unsigned int t;void IRQ3(void)__attribute__((ISR));void IRQ3(void){t = *P_INT_Ctrl ;if (t == 0X0080 ){*P_IOA_Data = 0XFFFF ;*P_INT_Clear = 0X0080;}else*P_INT_Clear = 0X0080;}//使用汇编语言:IRQ6 中断.DEFINE P_IOA_DATA 0x7000.DEFINE P_IOA_DIR 0x7002.DEFINE P_IOA_ATTRI 0x7003.DEFINE P_IOB_DATA 0x7005.DEFINE P_IOB_DIR 0x7007.DEFINE P_IOB_ATTRI 0x7008.DEFINE P_INT_CTRL 0x7010.DEFINE P_INT_CLEAR 0x7011.DEFINE P_WatchDog_Clear 0x7012.DEFINE P_Timebase_setup 0x700e.RAM.VAR G_Time1.VAR G_Time2.CODE.PUBLIC _main_main:INT OFFR1 = 0xFFFF //设置IOA口为同相高电平输出口[P_IOA_ATTRI] = R1[P_IOA_DIR] = R1[P_IOA_DATA] = R1R1 = 0xFFFF //设置IOB口为同相高电平输出口[P_IOB_ATTRI] = R1[P_IOB_DIR] = R1[P_IOB_DATA] = R1R1 = 0x0003[P_Timebase_setup] =R1R1 = 0x0003 //开中断IRQ6_C_Tmb1和IRQ6_C_Tmb2 [P_INT_CTRL] = R1R1 = 0x0000[G_Time1] = R1[G_Time2] = R1INT I RQL_Loop:R1 = 0x0001[P_WatchDog_Clear] = R1JMP L_Loop.TEXT.PUBLIC _IRQ6_IRQ6:PUSH R1,R5 to [sp] //压栈保护R1 = 0x0001TEST R1,[P_INT_CTRL] //比较是否为IRQ6_C_Tmb2的中断源JNZ L_IRQ6_C_Tmb2 //是,则转至对应程序段L_IRQ6_C_Tmb1: //否,则进入IRQ6_C_Tmb1程序段;R2 = [G_Time1]R2 += 0x0001[G_Time1] = R2CMP R2,64 //比较是否为1秒;JBE L_LED1_OFF //小于等于则LED灭;R1 = 0xfff0 //大于则LED亮;[P_IOA_DATA] = R1CMP R2,128 //比较是否为两秒;JBE L_LED1_RET //小于等于则LED继续亮;R2 = 0x000 //否则,G_Time1单元清零,返回中断;[G_Time1] =R2JMP L_LED1_RETL_LED1_OFF:R1 = 0xFFFF[P_IOA_DATA] = R1L_LED1_RET:R1 = 0x0002[P_INT_CLEAR] = R1R1 = 0x0001[P_WatchDog_Clear] = R1POP R1,R5 FROM [sp]RETIL_IRQ6_C_Tmb2:R2 = [G_Time2]R2 += 0x0001[G_Time2] = R2CMP R2,64 //比较是否为0.5秒;JBE L_LED2_OFF //小于等于则LED灭;R1 = 0xfff0 //大于则LED亮;[P_IOB_DATA] = R1CMP R2,128 //比较是否为1秒;JBE L_LED2_RET //小于等于则LED继续亮;R2 = 0x0000 //否则,G_Time2单元清零,返回中断;[G_Time2] = R2JMP L_LED2_RETL_LED2_OFF:R1 = 0xFFFF[P_IOB_DATA] = R1L_LED2_RET:R1 = 0x0001[P_INT_CLEAR] = R1POP R1,R5 from [sp] RETI//使用汇编语言IRQ4.define P_IOA_DATA 0x7000.define P_IOA_DIR 0x7002.define P_IOA_ATTRI 0x7003.define P_IOB_DATA 0x7005.define P_IOB_DIR 0x7007.define P_IOB_ATTRI 0x7008.define P_INT_CTRL 0x7010.define P_INT_CLEAR 0x7011.define P_watchdog_clear 0x7012.RAM.VAR G_Time1.VAR G_Time2,G_Time4.CODE.public _main_main:INT OFFR1 = 0xFFFF //IOA口为同相高电平输出口;[P_IOA_ATTRI] = R1[P_IOA_DIR] = R1R1 = 0x0000[P_IOA_DATA] = R1R1 = 0x0070 //开中断IRQ4_4KHz、IRQ4_2KHz和IRQ4_1KHz[P_INT_CTRL] = R1R1 = 0x0000[G_Time1] = R1[G_Time2] = R1[G_Time4] = R1INT IRQL_Loop:R1 = 0x0001 //清狗等待中断[P_watchdog_clear] = R1JMP L_Loop.TEXT.PUBLIC _IRQ4_IRQ4:PUSH R1,R5 to [sp] //压栈保护;R1 = 0x0010TEST R1,[P_INT_CTRL] //比较是否为1KHz的中断源;JNZ LED2kHZ_OFF //是,则转至对应程序段;R1 = 0x0020TEST R1,[P_INT_CTRL] //否,则比较是否为2KHz的中断源;JNZ IRQ4_2k //是,则转至对应程序段;L_IRQ4_4k: //否,则进入4KHz程序段;R2 = [G_Time4]R2 += 0x0001[G_Time4] = R2CMP R2,1024 //比较JBE LED4kHZ_OFF //小于等于则LED灭;R1 = 0x00f0 //大于则LED亮;[P_IOA_DATA] = R1CMP R2,2048 //比较JBE LED2kHZ_OFF //小于等于则LED继续亮;R2 = 0x0000 //否则,G_Time4单元清零,返回中断;[G_Time4] = R2JMP LED2kHZ_OFFLED4kHZ_OFF:R1 = 0x0000[P_IOA_DATA] = R1LED2kHZ_OFF:R1 = 0x0040POP R1,R5 from [sp]RETIIRQ4_2k:R2 = [G_Time2]R2 += 0x0001[G_Time2] = R2CMP R2,1024 //比较JBE LED2kHZ_OFF //小于等于则LED灭;R1 ^= 0x000C //大于则LED亮;[P_IOA_DATA] = R1CMP R2,2048 //比较;JBE LED2kHz_RET //小于等于则LED继续亮;R2 = 0x0000 //否则,G_Time2单元清零,返回中断;[G_Time2] = R2JMP LED2kHz_RETLED2kHZ_OFF:R1 = 0x0000[P_IOA_DATA] = R1LED2kHz_RET:R1 = 0x0020POP R1,R5 from [sp]RETILED2kHZ_OFF:R2 = [G_Time1]R2+ = 0x0001[G_Time1] = R2CMP R2,1024 //比较;JBE LED1kHZ_OFF //小于等于则LED灭;R1 = 0x0003 //大于则LED亮;[P_IOA_DATA] = R1CMP R2, 2048 //比较;JBE LED1kHz_RET //小于等于则LED继续亮;R2 = 0x0000 //否则,G_Time1单元清零,返回中断;[G_Time1] = R2JMP LED1kHz_RETLED1kHZ_OFF:R1 = 0x0000[P_IOA_DATA] = R1LED1kHz_RET:R1 = 0x0010POP R1,R5 from[sp] RETI//使用汇编语言外部中断EXT1、EXT2.define P_IOA_Dir 0X7002 //定义地址.define P_IOA_Attrib 0X7003.define P_IOA_Data 0X7000.define P_IOB_Dir 0X7007.define P_IOB_Attrib 0X7008.define P_IOB_Data 0X7005.define P_FeedBack 0X7009.define P_INT_Ctrl 0x7010.define P_INT_clear 0x7011.define P_Timebase_setup 0x700E.define P_watchdog_clear 0X7012.RAM.CODE.PUBLIC _main_main:INT OFFR1 = 0xFFFF //IOA口为同相低电平输出[P_IOA_Attrib] = R1[P_IOA_Dir] = R1R1 = 0x0000[P_IOA_Data] = R1R1 = 0x0000 //IOB2 、IOB3 口为上拉电阻输入[P_IOB_Attrib] = R1[P_IOB_Dir] = R1R1 = 0x0001[P_IOB_Data] = R1R1 = 0X000C //设置IOB 口为特殊功能[P_FeedBack] = R1R1 = 0X0300 //开启IRQ3_EXT1,IRQ3_EXT2 中断[P_INT_Ctrl] = R1INT IRQLP1:R1 = 0X0001[P_watchdog_clear] = R1JMP LP1//外部中断.TEXT.PUBLIC _IRQ3_IRQ3:INT OFFPUSH R1,R4 TO [SP]R1 = 0X0200 //是否是EXT2 中断TEST R1,[P_INT_Ctrl]JNZ IRQ3_EXT2 // 是否是EXT2,是则跳转到EXT2R1 = 0X0100TEST R1,[P_INT_Ctrl]JNZ IRQ3_EXT1 // 是否是EXT1,是则跳转到EXT1R1 = 0X0380[P_INT_clear] = R1POP R1,R4 FROM [SP]RETIIRQ3_EXT1:R1 = 0X00F0[P_IOA_Data] = R1R1 = 0X0100[P_INT_clear] = R1POP R1,R4 FROM [SP]INT IRQRETIIRQ3_EXT2:R1 = 0X000F[P_IOA_Data] = R1R1 = 0X0200[P_INT_clear] = R1 POP R1,R4 FROM [SP] INT IRQRETI//使用汇编语言外部中断IRQ0 1 2.define P_IOA_Dir 0X7002 //定义地址.define P_IOA_Attrib 0X7003.define P_IOA_Data 0X7000.define P_IOB_Dir 0X7007.define P_IOB_Attrib 0X7008.define P_IOB_Data 0X7005.define P_FeedBack 0X7009.define P_INT_Ctrl 0x7010.define P_INT_clear 0x7011.define P_watchdog_clear 0X7012.define P_TimerA_Data 0x700A.define P_TimerA_ctrl 0x700B.define P_TimerB_Data 0x700C.define P_TimerB_ctrl 0x700D.RAM.CODE.PUBLIC _main_main:INT OFFR1 = 0xFFFF //IOA口为同相低电平输出[P_IOA_Attrib] = R1[P_IOA_Dir] = R1R1 = 0x0000[P_IOA_Data] = R1R1 = 0xFFFF //IOB口为同相低电平输出[P_IOB_Attrib] = R1[P_IOB_Dir] = R1R1 = 0x0000[P_IOB_Data] = R1R1 =0x0034 //4096hz[P_TimerA_ctrl] = R1R1 = 0xDFFF[P_TimerA_Data] = R1R1 =0x0004 //4096hz[P_TimerB_ctrl] = R1R1 = 0xEFFF[P_TimerB_Data] = R1R1 = 0x5400 //开启IRQ3_EXT1,IRQ3_EXT2 中断[P_INT_Ctrl] = R1INT IRQLP1:R1 = 0X0001[P_watchdog_clear] = R1JMP LP1//外部中断.TEXT.PUBLIC _IRQ0_IRQ0:INT OFFPUSH R1,R4 TO [SP]R1 = 0x4000 // 中断[P_INT_clear] = R1POP R1,R4 FROM [SP]INT IRQRETI.TEXT.PUBLIC _IRQ1_IRQ1:INT OFFPUSH R1,R4 TO [SP]R1 = [P_IOA_Data]R1 ^= 0x000F[P_IOA_Data] = R1R1 = 0x1000[P_INT_clear] = R1POP R1,R4 FROM [SP]INT IRQRETI.TEXT.PUBLIC _IRQ2_IRQ2:INT OFFPUSH R1,R4 TO [SP]R1 = [P_IOB_Data]R1 ^= 0x000F[P_IOB_Data] = R1R1 = 0x0400[P_INT_clear] = R1POP R1,R4 FROM [SP]INT IRQRETI目前做了这么多实验,实验程序共享给大家!希望大家能够把单片机学好!^_^ ^_^ ^_^ ^_^ ^_^。
基于SPCE061A单片机的音乐播放系统
产业与科技论坛2011年第10卷第19期基于SPCE061A 单片机的音乐播放系统□章立文王琦【摘要】随着微电子技术的飞速发展,单片机以其运算速度快、体积小巧、价格便宜、扩展性强等突出优点被广泛应用于家用电器、计算机外设、通讯、工业控制、自动化生产、智能化设备以及仪器仪表等领域,成为当今电子行业当中不可或缺的一个组成部分。
随着全球半导体产业与技术的飞速发展,集成块的集成度和功能都取得了很大的进步,但随着性能的提升价格却越来越低,使得MP3播放器大面积普及。
【关键词】单片机;SPCE061A ;播放器【作者单位】章立文,王琦;江西信息应用职业技术学院本设计就是基于SPCE061A 单片机、SPR4096模组以及液晶1602模块去实现一个简单的MP3播放器,能够实现多首音乐的播放、音乐在播放过程中的开始、暂停、停止、上一首、下一首以及音量的控制功能,在音乐播放时可以在液晶1602上显示均衡效果。
系统以SPCE061A 为核心,可以划分为键盘(61板上自带的按键)输入、液晶LCD1602用户界面提示与均衡器效果、SPR4096资源存储与61板语音播放等部分。
61板作为整个系统的核心控制,并且负责语音的输出。
SPR 模组作为语音资源的存储介质,这些语音资源是通过专用的ResWriter 工具烧写到SPR4096芯片中的。
61板上自带的键盘与液晶1602实现用户控制音乐播放器的控制与显示作用,在播放音乐时,液晶1602还可以显示音乐的均衡器效果。
结合61板上的3个按键,实现如图1的功能。
图1功能键示意图SPCE061A 处理音频借助与内置的专用MIC 输入通道和专用音频输出DAC 。
语音处理速度较快,因此非常适合语音播放、语音录制等语音处理工作。
对于单片机来说,未经处理的音频资源数据量很大,导致数据存储和传输带来了比较大的困难,因此需要通过音频压缩编码,来完成音频处理。
在语音处理方面,SPCE061A 应用于语音产品时,凌阳公司提供了多种音频编解码算法及其API 函数库,该函数库将A /D 、编码、解码、存储及D /A 做成相应的模块,每个模块都提供了较多的合适的应用程序接口API ,用户只需了解每个模块所实现的功能及其参数的内容即可使用,完成音频的处理。
SPCE061A单片机实验指导书
SPCE061A单片机实验指导书电子工程系SPCE061A单片机实验指导书编写说明本实验指导书是针对“单片机原理及其接口技术”课程实验教学大纲编写的,其中的所有实验是在凌阳十六位单片机SPCE061A实验板(61板)的基础上进行,由于该实验板采用了开放式的设计方法,除语音部分(麦克风和放音喇叭及其驱动电路部分)已设计在实验板上外,所由其它资源全部留给用户自由使用,对于开设设计性、综合性实验提供了必要的空间。
本实验指导书共包括10个实验,其中所有实验均为设计性、综合性实验。
在实验指导书中只给出实验要求,并提供相关的实验板和相应的元器件,要求同学根据实验要求,设计出满足实验要求的实验原理、硬件电路设计,实际连线,编写相关程序、调试,并对实验结果进行记录、分析。
目录实验一SPCE061A开发环境实验实验二普通IO口实验实验三定时/计数器实验实验四系统时钟实验实验五FIQ中断实验实验六信号发生器实验实验七 A/D转换实验实验八七段数码LED显示实验实验九录放音实验实验十键扫描显示程序实验一 SPCE061A开发环境实验【实验目的】1)熟悉µ’nSP™ IDE环境及在该环境下用汇编语言和C语言编写的应用程序。
2)熟悉简单的µ’nSP™汇编语言指令和C语言程序的编写方法。
【实验设备】1)装有WINDOWS系统和µ’nSP™ IDE仿真环境的PC机一台。
2) µ’nSP™十六位单片机61开发板一个【实验步骤】1)将µ’nSP™ IDE打开后,建立一个新工程。
2)在该项目的源文件夹(SOURCE FILES)下建立一个新的汇编语言文件。
3)编写汇编代码。
4)编译程序,软件调试,观察并跟踪其结果,查看各个寄存器状态【程序范例1】//===============================================================//// Program: 计算1 to 100累加值// Output: [sum] = 5050(十进制) 或13BA(十六进制)//===============================================================//.RAM // 定义预定义RAM 段.var R_Sum; // 定义变量.CODE //定义代码段.public _main; // 对main程序段声明_main: r1 = 0x0001; // r1=[1..100]r2 = 0x0000; // 寄存器清零L_SumLoop:r2 += r1; // 累计值存到寄存器r2r1 += 1; // 下一个数值cmp r1,100; // 加到100否jna L_SumLoop; // 如果r1 <= 100 跳到L_SumLoop[R_Sum] = r2; // 在R_Sum中保存最终结果L_ProgramEndLoop: // 程序死循环jmp L_ProgramEndLoop;【程序范例】//===============================================================//// Program: 计算1 to 100累加值// Output: [sum] = 5050(十进制) 或13BA(十六进制)//===============================================================//int main(){int i, Sum=0;for (i=0;i<=100;i++)Sum = Sum + i; // Sum 是累加的结果while(1){ }; // 程序死循环// 用变量Watch 窗口看Sum 的值}【程序练习】在µ’nSP™ IDE下用汇编语言使用冒泡法编写一个排序程序。
基于SPCE061A的智能密码锁设计与实现
S C 01 P E 6 A单 片机是 台湾 凌 阳公司 设 汁的一款 高性 价 比 1 位微处理器 , DS 功能 以及较高的处理速 度 , 该单片机 6 其 P 使 能 够快速地处理 各种复 杂的数字信号 , 非常适用 于语音处理 。 同时 , 配合凌 阳公 司免费提供 的语音处理 函数库 , 使得 这种微 控制器 成为设计低 成本语音识 别系统 的理 想选择 。与其他类
.
{
\
一… 7 一
/
~ 一 ~ 一 —
} 瓮 } -
…
; ,鬈 j {:
定;壤 翦i l } 磐 j 缸 柏 { r ~
)
~
、 T
j
一
种算法 。H MM 训练是 一个 迭代优化 的过程 , 以实现 时的 所
运算 量较 大 , 需要较多 的存储 资源。
A N算 法的基本 思想是 用大量 简单的处理 单元并行 连接 N 构 成一种信 息处 理系统 , 这种 系统可 以进 行 自我更新 , 高 且有 度 的并行处理及容 错能力 , 因而在认 知任务 中非常吸 引人。但 是 ANN相对 于模式 匹配而 言 , 反映语 音 的动态特性 上存在 在
2 系统软 件设 计
21 主 程 序 流 程 图 .
建 在 单片机仍然对 采集 系统软 件用 S C 0 1 P E 6 A单 片机 c语 言编 写而成 , 采用模块 特征信 息 , 立一个特 征模 型 ; 识别阶段 , 到的语音样本进行类似的分析处理 , 出语 音的特征信息 , 提取 然 化结构 。智能 密码锁系统要 实现的主要功能 是 : 合系统硬件 结
图2 系统 实物 图
重 大 缺 陷 。单 独 使 用 A N的系统 识别 性 能 不 高 , 以 目前 N 所 AN N通常在 多阶段识 别中与 H MM算 法配合使 用。
SPCE061A单片机介绍
Fosc分频,学工程训练中心
SCPE061A中断系统特点
• SPCE061A系列单片机中断系统功能 较强
✓ 十四个中断源 ✓ 两级中断优先级,两级嵌套 ✓ 每个中断源单独设置开或关
25 25
山东大学工程训练中心
SPCE061A中断类型
• 软件中断
由break产生
• 异常中断
山东大学工程训练中心
SPCE061A片内存储器映射
2K word的SRAM。
片内32K Word Flash ROM。
0X0000 0X07FF
2K SRAM
0X0800 0X6FFF
保留空间
0X7000 I/O端口
0X7FFF 系统端口
0X8000
32K FLASH ROM
0XFFF5
0XFFF6 中断向量
28
山东大学工程训练中心
看门狗Watchdog
• 什么是看门狗(Watchdog):
一般MCU的看门狗相当于一个定时器,如果每隔 一定时间不刷新定时器,它将溢出;而且大多数 情况下溢出将复位系统。
• 有什么用:
✓错误恢复的“最后手段”; ✓降低间歇故障的有效手段; ✓提高整个系统的可靠性。
29
山东大学工程训练中心
b0 0 1 0 1 0 1 0 1
CPUCLK Fosc Fosc/2 Fosc/4 Fosc/8 Fosc/16 Fosc/32 Fosc/64
停止(睡眠状态)
22
山东大学工程训练中心
PLL设置对照表
b7
b6
b5
Fosc
0
0
0
20.48MHz
0
0
1
24.576MHz
spce061a单片机
SPCE061A芯片的引脚 SPCE061A芯片的引脚
SPCE061A芯片的引脚 SPCE061A芯片的引脚
SPCE061A特性参数 SPCE061A特性参数
SPCE061A特性参数 SPCE061A特性参数
SPCE061A精简开发板 SPCE061A精简开发板
SPCE061A精简开发板 SPCE061A精简开发板
SPCE061A精简开发板(简称61板),是以凌阳16位单片机SPCE061A为核心的 精简开发-仿真-实验板,大小相当于一张扑克牌,是“凌阳科技大学计划” 专为大学生、电子爱好者等进行电子实习、课程设计、毕业设计、电子制作 及电子竞赛所设计的,也可作为单片机项目初期研发使用。61板除了具备单片 机最小系统电路外,还包括有电源电路、音频电路(含Mic输入部分和DAC音 频输出部分)、复位电路等,采用电池供电,方便学生随身携带!使学生在 掌握软件的同时,熟悉单片机硬件的设计制作,锻炼学生的动手能力,也为 单片机学习者和开发者创造了一个良好的学习条件和开发新产品的机会!61板 上有调试器接口(Probe接口)以及下载线(EZ_Probe)接口,分别可接凌阳 科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序 的下载、在线仿真调试。 61板上的主要功能模块如下: 1. SPCE061A单片机最小系统外围电路模块; SPCE061A单片机最小系统外围电路模块; 2. 电源输入模块; 3. 音频电路(包含Mic输入、DAC音频功放输出)模块; 音频电路(包含Mic输入、DAC音频功放输出)模块; 4. 按键模块; 5. I/O端口接口模块; I/O端口接口模块; 6. 调试、下载接口模块;
红外测温计的设计
凌阳十六位单片机实验箱 V3.0 版实验箱说明书
实验箱使用说明书目录第一章系统概述 (1)1.1整体描述 (1)1.2功能特点 (1)1.3实验箱配套资源简介 (2)1.4主要器件一览表 (4)第二章系统组成结构 (5)2.1系统电源电路 (5)2.2SPCE061A核心及周边电路 (6)2.3音频电路 (7)2.4双色8×8LED点阵电路 (8)2.5双0-3V直流电平输入电路 (9)2.6SPR4096A存储电路 (10)2.7发光二极管电路 (10)2.8高低电平发生按键电路 (11)2.9内置驱动的液晶显示电路 (12)2.10UART通讯电路 (12)2.114×4键盘和6位8段数码管电路 (13)2.12USB接口电路 (14)2.13应用接口简介 (15)第三章快速入门 (16)3.1主控芯片 (16)3.2集成开发环境IDE概述 (17)第四章实验箱自检 (18)4.1实验箱自检准备 (18)4.2实验箱自检步骤 (18)第五章附件 (21)第一章系统概述第一章系统概述凌阳科技股份有限公司(Sunplus)是全球知名的消费性IC设计公司,为回馈教育,改善大专院校单片机教学条件,特推出具有长期战略意义的凌阳科技大学计划。
本实验箱是凌阳公司为支持大学计划以凌阳16位单片机SPCE061A为核心开发出来的实验教学系统,此实验箱以操作方便、易学易用、功能强大等特点受到广大在校师生以及业界用户的欢迎。
1.1整体描述凌阳十六位单片机(SPCE061A)实验箱是集单片机应用技术、在线调试、在线仿真等功能于一体的强大开发系统,SPCE061A及其系列产品将带领MCU的应用迈入片上系统(SOC)时代,使在体验凌阳音频的欢快愉悦中轻松步入单片机及其嵌入式系统的流行领域。
(实验箱原理图请参见附件)图1.1实验箱实物图1.2功能特点本实验设备针对凌阳(unsp系列)十六位单片机的学习,提供了全面的开发工具和配套资料,最大程度的激发学生兴趣,巩固学习效果,方便了学习和应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第7章 凌阳音频压缩算法7.1 背景介绍7.1.1 音频的概述(特点、分类)我们所说的音频是指频率在20 Hz~20 kHz的声音信号,分为:波形声音、语音和音乐三种,其中波形声音就是自然界中所有的声音,是声音数字化的基础。
语音也可以表示为波形声音,但波形声音表示不出语言、语音学的内涵。
语音是对讲话声音的一次抽象。
是语言的载体,是人类社会特有的一种信息系统,是社会交际工具的符号。
音乐与语音相比更规范一些,是符号化了的声音。
但音乐不能对所有的声音进行符号化。
乐谱是符号化声音的符号组,表示比单个符号更复杂的声音信息内容。
7.1.2 数字音频的采样和量化将模拟的(连续的)声音波形数字元化(离散化),以便利数字计算机进行处理的过程,主要包括采样和量化两个方面。
数字音频的质量取决于:采样频率和量化位数这两个重要参数。
此外,声道的数目、相应的音频设备也是影响音频质量的原因。
7.1.3 音频格式的介绍音频文件通常分为两类:声音文件和MIDI文件(1)声音文件:指的是通过声音录入设备录制的原始声音,直接记录了真实声音的二进制采样数据,通常文件较大;(2)MIDI文件:它是一种音乐演奏指令序列,相当于乐谱,可以利用声音输出设备或与计算机相连的电子乐器进行演奏,由于不包含声音数据,其文件尺寸较小。
1)声音文件的格式WAVE文件——*.WAVWAVE文件使用三个参数来表示声音,它们是:采样位数、采样频率和声道数。
在计算机中采样位数一般有8位和16位两种,而采样频率一般有11025Hz(11KHz),22050Hz(22KHz)、44100Hz(44KHz)三种。
我们以单声道为例,则一般WAVE文件的比特率可达到88K~704Kbps。
具体介绍如下:(1) WAVE格式是Microsoft公司开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范;(2) 用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持。
(3) WAVE格式支持MSADPCM、CCITT A Law、CCITT µ Law和其它压缩算法,支持多种音频位数、采样频率和声道,是PC机上最为流行的声音文件格式。
(4) 但其文件尺寸较大,多用于存储简短的声音片段。
AIFF文件——AIF/AIFF(1) AIFF是音频交换文件格式(Audio Interchange File Format)的英文缩写,是苹果计算机公司开发的一种声音文件格式;(2) 被Macintosh平台及其应用程序所支持,Netscape Navigator浏览器中的LiveAudio也支持AIFF格式,SGI及其它专业音频软件包同样支持这种格式。
(3) AIFF支持ACE2、ACE8、MAC3和MAC6压缩,支持16位44.1Kz立体声。
Audio文件——*.Audio(1) Audio文件是Sun Microsystems公司推出的一种经过压缩的数字声音格式,是Internet中常用的声音文件格式;(2) Netscape Navigator浏览器中的LiveAudio也支持Audio格式的声音文件。
MPEG文件——*.MP1/*.MP2/*.MP3(1) MPEG是运动图像专家组(Moving Picture Experts Group)的英文缩写,代表MPEG标准中的音频部分,即MPEG音频层(MPEG Audio Layer);(2) MPEG音频文件的压缩是一种有损压缩,根据压缩质量和编码复杂程度的不同可分为三层(MPEG Audio Layer1/2/3),分别对应MP1、MP2和MP3这三种声音文件;(3) MPEG音频编码具有很高的压缩率,MP1和MP2的压缩率分别为4:1和6:1~8:1,而MP3的压缩率则高达10:1~12:1,也就是说一分钟CD音质的音乐,未经压缩需要10MB存储空间,而经过MP3压缩编码后只有1MB左右,同时其音质基本保持不失真,因此,目前使用最多的是MP3文件格式。
RealAudio文件——*.RA/*.RM/*.RAM(1) RealAudio文件是RealNerworks公司开发的一种新型流式音频(Streaming Audio)文件格式;(2) 它包含在RealMedia中,主要用于在低速的广域网上实时传输音频信息;(3) 网络连接速率不同,客户端所获得的声音质量也不尽相同:对于28.8Kbps的连接,可以达到广播级的声音质量;如果拥有ISDN或更快的线路连接,则可获得CD音质的声音。
2)MIDI文件——*.MID/*.RMI(1) MIDI是乐器数字接口(Musical Instrument Digital Interface)的英文缩写,是数字音乐/电子合成乐器的统一国际标准;(2) 它定义了计算机音乐程序、合成器及其它电子设备交换音乐信号的方式,还规定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,可用于为不同乐器创建数字声音,可以模拟大提琴、小提琴、钢琴等常见乐器;(3) 在MIDI文件中,只包含产生某种声音的指令,这些指令包括使用什么MIDI 设备的音色、声音的强弱、声音持续多长时间等,计算机将这些指令发送给声卡,声卡按照指令将声音合成出来,MIDI在重放时可以有不同的效果,这取决于音乐合成器的质量;(4) 相对于保存真实采样资料的声音文件,MIDI文件显得更加紧凑,其文件尺寸通常比声音文件小得多。
7.1.4 语音压缩编码基础语音压缩编码中的数据量是指:数据量=(采样频率×量化位数)/8(字节数) ×声道数目。
压缩编码的目的:通过对资料的压缩,达到高效率存储和转换资料的结果,即在保证一定声音质量的条件下,以最小的资料率来表达和传送声音信息。
压缩编码的必要性:实际应用中,未经压缩编码的音频资料量很大,进行传输或存储是不现实的。
所以要通过对信号趋势的预测和冗余信息处理,进行资料的压缩,这样就可以使我们用较少的资源建立更多的信息。
举个例子,没有压缩过的CD品质的资料,一分钟的内容需要11MB的内存容量来存储。
如果将原始资料进行压缩处理,在确保声音品质不失真的前提下,将数据压缩一半,5.5MB就可以完全还原效果。
而在实际操作中,可以依需要来选择合适的算法。
常见的几种音频压缩编码:1) 波形编码:将时间域信号直接变换为数字代码,力图使重建语音波形保持原语音信号的波形形状。
波形编码的基本原理是在时间轴上对模拟语音按一定的速率抽样,然后将幅度样本分层量化,并用代码表示。
译码是其反过程,将收到的数字序列经过译码和滤波恢复成模拟信号。
如:脉冲编码调制(Pulse Code Modulation,PCM)、差分脉冲编码调制(DPCM)、增量调制(DM)以及它们的各种改进型,如自适应差分脉冲编码调制(ADPCM)、自适应增量调制(ADM)、自适应传输编码(Adaptive Transfer Coding,ATC)和子带编码(SBC)等都属于波形编码技术。
波形编码特点:高话音质量、高码率,适于高保真音乐及语音。
2) 参数编码:参数编码又称为声源编码,是将信源信号在频率域或其它正交变换域提取特征参数,并将其变换成数字代码进行传输。
译码为其反过程,将收到的数字序列经变换恢复特征参量,再根据特征参量重建语音信号。
具体说,参数编码是通过对语音信号特征参数的提取和编码,力图使重建语音信号具有尽可能高的准确性,但重建信号的波形同原语音信号的波形可能会有相当大的差别。
如:线性预测编码(LPC)及其它各种改进型都属于参数编码。
该编码比特率可压缩到2Kbit/s-4.8Kbit/s,甚至更低,但语音质量只能达到中等,特别是自然度较低。
参数编码特点:压缩比大,计算量大,音质不高,廉价!3) 混合编码:混合编码使用参数编码技术和波形编码技术,计算机的发展为语音编码技术的研究提供了强有力的工具,大规模、超大规模集成电路的出现,则为语音编码的实现提供了基础。
80年代以来,语音编码技术有了实质性的进展,产生了新一代的编码算法,这就是混合编码。
它将波形编码和参数编码组合起来,克服了原有波形编码和参数编码的弱点,结合各自的长处,力图保持波形编码的高质量和参数编码的低速率。
如:多脉冲激励线性预测编码(MPLPC),规划脉冲激励线性预测编码(KPELPC),码本激励线性预测编码(CELP)等都是属于混合编码技术。
其数据率和音质介于参数和波形编码之间。
总之,音频压缩技术之趋势有两个:1)降低资料率,提高压缩比,用于廉价、低保真场合(如:电话)。
2)追求高保真度,复杂的压缩技术(如:CD)。
语音合成、辨识技术的介绍:按照实现的功能来分,语音合成可分两个档次:(1) 有限词汇的计算机语音输出(2) 基于语音合成技术的文字语音转换(TTS:Text-to-Speech)按照人类语言功能的不同层次,语音合成可分为三个层次:(1) 从文字到语音的合成(Text-to-Speech)(2) 从概念到语音的合成(Concept-to-Speech)(3) 从意向到语音的合成(Intention-to-Speech):图7.1是文本到语音的转换过程语音辨识:语音辨识技术有三大研究范围:口音独立、连续语音及可辨认字词数量。
口音独立:1)早期只能辨认特定的使用者即特定语者(Speaker Dependent,SD)模式,使用者可针对特定语者辨认词汇(可由使用者自行定义,如人名声控拨号),作简单快速的训练纪录使用者的声音特性来加以辨认。
随着技术的成熟,进入语音适应阶段SA(speaker adaptation),使用者只要对于语音辨识核心,经过一段时间的口音训练后,即可拥有不错的辨识率。
2)非特定语者模式(Speaker Independent,SI),使用者无需训练即可使用,并进行辨认。
任何人皆可随时使用此技术,不限定语者即男性、女性、小孩、老人皆可。
连续语音:1)单字音辨认:为了确保每个字音可以正确地切割出来,必须一个字一个字分开来念,非常不自然,与我们平常说话的连续方式,还是有点不同。
2)整个句子辨识:只要按照你正常说话的速度,直接将要表达的说出来,中间并不需要停顿,这种方式是最直接最自然的,难度也最高,现阶段连续语音的辨识率及正确率,虽然效果还不错但仍需再提高。
然而,中文字有太多的同音字,因此目前所有的中文语音辨识系统,几乎都是以词为依据,来判断正确的同音字。
可辨认词汇数量:内建的词汇数据库的多寡,也直接影响其辨识能力。
因此就语音辨识的词汇数量来说亦可分为三种:1)小词汇量(10-100)2)中词汇量(100-1000)3)无限词汇量(即听写机)图7.2是简化的语音识别原理图,其中实线部分成为训练模块,虚线部分为识别模块。