基于点阵液晶屏的语音录放系统设计_第1页
基于点阵液晶屏的语音录放系统设计_第2页
基于点阵液晶屏的语音录放系统设计_第3页
基于点阵液晶屏的语音录放系统设计_第4页
基于点阵液晶屏的语音录放系统设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、 成人高等学历教育毕 业 设 计(论 文)题 目: 基于点阵液晶屏的语音录放系统设计 姓 名: 黄生禄 学 号: 专 业: 通信工程 级别专业(形式层次): 指导教师: (签名)2013年 12月12日目录摘要1第1章 绪论111 引言212 研究背景213本文主要研究内容2第2章 系统的硬件设计方案321 系统硬件总体设计方案323 液晶部分的设计方案424 电源部分的设计方案525 存储部分的设计方案626 程序下载部分的设计方案727系统核心硬件部分的设计方案7第3章 系统软件的开发方案1031系统核心软件的开发流程1032 存储器的软件流程1133 液晶显示模块的软件开发流程1334

2、ISD4004的软件开发流程1535 系统的应用软件开发流程16第4章 应用系统部分代码1741 系统核心软件1742 存储器部分代码1943 液晶显示模块的部分代码112144 ISD4004语音模块的部分代码22第五章 系统测试2251 硬件部分系统测试2252 软件部分系统测试23总结25致谢26参考文献27摘要本文主要实现了语音录放系统的设计。语音录放系统主要包括单片机控制模块、语音采集模块、语音处理模块、信号放大模块,其中单片机控制模块是整个系统设计的关键。在语音录放过程中,单片机通过SPI通信方式与语音模块进行通讯,来实现语音的录放与播放。通过单片机发送不同地址给语音模块来实现语音

3、的录音和放音。单片机的主要功能是通过串行接口连接语音模块和显示模块以及按键,实现通过按键功能即可选择录音、放音、屏幕显示等功能,本次设计使用PHY公司的LPC2138系列单片机作为CPU作为主控制器,用ISD4004语音模块用来采集声音数据,通过LM386放大语音达到扬声器。关键词:微控器;语音录放;MCU;ISD4004ABSTRACTThe main aim of this paper is to realize the function of voice recording and playback system .The key to the overall system design

4、 of the voice recording system which includes a single-chip control module,voice acquisition module, voice processing module, signal amplification module,is MCU control module. In the voice playback process,the microcontroller communicates through SPI communication voice module, thus realizing voice

5、 recording and playback. Via microcontroller send different address to voice module to realize the voice recording and playback. The main function of the MCU through a serial interface to connect the voice module, display module and also keyboard. It can realize the function which according the key

6、value to select recording, playback,display.The Design we chose PHY companys LPC2138 serious microcontroller as main control system,The ISD4004 module to collect the voice single,and via LM386 the amplify the voice.Key Words: Microcontroller; Voice recording and playback;MCU;ISD4004第1章 绪论11 引言语音录放产品

7、在市面上已经很成熟,各种录音笔,录音机等等,零零总总,让人眼花缭乱,不过本文主要目的是通过自己动手独立设计出一套实用的小型系统,用以提高毕业生的设计,应用能力。因为语音录放产品,应用非常广泛,因此本次设计具有非常实用的应用意义,另外本次采用ARM芯片,所以本次设计的成功与否,对毕业生日后走入工作岗位,尤其是嵌入式应用具有非常大的帮助。12 研究背景目前市面上的语音录放产品主要采用的是以下两种方案:一种是数字语音存储,通过采样,量化,编码等形式将模拟的语音信号转换成数字信号保存在存储器当中,此方法优点是:语音成本低,需要存储空间小,操作简单。缺点是:系统设计复杂,特别是软件系统。而另一种采用直接

8、的模拟信号存储,其优点是:系统简单,硬件简单,语音质量清晰。缺点是:存储长度短,成本相对较高。因此综合考虑两个方案,本次课题采用第二种方案。本次毕业设计的内容是设计一款基于ARM7内核的微处理器并且集成ISD4004,VTM88657单色液晶显示模块的语录录放系统,此系统可以存储最长达16分钟的高清晰度的语音信息。并根据各自按键选择不同的功能,例如录音,播放,停止等,因此本系统可以作为一个简单的复读机来使用。13本文主要研究内容一个完整的语音录放模块包括话筒,存储器,功放,扬声器,人机接口等。话筒,话筒的是一个系统最前端,也是录音的关键器件,在硬件上,话筒的设计成功与否起着决定性的作用。语音采

