基于SD卡的文字声光警示系统设计毕业设计

上传人:沈*** 文档编号:82057110 上传时间:2022-04-28 格式:DOC 页数:71 大小:8.69MB
返回 下载 相关 举报
基于SD卡的文字声光警示系统设计毕业设计_第1页
第1页 / 共71页
基于SD卡的文字声光警示系统设计毕业设计_第2页
第2页 / 共71页
基于SD卡的文字声光警示系统设计毕业设计_第3页
第3页 / 共71页
点击查看更多>>
资源描述
摘 要为改善铁路平面交叉道口尤其是站内道口的安全状况,有必要设计一种具有高可靠性的道口报警设备,当列车接近道口时告警,提示道口值班人员及行人、车辆注意,以确保列车安全通过,减少以至杜绝各种道口交通事故的发生1。本论文所研究的语音及文字警示系统主要用于铁路道口的警示;采取语音播放及文字信息显示等措施,其中语音部分可采用两种方式,一是自动播放系统预先存储或录制的语音内容,二是通过系统连接的话筒进行人工语音播放;文字部分采用LCD显示屏显示预先存储的文字信息,该文字信息可与语音信息同步显示相同的内容,需要显示的文字信息和播放的语音内容均采用SD卡存储方式,易于修改(针对不同的应用场合只需修改SD卡上的数据内容即可),语音播放及文字显示可采用自动触发(系统外接主动红外入侵探测器等设备等)或人工操作两种方式。关键词:SD卡,MP3语音,TXT,警示,C8051F340,VS1003 ABSTRACTTo improve the security of the level crossing particularly inside crossing, it is necessary to design a highly reliable crossing alarm equipment, when the train is approaching the crossing, suggest duty pedestrian and the vehicles taking care of it. To ensure the safe passage of trains, reduce and eventually eliminate all crossing traffic accidents 1.This thesis studied voice and text alerts system is mainly used for the railway crossing warning; take voice playback and text information display and other measures, including parts of speech can be used in two ways, one is automatic playback system pre-stored or recorded audio content, Second, the system connector of the microphone for artificial voice playback; text portion of LCD display previously stored text message, the text message can be synchronized with the voice information with the same content, the text information to be displayed and playback audio content are used SD card storage, easy to modify (for different applications simply modify the contents of the data on the SD card can be), voice playback and text display can be triggered automatically (system external active infrared intrusion detectors and other equipment, etc.), or manual operation two ways.KEY WORDS: SD card,MP3,TXT, warning, C8051F340,VS1003目 录前 言1第1章 绪论21.1 SD卡原理及内部结构21.2 znFAT61.3 SPI串行通信71.3.1 SPI接口定义81.3.2 SPI总线工作方式81.3.4 SPI时序分析91.4 系统方案101.4.1 软件介绍111.4.2 系统测试11第2章 警示系统硬件设计122.1警示系统硬件功能概述122.2 警示系统硬件总体设计132.3 警示系统硬件详细设计142.3.1 C8051F340最小系统142.3.1.1供电电路142.3.1.2复位电路152.3.1.3 JTAG电路152.3.1.4 触发源输入电路162.3.2 MP3解码电路162.3.2.1时钟电路172.3.2.2复位电路172.3.3 字符通信电路172.3.4 SD卡读取电路182.3.5 手持话筒模块192.3.6 功放模块192.3.6.1 音频功放模块192.3.6.2 模拟开关模块202.3.6.3 供电模块212.3.6.4控制模块212.4 警示系统整体原理图设计222.5 警示系统整体PCB图设计22第3章 警示系统软件设计233.1警示系统程序功能概述233.2警示系统程序总体设计233.3 警示系统程序详细设计253.3.1 基于ZNFAT的SD卡文件系统253.3.1.1 znFAT代码结构253.3.1.2 znFAT移植方法253.3.2 MP3解码程序设计313.3.2.1 VS1003驱动程序313.3.3.2 SPI通信程序323.3.4 触发源判断程序333.4 警示系统程序代码35第4章 调试与分析364.1调试目的364.2 调试方案364.3 调试结果374.3.1 触发源测试374.3.2 SD卡读取调试374.3.3 语音播放测试384.3.4 继电器启动测试384.3.5 串口通信测试394.3.6 整体功能测试394.4调试问题与分析42第5章 结论与展望435.1 结论435.2展望43参考文献44致 谢46附录 警示系统原理图47附录 警示系统PCB图48附录 警示系统部分程序代码49前 言在铁路网比较发达的欧洲,道口密度大,事故风险也相对比较高。其中,英国安全工作做的比较好,近年来其道口事故发生率和每个道口平均死亡人数均比其他各国低。这主要得益于英国政府增加警力,强行控制道口违章行为。在驾校增设关于平交道口的安全教育,开展平交道口危险性的宣传活动。同时,英国西屋铁路系统公司在别国成功技术的基础上,研制了一种新型的平交道口预测器(英文名称缩写LCP)。其工作过程是在道口装一个LCP单元,两边轨道的端点处各装一个无源转辙器。当列车经过前转辙器时,轨道电路的阻抗和电压会线形减少,呈现下斜图形,反映列车接近轨道口的位置,LCP根据图形斜率计算列的速度,确定列车经过道口的时间,从而产生报警,当列车经过后转辙器以后,报警结束。该设备符合道口报警设备的一般设计原理,但是其价格昂贵,同时英国铁路轨道电路与我国轨道电路有诸多不同之处,所以无法将其移用至我国铁路道口中2,3。本文以铁路道口应用为例设计了一款基于SD卡的文字声光警示系统。通过现有技术加强我国铁路道口的现代化改造,必将提高道口管理的自动化水平,提升道口通过的安全性,对于减少道口事故、保障人民生命财产安全、提高铁路公路运营效率有着十分重要的意义。于该警示系统是用SD卡存储警示内容,内容方便修改,因此可以使用于其他的场合。例如安防、普通十字路口、施工现场、学校、博物馆等,只需要将SD卡中的警示内容更改为场合相对应的警示内容即可,无需改变软件程序。本论文共分为五章。第1章是绪论,主要阐述了设计中的一些基本原理和系统总体方案设计。第2章是硬件设计,单片机最小系统模块、MP3解码模块、SD卡模块、串口通信模块、手持话筒模块,功率放大模块硬件设计。第3章是软件设计,MP3解码模块、SD卡模块以及串口通信模块等的软件设计。第4章是调试与分析,通过测试程序,验证各模块的功能,并对调试过程中产生的问题进行了分析与总结。第5章是系统设计的结论与展望,在这一章中,结论对系统的设计结果作了简单的总结,展望则根据系统中存在的不足提出了一些相应的改进的方法。第1章 绪论本章主要对SD文件系统和znFAT及SPI通信做介绍和说明。1.1SD卡原理及内部结构SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式19。图1-1 SD卡内部图表1-1SPI总线模式定义引脚名称类型功能描述1CS输入片选2DATAIN输入主卡命令和数据3VSS1服务接地4VDD服务接电源5CLK输入时钟6VSS2服务接地7DATAOUT 输出主卡数据和状态8RSV(2) 输入接受9RSV(2)输入接受1、SD 卡主要引脚和功能如下。(1)CLK(时钟信号),每个时钟周期传输一个命令或数据位,频率可在025MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生025MHz 的频率;(2)CMD(双向命令和回复线),命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;(3)DAT03(数据线),数据可以从卡传向主机也可以从主机传向卡。SD卡以命令形式来控制SD卡的读写等操作。可根据命令对多块或单块进行读写操作。在SPI模式下其命令由6个字节构成,其中高位在前。图1-2 SD卡分区图表1-2主启动记录和分区表BP长度文件名内容0446主启动记录不限44616分区表(第一部分)见下表46216分区表(第二部分)全是0x0047816分区表(第三部分)全是0x0049416分区表(第四部分)全是0x005102信号字(Signature Word)0x55,0xaa2、主启动记录和分区注释如下。(1)0到445 主启动记录此间内容不被叙述。(2)446到461分区表(第一部分)这个部分叙述了第一分区在体系中的信息。这个分区意味着使用者可以没有相互的证明使用普通区域。(3)462到477分区表(第二部分)如果体系只有一个分区,此间内容为0。(4)478到493分区表(第三部分)如果体系只有一个分区,此间内容为0。(5)494到509分区表(第四部分)如果体系只有一个分区,此间内容为0。(6)510到511信号字(Signature Word)此处记录了0x55(BP 510) 和 0xaa。表1-3分区表BP长度文件名内容01启动指示0x00或0x8011启始磁头数值22启始柱面和扇区数值41系统ID号0x01 或 0x04 或 0x0651终止磁头数值62终止柱面和扇区数值84Relative Sector数值124总扇区数值 3、SD卡文件分区注释。(1)BP0启动指示如果以SD卡作为启动(盘),记录0x80,否则记录0x00。(2)BP1启始磁头此处叙述分区的起始磁头。(3)BP2和3启始柱面和扇区此处将叙述分区的启始柱面和扇区。6个位 (在BP2中0到5位) ,将作为启始扇区。10个位(在BP2 中的6和7位,在BP3中的0到7的)将作为启始柱面。(4)BP4 系统ID号此处叙述文件系统类型。 如果分区大小是少于32680个扇区,它将被记录0x01。如果少于65536个扇区,它将被记录0x04。否则,它将被记录0x06。(5)BP5 终止磁头此处记录终止磁头。(6)BP6和7 终止柱面和扇区此处记录终止柱面和扇区。6个位(在BP6中的0到位5位)作为结束扇区。10个位(在BP6中的位6和7位,在BP7中的0到7位)作为结束柱面。(7)BP8到11Relative Sector此处叙述这此分区的起始扇区之前存在的数目。(8)BP12到15总扇区此处记录总扇区数量。(9)申请分配表 (FAT)FAT将包含一个格式ID号和一些项目,每个使用者区域的指示群集。这些项目连续的将是有限的出发由于2而且项目数目将和相等对应的群集数目。每个项目在 FAT 中将指示对应的群集状态。 FAT 项目将用来识别被分派到每个文件的群集组18。 1.2 znFATznFAT是一种高效、完备、精简且具有高可移植性的嵌入式FAT32文件系统解决方案。其主要特性如下。1、可通用于多种嵌入式CPU,如51、AVR、PIC、ARM、Cortex、DSP、MSP430、freescale S12等等。2、所占用的RAM与ROM资源极少,并可由使用者视目标平台资源情况进行灵活配置,最简配置情况下,RAM的使用量约在800900字节左右。3、内建独特的数据写入加速算法以及扇区级的基于“预建文件”的数据写入机制。4、底层提供简单的单扇区读写驱动接口以及可选的硬件级多扇区连续读写驱动接口。(在提供多扇区连续读写驱动的情况下,数据读写速度将有近24倍的提升,甚至更高。)5、提供清晰而强大的对函数模块裁剪的功能,极大限度的减小最终生成的可执行文件的体积。6、提供数据读取的重定向功能,使读到的数据无需缓冲暂存,直接流向应用目的。7、支持长文件名,长文件名最大长度可配置。默认配备并使用GB2312中文字符,并可选择是否使用OEM字符集,以减少程序体积。8、支持与Windows、Linux等操作系统兼容的路径表示,路径分隔可使用/或。支持无限深目录,支持长名目录。9、提供数据写入的实时模式,写入的任何数据,只怕只有一个字节,立即落实到物理存储器,防止因恶劣工作环境、干扰或其它原因引起的目标平台不可预见的死机或故障,造成数据丢失(实时模式数据写入速度不高,内存中不缓冲任何数据)。10、支持对存储设备的格式化,文件系统为FAT32。11、支持*与?通配,长名亦支持通配。12、支持文件与目录的删除,目录支持内含子目录与无限深级子目录结构的删除。13、支持无限级目录创建。14、支持多文件同时操作。15、支持多设备,即同时挂载多种存储设备,可在多种存储设备间任意切换。1.3 SPI串行通信SPI是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。时钟由Master控制,在移位时钟的脉冲下,数据按位传输,高位在前,低位在后(MSB first),目前应用中的数据速率可达几Mbps的水平。其主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议19。1.3.1 SPI接口定义SPI总线是一种环形结构,由NSS、SCK、MOSI、MISO构成,其时序其实很简单,主要是在SCK的控制下,两个双向移位寄存器进行数据交换。典型连接图如图1-3所示。1、MOSI:主器件数据输出,从器件数据输入;2、MISO:主器件数据输入,从器件数据输出;3、SCK :时钟信号,由主器件产生;4、NSS:从器件使能信号,由主器件控制。图1-3SPI主从方式典型连接图1.3.2 SPI总线工作方式SPI 主器件启动SPI 总线上所有的数据传输。通过将主允许标志(MSTEN,SPI0CFG.6)置1将SPI0 置于主方式。当处于主方式时,向SPI0 数据寄存器(SPI0DAT)写入一个字节时是写发送缓冲器。如果SPI 移位寄存器为空,发送缓冲器中的数据字节被传送到移位寄存器,数据传输开始。SPI0 主器件立即在MOSI 线上串行移出数据,同时在SCK 上提供串行时钟。在传输结束后SPIF(SPI0CN.7)标志被置为逻辑1。如果中断被允许,在SPIF 标志置位时将产生一个中断请求。在全双工操作中,当SPI 主器件在MOSI 线向从器件发送数据时,被寻址的SPI 从器件同时在MISO 线上向主器件发送其移位寄存器中的内容。因此,SPI标志既作为发送完成标志又作为接收数据准备好标志。从器件接收的数据字节以MSB 在先的形式传送到主器件的移位寄存器。当一个数据字节被完全移入移位寄存器时,便被传送到接收缓冲器,处理器通过读SPI0DAT 来读该字节。当被配置为主器件时,SPI0 可以工作在下面的三种方式之一:多主方式、3线单主方式或4线单主方式。当NSSMD1(SPI0CN.3)=0 且NSSMD0(SPI0CN.2)=1 时,是默认的多主方式。在该方式,NSS 是器件的输入,用于禁止主SPI0,以允许另一主器件访问总线。在该方式,当NSS 被拉为低电平时,MSTEN(SPI0CN.6)和SPIEN(SPI0CN.0)位被硬件清0,以禁止SPI 主器件,且方式错误标志(MODF,SPI0CN.5)被置1。如果中断被允许,将产生方式错误中断。在这种情况下,必须用软件重新使能SPI0。在多主系统中,当器件不作为系统主器件使用时,一般被默认为从器件。在多主方式,可以用通用I/O 引脚对从器件单独寻址(如果需要)。当NSSMD1(SPI0CN.3)=0 且NSSMD0(SPI0CN.2)=0 时,SPI0 工作在3线单主方式。在该方式,NSS 未被使用,也不被交叉开关映射到外部端口引脚。在该方式,应使用通用I/O 引脚选择要寻址的从器件。当NSSMD1(SPI0CN.3)=1 时,SPI0 工作在4线单主方式。在该方式,NSS 被配置为输出引脚,可被用作从选择信号去选中一个SPI 器件。在该方式,NSS 的输出值由NSSMD0(SPI0CN.2)控制(用软件)。可以用通用I/O 引脚选择另外的从器件19。1.3.4 SPI时序分析如图1-4所示,使用SPI0 配置寄存器(SPI0CFG)中的时钟控制选择位可以在串行时钟相位和极性的4 种组合中选择其一。CKPHA 位(SPI0CFG.5)选择两种时钟相位(锁存数据所用的边沿)中的一种。CKPOL 位(SPI0CFG.4)在高电平有效和低电平有效的时钟之间选择。主器件和从器件必须被配置为使用相同的时钟相位和极性。在改变时钟相位和极性期间应禁止SPI0(通过清除SPIEN位,SPI0CN.0)。这里需要注意的是在主方式,SPI 在SCK 无效沿(MOSI 改变状态之际)的前1个系统时钟采样MISO 线,以便为从器件提供最大的建立时间。SPI0 时钟速率寄存器(SPI0CKR,见SFR 定义20.3)控制方式的串行时钟频率。当工作于从方式时该寄存器被忽略。当SPI 被配置为主器件时,最大数据传输率(位/秒)是系统时钟频率的二分之一。当SPI 被配置为从器件时,全双工操作的最大数据传输率(位/秒)是系统时钟频率的十分之一,前提是主器件与系统时钟同步发出SCK、NSS(在4 线从方式)和串行输入数据。如果主器件发出的SCK、NSS 及串行输入数据不同步,则最大数据传输率(位/秒)必须小于系统时钟频率的十分之一。在主器件只想发送数据到从器件而不需要接收从器件发出的数据(即半双工操作)这一特殊情况下,SPI 从器件接收数据时的最大数据传输率(位/秒)是系统时钟频率的四分之一,这是在假设由主器件发出SCK、NSS 和串行输入数据与系统时钟同步的情况下11。图1-4 SPI时序图1.4 系统方案MCU最小系统中使用的是美国Silicon Laboratories 公司生产的C8051F340单片机。该芯片是完全集成的混合信号片上系统型MCU,具有片内上电复位、VDD监视器、电压调整器、看门狗定时器和时钟振荡器,是真正能独立工作的片上系统。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外设以节省功耗12。1.4.1 软件介绍原理图和PCB图的设计使用的是Altium Designer。Altium Designer Summer 09是Altium公司新出的一款EDA开发工具。Altium Designer Summer 09的发布延续了连续不断的新技术的应用过程。这必将帮助用户更轻松地创建下一代电子设计。同时,我们将令Altium Designer更符合电子设计师的要求。Altium的一体化设计结构将硬件、软件和变成硬件集合在一个单一的环境中,这将使用户自由地探索新的设计构想。在整个设计构成中,每个人都使用同一个设计界面。Summer 09版本解决了大量历史遗留问题。其中就包括了增加更多的机械层设置、增强原理图网络类定义。可以再Windows 7上运行,增加了很多类似于Windows的快捷键,大大缩短了绘图周期。对于初学者而言更加容易上手13。C8051F340程序的开发环境采用的是KEIL uVISION4。KEIL uVISION4是众多单片机应用开发软件中最优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,甚至ARM,它集编辑,编译,仿真等于一体,它的界面和常用的微软VC+的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能15。1.4.2 系统测试为了验证系统的可靠性,在系统设计完毕后就需要对各功能模块进行测试。首先进行硬件测试,上电前仔细检查各元器件是否正确焊接在电路板上,上电后用万用表测试相应引脚电压值是否与期望值相符;硬件测试完毕后,对各功能分别编写简单的测试程序进行调试;最后进行系统总体调试,验证系统功能。第2章 警示系统硬件设计在设计过程中,将系统功能分为硬件和软件两部分来分别实现。本章详细介绍了系统设计的硬件部分,主要分几个模块详细描述各部分的设计方案及其实现功能。2.1警示系统硬件功能概述硬件设计是整个系统设计的基础,是软件运行的平台。主要的硬件电路有C8051F340最小系统电路,MP3解码电路,SD卡电路,串口通信电路。其中各部分功能介绍如下。1、C8051F340最小系统电路C8051F340最小系统电路主要电路有,JTAG调试电路,复位电路,供电电路,触发源输入电路。2、MP3解码电路MP3解码电路主要有,复位电路,时钟电路,麦克风接口电路,供电电路由于VS1003解码芯片也是采用3.3V供电所以供电电路是和C8051F340同用一个供电电路使设计更加方便。时钟采用12.288MHZ的晶振。3、SD卡电路SD卡读取是为了使本系统的应用范围更广而设计的。SD卡读取技术会使警示系统更加灵活的使用到各种场合。4、串口字符通信电路串口字符电路使用MAX3232作为串口通信芯片,具有通用性,使系统的更加便于使用。5、手持话筒电路手持话筒模块电路使用以NE5532运算放大器为核心器件,具有较强的音频放大功能的电路。将话筒的MIC头转换出来的电信号进行放大。NE5532非常常用的音频放大芯片,在音频的范围内具有极高的精度,能保证声音信号的相对真实。6、功率放大电路功率放大电路分为,音频功率放大、电源供电、控制模块和模拟开关模块。音频功率放大模块采用TDA7377为核心器件。控制模块采用HCF4052为核心器件。模拟开关模块采用74LS00为核心器件。本设计需要完成上述6个主要电路的搭建,C8051F340最小系统电路是系统最为重要的部分,所以很多外设电路都是为最小系统服务的电路。C8051F340最小系统使用内部时钟,所以没有时钟电路。本章将介绍以上电路的线路连接。2.2 警示系统硬件总体设计根据系统的功能要求,需要完成如下设计:以C8051F340为核心的最小系统、以VS1003为核心的MP3解码电路,以SD卡为核心的SD卡读取电路和以MAX3232为电平转换芯片的串口通信电路。其整体设计框图如图2-1所示。图2-1 警示系统硬件原理框图2.3 警示系统硬件详细设计2.3.1 C8051F340最小系统C8051F340最小系统包括电源供电电路、复位电路、JTAG仿真电路、触发源输入电路等模块。下面分别对各模块进行介绍。2.3.1.1供电电路本设计中需要用到+5V、+3.3V和+2.5V三种电压,而简单易得的USB电源是+5V,但是USB作为电源电压太低难以驱动继电器,使继电器工作。而且工业常用+12V作为电源。因而需要使用+12V转换以分别产生+5V、+3.3V和+2.5V。其原理图如图2-2所示。图2-2系统供电电路图2-2中采用三端线性稳压器LM7805先将+12V的电源转化成+5V,然后再用三端稳压器AMS1117把+5V转化为+2.5V,利用C8051F340将+5V电压转化为+3.3V给系统其它部分供电。2.3.1.2复位电路在调试过程和实际应用过程中随时可能需要系统复位,以使程序可以重新运行。因此设置按键复位电路是非常必要的。本设计利用RC电路的延迟特性给出复位需要的低电平时间。上电瞬间,电容C0两端电压不能突变,通过电阻R0进行充电,充电时间由RC乘积值决定,一般要求大于5个外部时钟周期,为防止复位不完全,参数可选大一些,本设计中采用0.1F电容和10K电阻,时间常数为1ms,满足系统复位要求。图2-3所示电路连接除可以完成上电复位外还可以完成手动复位。当按钮闭合时,电容C放电,使电容C上的电压降为0,当按键断开时,电容的充电过程与上电复位类似。从而实现手动复位。图2-3C8051F340最小系统复位电路2.3.1.3 JTAG电路在系统调试时,需要一个C8051F340仿真器,把在计算机上编译并生成的HEX下载到C8051F340中,实现在线调试C8051F340硬件和软件。仿真器接口有两端接口,其中一端与计算机的USB口相连,另一端与C8051F340的JTAG接口相连,这是一个10针的接口,其硬件连接如图2-4所示。图2-4 C8051F340最小系统JTAG电路2.3.1.4 触发源输入电路如图2-5所示,触发源输入电路是为外部触发设计的。当外部有一个低电平输入时,就会触发警示系统。系统就会调用SD卡上的警示信息,将语音信息传输给VS1003解码输出人声语音并通过音响播放,同时将TXT文件上的文字信息通过串口传输给外部显示模块进行显示。目前警示系统是以按键代替外部触发,但是实际使用时可以将按键改为外部触发,比如主动红外入侵探测器等设备。图2-5 外部触发源输入电路2.3.2 MP3解码电路MP3解码电路包括时钟电路,复位电路,与单片机通信的串行输入电路,串行输出电路,时钟电路等。2.3.2.1时钟电路MP3解码芯片VS1003需要一个12.228MHZ的晶振作为VS1003的时钟。VS1003利用内部的PLL将12.228MHZ的时钟倍频到更高的频率,以适应不同码率的音频解码的需求。图2-7 VS1003时钟电路2.3.2.2复位电路由于VS1003是低电平复位,所以将复位端口电平下拉。使得复位更加快速和精确。图2-8 VS1003复位电路2.3.3 字符通信电路本设计的主要利用以MAX3232作为核心,将字符信息通过串口发送给外部的显示设备。由于TTL电平的特殊性必须将单片机输出的电平通过MAX3232转化为EIA电平,以用作串行通信。图2-9 字符通信电路2.3.4 SD卡读取电路如图2-10所示,SD卡有两种模式,一种是SD卡模式,另一种是SPI模式。本设计采用的是SPI模式。因为C8051F340有硬件SPI,而且采用SPI速度更快,能解码更高码率的音频文件。图2-10 SD卡电路2.3.5 手持话筒模块 手持话筒模块主要是将MIC头转换出来的电信号进行前级放大。为了低功耗设计,本论文设计了了按键,当按键按下时,系统供电工作。并且当系统供电时三极管导通将A位置电平拉低,输出一个低电平,控制功放工作如图2-11。图2-11手持话筒模块电路2.3.6 功放模块功放模块包括音频功放模块、模拟开关模块、电源供电模块和控制模块。2.3.6.1 音频功放模块音频功放模块主要以TDA7377为核心,TDA7377是一种新技术AB类车用无线电放大器可以在双桥梁或四单端配置方式下工作,常用在汽车收音机上。本设计使用TDA7377是为了将警示喊话更加清楚,使系统更加实用。低功耗设计方面,本系统利用TDA7377的待机功能使功放模块的功耗降到很低。只有在有音频输入时才激活系统如图2-12。图2-12音频功放模块电路2.3.6.2 模拟开关模块如图2-13所示模拟开关模块使用HCF4052作为主要器件。HCF4052双4-通道模拟多路复用/分解器,其内部相当于一个单刀双掷开关。HCF4052有两个控制端,可以控制4组两路切换。本设计只使用两路切换故将B控制端接地。图2-13模拟开关模块电路2.3.6.3供电模块供电模块是用于整个功放模块供电。使用一个6A10二极管,可以防止电源反接。6A10的反向工作电压达到1000V,而电源电压只有12V,所以6A10可以保证功放模块的正常运行。图2-14供电模块电路2.3.6.4控制模块如图2-15所示控制模块采用74LS00与非门作为核心器件。当MIC头有输出或者有MP3输出时,使输出为高电平,控制TDA7377工作。图2-15控制模块电路2.4 警示系统整体原理图设计系统的原理图采用Altium Designer Summer 09软件绘制,具体原理图分别见附录I。2.5 警示系统整体PCB图设计系统的原理图均采用Altium Designer Summer 09软件绘制,具体原理图分别见附录II。第3章 警示系统软件设计硬件设计完成之后,需要编写相应的应用程序,本章主要分基于znFAT文件系统的SD卡读取和基于VS1003的MP3解码两部分分别进行详细介绍。3.1警示系统程序功能概述根据系统功能要求,系统的软件设计可主要分为两大模块:基于znFAT文件系统的SD卡读取和MP3解码部分,具体功能描述如下。1、实现SD文件系统的基本功能,读取和储存,本设计主要用到读取部分;2、实现基于SPI的MP3解码;3、实现对继电器开断;4、实现对触发源输入的及时响应;3.2警示系统程序总体设计系统程序流程图如图3-1所示,程序结构图如3-2所示。主程序主要包括触发源判断,znFAT文件系统,MP3解码,触发源判断等3个主要部分。图3-1系统程序流程图图3-2程序结构图3.3 警示系统程序详细设计3.3.1 基于ZNFAT的SD卡文件系统3.3.1.1 znFAT代码结构主体:znFAT的具体实现。znFAT.h是对相关数据结构、宏的定义,以及对使用者可调用的功能函数的声明。znFAT.c是对功能函数的具体实现。移植相关:znFAT的移植相关文件。mytype.h中对类型进行重定义。deviceio.c对存储设备物理扇区读写驱动进行具体实现。config.h 对znFAT进行一些配置。其它头文件:cc_macro.h 是znFAT中的功能函数依赖关系的定义。gb2uni.h 是znFAT中GB2312向UNICODE转换的映射表。deviceio.h 此文件向znFAT提供扇区读写驱动接口函数的声明。template.h znFAT中用于实现格式化功能的模板数据。图3-3 znFAT的代码结构3.3.1.2 znFAT移植方法znFAT的移植其实非常简单,前提是已经有了现成的,较为成熟稳定的存储设备扇区读写等驱动函数。重新定义数据类型,如图3-4所示。图3-4 重新定义数据类型根据硬件平台实际的数据类型对mytype.h中的类型进行重新定义,包括无符号整型、有符号整形与固化数据的ROM类型。通过deviceio.c将存储设备驱动函数与znFAT标准物理接口进行接驳,包括存储设备初始化、单扇区读取、单扇区写入 多扇区连续读取与写入,多扇区连续清0 。 1、加入存储设备驱动头文件,如图3-5。图3-5加入存储设备驱动头文件2、将存储设备初始化函数与znFAT_Device_Init函数接驳,如图3-6。图3-6将存储设备初始化函数与znFAT_Device_Init函数接驳除了将实际存储设备的初始化函数加入接口函数znFAT_Device_Init中,此函数中其它代码请不要改动(以下同理)。并且最好按函数中的格式来写,在有多个存储设备的情况下,可以方便地知道每一个存储设备的初始化成功与否。(1) 将扇区读取驱动函数与znFAT_Device_Read_Sector函数进行接驳,如图3-7。图3-7将扇区读取驱动函数与znFAT_Device_Read_Sector函数进行接驳(4)将扇区写入驱动函数与znFAT_Device_Write_Sector函数进行接驳,如图3-8。图3-8将扇区写入驱动函数与znFAT_Device_Write_Sector函数进行接驳(5)将多扇区连续读取驱动函数与znFAT_Device_Read_nSector函数进行接驳,如图3-9。图3-9将多扇区连续读取驱动函数与znFAT_Device_Read_nSector函数进行接驳znFAT中的多扇区连续读取驱动接口函数采用了两种实现方式,使用者可以通过修改config.h中的相应宏选择使用哪种实现方式。config.h中的宏如图3-10。图3-10多扇区连续读取驱动接口函数选择如果这个宏被注释,则采用单扇区读取驱动+循环的实现方式;否则,将采用硬件级的多扇区连续读取驱动,此地,使用者必须提供存储设备的多扇区连续读取驱动函数。(6)将多扇区连续写入驱动函数与znFAT_Device_Write_nSector函数进行接驳(与V同理,config.h中对应的宏为 #define USE_MULTISEC_W)(7)将多扇区连续清零驱动函数与znFAT_Device_Clear_nSector函数进行接驳(与5与6同理,config.h中对应的宏为 #define USE_MULTISEC_CLEAR)以上就是znFAT的移植方法。通过此方法将znFAT文件系统移植到C8051F340上。自定义初始化和接口函数如下。sbit SD_SCL = P00; /SD卡同步时钟 输入sbit SD_SI = P02; /SD卡同步数据 输入sbit SD_CS = P03; /SD卡片选 输入sbit SD_SO = P01; /SD卡同步数据 输出#define DELAY_TIME 2000 /SD卡的复位与初始化时SPI的延时参数,根据实际速率修改其值,否则会造成SD卡复位或初始化失败#define TRY_TIME 200 /向SD卡写入命令之后,读取SD卡的回应次数,即读TRY_TIME次,如果在TRY_TIME次中读不到回应,产生超时错误,命令写入失败/错误码定义/-#define INIT_CMD0_ERROR 0x01 /CMD0错误#define INIT_CMD1_ERROR 0x02 /CMD1错误#define WRITE_BLOCK_ERROR 0x03 /写块错误#define READ_BLOCK_ERROR 0x04 /读块错误/-/函数声明unsigned char SD_Reset();unsigned char SD_Init();unsigned char SD_Write_Sector(unsigned long addr,unsigned char *buffer);unsigned char SD_Read_Sector(unsigned long addr,unsigned char *buffer);#endif3.3.2 MP3解码程序设计MP3解码程序主要包括VS1003驱动部分和SPI通信部分。VS1003驱动部分,MCU初始化完成后,当有触发源输入时,清空VS1003缓存,调用语音文件。其中初始化函数包括端口初始化、时钟初始化、中断初始化。SPI通信部分,先SPI初始化,然后VS1003与单片机握手,建立连接。建立连接后,传输数据,待数据传输完毕后,释放连接。3.3.2.1 VS1003驱动程序VS1003的驱动程序包括端口初始化,VS1003初始化,向VS1003写字节,从VS1003读字节,向VS1003发送音频数据,清空VS1003的数据缓存等。1、初始化(1)端口初始化sbit VS_XDCS =P21; /数据片选sbit VS_XCS =P22; /片选信号sbit VS_XRESET =P26; /复位信号sbit VS_DREQ =P20; /数据请求(2)VS1003初始化VS_XRESET=1; delay(100); VS_XRESET=0; delay(100); VS_XRESET=1; /硬件复位,XRESET低电平有效 delay(100); VS_Write_Reg(0x00,0x08,0x04);/软件复位,向0号寄存器写入0x0804 SM_SDINEW为1 SM_RESET为1 VS_Write_Reg(0x03,0x98,0x00);/时钟设置,向3号寄存器写入0x9800 SC_MULT 为4 SC_ADD 为3 SC_FREQ为0 VS_Write_Reg(0x0b,0x00,0x00);/音量设置,左右声道均最大音量 VS_XDCS=0; /打开数据片选,注意此时XCS(片选)为高电平,SDI有效 SPI_WriteByte(0); /写入数据,这里写入4个0,是无关数据,用来启动数据传输 SPI_WriteByte(0); SPI_WriteByte(0); SPI_WriteByte(0); VS_XDCS=1; /关闭数据片选,SDI无效2、其他驱动void VS_Write_Reg(unsigned char addr,unsigned char hdat, unsigned char ldat); /向VS1003的功能寄存器写入一个字unsigned int VS_Read_Reg(unsigned char addr); /从VS1003的功能寄存器读取一个字void VS_Send_Dat(unsigned char dat); /向VS1003发送音频数据void VS_Flush_Buffer(); /清空VS1003的数据缓冲区void VS_sin_test(unsigned char x); /正弦测试3.3.3.2 SPI通信程序SPI通信程序流程图如图3-10所示。图3-11 SPI通信流程图1、初始化初始化包括端口初始化、中断初始化、SPI初始化、UART初始化、参考电平初始化等。具体初始化过程如下。(1)端口初始化配置P0.0、P0.1、P0.2、P0.3为SPI总线端口。其中P0.0为SCK,数字输入,开漏输出;P0.1为MISO,数字输入,上拉输出;P0.2为MOSI,数字输入,开漏输出;P0.3为NSS,数字输入,开漏输出。配置P0.4、P0.5为UART1端口。其中P0.4为TX1,数字输入,上拉输出;P0.5为RX1,数字输入,开漏输出。(2)中断初始化IE = 0xC0;/开总中断及SPI中断EIE2 = 0x02;/置位ART1中断允许位 (3)SPI初始化SPI0CN = 0x05; /设四线从方式,且使能SPISPI0CKR = 0x17; /设置SPI0的时钟频率为1M(4)UART初始化SBRLL1 = 0x1E;/UART波特率发生器低字节SBRLH1 = 0xF6;/UART波特率发生器高字节SCON1 = 0x10;SBCON1 = 0x43; /波特率发生器使能,预分频1(5)定时器初始化TCON = 0x40; /定时器1使能TMOD = 0x20; /使用方式2,8位自动重装载的定时器CKCON = 0x02; /时钟预置分频2TH1 = 0x98; /定时器1高字节初始化3.3.4 触发源判断程序do if(!IO_IN1)/判断触发源一是否有输入 Delay_ms(200)/延时200msif(!IO_IN1)/再次判断触发源是否有输入 JDQ1=1;/继电器吸合 strcpy(void *)mp3_name,Y0000000.mp3);/调用Y0000000.MP3 strcpy(void *)char_name,C0000000.txt);/调用C00000000.txt MP3_Play() ;/MP3播放 Char_Display();/将文字发送到LCD屏播放 else if(!IO_IN2)/ 判断触发源二是否有输入Delay_ms(200) /延时200ms else if(!IO_IN2) /再次判断触发源是否有输入JDQ2=1; /继电器二吸合strcpy(void *)mp3_name,Y0000001.mp3);/调用Y0000000.MP3strcpy(void *)char_name,C0000001.txt);/调用C00000000.txtMP3_Play();/MP3播放Char_Display();/将文字发送到LCD屏播放 while(1);3.4 警示系统程序代码系统程序代码在Keil uVision4环境下编写,具体程序代码分别见附录。第4章 调试与分析在完成硬件和软件的设计之后,本章着重讲述的是如何调试,并对调试的结果进行了详细的记录和分析。4.1调试目的调试的目的是验证系统各部分功能,具体如下。1、验证触发源触发效果;2、验证SD卡读取;3、验证语音播放;4、验证继电器的启动;5、验证串口通信;6、验证警示系统。4.2 调试方案1、将按键按下,用示波器或者万用表测试端口电平。2、在操作SD卡时,在SD卡挂载成功口加串口打印函数,将挂载成功和SD卡读取成功通过串口显示出来,并将读取的SD卡信息通过串口发送出来在串口助手上显示。3、当SD卡挂载和读取成功过后,将MP3语音文件通过电脑复制到SD卡。然后通过调用MP3语音文件,通过SPI发送给VS1003播放, 听音响是否有声音传出。4、当触发源输入是低电平时,观察继电器是否吸合。吸合时有吸合声,并伴随LED小灯亮。5、在SD卡挂载和读取都成功过后,将TXT文本文档复制到SD卡中。通过调用SD卡上的文本文件,通过串口发送给电脑,在串口助手上显示。6、在上述步骤都已完成的情况下,连接外部显示LCD屏和音响。通过触发按键,观察LCD的显示和语音的播放。4.3 调试结果4.3.1 触发源测试在硬件连接好后,系统上电,用示波器测试触发效果。结果显示触发正常迅速。结果如图4-1所示。图4-1触发源输入测试4.3.2 SD卡读取调试将程序烧录到单片机中,利用串口将SD卡挂载成功的信息传到电脑上。原理是在每次操作SD卡时,调用一次调试程序将SD消息(SD卡读取OK和SD卡挂载OK)通过串口传出,如图4-2所示。图4-2 SD卡读取测试4.3.3 语音播放测试将音响接线连接到系统的音频接口,再给系统上电。最后在触发源输入低电平,听音响发出语音。结果是音响正常发出语音如图4-3。图4-3语音测试用的号角喇叭4.3.4 继电器启动测试硬件连接好后,运行程序,触发源输入低电平,观察继电器是否吸合,小灯是否亮起。结果是有继电器吸合声,小灯亮起,表明继电器正常启动如图4-4。图4-4继电器启动测试4.3.5 串口通信测试硬件连接好后,运行程序,打开窗口助手,接受数据。观察数据是否为SD卡上所存储的数据。测试结果正常,如图4-
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!