基于单片机的公交报站系统设计_第1页
基于单片机的公交报站系统设计_第2页
基于单片机的公交报站系统设计_第3页
基于单片机的公交报站系统设计_第4页
基于单片机的公交报站系统设计_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计说明书学生姓名:学号:学院:专业年级:题目:基于单片机的公交报站系统指导教师:(姓名)(专业技术职务)评阅教师:(姓名)(专业技术职务)年月摘要随着多媒体技术和网络通信技术的发展,多媒体技术和网络通信技术已经在生活中广泛应用。许多旧的生产生活方式逐渐被新科技所取代,在公交车报站方面,也由传统的人工报站逐渐改变为由微电脑控制的语音文字报站系统。本文针对人工报站的不便设计一种按键式公交报站系统。该设计以单片机为核心,主要由语音模块和液晶模块组成。实现了手动按键即可显示站名与语音播报的功能。达到了轻松报站与清晰指示的效果。乘客可以根据显示器上的信息来确定目的地是否到达,并且在即将到达下一站的时候放置在车上的显示屏会显示站名并提示乘客下车。关键词单片机;公交报站;语音播报;液晶显示TitleBasedonsinglechipcomputerOFBusStationSystemAbstractNowadays,withdevelopmentofmultimediaandcommunicationtechnology,multimediaandcommunicationtechnologyhasbeenwidelyusedinthelife.Inthefieldofbus-stop-reporting,themethodischangingfromartificialreporttovoicereport,whichcontrolledbymicrocomputer.Theartificialstationreportedinconveniencetodesignapush-buttonstationsystem.Thedesignofsingle-chipmicrocomputerasthecore,mainlybythevoicemoduleandLCDmodule.Themanualbuttondisplaystationnamesandthevoicebroadcastfunction.Toeasilyreportstationandaclearindicationoftheeffect.passengerscanaccordingtothemessageonthedisplaytodeterminewhetherthedestinationisreached,andwhenwillarrivethenextstationisplacedinthebuswilldisplaycontinuousflashingtoremindpassengerspreparetogetoff.Keywords:singlechipcomputer;Thebusstops;bus-stopannouncer;LCD目录1绪论………………………1TOC\o"1-3"\h\u35321.1手动式公交车辆自动报站系统概述…………………1155091.2报站系统在国内外的发展状况………12基于单片机的公交报站系统硬件设计…………………22.1基于单片机的公交报站系统总体设计框图…………2122462.2STC89C52单片机最小系统…………3204452.2.1STC89C52单片机特性……………32.2.2STC89C52单片机管脚说明………32.2.3外部晶振的选择……………………42.2.4上电复位电路………………………52.2.5按键电路模块………………………6103522.3语音模块………………66242.3.1ISD4004引脚说明…………………6246312.3.2ISD4004与单片机接线图…………7324502.4液晶显示模块…………8189272.4.1LCD12232引脚说明………………8186062.4.2LCD12232与单片机接线图………92.5基于单片机的公交报站系统电路…………………10280423基于单片机的公交报站系统软件设计………………1155963.1主控程序设计………………………11106613.1.1基于单片机的公交报站系统主流程图…………11169133.2语音模块设计及流程图……………123.2.1语音模块设计……………………1267753.2.2语音模块流程图…………………12111394基于单片机的公交报站系统硬件与软件的的调试…………………134.1硬件的调试…………134.1.1整体电路的检测与调试…………1372564.1.2电源电路的调试…………………144.1.3LCD12232的调试…………………144.2软件的调试…………15178844.2.1ISD4004语音模块的软件调试……………………154.2.2LCD12232显示模块的软件调试…………………154.2.3软硬件的联机调试………………155基于单片机公交报站系统的结论……………………17431致谢………………………18参考文献…………………19附录Ⅰ(实物图)…………20附录ⅡISD4004语音录放程序…………21附录ⅢLCD12232显示程序……………30基于单片机的公交报站系统第第页1绪论1.1手动式公交车辆自动报站系统概述公共汽车为外出的人们提供了方便快捷的服务,而公共汽车的报站直接影响服务的质量。传统由乘务人员人工报站,该方式因其效果太差和工作强度太大,在很多大城市已经被淘汰。近年来,随着科学技术的日益发展和进步,微型计算机技术已经在许多领域得到了广泛的应用。在声学领域,微机技术与各种语音芯片相结合,即可完成语音的合成技术,使得汽车报站器的实现成为可能,从而为市民提供了更加人性化的服务。鉴于传统公交车报站系统的不足之处,本文结合公交车辆的使用特点及实际营运环境,设计了一种由单片机控制的公交报站系统。公交车报站系统的设计主要是为了弥补改变传统报站必须有司机进行人工报站的缺点,现在进出站只需按键即可自动播报站名及服务用语,为市民提供更人性化,更完善的服务。1.2报站系统在国内外的发展状况通过在网上对报站系统的了解,目前国内外报站系统主要有一下三种:第一种是利用GPS全球定位系统的自动报站系统,GPS语音自动报站系统,采用卫星定位技术,彻底改变了传统公交车语音报站系统必须由司机人工操控才能实现的落后方式,通过全球定位技术确定公交车集体所在位置,准确的报出车辆所在站名。他的报站方式不需要人工介入,在报站系统领域完全智能化、准确化、人性化。目前,在国外一些发达城市已经投入运用了。在国内,一些城市正处于试验阶段,像北京、广州、青岛等几个大型城市已经采用了GPS自动报站技术。但这种系统方案所需要的技术要求过于复杂,而且开发成本也比较昂贵,不适合运用在中小型城市。第二种是基于电磁波技术的公交车自动报站系统。工作原理是在公交车底部安装数匝带微弱电量的线圈,再在距离站牌数十米出的车道下面埋设数匝线圈,让其两端连接到站牌,并在站牌上安装传输电磁波的相关装置。当公交车行驶到路下线圈时,会切割车子底部线圈产生感应电流,再触动装置进行发送电磁波,然后在车上显示出相关的站台信息。该系统的缺点是道路铺设难度大,价格昂贵,而且还没有投入使用,可靠性方面没有实际验证。第三种是基于单片机的公交报站系统,而这种系统在运用上又分为两种。其中的一种是通过对车轮转速来测出各个站台之间的距离,然后根据距离来设计出各个站台的站名进行播报,例如,两个站之间是三千米,设计当车行驶两千八百米的时候报站。由此可以看出该系统的缺点就是不准确,不适合投入到城市中应用。另外一种就是手动式公交报站系统,快到站的时候只需按下按钮就可以报出站牌。具体流程就是按键控制电流通断发出脉冲信号,单片机接收后经过处理调动语音芯片进行报站,同时在液晶屏上显示出站台信息。这就是我所做论文中设计的报站系统。这种报站系统结构简单,程序编写容易,芯片价格低,性价比高,是公交车报站系统里比较好选择。2基于单片机的公交报站系统硬件设计本设计采用STC89C52单片机作为整个系统的控制器。主要组成部分为控制器单片机、语音播报模块、液晶显示模块及按键电路模块。设计原理:根据课题要求,要实现单片机控制,语音报站与液晶显示的结合。故设计中利用单片机作为控制器,加上上电复位电路,语音模块,显示模块及按键电路确定大体设计思路。上网查阅资料,查找缺少器件,分析电路的可行性,根据实际需要确定设计思路,画出原理图,确定设计原理。工作原理:按键按下后,触发单片机中断。单片机根据事先安排好的报站顺序,进行语音报站和相应的汉字液晶显示。2.1基于单片机的公交报站系统总体设计框图基于单片机的公交报站系统总体设计主框图如图2-1所示,利用按键控制单片机,单片机控制语音模块的发音与液晶模块的显示。单片机(控制器)语音播报模块液晶显示模块按键单片机(控制器)语音播报模块液晶显示模块按键图2-1基于单片机的公交报站系统总体设计框图2.2STC89C52单片机最小系统2.2.1STC89C52单片机特性1.8K字节程序存储空间;2.512字节数据存储空间;3.内带2K字节EEPROM存储空间;4.可直接使用串口下载;2.2.2STC89C52单片机管脚说明本设计属于小型设计项目,信息处理量小,选用STC89C52作为主控芯片,它成本低,开发周期短,配合各种芯片能够实现丰富的功能。STC89C52引脚排列如图2-2所示。图2-2单片机引脚示意图引脚说明:VCC:电源接入引脚。GND:接地引脚。XTAL1和XTAL2:晶体振荡器产生时钟脉冲的输入端。P0:作为低8位地址和8位数据分时复用I/O口。P1:通用准双向I/O口,内部有上拉电阻,所以引脚不用接上拉电阻。P2:内部设有上拉电阻的8位准双向I/O口,输出8位地址,在编程或校验时接受高位字节地址。P3:作为字节或位寻址时属于多功能双向I/O口;不进行字节或位寻址时还可以用作第二功能使用。引脚定义如下:P3.0:RXD(串行口输入)P3.1:TXD(串行口输出)P3.2:(外部中断输入)P3.3:(外部中断输入)P3.4:T0(定时器外部输入)P3.5:T1(定时器外部输入)P3.6:(片外数据储存器“写”选通输出)P3.7:(片外数据储存器“读”选通输出)2.2.3外部晶振的选择AT89C52的内部有一个用于构成振荡器的高增益反相放大器。通过XTAL1,ATAL2外部接上一片作为反馈元件的晶体,与C1和C2构成了并联谐振电路,使其构成自激振荡器。电容的值通常30PF。AT89C52单片机外接的是12MHZ的晶振,则机器周期为1us。与单片机的接线图如图2-3所示。图2-3晶振与单片机接线图2.2.4上电复位电路复位的作用是使程序上电后从0000H开始执行,因此我们只要在AT89C52单片机的RST端加上一个高电平信号,并持续10ms以上即可,RST端接有一个上电复位电路,它是由一个小的电容和一个接地的电阻组成的。与单片机的接线图如如图2-4所示。图2-4上电复位电路与单片机接线图2.2.5按键电路模块对于此设计来说要准确的显示设计所要对应的信息,每按下一次按键要显示所要显示的信息。功能的实现主要是通过程序来实现,按键1控制当前到达站点的报站,当报站系统启动后,按下按键1开始按预先设置好的站名进行当前到达站点的报站,本设计设置的是从站名“AAAAAAA”到“EEEEEEE”依次报站,每次按键按下时实现LED显示文字,语音芯片播报站名。按键2是实现公交车提示下一站站点的报站,即从下一站站点站名“BBBBBBB”到“FFFFFFF”的依次报站,也满足每次按键按下时实现实现LED显示文字,语音芯片播报站名。既按键1按完后将会报出“XXXXXXX”站到了,然后按下按键2将会报出下一站“YYYYYYY”。既按键1与按键2循环按下,就可实现整体报站流程。图2-5为按键模块与单片机的接线图。图2-5按键电路模块与单片机接线图2.3语音模块本设计采用的是ISD4004语音芯片。该芯片采用的是CMOS技术,该模块包含振荡器、滤波器、音频放大器、自动静噪等。芯片可通过串行通信接口SPI送入,能够非常真实地体现音效,避免了普通录音电路因量化和压缩造成的噪声和"金属声"。频率越低,录放时间越长,音质越低,片内信息存于存贮器中,可反复录制10万次,并且能保存100年。2.3.1ISD4004引脚说明ISD4004系列工作电压3V,单片录放8至16分钟,可反复录音10万次,满足报站所需要求。该芯片必须由微控制器控制,操作命令可通过串行通信接口MISO送入。由于公交车内噪声较大,所以采用TDA2822集成功放电路。此功放电路具有集成度高,外围元件少,音质好等特点。由于本功放为直接耦合,输入信号时不能带直流成分。如果有直流成分时,则必须在输入端串接4.7-10uF左右的电容隔开,否则电流过大会造成扬声器的烧毁。ISD4004芯片引脚图及功能如图2-6。图2-6ISD4004引脚图SS:低电平有效,即向ISD4004芯片发送指令,两条指令间为高电平;MOSI:串行输入端;MISO:串行输出端;NC:空脚;AUDOUT:音频信号输出端,能驱动5KΩ负载;AMCAP:自动静噪端,大信号时静噪电路不衰减,静音时衰减6dB;RAC:行地址时钟漏极开路输出;INT:中断漏极开路输出,当存贮器溢出或放音结束标志位出现时,该端为低电平并保持;XCLK:外部时钟输入端,在不外接地时钟时,此端必须接地;SCLK:串行时钟,用于同步串行数据传输。2.3.2ISD4004与单片机的接线图ISD4004与单片机的接线图如图2-7所示。图2-7ISD4004与单片机的接线图2.4液晶显示模块本设计采用带中文字库的LCD12232液晶显示芯片进行信息的显示。它具有以下特点1、具有低功耗、供应电压范围宽等特点。2、具有16common和61segment输出,并可外接驱动IC扩展驱动。3、具有2560位显示RAM(DDRAM),即80×8×4位4、具有与68系列或80系列相适配的MPU接口功能,并有专用的指令集,可完成文本显示或图形显示的功能设置。可显示点阵的汉字,也可完成一些图形显示。与同类液晶显示装置相比,不论是硬件电路或着显示程序都比较简洁。2.4.1LCD12232引脚说明LCD12232可以显示字符、汉字等大量信息,而且控制简单。传统的液晶显示器件显示信息有限,有的只能显示字符和数字,不能显示汉字。所以本系统选择性价比高的LCD12232液晶进行信息显示。LCD12232芯片引脚表表2-1LCD12232引脚表序号引脚名功能序号引脚名功能1VDD逻辑电源正10D1数据输入输出引脚2VSS逻辑电源地11D23V0LCD驱动电源12D34/RST复位端13D45E1读写使能14D56E2读写使能15D67R/W读写选择16D78A0数据/指令选择17LED+背光电源正(DC+5V)9D0数据输入输出引脚18LED-背光电源负(0V)2.4.2LCD12232与单片机接线图LCD12232工作原理:通过C语言编程,利用单片机控制LCD12232的正常显示,程序见附录ⅡLCD12232与单片机接线图如图2-8所示。图2-8LCD12232与单片机接线图2.5基于单片机的公交报站系统电路图图2-9为基于单片机的公交报站系统电路图图2-9基于单片机的公交报站系统电路图3基于单片机的公交报站系统软件设计3.1主控程序设计程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。为实现预期目的而进行操作的一系列语句和指令。一般分为系统程序和应用程序两大类。计算机中的程序在港澳台地区称为程式。程序就是为使电子计算机执行一个或多个操作,或执行某一任务,按序设计的计算机指令的集合。3.1.1基于单片机的公交报站系统主流程图接通电源,系统初始化,开始显示毕业设计的作者名称及所乘坐的公交线路。按键后,系统接收到信号,语音播报到站信息,LCD屏显示到站信息。基于单片机的公交报站系统主流程图如图3-1所示。图3-1基于公交报站系统主流程图3.2语音模块设计及流程图3.2.1语音模块设计该部分程序包括两个子程序:录音子程序以及放音子程序。语音芯片ISD4004在器件延时后才能开始操作。因此,当用户发完上电指令后,必须等待延时才能发出一条操作指令。部分指令如下:POWERUP:上电,等待延时后工作;SETPALY:从指定的地址放音,比须后跟PLAY指令使放音继续;PLAY:从当前地址放音,直至EOM或OVF;SETREC:从指定地址录音,必须后跟REC指令录音继续;REC:从当前地址录音,直至OVF或停止;STOP:停止操作;STOPWRDN:停止并掉电;RINT:读状态。3.2.2语音模块流程图录入程序后,上电后,语音模块复位,开始录音。按下按键1开始录音。录音完毕后按下按键2开始播放已录制好的声音。具体流程图如图3-2及图3-3所示。开始开始送录音地址开始录音返回按键1是否按下YN图3-2录音流程图释放录音释放录音按键2自动放音送放音地址返回图3-3放音流程图4基于单片机的公交报站系统硬件与软件的调试4.1硬件的调试4.1.1整体电路的检测与调试先观察所焊接的实物是否有虚焊,再拿万用表检测是否有焊接失误,有些地方是否有断路或者短路。发现有短路或断路的地方重新焊接。实践中发现有些地方没有焊接良好,导致有短路的产生,重新焊接检查无误后需要再接入电源检查电路。图4-1基于单片机的公交报站系统焊接检测与调试图4.1.2电源电路的调试接通USB电源接口,观察电源指示灯是否正常点亮,如果正常点亮,则说明电源部分电路正常;否则检测电源电路故障,直到电源指示灯正常点亮。实践过程中发现电源电路正常工作,没有出现异常,图4-2为电源电路的调试。图4-2电源电路的调试4.1.3LCD1232的调试接通电源,观察液晶的屏是否有荧光,如果有荧光说明液晶部分电路正常。实践中发现液晶电路正常,没有什么异常,图4-3为LCD12232的调试。图4-3LCD12232的调试4.2软件的调试4.2.1ISD4004语音模块的软件调试(程序见附录Ⅱ)接通电源,利用单片机开发板和报站系统下载接口下载程序到单片机中,然后进行录音,首先按录音键开始录音,录入语音后按放音键检查是否录入需要的语音提示。开始录入声音后,无法播放。通过网上查阅资料和查看书籍,找到了软件中的错误,经过修改软件,重新下载程序录音后。可以录音放音,但是录入了几句后音又放不出来,通过自己的思考以及老师和同学的指导,最终知道原来是语音芯片有一些问题,重新购买语音芯片,下载完程序后录音成功。4.2.2LCD12232显示模块的软件调试(程序见附录Ⅲ)接通电源,利用单片机开发板和报站系统下载接口下载程序到单片机中,然后观察显示屏的显示,开始发现显示屏显示的内容和语音播报内容不一致,后来经过程序的修改调序,重新下载程序后解决了该问题,最终实现语音和显示的同步进行。4.2.3软硬件的联机调试接通电源,系统开始初始化,显示设计作者以及当前线路公交车信息。图4-4和4-5为接通电源后报站系统所显示的信息。图4-4接通电源初始化实物显示图1图4-5接通电源初始化实物显示图2按下按键1后,显示当前站点名称,按下按键2后提示下一站名称,图4-6和图4-7分别为按键1按下后及按键2按下后的效果图。图4-6按键1按下提示当前站点图图4-7按键2按下后提示下一站站点图5基于单片机公交报站系统的结论经过多天的努力,本系统基本达到了预先的要求,能够实现设计中提出的功能方案。通过系统测试以及与其它方式的报站对比,本系统的优点在于实现了功能的前提上,使用的器件成本较低,操作简便。只需按键便可实现语音报站与液晶显示的结合。缺点是由于语音芯片与喇叭的质量问题,声音不是非常清晰,可能是语音芯片和喇叭质量不好的原因。与其他报站系统相比简洁性还有待提高,还是需要有人按键才能实现报站,不能达到自动报站。在将来的应用中可以集成无线模块和GPS模块,提高精度并实现调度中心对车辆的实时跟踪和调度。成为一个专业化、模块化的公交系统平台。致谢在这三个月的学习时间里,在老师的悉心指导和我们的积极努力下,本人所设计的公交车报站系统终于取得了比较另人满意的结果,现就此次设计谈一下自己的体会:首先,对个人的学习能力有一定的提高,为了这次设计,我在图书馆和网上查阅了不少的资料,思考了不少的问题,以前的学习通常是老师手把手的把一门课程从头讲到尾,这次却基本上靠自己来系统地学习制作,碰到问题的时候先通过查书或上机自己先试着解决,如果还不能解决的话,在请教导师。这样的过程锻炼可自己的独立解决问题的能力。本次毕业设计,我从对知识的不了解到学习实践,基本掌握了基于单片机的公交报站系统的流程和方法,通过亲自实践,认识到自身的不足,以此激励自己不断的学习和实践。毕业论文能够顺利完成,离不开学校提供的教学环境,各位教师的悉心指导和同学的热情帮助。再此特别感谢指导教王老师的悉心指导,在整个毕业设计过程中,王老师以严谨的治学态度对我遇到的问题给予认真详细的解答。同时感谢在此期间给予过帮助的老师和同学。谢谢!参考文献[1]胡汉才.单片机及其接口技术[M].北京:清华大学出版社.2011.[2]周国雄.单片机应用系统设计精讲[M].北京:中国铁道出版社.2011.[3]梁子伊.ISD4004系列语音芯片的单片机控制技术[J].单片机与嵌入式系统应用.2003,(7):61-62[4][5]徐永权.ATMEL89系列单片机应用技术[M].北京:北京航空航天大学出版社,1999[6]安静宇.基于非接触式IC卡门禁系统的设计[D].西安科技大学,2006:12-45.[7]赵妍妮.I2C总线的单片机C语言实现及应用[J].微机发展,2001,12(4):172-174.[8]孙晓靖;远程环境监测信息系统的研究与设计实现[D];东华大学;2004年[9]杜建明;汽车检测多功能综合试验台的应用研究[D];山东大学;2007年[10]付清山;基于.NETRemoting的数据采集及设备监测系统开发[D];东南大学;2006[11]杜渐;3G网管性能数据的采集技术与研究[D];东南大学;2005年[12]康华光.电子技术基础[M].数字部分.高等教育出版社,1998[13]王素珍,郑淑芬,周梅.称重配料系统传感器电源及放大电路[J].传感器技术,2006[14]周立功.单片机ZLG7289B串行接口LED数码管及键盘管理器件数据手册[15]康华光.电子技术基础[M].数字部分.高等教育出版社,2006附录Ⅰ(实物图)附录ⅡISD4004语音录放程序#include<reg52.h>//包含单片机寄存器的头文件#include<intrins.h>//包含_nop_()函数定义的头文件#defineucharunsignedchar#defineuintunsignedintvoiddelay(uintz);/*变量定义*/sbit_cs=P1^0;sbit_sclk=P1^2;sbit_mosi=P1^1;sbit_miso=P1^3;sbit_rac=P1^4;sbit_int=P1^5;sbitLED=P1^7;sbitCS=P2^0;sbitSID=P2^1;sbitSCLK=P2^2;sbitkai=P3^2;sbitguan=P3^3;ucharj=0;uintcodeadd[]={0,150,300,450,600,750,900,1050,1200,1350,1500,1650,1800,1950,2100,2250};uchara,b,c,d,flag=0,j,flag0,u,flag1=1;ucharcodem[10][13]={{"毕业设计"},{"欢迎乘坐"},{"汽车南站"},{"中建五局"},{"林科大"},{"铁道学院"},{"砂子塘"},{"东塘北"},{"曙光路口"},{"长沙火车站"}};ucharcoden[3][13]={{"作者:张嘉华"},{"07路公交汽车"},{"下一站:"}};/***********ISD4004驱动程序****************************/voiddelay(unsignedinti)//延时程序{while(i--);}voidstopmode()//停止{unsignedcharm,i,j;_cs=1;_sclk=0;_cs=0;m=0x30;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;}voidpowerdown()//下电{unsignedcharm,i,j;_cs=1;_sclk=0;_cs=0;m=0x10;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;}voidpowerup(){unsignedcharm,i,j;_cs=1;_sclk=0;_cs=0;m=0x20;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;}voidrecord4004(unsignedintaddress){unsignedchari,m,j;unsignedintdatasoute=0;powerup();delay(5118);//上电延时powerup();delay(5118);//上电延时delay(5118);//上电延时_cs=1;_sclk=0;m=0xa0;_cs=0;for(i=0;i<16;i++){address=_iror_(address,1);datasoute=address<<1;_mosi=CY;_sclk=0;_sclk=1;}for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;_sclk=0;m=0xb0;_cs=0;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;P0=0xff;datasoute=0;/*while(_int==1)//存储地址换行标志{if(_rac){delay(20000);datasoute++;}//记录本次录音所占的行数(也就是本次录音有多大)////在这里应该加上自己的程序,就是录音退出程序}*/}//whileend;voidaudioout(unsignedintaddress)//放音程序{unsignedchari,m,j;unsignedintdatasoute;powerup();_cs=1;_sclk=0;_cs=0;m=0xe0;for(i=0;i<16;i++){address=_iror_(address,1);datasoute=address<<1;_sclk=0;_mosi=CY;_sclk=1;}for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_sclk=0;_mosi=CY;_sclk=1;}_cs=1;_sclk=0;m=0xf0;_cs=0;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_sclk=0;_mosi=CY;_sclk=1;}_cs=1;P0=0xff;/*while(_int==1){}//whileend;*/}/**************ISD4004驱动程序结束*******************/voiddelay_1ms(uintx) //毫秒级别延时{uinti,j;for(j=0;j<x;j++)for(i=0;i<110;i++);}/************中断初始化*********/voidinit() //初始化{EA=1;EX0=1;EX1=1; IT0=1; IT1=1; }voidmain(void){ init(); while(1);}voidjishu1()interrupt0{uchari;EA=0;delay_1ms(20);if(kai==0){ record4004(add[i]); i++; }EA=1;}voidjishu2()interrupt2{uchari;EA=0;delay_1ms(20); if(guan==0) { stopmode(); delay_1ms(200); powerdown(); delay_1ms(200); audioout(add[i]); while(_int==1); powerdown(); i++;}EA=1;}附录ⅢLCD12232显示程序#include<reg52.h>//包含单片机寄存器的头文件#include<intrins.h>//包含_nop_()函数定义的头文件#defineucharunsignedchar#defineuintunsignedintvoiddelay(uintz);/*变量定义*/sbit_cs=P1^0;sbit_sclk=P1^2;sbit_mosi=P1^1;sbit_miso=P1^3;sbit_rac=P1^4;sbit_int=P1^5;sbitLED=P1^7;sbitCS=P2^0;sbitSID=P2^1;sbitSCLK=P2^2;sbitkai=P3^2;sbitguan=P3^3;ucharj=0;uintcodeaddress1[]={0,300,600,900,1200,1500,1800,2100};uintcodeaddress2[]={150,150,450,750,1050,1350,1650,1950,2250};uchara,b,c,d,flag=0,j,flag0,u,flag1=1;ucharcodem[10][13]={{"毕业设计"},{"欢迎乘坐"},{"汽车南站"},{"中建五局"},{"林科大"},{"铁道学院"},{"砂子塘"},{"东塘北"},{"曙光路口"},{"长沙火车站"}};ucharcoden[3][13]={{"作者:张嘉华"},{"07路公交汽车"},{"下一站:"}};/***********ISD4004驱动程序****************************/voiddelay(unsignedinti)//延时程序{while(i--);}voidstopmode()//停止{unsignedcharm,i,j;_cs=1;_sclk=0;_cs=0;m=0x30;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;}voidpowerdown()//下电{unsignedcharm,i,j;_cs=1;_sclk=0;_cs=0;m=0x10;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;}voidpowerup(){unsignedcharm,i,j;_cs=1;_sclk=0;_cs=0;m=0x20;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;}voidrecord4004(unsignedintaddress){unsignedchari,m,j;unsignedintdatasoute=0;powerup();delay(5118);//上电延时powerup();delay(5118);//上电延时delay(5118);//上电延时_cs=1;_sclk=0;m=0xa0;_cs=0;for(i=0;i<16;i++){address=_iror_(address,1);datasoute=address<<1;_mosi=CY;_sclk=0;_sclk=1;}for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;_sclk=0;m=0xb0;_cs=0;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_mosi=CY;_sclk=0;_sclk=1;}_cs=1;P0=0xff;datasoute=0;/*while(_int==1)//存储地址换行标志{if(_rac){delay(20000);datasoute++;}//记录本次录音所占的行数(也就是本次录音有多大)////在这里应该加上自己的程序,就是录音退出程序}*/}//whileend;voidaudioout(unsignedintaddress)//放音程序{unsignedchari,m,j;unsignedintdatasoute;powerup();_cs=1;_sclk=0;_cs=0;m=0xe0;for(i=0;i<16;i++){address=_iror_(address,1);datasoute=address<<1;_sclk=0;_mosi=CY;_sclk=1;}for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_sclk=0;_mosi=CY;_sclk=1;}_cs=1;_sclk=0;m=0xf0;_cs=0;for(i=0;i<8;i++){m=_cror_(m,1);j=m<<1;_sclk=0;_mosi=CY;_sclk=1;}_cs=1;P0=0xff;/*while(_int==1){}//whileend;*/}/**************ISD4004驱动程序结束*******************//************12232驱动程序***************************/voiddelay_1ms(uintx) //毫秒级别延时{uinti,j;for(j=0;j<x;j++)for(i=0;i<110;i++);} voidsend_command(ucharcommand_date)//写指令{uchari;uchari_date;i_date=0xf8;CS=1;SCLK=0;for(i=0;i<8;i++){SID=(bit)(i_date&0x80);SCLK=0;SCLK=1;i_date=i_date<<1;}i_date=command_date;i_date&=0xf0;for(i=0;i<8;i++){SID=(bit)(i_date&0x80);SCL

温馨提示

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

评论

0/150

提交评论