9、集模块,当话筒将声音信号转化为模拟信号的时候,这时语音采集模块必须能够实时存储声音信号,并且保存起来,否则本次系统最多只是一个扩音器,根本无法实现播放,另外本次的语音采集模块还具有语音播放功能,更重要的是,本模块支持模拟语音存储,模拟语音播放的功能,这样也为我们大大减少了硬件的开销。另外 ,本模块的语音录取,与播放,均采用SPI总线,只需向模块发送相应的控制命令,本模块就会自动开始录音或者放音,这样的设计业为我们大大的节省了系统的软件设计的复杂性。语音放大,虽然语音模块功能非常强大,但其输出的声音信号,还是不足以直接驱动扬声器,所以,在系统设计的时候必须加入语音放大部分,否则即使语音录音,放音

10、都实现了,但是还是无法播放出声音来。另外本次毕业设的硬件设计一款基于飞利浦的LPC213X系列MCU组成的一个模拟语音的录放系统。此系统设计时为了增加可操作性,还增加了通过检测按键键值,系统对应的响应对各个按键定义的功能,达到语音的录音,播放,停止,同时通过LCD显示器显示语音的录放状态。这样的设计目的,能够更适应实际应用,以及屏幕的状态显示,使本次设计脱离枯燥的毕业设计,变得更加人性化,更具有可操作性,更接近实际产品。第2章 系统的硬件设计方案21 系统硬件总体设计方案本次毕业设计的内容是设计一款基于ARM7内核的微处理器并且集成ISD4004,VTM88657单色液晶显示模块的语录录放系统

11、,此系统可以存储最长达16分钟的高清晰度的语音信息。并根据各自按键选择不同的功能,例如录音,播放,停止等,因此本系统可以作为一个简单的复读机来使用。系统总体设计框图如图2-1所示。图2-1 系统总体设计框图22 语音录放部分的设计方案 本次设计语音录放部分采用ISD4004芯片作为本次设计的语音录放模块。ISD4004芯片采用SPI总线模式,最高支持16分钟的语音录放,另外本次采用的是IC直接模拟信号存储模拟信号播放的方式,因此无需复杂的AD、DA转换,即可直接还原出语音信号,从而减少外围器件以及系统的复杂程度。ISD4004提供了4.0KHZ、5.03HZ、6、4KHZ和8.0KHZ的采样频

12、率,因此他可以存储16、12、10、8分钟的时长语音信息,完全能够满足一般的语音录放,以及复读功能。ISD4004能够在掉电下保持100年的语音存储,并且能够重复录放10万次。其采用四条线的SPI总线,使它能够很容易的和MCU相连,该总线允许读写ISD4004所有的内部寄存器。通过INT管脚作为中断脚以及内部状态寄存器作为对外的握手连接。ISD4004采用3V的电源供电,模拟地与数字地分开的方式,保证信号不互相干扰,而且还允许差分的最大输入信号16mV的峰峰值语音信号输入作为输入源。ISD4004的语音输出能够驱动5千欧的负载,若想要直接驱动一个5欧的扬声器,显然ISD4004有些力不从心,因

13、此在本处增加了一个放大电路。LM3862音频功率放大器主要应用于低电压消费类产品。要使外围器件最少,电压增益内置为20 DB。但是如果在1脚和8叫之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200 DB,在这里我需要将增益提升到50DB,因此根据LM386的特性我们在LM386的1脚和8脚之间串入一个10K的电阻和一个10uF的电容,同时在第5脚输出脚并一个470uF的大电容耦合到外面负载。因此,有关ISD4004语音录放芯片及其外围器件,和LM386放大电路的原理图设计图2-2所示。图2-2 ISD4004以及LM386放大电路原理图23 液晶部分的设计方案VTM88657A是

14、一个低功耗,拥有四级灰度的带有内部控制器的点阵液晶屏,它的像素有128*96个点阵,采用串行的SPI总线驱动屏幕,拥有白色的LED背光,需要3.3V电压,功耗为60mA。VTM88657A共有16个引脚。其中1脚为片选,低电平有效,第2叫为复位脚,也是低电平有效,第3脚为读写控制脚,411脚为空,第12脚为串行时钟输入脚,第13脚为串行数据输入,第14脚为3.3V电源供应,第15脚为接地,第16脚为液晶的背光电压。VTM88657A的点外围器件比较简单,只有背光这一条信号,我们专门用一个MOS管来驱动,并接到CPU的P0.31叫来控制。他的具体电路图如图2-3所示。图2-3 液晶接口电路24

