收藏 分销(赏)

本科毕业论文---固体录音机.doc

上传人:胜**** 文档编号:2097640 上传时间:2024-05-15 格式:DOC 页数:41 大小:700.50KB
下载 相关 举报
本科毕业论文---固体录音机.doc_第1页
第1页 / 共41页
本科毕业论文---固体录音机.doc_第2页
第2页 / 共41页
点击查看更多>>
资源描述
内江师范学院本科毕业设计 摘 要 用单片机控制语音芯片,再把单片机和语音芯片嵌入到通信设备,智能仪器,娱乐设备,治安报警及儿童玩具中,就可做成语音播放的机器。 本文介绍了基于AT89S52单片机及ISD1760语音板为主要部件的语音录放电路的工作原理、硬件和软件的设计。ISD1760系列工作电压为2.4到5.5V,单片录放时间26s至120s,音质好,适用于移动电话及其他便携式电子产品中。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口SPI送入。论文概述了语音录放电路的原理,并且在介绍语音录放系统功能的基础上,提出了系统的总体构成。针对录放系统的录音、放音部分的总体设计方案进行了论证。进一步介绍了单片机AT89S52在系统中的应用,分析了系统各部分的硬件及软件设计与实现。 关键词:ISD1760; AT89S52单片机; 语音录放 Abstract With the single-chip microcomputer control, and then make the pronunciation chip microcontroller and pronunciation chip embedded in communication equipment, intelligent instruments, security alarm and children's toys, so can make a speech broadcast machine. This paper introduces ISD1760 based on AT89S52 single chip computer and of the main parts of speech plate as the working principle of voice recording circuit and the design of hardware and software. ISD1760 series working voltage, monolithic 2.4V to 5.5V,recording time 26 to 120 seconds, timbre, suitable for mobile phones and other portable electronics. Chip design is based on all the operation must by SPI into. This paper summarizes the principle of voice recording circuit, and introduces the function of speech on the basis of recording system, puts forward the general structure of the system. Recording system for the recording, playback part of the overall design scheme is demonstrated. This paper introduces microcontroller AT89S52 single applications in system, the application system were analyzed each part of hardware and software realization. Key words: ISD1760;AT89S52microcontroller;voice recording and playback. 引 言 语音,作为一种典型的非平稳随机信号,是人类交流信息最自然、最有效、最方便的手段,在人类文明和社会进步中起着重要的作用。随着电子通信业的出现和计算机技术的发展,人们开始可以从数字信号处理的角度了解语音。语音信号的研究可以从时域和频域两个方面进行。其中时域的分析处理有两种方法:一是进行语音信号分析,这属于小型处理的范畴,主要是通过信号的加减、时移、倍乘、卷积、求相关函数等来实现;另一种是生成和变换成各种调制信号,这属于非线性的范畴,主要是对信号平均累加器的动态范围进行压缩扩张,用门限方法对噪声的抑制。对频域分析处理,即对信号的频率特性在频谱中加以分析研究,这拓展了信号分析的范围,是对不确定信号分析的主要方法。 随着计算机技术处理和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集处理是人机交互的前提和基础。声卡是计算机对语音信息进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D和D/A转换等功能。进入90年代以来,语音信号处理在实用化方面取得了许多实质性的进展。一方面,对声音语音学统计模型的研究逐渐深入,鲁棒的语音识别、基于语音段的建模方法及隐马尔可夫模型与人工神经网络的结合成为研究的热点。另一方面,为了语音识别使用化的需要,讲着自适应、听觉模型、快速搜索识别算法以及进一步的语言模型的研究等课题备受关注。 1绪论 1.1系统设计的意义 语音不仅是人与人之间进行信息交流最直接、最方便和最有效的工具,而且也是人与机器之间进行通信的重要工具。1874年电话的发展可以认为是现代处理的开端。电话的理论基础是尽可能不失真地传送语音波形。这种“波形原则”几乎统治了其后整整一百年。1939年产生了一种概念全新的语音处理技术,这就是著名的通道声码器技术。声码器的理论基础是认为语音是由人的声带振动产生的生源(载波)受到运动的声道的控制(调制)而产生的,因而将载波和调制两部分分开来进行传送便可极大地压缩频带。这一概念已经包含着其后出现的语音参数模型的基本思想。40年代后期,研制成功了能够把语音信号的时变谱用语音表示出来的仪器——语音仪,为语音信号分析提供了一个有力的工具。 对于语音信号,数字处理比模拟处理具有更多的优点。这是因为:第一,数字技术能够完成许多很复杂的信号处理工作;第二,通过语音进行交换的信息本质上具有离散的性质,因为语音可以看成是因素的组合,这就特别适合于数字处理;第三,数字系统具有高可靠性、价廉、紧凑、快速等特点,很容易完成实时处理任务;第四,数字语音适合于在强干扰通信中传输,易于和数据一起在通信网中传输,也易于进行加密传输。因此数字语音信号处理是主要研究方向。 单片机的应用无处不在,利用单片机控制语音的录放也多不胜举。用单片机控制语音芯片,再把单片机和语音芯片嵌入到通信设备,智能仪器,治安报警及儿童玩具中,就可做成语音播放的机器,应用范围广泛。用单片机控制语音芯片设计语音录放系统,该系统功能多,录放音音质好,外围电路简单。 1.2系统设计的目的 设计一个数字语音录放系统,可以应用于通讯设备、娱乐设备、智能仪表、治安报亭、语音报站、报数报价、语音讲解、语音记录、语音复读、教学仪器、智能玩具、电子礼品等领域。要求放音质量好,用二极管显示工作状态。系统具有较强的抗干扰能力,便于安装和扩展。同时通过设计,提高学生综合运用模数电子技术、Protel99SE设计电子产品,KEIL C51软件编程和查阅资料及撰写科技论文的能力。 1.3系统的主要工作方法 (1) 收集整理相关资料和文献,熟悉单片机应用技术以及单片机外围电路的相关知识,并设计出总体方案。 (2) 设计硬件原理图,绘制PCB图,焊接电路板, 单片机和ISD1760的具体连接。 (3) 利用keil技术编辑软件,结合单片机控制技术,实现录、放、快进、等功能。并使用proteus仿真实现模数数模采集、存储、读取功能。 2单片机控制技术和开发环境介绍 2.1 AT89S52单片机性能和引脚介绍 2.1.1 概述 AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程 Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。 2.1.2 AT89S52单片机主要性能参数 1、与MCS-51单片机产品兼容;   2、8K字节在系统可编程Flash存储器;   3、1000次擦写周期;   4、全静态操作:0Hz-33MHz;   5、三级加密程序存储器;   6、32个可编程I/O口线; 7、三个16位定时器/计数器;   8、八个中断源;   9、全双工UART串行通道;   10、低功耗空闲和掉电模式;   11、掉电后中断可唤醒;   12、看门狗定时器;   13、双数据指针;   14、掉电标识符 2.1.3引脚功能说明 图1 AT89S52引脚图 DIP封装 图2 AT89S52引脚图 PLCC封装 2.2 keil开发环境和建立工程 2.2.1 keil简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。 2.2.2 keil工程建立 启动uVison3,点击“File New…”在工程管理器的右侧打开一个新的文件输入窗口,在这个窗口里输入一个源程序,注意大小写及每行后的分号,不要错输及漏输。 输入完毕之后,选择“File Save”,给这个文件取名保存,取名字的时候必须要加上扩展名,一般C语言程序均以“.C”为扩展名,这里将其命名为mian.c,保存完毕后可以将该文件关闭。Keil不能直接对单个的C语言源程序进行处理,还必须选择单片机型号;确定编译、汇编、连接的参数;指定调试的方式;而且一些项目中往往有多个文件,为管理和使用方便,Keil使用工程(Project)这一概念,将这些参数设置和所需的所有文件都加在一个工程中,只能对工程而不能对单一的源程序进行编译和连接等操作。 点击“Project->New Project…”菜单,出现对话框,要求给将要建立的工程起一个名字,这里起名为yuyin,不需要输入扩展名。点击“保存”按钮,出现第二个对话框,这个对话框要求选择目标CPU(即你所用芯片的型号),Keil支持的CPU很多,这里选择Atmel公司的89S52芯片。点击ATMEL前面的“+”号,展开该层,点击其中的89S52,然后再点击“确定”按钮,回到主窗口,此时,在工程窗口的文件页中,出现了“Target 1”,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group1”,这时的工程还是一个空的工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“Source Group1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,选中其中的“Add file to Group Source Group1”,出现一个对话框,要求寻找源文件。 2.3 ISD1760介绍 2.3.1性能简述和引脚图 ISD1700 系列芯片是华邦公司新推出的单片优质语音录放电路,该芯 片提供多项新功能,包括内置专利的多信息管理系统,新信息提示(vAlert), 双运作模式(独立&嵌入式),以及可定制的信息操作指示音效。芯片内部 包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内 存等的全方位整合系统功能。 图3 ISD1700引脚图 2.3.2 芯片特点 ·可录、放音十万次,存储内容可以断电保留一百年 ·两种控制方式,两种录音输入方式,两种放音输出方式 ·可处理多达 255 段以上信息 ·有丰富多样的工作状态提示 ·多种采样频率对应多种录放时间 ·音质好,电压范围宽,应用灵活,物美价廉 2.3.3 电特性 ·工作电压:2.4V-5.5V,,最高不能超过 6V ·静态电流:0.5 - 1 μA ·工作电流:20mA ·用户可利用震荡电阻来自定芯片的采样频率,从而决定芯片的录放时间和录放音质。下表为 ISD1700 的参数表: 图4 芯片的采样率 图5 振荡电阻 2.3.4 管脚功能说明 表1 引脚说明 管脚名称 PDIP/ SOIC TSOP管脚 功 能 VCCD 1 22 数字电路电源 /LED 2 23 LED 指示信号输出 /RESET 3 24 芯片复位 MISO 4 25 SPI 接口的串行输出。ISD1700 在SCLK下降沿之前的半个周期将数据放置在 MISO 端。数据在 SCLK的下降沿时移出 MOSI 5 26 SPI 接口的数据输入端口。主控制 芯片在 SCLK上升沿之前的半个周期将数据放置在 MOSI 端。数据在 SCLK上升沿被锁存在芯片内。此管脚在空闲时,应该被拉高 SCLK 6 27 SPI接口的时钟。由主控制芯片产生 ,并 且 被 用 来 同 步 芯 片 MOSI和MISO端各自的数据输入和输出。此管脚空闲时,必须拉高 /SS 7 28 为低时,选择该芯片成为当前被控制设备并且开启 SPI 接口。空闲时,需要拉高 VSSA 8 1 模拟地 AnaIn 9 2 芯片录音或直通时,辅助的模拟 输入。需要一个交流耦合电容(典型值为0.1uF),并且输入信号的幅值不能超出1.0Vpp。APC寄存器的D3可以决定Analn信号被立刻录制到存储器中,与Mic信号混合被录制到存储器中,或者被缓存到喇叭端并经由直通线路从AUD/AUX输出。 MIC+ 10 3 麦克风输入+ MIC- 11 4 麦克风输入- VSSP2 12 5 负极 PWM 喇叭驱动器地 VSSP1 13 9 正极 PWM 喇叭驱动器地 SP- 14 6 喇叭输出- SP+ 15 8 喇叭输出+ VCCP 16 7 PWM喇叭驱动器电源 AUD/ AUX 17 10 辅助输出,决定于APC寄存器的 D7,用来输出一个AUD或AUX输出。AUD是一个单端电流输出,而AuxOut是一个单端电压输出。他们能够被用来驱动一个外部扬声器。出厂默认设置为AUD。APC寄存器的D9可以使其掉电。 AGC 18 11 自动增益控制 /VOL 19 12 音量控制 ROSC 20 13 振荡电阻ROSC用一个电阻连接 到地,决定芯片的采样频率 VCCA 21 14 模拟电路电源 /FT 22 15 在独立芯片模式下,当 FT 一直为 低,Analn 直通线路被激活。Analn 信号被立刻从 Analn 经由音量控制线路发射到喇叭以及 AUD/AUX 输出。D0所控制。该管脚有一个内部上拉设备和一个内部防抖动设计,当在SPI 模式下,SPI 无视这个输入,而且直通线路被 APC 寄存器的,允许使用按键开关来控制开始和结束。 /PLAY 23 16 播放控制端 /REC 24 17 录音控制端 /ERASE 25 18 擦除控制端 /FWD 26 19 快进控制端 RDY /INT 27 20 一个开路输出。 Ready(独立模式):该管脚在录音,放音,擦除和快进操作时保持为低,保持为高时进入空闲状态 Interrupt(SPI 模式):在完成SPI 命令后,会产生一个低信号的中断。一旦中断消除,该脚变回为高。 VSSD 28 21 数字地 2.3.5 独立按键工作模式 ISD1760 的独立按键工作模式录放电路非常简单,而且功能强大。不仅有录、放功能,还有快进、擦除、音量控制、直通放音和复位等功能。这些功能仅仅通过按键就可完成。  录音操作:按下 REC 键,/REC 管脚电平变低后开始录音,直到松开按键使电平拉高或者芯片录满时结束。录音结束后,录音指针自动移向下一个有效地址。而放音指针则指向刚刚录完的那段语音地址。  放音操作:放音操作有两种模式,分别是边沿触发和电平触发,都由/PLAY 管脚触发。 A)边沿触发模式:点按一下 PLAY 键,/PLAY 管脚电平变低便开始播放当前段的语音,并在遇到 EOM 标志后自动停止。放音结束后,播放指针停留在刚播放的语音起始地址处,再次点按放音键会重新播放刚才的语音。在放音期间,LED灯会闪烁直到放音结束时熄灭。如果在放音期间点按放音键会停止放音。 B)电平放音模式:如果一直按住 PLAY 键,使/PLAY 管脚电平持续为低,那么会将芯片内所有语音信息播放出来,并且循环播放直到松开按键将/PLAY 管脚电平拉高。在放音期间 LED 闪烁。当放音停止,播放指针会停留在当前停止的语音段起始位置。  快进操作: 点按一下 FWD 按钮将/FWD 端拉低,会启动快进操作。快进操作用来将播放指针移向下一段语音信息。当播放指针到达最后一段语音处时,再次快进,指针会返回到第一段语音。当下降沿来到/FWD 端时,快进操作还要决定于芯片当时的状态: A) 如果芯片在掉电状态并且当前播放指针的位置不在最后一段,那么指针会前进一段,到达下一段语音处。 B) 如果芯片在掉电状态并且当前播放指针的位置在最后一段,那么指针会返回到第一段语音处。 C) 如果芯片正在播放一段语音(非最后一段),那么此时放音停止,播放指针前进到下一段,紧接着播放新的语音。 D) 如果芯片正在播放最一段语音,那么此时,放音停止,播放指针返回到第一段语音,紧接着播放第一段语音。  擦除操作:擦除操作分为单段擦除和全体擦除两种擦除方式,区别如下: A) 单个擦除: 只有第一段或最后一段语音可以被单个擦除。点按一下 ERASE 健将/ERASE 管脚拉低,这时具体的擦除情况要看播放指针的状态: ·如果芯片空闲并且播放指针指向第一段语音,则会删除第一段语音,播放指针指向新的第一段语音(执行擦除操作前的第二段) ·如果芯片空闲并且播放指针指向最后一段语音,则会删除最后一段语音,播放指针指向新的最后一段语音(执行擦除操作前的倒数第二段) ·如果芯片空闲并且播放指针指向没有指向第一或最后一段语音,则不会删除任何语音,播放指针也不会被改变 ·如果芯片当前正在播放第一段或最后一段语音,点按下 ERASE 键会删除当前语音。 B) 全体擦除: 当按下 ERASE 键将/ERASE 管脚电平拉低超过 2.5 秒钟,会触发全体擦除操作,删除全部语音信息。  复位操作:如果用RESET控制此管脚,建议/RESET管脚与地之间连接一个0.1μF 电容。当/RESET被触发,芯片将播放指针和录音指针都放置在最后一段语音信息的位置。  音量操作: 点按一下VOL键将/VOL管脚拉低会改变音量大小。每按一下,音量会减小一档,再到达最小档后再按的话,会增加音量直到最大档,如此循环。总共有8个音量档供用户选择,每一档会改变4dB。复位操作会将音量档放在默认位置,即最大音量。 FT直通操作:将/FT管脚与GND短接,持续保持在低电平会启动直通模式。出厂设定的是在芯片空闲状态,直通操作会将语音从Analn端直接通往喇叭端或AUD输出口。在录音期间开启FT功能,会同时录下Analn进入的语音信号。 3 系统总体设计 3.1 硬件电路设计 本文的数字语音录放系统所采用的是录放时间为26s至120s的ISD1760 语音芯片。该语音录放电路主要由单片机AT89S52,ISD1760 构成,本系统可以主要分为三部分:单片机控制部分、录音部分和放音部分。控制部分则主要由单片机AT89S52构成,包含必要的按键电路、复位电路和指示电路等外围电路。 3.1.1 硬件总体电路图 图11 原理图 3.1.2 各电路图分解 主控电路:采用的是AT89S52组建的最小系统。用来控制ISD1760的录放音操作。 图12 主控电路 录音电路: 图13 录音电路 放音电路: 图14 放音电路 3.2软件设计 3.2.1 ISD1760的SPI模式 (1)SPI协议总述: ISD1700系列的SPI串行接口操作遵照以下协议: 1. 一个SPI处理开始于/SS管脚的下降沿。 2. 在一个完整的SPI指令传输周期,/SS管脚必须保持低电平。 3. 数据在SCLK的上升沿锁存在芯片的MOSI管脚,在SCLK的下降 沿从MISO管脚输出,并且首先移出低位。 4. SPI指令操作码包括命令字节,数据字节和地址字节,这决定于1700的指令类型 5. 当命令字及地址数据输入到MOSI管脚时,同时状态寄存器和当前行地址信息从MISO管脚移出。 6. 一个SPI处理在/SS变高后启动。 7. 在完成一个SPI命令的操作后,会启动一个中断信息,并且持续保持为低,直到芯片收到CLR_INT命令或者芯片复位。 (2)SPI 处理的格式: 图6描述了SPI处理的格式。指令数据以数据队列的形式从MOSI移入芯片,第一个移入的字节是命令字节,这个字节决定了紧跟其后的数据类型。与此同时,芯片状态以及当前行地址信息以数据队列的方式通过MISO被返给主机。 图6 SPI协议的数据格式 A)MOSI数据格式: MOSI是SPI接口的“主机输出从机接收端”。数据在SCLK的上升沿锁存进芯片,并且低位首先移出。1760的SPI指令格式依赖于命令的类型,根据不同类型的命令,指令可能是两个字节,也可能多达7个字节。MOSI的一般序列由下表列出,送到芯片的第一个字节是命令字节,这个字节确定了芯片将要完成的任务。其中命令字节的C4确定LED功能是否被激活。当C4=1,LED指示被开启,功能开启后,每一个SPI指令启动后,LED灯会闪亮一下。在命令字节之后,与之相关联的数据字节有可能包括对用来存储信息进行精确操作的起始和结束地址。 图7 MOSI 数据顺序 多数的指令为两个字节,需要地址信息的指令则为七个字节。例如LD_APC 指令为三个字节,在其第二和第三字节是指令的数据字节。有两种11位地址的设置,即<S10:S0>和 <E10:E0>,作为二进制地址的存放位置。芯片存储地址从第一个提示音的地址0X0000开始计算,但是0x000-0x00F地址平均保留给了4个提示音。从0x010地址开始,才是非保留的存储区域,即真正的录音区。 B) MISO 数据格式: MISO即1760的“主机接收从机发送”管脚,数据在SCLK的下降沿从MISO管脚输出,并且低位首先移出。对应每一个指令,MISO会伴随着指令码的输入,在前两个字节返回芯片当前的状态和行地址信息<A10:A0>。而RD_STATUS, RD_PLAY_PNTR, RD_REC_PNTR 和 RD_APC这些命令会在前两个字节之后产生额外的信息(见下边的细节说明)。 图8 MISO 数据时序 在输出信息中,第一字节的状态位提供了重要的信息,该信息标明了上一个SPI命令发送后的结果。例如,第一字节中的0位(command error bit)用来指示芯片是否接收了上一个SPI命令。而<A10:A0>地址位则给出了当前地址。第一和第二个数据字节的内容取决于上一个SPI命令。第五,第六和第七字节则是重复SR0状态寄存器的内容。 (3)SPI协议格式: 图9 SPI时序图 A)SPI 命令总览: 一个SPI命令总是由第一个命令字节开始。命令字节中的bit4位(LED)是具有特殊用途的。这个bit4位可以控制LED的输出。如果使用者想开启这个操作LED的功能,那么所有的SPI命令字都要将这个bit4位置1。在SPI模式下,存储位置都可以通过行地址很容易地进行访问。主控单片机可以访问任何行地址,包括存储SE音效的行地址(0x000-0x00F)。像SET_PLAY,SET_REC和SET_ERASE这些命令需要一个精确地起始地址和结束地址。如果开始地址和结束地址相同,那么ISD1760将只在这一行进行操作。SET_ERASE操作可以精确地擦除在起始地址和结束地址间的所有信息。SET_REC操作从起始地址开始录音,并结束于结束地址,并且在结束地址自动加上EOM标志。同理,SET_PLAY操作从起始地址播放语音信息,在结束地址停止播放。 另外,SET_PLAY,SET_REC和SET_ERASE命令有一个先入先出的缓存器,使得从一个存储块到下一个存储块之间实现无缝转移。这个先入先出的缓存器只有在相同类型的SET命令下才有效。也就是说SET_PLAY在SET_ERASE之后将不能利用这个缓存器,并且这是一个错误的命令,SR0中的COM_ERR位将被置1。当芯片准备好接收第二个SPI命令时,在SR1中的RDY位将置1。同样,在操作完成时会输出一个中断。例如,如果两个连续但带有两对不同地址的SET_PLAY命令被正确发送后,此时缓存器装满。在完成第一个语音信息的播放后,第一个SET_PLAY操作会遇到一个EOM,这时不会像一般遇到EOM时自动STOP,而是继续执行第二个SET_PLAY命令,芯片将播放第二个语音信息。这个动作将最小化任何两个录音信息之间潜在的停留时间,且使芯片流畅地连接两个独立的信息。 如果循环存储体系处于令人满意的状态,那么可以使用PLAY,REC,FWD,RESET,ERASE和G_ERASE这些命令,功能类似于1760的独立模式中相应的功能。这些命令将确保在独立模式下操作时储存机构保持一致,但是,音效提示将不同于独立模式。如果希望在SPI模式和独立模式之间转换,注意必须使用SET_REC和SET_ERASE以遵循循环存储体系。 3.2.2 ISD1760的存储结构 在独立按键模式下,芯片内有一套环形存储结构管理系统来管理录音段的存放。当芯片读写存储器时会检查是否合法的存储结构,若不是则LED会闪7下,然后芯片将不接受任何指令除了复位和全部擦除指令。遇到这种情况需先将芯片成功全部擦除才能复原,这样原来的内容将全部丢失除了提示音。 环形存储结构管理系统管理的地址是0x10到末地址,0x00 至0x0f为SE的地址。当地址指针指到末地址后,会自动跳到0x10。在此管理系统下录音段之间是连续存放的,但首地址与末地址之间至少有一个空地址间隔来让系统区分首末地址。 在SPI 模式下,用户可对任意地址进行操作,但若不按管理系统的方式存储或擦除录音段,在独立按键模式下将不能操作。 图10 1760存储体系示意图 3.2.3 程序流程图 开始 定时器初始化 按键中断初始化 SPI初始化 结束 调用放音程序 调用录音程序 判断按键按下? N Y 录音键 放音键 图11 主程序流程图启动录音子程序 发送起始地址低八位发送ISD1760 发送录音指令 启动定时器T0 发送停止指令 结束 启动放音子程序 发送起始地址低八位发送ISD1760 发送放音指令 等待外部中断 发送停止指令 结束 图12 录放音程序流程图 3.2.4 子程序设计 /*扫描键盘模块*/ uchar ScanKeys(void) { uchar scanValue; uchar iScan; P2=0xf0; if ((P2&0xf0)!=0xf0) /*有键按下*/ { Delayms(10); /*延时10ms以消除抖动*/ P2=0xf0; if ((P2&0xf0)==0xf0) /*有键按下*/ { return 0xee; } else { P2=0xfe; scanValue=P2; switch (scanValue) { case 0xee: iScan=0x01;break; //键 "1" case 0xde: iScan=0x02;break; //键 "2" case 0xbe: iScan=0x03;break; //键 "3" case 0x7e: iScan=0x0a;break; //键 "a" } P2=0xfd; scanValue=P2; switch (scanValue) { case 0xed: iScan=0x04;break; // 键 "4 case 0xdd: iScan=0x05;break; // 键 "5 case 0xbd: iScan=0x06;break; // 键 "6 case 0x7d: iScan=0x0b;break; // 键 "b } P2=0xfb; scanValue=P2; switch (scanValue) { case 0xeb: iScan=0x07;break; // 键 "7 case 0xdb: iScan=0x08;break; // 键 "8 case 0xbb: iScan=0x09;break; // 键 "9 case 0x7b: iScan=0x0c;break; // 键 "c } P2=0xf7; scanValue=P2; switch (scanValue) { case 0xe7: iScan=0x00;break; // 键 "0 case 0xd7: iScan=0x0d;break; // 键 "d case 0xb7: iScan=0x0e;break; // 键 "e case 0x77: iScan=0x0f;break; // 键 "f } } P2=0xf0; while ((P2&0xf0)!=0xf0);//防止键按住不放 return iScan; } return 0xee; } /*按键处理程序 */ void KeyJudge(void) { uchar GetKey; GetKey=ScanKeys(); if(GetKey!=0xee) { switch(GetKey) { case 0x01:SetREC(0);break; case 0x02:SetREC(1);break; case 0x03:SetREC(2);break; case 0x04:SetREC(3);break; case 0x05:SetPLAY(0);break; case 0x06:SetPLAY(1);break; case 0x07:SetPLAY(2);break; case 0x08:SetPLAY(3);break; case 0x09:Erase_All();break; default:SetPLAY(3); } } } /************************************************************************** * 函数原型: void ISD_Init(void); * 功 能: 初始化 **************************************************************************/ void ISD_Init(void) { ISD_Reset(); do{ ISD_PU(); RdStatus(); DogReset(); }while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1> SBUF=RD_DevID();//读取芯片ID,----1760为0xa0 ClrInt(); ISD_WR_APC2(); RdAPC(); } /************************************************************************** * 函数原型: void SetREC(uchar cNum); * 功 能: 定点录音 **************************************************************************/ void SetREC(uchar cNum){ uint Add_ST, Add_ED; uchar Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L; do{ RdStatus(); }while((SR0_L&0x01)||(!(SR1&0x01))); //if(SR0_L^0==1){system Err}<CMD_Err==1> ClrInt(); GetToneAdd(cNum, &Add_ST, &Add_ED); Add_ST_L=(uch
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服