15、电源部分的设计方案本系统电源部分采用宽电压设计,理论上可以支持4.828V的电压输入,电源从CN3输入,经过一个自锁开关,然后送给ATC4088DC-DC电源转换器,然后输出一个5V电压,给电路的外设供电,而5V电压在经过一个LDO转换成3.3V,给系统内核供电。 ACT4088是一个1.48MHZ的降压式DC-DC转换器,它支持4.5V28V的宽电压输入,在12V到5V输出范围内是最大可以输出1.5A电流,它通过内部的环形补偿来提高稳定性,并且以最少的外围器件提供一个简单的、稳定的电压输出。ACT4088小型的SOT-23的封装特别适合给TFT液晶屏,MP3,手机等小型设备供电。ACT408

16、8的输出电压可以通过如图2-4所示的电路图,并按照2-1的公式来计算9。 图2-4 ACT4088输出电压设置2-1 ACT4088输出电压计算公式ATC4088的SW引脚推荐接一个4.7uH的电感,然后在SW引脚再接一个反向的二极管,以保证输出电压稳定,第3脚EN必须为高电平,并且在输入和输出推荐各接一个22uF的电容。SPX1117M3 3-3是一个低功耗,正电压调节器,用来满足中等功率以及微控器的应用要求,该LDO保证了800mA的电压输出,具有多种输出电压可供选择(有1.5,1.8,2.5,2.85,3,3.3,5)。电源部分的原理图由如图2-5所示设计。图2-5 电源部分原理图25

17、存储部分的设计方案由于本系统采用的是VTM88657A液晶屏,因为该液晶屏没有自带字库,所以需要外扩一个Flash存储器用以存储字库信息。PCT25VF032是SST公司生产的25系列的SPI总线接口的Flash家族的一员,该Flash最大存储空间为4MB,支持单电源2.73.6V的读写操作,支持SPI 模式0以及模式3,最高可支持80MHZ的时钟频率。它具有可编程的4KB,32KB,64KB的块,片擦除只需35ms,块擦除只需18ms,支持自动地址增加的字节编程能力。具有软件的写保护。该Flash的硬件部分设置如图2-6所示。图2-6 存储部分原理图26 程序下载部分的设计方案为了支持在线下

18、载,调试程序,本设计还增加了一个功能,那就是UART功能,也就是串口。LPC2138的UART接口是无法直接连接计算机进行通信,因此必须使用一个转换芯片,在此我选择SPX323EEN作为转换芯片。该转换芯片支持两个串口的电平转换,串口1、和串口2 。为了日后扩展,本次设计把两个串口全部接上RS232电平。RS232转换原理图如图2-7部分所示9。图2-7 RS23串口转换电路27系统核心硬件部分的设计方案由于本人对LPC系列MCU比较熟悉,所以本次MCU理所当然选择自己最得心应手的型号。下面简单介绍一下LPC2138的外设5:LPC2131/2132/2138是基于一个支持实时仿真和嵌入式跟踪

19、的32/16位ARM7/TDMI-Stm CPU 的微控制器,并带有32KB、64KB、512KB的嵌入式的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumbs模式将代码规模降低超过30%,而且性能的损失很小。特性5l 小型LQFP64 封装的16/32 位ARM7TDMI-S 微控制器。l 8/16/32kB 片内静态RAM。l 片内Boot 装载软件实现在系统/在应用中编程(ISP/IAP)。扇区擦除或整片擦除的时间为400ms,1ms 可编程256 字节。l E目标eddeICERT和嵌入式

20、跟踪接口实时调试(利用片内RealMonitor软件)和高 速跟踪执行代码l 1 个(LPC2132/2132)或2 个(LPC2138)8 路10 位A/D 转换器共包含16 个模拟输入,每个通道的转换时间低至2.44us。l 1 个10 位D/A 转换器,可提供不同的模拟输出(LPC2132/2138)。l 2 个32 位定时器/计数器(带4 路捕获和4 路比较通道)、PWM 单元(6 路输出)和看门狗。l 实时时钟具有独立的电源和时钟源,在节电模式下极大地降低了功耗。l 多个串行接口,包括2 个16C550 工业标准UART、2 个高速I2C 接口(400 kbit/s)、SPITM 和

21、SSP具有缓冲功能,数据长度可变)。l 向量中断控制器。可配置优先级和向量地址。l 多达47 个5V 的通用I/O 口(LQFP64 封装)。l 9 个边沿或电平触发的外部中断引脚。l 通过片内PLL 可实现最大为60MHz 的 CPU 操作频率,PLL 的稳定时间为100us。l 片内晶振频率范围:130 MHz。l 2 个低功耗模式:空闲和掉电。l 可通过个别使能/禁止外部功能和降低外部时钟来优化功耗。l 通过外部中断将处理器从掉电模式中唤醒。l 单个电源供电,含有上电复位(POR)和掉电检测(BOD)电路:l CPU 操作电压范围:3.03.6 V (3.3 V+/ 10%),I/O 口

22、可承受5V 的最大电压。系统硬件部分有几个核心电路这里需要需要特别注意。第一个是系统的复位电源部分,由于NXP处理器的系统对复位比较严格,复位电路一定要等系统上电,并且供电电压稳定之后才能对处理器的管脚进行复位,否则可能导致不可预知的结果。这里有一款专门的复位芯片,那就是CAT809的复位芯片。CAT809是一款推挽式的低电平有效的复位芯片,其最大可达6uA的供电电流,以及其小型的SOT32的封装,使其容易的应用于计算机复位、有线调制,无线通信、嵌入式控制系统等领域。CAT809的复位时间周期在140450ms之间,典型值在240ms左右,完全能够满足NXP系列微处理器复位时对时间的要求。图2

23、-8是这个复位芯片的典型电路应用。图2-8复位电路 另外NXP处理系统的时钟设计也是一个重点,本次系统时钟采用一个14.7456MHz的晶振作时钟源。图2-9为本系统的时钟设计电路2。图2-9 CPU的时钟电路 最后本系统的MCU部分的管脚连接和处理器的电源部分电路图如图2-10所示。图2-10 本系统的处理器电路第3章 系统软件的开发方案31系统核心软件的开发流程CPU的上电初始化流程,本次系统设计CPU上电流程如下:系统上电后软件首先关闭PLL锁存;然后对更改PLL的分频值;然后打开PLL锁存;接着执行PLL锁定序列,之后等待PLL锁定直到锁定成功;PLL锁定成功后,启动PLL时钟;当PL

24、L时钟稳定之后,再配置存储器加速模块,启用存储器加速模块;接下来就开始设置定时器1,定时时间设为1ms,并把它作为系统的系统时钟,以后系统很多定时都根据该时钟操作;然后再根据硬件连接情况进行管脚配置,选择相应的管脚功能;接下来设置定时器,串口等中断向量,以及中断地址。至此CPU的上电步骤执行完毕,图3-1为本次上电的方框图。图3-1 CPU的上电步骤系统外设的上电流程:首先先对CPU进行初始化,其次对串口初始化,然后打开系统重映射,之后再启动VIC中断,接着开始执行打开串口动作,接下来对SPI接口进行初始化,在接着就对LCD显示屏进行初始化,最后对Flash进行初始化。图3-2显示的是系统外设

25、的上电步骤。图3-2 系统外设初始化步骤此外介绍一下本次系统设计的一些重要参数。PLL时钟:在本次设计中的PLL时钟的频率设计非常关键,因为此参数为本系统的系统内部时钟即CPU时钟。他关系到本系统的方方面面,比如本系统的代码执行速度,也就是一行代码所需的时间;还有本系统的系统时钟,也就是本系统使用的最小时间单位;还有本系统的串口波特率等。因此PLL时钟能否正确的配置关系到本次设计的成败。根据公式Fcclk = Fsc*M,Fcco = Fcclk * 2 *p以及Pclk = Fcclk/M 。另外再根据Fcco的值必须小于260MHZ,Fcclk的值必须小于60MHZ。我们可以计算出M,以及

26、P的值。在这里我们要设置Fcclk=58Mhz,Pclk = 14Mhz。根据以上的计算计算公式,我们可以得出M值和P值分别为4、和2 。定时器:本次系统设计的要求是,定时时间为1ms,根据上次的PLL时钟配置可以得出系统的Pclk为14MHz,因此我们可以配置定时器的预分频值为14,即每1us计数一次。然后再配置系统的中断匹配值为1000即可产生1ms的中断。32 存储器的软件流程要想向SST25VF032 写入数据必须执行以下步骤:一,擦除要写入数据的存储块,二、执行写数据命令,三、写入数据,四、数据写入成功。Flash的基本数据通信操作:把Flash的CS管脚拉低,向SPI总线读或写数据

27、,把Flash的CS管脚拉回高电平。擦除数据:首先向Flash发送写允许命令,然后清空Flash的状态寄存器,再发送一个写允许命令,接着发送擦除Flash的命令并且后面跟着要擦除的地址,接下来读取Flash的状态寄存器,直到他为空闲是退出来即0x01,然后在发送写允许命令,之后再设置Flash写保护,以防止Flash的误操作发送。图3-3为Flash的擦除动作的流程。图3-3 Flash的擦除流程写入数据:首先向Flash发送写允许命令,然后清空Flash的状态寄存器,再发送一个写允许命令,接着发送Flash编程命令并且后面跟着要写入数据的地址,然后开始写入要写入的数据,接下来读取Flash的

28、状态寄存器,直到他为空闲是退出来即0x01,判断数据是否写完,如果没写完继续写入数据,如果写完则发送写允许命令,之后再设置Flash写保护,以防止Flash的误操作发送。图3-4为Flash的写入数据动作的流程。图3-4 Flash写入数据流程读取数据:Flash的读取数据比较简单,只需要写Flash 发送读取数据命令即可直接对Flash进行读取数据。图3-5为Flash的读取数据流程。图3-5 Flash读取数据的流程33 液晶显示模块的软件开发流程晶彩液晶屏是采用SPI总线控制,它具有可调节对比度,字体反白,可设置占空比,不带字库等特点。对于液晶屏的上电后的操作首先要对其进行初始化,液晶屏

29、的初始化软件流程主要对液晶显示的占空比、反显示、窗口的滚动方式、起始行、对比度、字体的倾斜等进行设置。然后再读取Flash存储器内部要显示相应字体的字库数据,然后对液晶屏进行逐行扫描、描点。这样就能够完整的显示你所想要显示的内容。图3-6为液晶屏完整的操作流程。图3-6 液晶屏的操作流程液晶屏写命令:按照晶彩液晶的数据手册,可知要向液晶屏发送命令必须遵循以下时序:一、把液晶屏的CS、RS管脚拉低;二、串口向液晶屏发送命令;三、把CS管脚拉高。图3-7显示液晶屏的命令操作流程。图3-7 液晶屏写命令液晶屏写数据:液晶屏写数据与液晶屏写命令差不多,这是只需把RS拉高就是写数据。具体操作流程如图3-

30、8所示。图3-8 液晶屏写数据液晶屏描点:要想在液晶屏上正常的显示字符,那么必须实现对液晶屏的描点。也就是要实现一个功能,这个功能就是要能够实现在屏幕上任意位置上显示单一的一个点。想要在液晶屏上显示一个点,首先必须给液晶屏一个想要显示点位置的X轴、Y轴坐标;然后设置液晶屏的列地址、行地址;接着就显示该点的颜色,即黑色和白色。图3-9显示液晶屏描点的操作步骤。图3-9 液晶屏描点显示字符:要在屏幕上显示字符,除了要能够描点外,还远远不够,因此这里可以需要增加一些步骤:首先,设置要显示字符的X、Y轴坐标;其次读取存储器中的字库数据;再次,设置字体显示的方式(例如倾斜显示,是否透明显示,字符间隔,下

31、划线等);最后,按照读取字库的数据进行描点。下图显示的是液晶屏显示字符的操作步骤。图3-10 液晶屏显示字符34 ISD4004的软件开发流程ISD4004语音模块也是采用SPI总线方式控制。该模块控制比较简单,主要包括录音、放音、停止当前操作等。录音:ISD4004语音模块想要录音一段语音,必须遵循以下时序:1、发POWERUP命令;2、等待TPUD(上电延时);3、再发送POWERUP命令;4、等待2个TPUD;5、发送带地址的SETREC命令;6、发送REC命令;7发送STOP命令。图3-11显示该操作流程。图3-11 ISD4004录音步骤放音:ISD4004语音模块想要播放一段语音,

32、必须遵循以下时序:1、发POWERUP命令;2、等待TPUD(上电延时);3、发送带地址的SETPLAY命令;4、发送PLAY命令。图3-12显示该操作流程。图3-12 ISD4004放音步骤35 系统的应用软件开发流程在前面已经完成了系统各个分部分的软件开发流程,至此想要让这个系统按照我们之前设计的要求跑起来,这里还需要用一根绳索把各个部分串联在一起形成一个真正的系统。按照设计的要求,首先系统软件部分应该对CPU,外设进行初始化,其次系统间出现一个欢迎界面,接下来进入循环部分,循环部分完成按键扫描,并根据扫描的键值执行相应的动作。图3-13清晰的展示了系统的整个应用流程。图3-13 系统流程

33、图第4章 应用系统部分代码41 系统核心软件CPU初始化部分4:CPU初始化包括设置PLL 值,PClk分频值,各个管脚配置,中断等系统最关键参数。其代码如下:void lpc2138_Iint()long i;PLLCON = 0X00;PLLFEED = 0XAA;PLLFEED = 0X55;PLLCFG = 0X23; /M =4 P=2 FCCLK = 14.7456 * 4=58.9824 Pclk = Fcclk/4=14.7456 PLLCON = 0X01;PLLFEED = 0xAA;PLLFEED = 0x55;while (PLLSTAT&0X0400)PLLCON =

34、 0X03;PLLFEED = 0XAA;PLLFEED = 0X55; MAMCR = 0;MAMTIM = 3;MAMCR = 2;for (i = 0; i 1000;i+) /-设置定时器1,系统使用该定时器来做系统时钟基准- T1PR=14; /设置T1为1usT1MCR=3;/MR0 与TC 值的匹配将产生中断 并复位TCT1MR0=1000;/1ms 123usT1TCR=0X03;/使能并复位计数器T1TCR=0X01;/启动定时器1OS_Time = 0;PINSEL0 = 0x;PINSEL1 = 0xa8;PINSEL2 = 0x00;IO0DIR = 0xfec03c0

35、0;IO0SET = 0xfec03c00;IO0CLR = 0xfec03c00;IO0SET = (128);/RSIO0SET = (129);/CSIO1DIR = 0xffff8000;IO1SET = 0xffff0000;IO1CLR = 0xffff0000;/VICIntSelect = 1 5;/ 默认为IRQ中断VICVectCntl0 = 0x20 | 5;/设置Timer1中断到向量中断0 VICVectCntl1 = 0x20 | 7;/设置UART1中断到向量中断1 VICVectCntl2 = 0x20 | 6;/设置UART1中断到向量中断2 VICVectA

36、ddr0 = (unsigned long)Timer1_INT;/设置中断向量地址(TIMER1) VICVectAddr1 = (unsigned long)UART1_INT;/设置中断向量地址(UART1) VICVectAddr2 = (unsigned long)UART0_INT;/设置中断向量地址(UART0) 外设初始化部分:外设初始化部分包括串口初始化,SPI初始化,液晶初始化,Flash初始化等部分,代码如下:void System_Init(unsigned char Debug)11long status;lpc2138_Iint();UART_Init();MEMM

37、AP = 0X02;/remapVICIntEnable |=(1 5);/启动VIC中断(TIMER1)VICIntEnable |=(1 7);VICIntEnable |=(1 6);if (Debug = 1)status = Mscomm_Open(1,8,N,1);Debug_ON = 1;elseDebug_ON = 0;IO1SET = (1256)len = 256 -offset;a1 = (Addr 16) & 0xff;a2 = (Addr 8) &0xff; a3 = Addr &0xff;Flash_cs_en();SPI1_Send(0x50);Flash_cs_

38、dis();Flash_cs_en();SPI1_Send(0x06);Flash_cs_dis();Flash_cs_en();SPI1_Send(0x01);SPI1_Send(0x00);Flash_cs_dis();flag = 0;for(i=0;ilen;i+)if(flag=0)Flash_cs_en();SPI1_Send(0x06);Flash_cs_dis();Flash_cs_en();SPI1_Send(0x02);SPI1_Send(a1);SPI1_Send(a2);SPI1_Send(a3);flag = 1;SPI1_Send(bufi);Flash_cs_di

39、s();status = sst25vf_wait_busy();if(status 0)return status;Flash_cs_en();SPI1_Send(0x04);Flash_cs_dis();Flash_cs_en();SPI1_Send(0x01);SPI1_Send(0x1c);Flash_cs_dis();status = sst25vf_wait_busy();if(status = SST25VF064C_SIZE)return (-1);a1 = (addr 16) &0xff;a2 = (addr 8) & 0xff;a3 = addr & 0xff;Flash_

40、cs_en();SPI1_Send(0x03);SPI1_Send(a1);SPI1_Send(a2);SPI1_Send(a3);for(i = 0; i len ;i+)*buf = SPI1_Read();buf+;Flash_cs_dis();return (len);43 液晶显示模块的部分代码液晶写命令11:本液晶屏的读写命令与数据最主要的差别在对于RS的控制,写命令是RS=0。void LCD_COMMAND(unsigned char cmd)IO0CLR = (129);/CS =0IO0CLR = (128);/RS =0SPI1_Send(cmd);/IO0SET = 1

41、28;IO0SET = (129); 液晶屏的写数据:液晶屏的写数据只需把RS置高即可。代码如下:void LCD_Data(unsigned char data)IO0CLR = (129);/CS=0IO0SET = (128); /RS=1SPI1_Send(data);/IO0CLR = 128;IO0SET = (129);由于液晶屏的描点和液晶屏的字符显示这部分代码过长,为了解决论文空间再次就不作介绍。44 ISD4004语音模块的部分代码ISD4004录音:ISD4004录音步骤为:上电、等待延时、发送准备录音命令,开始录音。代码如下:void ISD4004_REC(unsig

42、ned long addr)ISD4004_Powerup();Delay(100);ISD4004_Powerup();Delay(200);ISD_Cmd(0xa0,addr);/发送准备录音命令ISD_Cmd(0xb0,addr);/开始录音ISD4004放音:ISD4004放音的步骤为:上电、等待延时、发送准备放音命令,发送放音命令。代码如下:void ISD4004_PLAY(unsigned long addr)ISD4004_Powerup();Delay(100);ISD_Cmd(0xe0,addr);/发送准备放音ISD_Cmd(0xf0,addr);/开始放音第五章 系统测

43、试51 硬件部分系统测试硬件部分的系统测试主要检查电压是否正常,CPU是否正常工作等。首先,检查输入电压12V是否正常,接下来再检查5V电压是否正常,接下来检查是否有产生3.3V的系统电压。其次,检查晶振是否起振,可用示波器查看,波形的频率是否正确。再次,检查系统的ISP下载是否正常工作,也就是boot管脚在ISP下载模式下是否为低电平,在应用状态是否高电平。接着,下载程序,检查程序下载是否正常,若正常的话进入下一步,若不正常检查电路是否连接正确。若程序能够正常下载,说明本系统的最小系统,也就是核心系统是可以正常工作。那么接下来就可以调试外设部分的硬件,本设计外设主要接口就是IO口以及SPI接

44、口,因此调试的时候要特别这两种接口的工作情况。IO口调试很简单,只需简单的拉高拉低电平,若管脚能够正确响应对应的电平即为正常;SPI接口调试也很简单,只需向SPI总线写入任意数据,用示波器查看SPI总线的时钟线(SCK)是否有波形(即方波),频率是否正确,再查看MOSI,MISO管脚是否有数据输出或输入,判断发送的数据是否正确。若这两部调试成功,那么本次设计的硬件部分基本上就没有问题了。52 软件部分系统测试软件部分测试相比硬件测试会稍微复杂一点,不过只要遵循一定的方法,就不会很困难。首先,必须保证CPU配置部分系统频率计算的正确,还有中断要保证配置正确,各个管脚功能配置也必须保证准确无误,这样才能保证系统能够正常运行。其次,系统最关键的配置成功了之后,就可以对串口进行配置,串口的配置,波特率的选择,等等必须严格按照MCU的规格书操作,串口配置完成之后,打开串口用串口连接计算机,并在计算机上安装串口调试助手,把本系统与计算机串口起来,设置好计算机串口调试工具的参数,终端机子只需向串口发送简单的字符,这时调试时候只需保证终端机向计算机发送的字符与计算机接

温馨提示

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

评论

0/150

提交评论