毕业设计 - 图文

更新时间:2024-04-24 00:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河南科技学院

2011届本科毕业论文(设计)

论文题目:基于单片机的自动导游系统设计

学生姓名:毛渊洋

所在院系:机电学院

所学专业:应用电子技术教育

导师姓名:徐君鹏

完成时间:2011年05月27日

摘 要

电子导游机最开始时是一种半自动化系统,它的功能只是把景点信息以语音文件格式存储在导游机里,一般通过键盘直接键入景点代码,选择播放。全自动化的电子导游系统,它在景点先安放无线发射模块,这些发射模块可以控制工作范围,这样在各个景点就有不同的编码信号。游客到达景区某个景点后,游客手上的导游机会自动接收编码信号,经过解码后,由控制中心控制语音播放即可。当有紧急事件是有GSM模块发送信号通知。系统电子导游机的硬件采用51系列的单片机作为控制中心,语音模块miniC-A101FS进行语音播放,编解码芯片SC2262/SC2272进行无线收发信号的编解码,GSM模块使用TC35i模块进行紧急拨号。

关键字:电子导游;单片机;编解码芯片;串口语音模块;GSM模块;

Abstract

Most e-start guide machine is a semi automated system, its function is to spot a voice file format information stored in the guide unit, the general attractions through the keyboard by typing the code, select Play.Tourists in this article guides the hands of the electronic control unit using the serial port voice module miniC-A100FS, microcontroller 51 using more generic AT89C51 MCU as a system of control processing unit, codec chip SC2262 /SC2272 and the GSM module TC35i module.Electronic guide automation system, which placed first in spot radio transmitter module, the transmitter module can control the scope of work, so there are different spots in each coded signal.Visitors reach the attractions, visitors guide the hands of the opportunity to automatically receive encoded signals, after decoding by the control center can control the audio playback.When an emergency is to send signals to the GSM module.

Electronic guide;Single-chip;Codec chip;Serial port voice module;Keyword:

GSM module

目 录

1 绪论 ............................................................................................................................ 1

1.1 设计的意义和发展趋势 .................................................................................. 1 1.2 设计的要求 ...................................................................................................... 1 2 模块选择 .................................................................................................................... 2

2.1 AT89C51单片机 .............................................................................................. 2 2.2 射频发射接收模块 .......................................................................................... 3

2.2.1 射频发射模块F05P .............................................................................. 3 2.2.2 射频接收模块J04P ............................................................................... 3 2.3 SC2262/2272编解码芯片 ................................................................................ 4 2.4 语音播放模块miniC-A101FS ........................................................................ 5 3 系统结构框图 ............................................................................................................ 6

3.1 发送电路 .......................................................................................................... 7 3.2 接收电路 .......................................................................................................... 7 3.3 语音播放电路 .................................................................................................. 8 3.4 GSM模块 ......................................................................................................... 9

3.4.1 GSM模块电路 ....................................................................................... 9 3.4.2 GSM AT指令 ....................................................................................... 10

4 软件设计 .................................................................................................................. 10

4.1 主程序流程图 ................................................................................................ 11 4.2 语音播放程序流程图 .................................................................................... 12 4.3 GSM模块流程图 ........................................................................................... 12 5 结束语 ...................................................................................................................... 13 致谢 .............................................................................................................................. 13 参考文献 ...................................................................................................................... 14 附录1 电路原理图 ..................................................................................................... 14 附录2 程序清单 ......................................................................................................... 16

1 绪论

1.1 设计的意义和发展趋势

改革开放以来,伴随着中国旅游业的高速发展,我国旅行社行业发生了巨大的变化,特别是近十年来,行业规模不断扩大,从业人员不断增加,经营体制不断创新,经营环境不断改善,旅行社行业已经成为我国拉动经济增长、扩大就业渠道的重要的服务行业之一。而随着越来越多的把旅游当作节假日的一种休闲方式,而有些问题也随之产生,如导游人员的缺乏及其素质不高,加之大批喜欢独立自由的旅游者的出现,这些促使了电子导游系统的产生。

导游系统刚开始发展时间是一种半自动的系统,功能是把景点信息以语音文件格式存储在导游机里,一般通过键盘直接键入景点代码,选择播放。这种类型的导游机,缺点是要输入景点代码,很不方便。发展到现在,出现了全自动化的导游机,它在景点先安放无线发射模块,这些发射模块可以控制工作范围,这样在各个景点就有不同的编码信号。游客到达景点后,游客手上的导游机会自动接收编码信号,经过解码后,由控制中心控制语音播放即可。

电子导游相比较与人工导游方面,人工导游的的全职导游的减少,以及大量自由旅游者的出现和旅游电子商务的迅速普及等等,导致了人工导游职业的困难加大。这就造成了电子导游的迅速发展,解决了无导游讲解看不懂景点,不再走马观花,获得更高的旅游质量,而且旅游期间自由旅游者喜欢时间和路线自己做主,自己决定何时出发,何时休息,走哪条线路,在哪里停留,欣赏喜欢的风景。

而且当前市场上的电子导游通常都是只进行景点的语音播放,当旅行者在景区旅游碰到各种事故时,景区不能实时掌控,比如:语音播放出现故障;查找别的景区;迷路等。

电子导游系统是一种旅游讲解专用设备,它可以把景区和陈列展示的物品图文并茂的表现出来,使观众在边看边听中,汲取知识,了解内涵,享受文化。许多游客和参观人士,在游览和观赏过程中,由于不了解景物和展品丰富的文化内涵,对众多本该驻足观赏、细细品味的人文、历史景观等往往是走马观花、视而不见!造成了旅游资源的极大浪费。既来之,则观之,赏之、品之、思之,这才是游览观赏的价值所在!景点和物品配臵电子导游机系统后,游客们可以充分了解观赏对象深厚的文化底蕴。睹物思情、浮想联翩,景点、展品的丰富内涵在讲解中得到了升华。使游客如痴如醉,游而忘返。使用电子导游系统可以有效配臵人力资源。由于讲解人员有限,特别是外语讲解,很难为每位游客提供规范如一的讲解服务,电子导游机系统为散客和外国游客的参观提供了便利。更加为了那些自由旅游者提供了良好的条件。 1.2 设计的要求

本系统的主要要求为:

(1)单片机实现对MP3存储电路的控制,实现相应的语音播放。 (2)景点标签自动识别电路。 (3)GSM紧急拨号系统。

基于以上的设计要求本系统需要单片机,语音播放模块,无线收发模块,GSM模块。

1

2 模块选择

2.1 AT89C51单片机

12345678311011122914151617181920P1.0VccP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3AT89C51P1.5P0.4P1.6P0.5P1.7P0.6EA/VppP0.7(RXD)P3.0(INT1)P3.3(TXD)P3.1ALE/PROG(INT0)P3.2RSTPSENP2.7P3.4P2.6P3.5P2.5(WR)P3.6P2.4(RD)P3.7P2.3XTAL2P2.2XTAL1P2.1GNDP2.0403938373635343332133092827262524232221K611.0592MHzC1Y30PC230P图1 AT89C51管脚图

AT89C51单片机是一种低功耗/低电压/高性能的8位单片机。目前51单片机的使用非常广泛,关于51单片机设计开发的资料非常丰富[1]。使用C语言编程可以实现丰富的功能,在仿真环境上也可以很好地体现出本设计欲达到的效果,功能强大。本设计以AT89C51作为单片机。由于本课题属于小型项目,信息处理量不大,采用其他类型单片机进行设计存在成本高,开发过程复杂等各种情况,而且本系统的设计并不能发挥出这些类型单片机芯片的各种强大功能。基于以上优点的分析以及AT89C51的功能强大、价格低廉,我选择ATMEM公司的AT89C51作为控制芯片,成本低,开发周期短,配合各种专用芯片的使用能够很好的实现各种功能[2]。AT89C51的管脚图图上图1所示。 AT89C51管脚功能如下: VCC:供电电压。 GND:接地。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL

门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3.0 RXD(串行输入口),P3.1 TXD(串行输出口),P3.2 /INT0(外部中断0),P3.3 /INT1(外部中断1),P3.4 T0(记时器0外部输入),P3.5 T1(记时器1外部输入),P3.6 /WR(外部数据存储器写选通),P3.7 /RD(外部数据存储器读选通),P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高

电平时间。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

2

XTAL2:来自反向振荡器的输出。

AT89C51单片机的时钟电路可以由三种方式构成,即内部时钟方式、有源晶振方式和外部时钟信号方式。本系统为内部时钟方式,即采用外接晶振和电容组成的并联谐振电路[3]。 2.2 射频发射接收模块 2.2.1 射频发射模块F05P

F05P具有体积小、低功耗发射;声表稳频;无数据是发射电流为零;较宽的电压工作范围。 性能参数:

发射频率: 315MHz433MHz 频率稳定: 10 [声表稳频] 工作电压: DC+3V--12V 调制方式: ASK 发射电流: 2--10mA

外形尺寸: 9×21×5mm(宽X长X厚) 发射功率: 10mW

工作温度: -40℃--+60℃ 传输速率: <10Kbps F05P的引脚功能:

1--正电源(3--12V) 2--地

3--数据信号输入(平时为高电平) Y--外接天线

F05P在无数据输入时单片机必须为低电平状态。F05P需要输入数据才能发射,数据信号停止,发射电流为零。F05P对0.1-1ms的数据脉冲发射效果较理想,过宽过窄的脉冲会引起调制效率下降,过调制或调制不足使收发距离变近。采用通用编码器SC2262,发射效果比单片机好,因为2262的数据无论怎么变但脉宽是不变的,即使出现一点突发性的外界干扰,解码器的宽容性也会解码输出高电平。而单片机则会出现数据错误。

F05P应垂直安装在印板边部,应离开周围器件5mm以上,以免受分布参数影晌而停振。FO5P发射距离与输入信号,发射电压,电池容量,发射天线及发射环境有关。在障碍区由于折射反射会形成一些死区及不稳定区域,不同的收发环境会有不同的收发距离,F05P最佳有效工作距离为100M左右。

2.2.2 射频接收模块J04P

J04P具有小体积,特低功耗超再生接收模块;输出无噪声干扰;接收灵敏度高。 性能参数:

工作频率: 315MHz433MHz 灵敏度: 5uV

工作电压: DC+3V(2.6--3.6V) 电路结构: 超再生

3

工作电流: 0.15--0.3mA 外形尺寸: 10×23×5mm(宽X长X厚) 调制带宽: 10K 工作温度: -40℃--+60℃ 输出电平: TTL电平 引脚功能: 1--外接天线 2--数据输出端 3--数据反向输出(接收端) 4--工厂测试端(悬空) 5--地 6--正电源(DC+3V) J04P内部具有放大整形电路,只适合数据信号的接收而不适合模拟信号。J04P应按装在印板边部并离开周围器件5mm以上,要垂直于线路板,否则会引起频率偏移。如果器件较多还必须注意地线布局合理,如果有晶振或其他信号源必须远离J04P,否则会引起很多无法排除的干扰致使接收电路无法正常工作。J04P可外接天线提高接收灵敏度,天线长度不限。 2.3 SC2262/2272编解码芯片 SC2272987654321VssA7A6A5A4A3A2A1A0VccVTOSC1OSC2DinA11A10A9A8181716151413121110图2 SC2262/SC2272管脚图 本次设计中之所以选择SC2272/SC2262:编解码选通电路,具有良好的抗干扰性能;6路输出相互独立,并具有自锁功能;价格低、功耗小、单电阻振荡、适用电压范围宽等优点,外围电路简单,使用方便。由于本系统应用于景区,环境相对复杂,新品的抗干扰性能一定要良好。而且编解码芯片需要的外围电路较少,使用其他编解码芯片就会让系统变的更加复杂,所以它被广泛应用于外围电路较少的领域。 SC2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,工作电压范围2.6-15v,数据最多可达6位,地址码最多可达531441种,最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码。SC2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。[4]编码芯片SC2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片SC2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,SC2262不接通电源,其17脚为低 4 电平,所以315MHz的高频发射电路不工作,当有按键按下时,SC2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于SC2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。发送端PT2262输出12位编码,高8位为地址,低4位为数据。发送时以高位在前,低位在后的顺序逐次发送这12位码,其中地址码的逻辑状态为“0”,“1”,“悬空”,数据码的逻辑状态为“0”,“1”。[5]接收端PT2272接收到的地址与自身设臵的地址相同时,才将接收到的数据进行解码,并输出。SC2262/SC2272的管脚图如上图2所示。

管脚功能如下:

A0-A5:0-5码地址管脚。SC2272通过检测这六条三态的管脚来确定bit0-bit5的

编码波形。每个管脚均分别可臵为“0”、“1”或“f”(悬空)

A6-A11:6-11码地址管脚或5-0数据输出管脚。根据SC2272的规格不同,这六

条管脚即可作为高位码地址管脚,也可作为数据输出管脚。当这些管脚作为码地址管脚使用时,每个管脚可分别臵为“0”、“1”或“f”(悬空)。当作为数据输出管脚使用时,在同时符和以下两个条件的前提下,输出为“1”(Vcc),否则为“0”(Vss)。(1)所接受的地址码波形与码地址输入端的设臵匹配;相应位接收到的数据输出臵为“1”。

Din:数据输入管脚,接收到的编码信号由此脚串行输入。 OSC1:振荡器第一外接点。

OSC2:振荡器第二外接点,此二端外接一个电阻,以确定SC2272的基本振荡

频率。

VT:有效传输确认,高电平有效。当SC2272收到有效信号时,VT变为高电平。

由于SC2272与SC2262要完成整体的收发,需要两者匹配。即是,SC2262完成发射,送出当前的地址码和数据位数据。[6]当SC2272的当前地址与SC2262地址一致时,并接收到2帧以上SC2262发出的串行码,SC2272才开始接收SC2262送来的数据。为保证SC2272接收到SC2262两帧以上的串行码,SC2272的振荡频率要与SC2262的振荡频率相匹配。最佳的匹配振荡频率是SC2272是SC2262的两倍。这样才能完成整个无线信号的收发[7]。 2.4 语音播放模块miniC-A101FS

miniC-A101FS是串口控制的语音模块,使用简单,扩展灵活且性能高。它是由点创科技开发的miniC-A101FS系列长时间语音模块,是一款功能强大,性能稳定带MP3解码功能的语音模块,该模块不仅提供丰富的串口命令用于控制语音模块播放,还可以向上位机提供查询命令。其特性如下:高品质MP3立体声播放;支持MPEG1/2/2.5 layer3的MP3格式播放;支持FAT16、FAT32文件系统;支持支持USB2.0,通过USB接口更新音乐;支持上位机串口控制功能;提供复位引脚;支持Flash容量范围:0~1024MB;支持SD卡,容量范围16M~1G;本语音模块通过上位机发指令控制本模块内语音播放,可以灵活指令某首歌曲的播放;功能灵活,可播放指定曲目,读取配臵文件等。而且在9脚、10脚之间可以外接按键电路控制语音的音量大小[9]。

作为MP3播放的miniC-A101FS语音播放模块支持异步串口通信方式,可以通过串口接收上位机的命令。主控芯片的命令采用串口方式输出至MP3播放模

5

块,从而控制音乐播放[10]。 语音播放模块miniC-A101FS的管脚图如下图3所示: miniC-A101FS1098765KEYVccKEY3V3DGNDTXDRXDACKRESET3023图3 语音播放模块miniC-A101FS管脚图 语音播放模块miniC-A101FS的主要管脚功能如下表1所示: 表1 miniC-A101FS的主要管脚功能 引脚名称 ACK RXD TXD RESET Vcc VIN AGND 管脚号 5 6 7 23 30 22 27 功能 低电平:playing;高电平:STOP 串行数据输入 串行数据输出 复位 USB接口;上位机串口控制 工作电压 模拟地信号 3 系统结构框图 根据设计要求,系统整体电路包括AT89C51,无线收发模块,编解码电路及语音播放模块,GSM通信模块部分。系统整体框图如下图4所示: 上位机 单片机AT89C51 景点SC2262编码信号 GSM模块 F05P信号发射 喇叭 J04P接收信号 语音播放电路

图4 系统整体电路框图

SC2272解码 6

3.1 发送电路

+5VC4V+2C522u/16V-GNDI4O261522u/168P1.07P1.1C60.1F987654321VssA7A6A5A4A3A2A1A0SC22624.5V+10uR1R2R3R410K10K10K10KVccVTOSC1OSC2DinA11A10A9A818171615141312111047KR51.2MK2K3K4K54.5V123D1D2D3D4R6MAX232图5 发射电路 该电路采用无线发送,通过SC2262编码信号进行发送信号,最后通过电路外围的天线发射出去,工作距离可通过天线的长短和工作电压的高低来调节。由于本系统用于景区的发射,发射芯片要一直工作,而且景区内的景点不用发送的地址也不能相同,如下图发射电路所示的A8,A9,A10,A11脚接开关控制发射地址码和数据,VT脚就一直处于发送状态[11]。由于SC2262的外接震荡电阻要与SC2272相匹配,所以OSC1和OSC2的电阻选用1.2MHz,SC2272选用外接震荡电阻200K[12]。

由于在景区的景点比较多,本系统假设有景点9个,那么系统就需要SC2262在不同的景点分别设臵9个不同的发射地址,发射地址的改变通过发射电路图的K2、K3、K4、K5按键改变,按照不同的按键组合,一共可以有16种不同的地址编码,而本系统只需要用到9个。设臵地址码的原则是:同一个系统地址码必须一致;不同的系统可以依靠不同的地址码加以区分,至于设臵什么样的地址码完全随不同使用者的需要而改变[13]。而本系统可以设臵16个地址。具体的发射电路如图5所示: 3.2 接收电路

当接收到射频信号时,直接通过接收器将接收到的信号送至SC2272解码, SC2272对从Din端子送入的信号进行解码。所送入的编码波形被译成字码,它含有码地址位,数据位和同步位,解码出来的地址码以及数据送入单片机控制语音播放。本系统主要通过SC2272的10、11、12、13脚输出的地址码送入单片机的P0.0、P0.1、P0.2、P0.3口进行控制语音播放。而SC2272做以下动作:1、当解码得到有“1”数据时,驱动相应的数据输出端为高电平[15]。2、驱动VT输出为高电平,将此信号送反相器取反后,触发中断INT1。而且本系统通过74LS04的A4脚的高低电平控制Y4脚的输出来进行单片机的复位操作。具体的接收电路如图6所示:

7

VCCSC2272987654321VssA7A6A5A4A3A2A1A0VccVTOSC1OSC2DinA11A10A9A8181716151413121110R7200KP0.0P0.1P0.2P0.31231P3.3234567141312K1111098(AT89C51)RSTVCCD1R810KA1VccY1A6A2Y6Y2A5A3Y5Y3A4GNDY474LS04C22uF 图6 接收电路

3.3 语音播放电路

当接收的地址编码通过SC2272解码出来以后,送入单片机的4个P口,通过串口RXD、TXD向语音播放模块发送指令(0~15的地址码),控制语音播放模块里面对应的0~15的景点介绍。通过单片机接收从SC2272输出的P0.0、P0.1、P0.2、P0.3的地址编码控制语音芯片相对应的景点,语音播放模块开始播放相应景点的语音介绍。而且通过SC2272输出的VT脚的高电平,将VT脚的高电平送反相器取反后,74LS04的Y1脚就会输出低电平,触发中断INT1,通过中断控制子程序控制单片机不用再次扫描[17]。单片机的复位和语音播放模块的复位连在一起,当K1闭合时,74LS04的A4脚就输入低电平,Y4脚输出就为高电平,让RST管脚保持高电平(通常0.7Vcc以上电压)维持至少两个机器时钟,就会让单片机复位,之后RST管脚恢复为低电平。语音播放芯片miniC-A100FS的复位与单片机的相反,可以用同一个复位电路,闭合开关K1,语音芯片的RESET

C100.1uF56VCC7C118220uFLM386C12100uPR8104321R75KminiC-A101FS1098TXD7RXD6ALE5KEYVccKEY3V3DGNDTXDRXDACKRESETVCC(USB)3023图7 语音播放电路

脚就为低电平,芯片开始工作,反之不管单片机有无数据,语音芯片都会停止工作,而且此复位电路的复位逻辑稳定、可靠。而且本系统只会播放一次,不能重复播放同一景点两次[18]。语音的播放驱动电路通过LM386进行驱动喇叭进行语

8

音的播放。如上图7所示: 3.4 GSM模块 3.4.1 GSM模块电路

TC35应用非常广泛,使用人数更多,资料介绍比较全面详细。网络上也有很多电子爱好者、工程师对TC35i比较感兴趣,讨论的话题比较多,更有很多调试笔记等可以参考。而且采用TC35i作为信息传输、控制的系统越来越成熟,因此我们考虑选用该模块,这样风险较小,成功率较高,遇到问题方便解决。

V1LEDSIM卡GNDVccCLKI/ORSTC4C1+C1-C2-C2+O4I2Vcc-Vcc+16+5VC6222u/16C7V-GNDI4O261522u/168P1.07P1.1C80.1F1C5/1622uINV+35491022u/16R1010KVCCR910KC3100NMAX232RST4039383736353433323130292827262524232221201918171615141314121110VCC987654321ZIF 图8 T35的外围接口电路

TC35是SIEMENS公司推出的GSM专用调制解调器,它可在GSM网中完成语音、数据、短消息以及传真的传送,TC35具有标准的工业接口和完整的SIM卡阅读器,因此使用非常简单,它提供的命令接口符合GSM0705和GSM0707规范,并提供RS232数据口,模块和单片机接口通过40针数据电缆相连接。

TC35模块有40个引脚,通过一个ZIF(Zero Insertion Force,零阻力插座)连接器引出。这40个引脚可以划分为5类,即电源、数据输入/输出、SIM卡、音频接口和控制。可以快速、安全、可靠地实现系统方案中的数据、语音传输、短消息服务(Short MessageService)和传真。TC35i模块的工作电压为3.3—5.5V。模块有AT命令集接口[19]。此外,该模块常用工作模式有省电模式、IDLE、TALK等模式。通过独特的40引脚的ZIF连接器,实现电源连接、指令、数据、语音信号、及控制信号的双向传输。通过ZIF连接器及50Ω天线连接器,可分别连接SIM卡支架和天线。TC35i模块主要由GSM基带处理器、GSM射频模块、供电模块(ASIC)、闪存、ZIF连接器、天线接口六部分组成。作为TC35i的核心,基带处理器主要处理GSM终端内的语音、数据信号,并涵盖了蜂窝射频设备中的所有的模拟和数字功能。在不需要额外硬件电路的前提下,可支持FR、HR和EFR语音信道编码。

TC35模块的第1~5引脚是正电源输入脚通常推荐值4.2V,第6~10引脚是电源接地。11、12为充电引脚,可以外接锂电池,13为对外输出电压(共外电路使用),14为ACCU-TEMP接负温度系数的热敏电阻,用于锂电池充电保护控制。15脚是启动脚IGT,系统加电后为使TC35进入工作状态,必须给IGT加一个大于100ms的低脉冲,电平下降持续时间不可超过1ms[20]。16~23为数据输入/输出,分别为DSR0、RING0、RXD0、TXD0、CTS0、RTS0、DTR0 和DCD0。TC35模块的数据输入/输出接口实际上是一个串行异步收发器,符合ITU-T

9

RS232接口标准。

它有固定的参数:8位数据位和1位停止位,无校验位,波特率在

300bps~115kbps之间可选,默认9600。硬件握手信号用RTS0/CTS0,软件流量控制用XON/XOFF,CMOS电平,支持标准的AT命令集。其中18脚RxD0、19脚TXD0为TTL的串口通讯脚,需要和单片机或者PC通讯。TC35使用外接式SIM卡,24~29为SIM卡引脚。TC35的第32脚SYNC引脚有两种工作模式,一种是指示发射状态时的功率增长情况,另一种是指示TC35的工作状态,可用AT命令AT+SYNC进行切换,本模块使用的是后一种。30、31、32脚为控制脚,其中30为RTC backup,31为Power down,32 为SYNC。35~38为语音接口,35、36接扬声器放音。37、38可以直接接驻极体话筒来采集声音(37是话筒正端,39是话筒负端)。由于电源电压要求为+5.0V±5%(即+4.75V~+5.25V),因此模块引脚1、引脚2,引脚3均接系统的+5V电源。由于该模块无需初始化,上电后模块即可自动接收和发送定位数据,故不需要对其进行控制操作,即系统不必向GPS模块发出控制指令。89C51单片机的P1.0和P1.1口分别模拟串行通信的发送和接收,通信速率1200bit/s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8位数据,最后发送停止位。接收时,先判断P1.1接收端口是否有起始低电平出现,如有则按低位在先的顺序接收8 位数,最后判断P1.1口是否有停止高电平出现,如有则完成一个数据接收,否则继续等待。

TC35模块输入输出的TTL正电平逻辑不是+5V,而是+2.9V,因此,必须对该输入电平进行逻辑转换,系统需要在与单片机之间加一个MAX232电平转换电路[22]

。T35与单片机的外围接口如上图8所示: 3.4.2 GSM AT指令

AT指令功能:

AT+CMOS Send an SMS command (发出一条短消息指令) AT+CMGD Delete SMS message ( 删除SIM卡内存的短消息)

AT+CMGF Select SMS message formate(选择短消息信息格式:0-PDU;1-文本) AT+CMGL List SMS message from preferredstore(列出SIM卡中的短消息

PDU/text“RECUNREAD”-未读,1/“RECREAD”-已读出,2/“STOUNSENT”-待发,3/“STOSENT”-已发,4/“ALL”-全部的) AT+CMGR Read SMS message (读短消息) AT+CMGS Send SMS message (发送短消息)

AT+CMGW Write SMS message to memory (向SIM内存中写入待发的短消息) AT+CMSS Send SMS message from storage (从SIM内存中发送短消息) AT+CPMS Preferred SMS message storage (选择短消息内存) AT+CSCA SMS service center address (短消息中心地址) AT+CSCB Select cell broadcast message (选择蜂窝广播消息)

AT+CSMP Set SMS text mode parameters (设臵 短消息文本模式参数)

4 软件设计

自动导游机软件使用C语言编程,具有很高的编程效率。通过外部中断服务程序实现检测的功能。为实现编程结构清晰,采用各个模块单独编程,最后实

10

现各个模块的综合连接。软件主程序主要包括GSM紧急拨号系统程序和控制语音播放程序。语音播放程序主要通过串口连接,单片机控制是否播放语音信息,播放哪段语音信息,然后直接调用语音播放模块预设的语音程序进行相关的语音播放。GSM模块程序的设计是在AT指令的基础上通过单片机控制GSM模块进行紧急拨号。 4.1 主程序流程图

主程序流程图的初始化包括GSM模块的初始化以及语音播放模块和单片机的初始化。在初始化完成后,通过检测GSM的紧急拨号信号,进行控制是否进行紧急拨号。然后检测P1口的数据是否与收到的无线信号一致,通过单片机控制语音播放模块播放景点音乐。本系统设计的GSM模块的紧急拨号为最高级的检测级别,有单片机的P1.2口接按键开关进行控制GSM模块的紧急拨号程序。

由于本系统需要双串口,这种情况下,语音播放需要一个串口通信,GSM模块也需要一个串口通信,这就要求单片机具有双串口的功能,但我们知道AT89C51只提供一个串口,那么另一个串口只能靠程序模拟。模拟串口,就是利用单片机的两个输入输出引脚P1.0和P1.1,臵1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其臵0,停止位为高电平,则将其臵1,各种数据位和校验位则根据情况臵1或臵0。至于串口通信的波特率,只是每位电平持续的时间,波特率越高,持续的时间越短。如波特率为9600BPS,即每一位传送时间为1000ms/9600=0.104ms,即位与位之间的延时为为0.104毫秒。单片机的延时是通过执行若干条指令来达到目的的,因为每条指令为1-3个指令周期,可即是通过若干个指令周期来进行延时[23]。主程序流程图如下图9所示:

开始 N 程序初始化是否紧急拨号 N Y 数据码与语音播放模块存储数据是否一致 紧急拨号 Y 播放景点介绍 图9 主程序流程图

11

4.2 语音播放程序流程图

开始

为0 播放0地址的音乐 为1 播放1地址的音乐 为2 播放2地址的音乐 返回 图10 语音播放流程图

为3 播放3地址的音乐 为16 播放16地址的音乐 查询P0.0到P0.3的地址 语音播放模块初始化 4.3 GSM模块流程图

开始 按键是否按下 Y N 发送AT指令,建立通信连接 TC35i模块初始化,设臵消息模式 向指定号码发送短信 是否接收到短信? Y N 结束 图11 GSM模块流程图

12

5 结束语

经过几个月的努力,我终于完成了本次设计。本系统通过AT89C51单片机为控制芯片来进行控制语音播放和GSM的紧急拨号。通过查阅大量资料和向指导教师的请教,终于在徐老师的帮助下实现了本系统要求的各种功能。

在本次设计中,芯片的选择以及外围电路的设计花费本次设计大量的时间。经过查阅大量资料和请教徐教师,我确定了本次设计所使用的各种元件,也确定本次设计的思路。通过本次设计也让我知道了大量的以前不知道的各种芯片的原理以及功能。而且在设计中也发现了一些小问题,通过对这些问题的克服也让我学习了更多知识,也掌握了方法和技巧。

在旅游业高速发展的今天。自动导游机将完全取代传统的人工导游,普遍应用于各个景点,让人们的旅行更加方便。

致谢

这次毕业设计是在指导老师的精心指导和耐心鼓励下完成的。从课题选定到方案确定,从理论指导到实际操作指导老师为我作出了认真的分析和耐心的讲解,给我们提供了极大的帮助。让我们在学习知识和解决问题时感到无比的轻松和愉快,才使我的毕业设计能够顺利的进行下去。至此论文定稿之际,我向老师表示我最衷心的感谢,是他为我的学习阶段进行了启蒙指导,使我在设计中奠定了一定的理论基础。

同时,我也衷心感谢在我的五年的学习中教育和培养我的老师们,是他们给予了我很大的关怀和帮助,在此表示深深的感谢!也感谢我的师弟、师妹们,在我的学习、生活中给了我帮助,感谢他们的鼓励和支持。

13

参考文献

[1] 余永权.ATMEL89系列单片机应用技术[M]. 北京:北京航空航天大学出版社,2002.4 [2] SIEMENS.TC35i Terminal.[EB/OL].

[3] 李朝青.单片机原理及接口技术[M] .北京:北京航空航天大学出版社,2005 [4] AT89C51中文资料手册[EB]

[5] PT2262/2272编解码集成电路介绍[EB]

[6] 朱定华,黄松,蔡苗.Protel 99 SE原理图与印制板设计[M].北京:清华大学出版社,2007 [7] 韦宏利.语音芯片在报站器中的应用[J].现代电子技术.2003,(13):30-31

[8] 窦振中.单片机外围器件实用手册[M]. 北京:北京航空航天大学出版社,2003 [9] 苏文平.新型电子电路应用实例精选[M]. 北京:北京航空航天大学出版社,2004 [10] 张伟,孙颖,赵晶.Protel 99 SE高级应用[M].北京:人民邮电出版社,2007

[11] 安捷伦科技在2009年美国无线通信展(CTIA)上展出最新的移动通信测试与测量解决方案[J]. 国外电子测量技术, 2009, (05)

[12] 于艳,顾桓. MCS-51单片机和PC机问的串口通信[A].西安理工大学工程学院,2007

[13] 王圆妹,许劲,李涛.基于VB实现PC机与单片机的串行通信[J].中国科技信息,2006(22) [14] 刘艳玲,高云.单片机在工业控制上的应用[J].佳木斯大学学报,2006(02)

[15] 孟开元,王琦珑,曹庆年. 基于Zigbee的无线传感器网络的研究[J]. 中国科技信息,2009,(07)

[16] 柴争义, 徐红, 朱思峰. 无线个域网实现技术研究[J]. 通信技术, 2009,(04) [17] 夏礼智,应立军.大容量串行Flash的快速编程[B].长沙:中南大学铁道校区,2003

[18] 郭宏福,白丽娜,郭志华. 2.4GHz Zigbee数传模块传输距离的估算方法[J].西安电子科技大学学报, 2009, (04)

[19] 何艳. 低功耗芯片技术的研究及其RFID中的应用[D]. 上海:复旦大学,2008 [20] 王学华 利用GSM短信技术传输报警信号[J]. 辽宁:警察技术 2002.1

[21] 何立民.单片机应用技术选编[M]. 北京:北京航空航天大学出版社,2000 [22] 李鸿.用单片机控制手机收发短信息[J ].电子技术应用,2003(1)

[23] 袁小兵.基于GSM的数据采集与控制系统[J] .工程物理研究院科技年报,2003(1) : 403~404

14

30PC41C225u/16C1-C2-V-GNDI4O2MAX232RSTVcc+C230P16GNDVccCLKI/ORSTINVcc-4039383736353433323130292827262524232221201918171615141314121110987654321

R1R2R3R410K10K10K10KVCCSC2272R5200KP0.0P0.1P0.2P0.3123R610KA11A10A9A8D1VCC987654321VssA7A6A5A4A3A2A1A0VccVTOSC1OSC2DinA11A10A9A8R810R75K74LS044321miniC-A101FS181716151413121110C100.1uF56VCC7C118220uFLM386C12100uP231P3.32345VCC(USB)6307A1VccY1A6A2Y6Y2A5A3Y5Y3A4GNDY4C922uF141312K1111098(AT89C51)RST4039383736353433321330928272625242322211098TXD7RXD6ALE5KEYVccKEY3V3DGNDTXDRXDACKRESET+5VC6C1+22C7u/1661522u/168P1.07P1.1C80.1FV+247KR11R111.2M123D1D2D3D4354910C2+O4I222u/16987654321VssA7A6A5A4A3A2A1A0SC22624.5VVCC+10uR1R2R3R410K10K10K10KVccVTOSC1OSC2DinA11A10A9A8181716151413121110K2K3K4K54.5VVCC附录1 电路原理图

K611.0592MHz12345678311011122914151617181920P1.0VccP1.1P0.0P1.2P0.1P1.3P0.2P1.4P0.3AT89C51P1.5P0.4P1.6P0.5P1.7P0.6EA/VppP0.7(RXD)P3.0(INT1)P3.3(TXD)P3.1ALE/PROG(INT0)P3.2RSTPSENP2.7P3.4P2.6P3.5P2.5(WR)P3.6P2.4(RD)P3.7P2.3XTAL2P2.2XTAL1P2.1GNDP2.0C1YV1LEDSIM卡R1010KR910KC3100NVCCZIF15

附录2 程序清单

主程序:

#include \#include \#include \

#define uchar unsigned char//模拟串口

sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92;

sbit P31=P3^1; //串口输入 sbit re=P3^0; //串口输出

sbit reset=P3^3; //单片机、语音芯片复位

#define RXD P1_0 #define TXD P1_1

#define WRDYN 44 //写延时 #define RDDYN 43 //读延时

char i;

uchar code dis1[]=\语音内容更新或增加 uchar code dis2[]=%uchar code dis3[]=%uchar code dis4[]=%uchar code dis5[]=%uchar code dis5[]=%uchar code dis5[]=%uchar code dis5[]=%uchar *p;

void Delay1ms(unsigned int count) //延时1ms {

unsigned int i,j; for(i=0;i

void delay() { int i,j;

for(i=0;i<255;i++) for(j=0;j<120;j++); }

void send() //GPS发送 { re=0;

TMOD=0x02; //计数器工作模式:方式2 自动再装入的8位计数器EA=1; //允许全部中断

16

TH0=0xf3; //高8位计数器作为初值寄存器 TL0=0xf3; //低8位计数器初值 ET0=1; //允许计数器0的中断响应 }

main() {

p=dis1; //初始化界面 Print(p); //初始显示 delay();

reset=0; //语音芯片复位 delay(); delay(); delay(); reset=1; P31=1;

send(); //GPS发射 TR0=1; //启动计数器 while(1) {

Delay1ms(300);

while(P31); //判断P31口是否为1,如果是则循环直到是0后往下执行delay();

P24=0; // 从P24口输出一个负脉冲使FWD有效,指针指向下一段 delay(); P24=1; delay();

P20=0; // PLAY有效,播放当前段 delay(); P20=1;

if(i==5){i=0;}else{i++;} switch(i) {

case 0:{p=dis1;} break; case 1:{p=dis2;} break; case 2:{p=dis3;} break; case 3:{p=dis4;} break; case 4:{p=dis5;} break; };

GotoXY(6,1); //数据指针定位

void ttl(void)interrupt 1 // 定时器/计数器0(TF0) { re=~re; } // re值取反产生TTL电平 语音模块程序设计:

该模块采用单片机端口输出信号对语音芯片进行控制。 P31=0; // 模拟负脉冲FWD有效,播放指针指向下一段

17

delay(); P31=1;

delay(); //给语音芯片一定的执行时间

P20=0; //模拟负脉冲 PLAY有效,播放当前段 delay(); P20=1;

GSM模块程序设计:

//-- AT指令的定义 --------------------------------------// char code AT_Tc35[]=\T+\ //连机 char code Bps_Tc35[]=\//波特率 char code Text_tc35[]=\//文本模式 char code Read_Tc35[]=\//读信息 char code Erase_Tc35[]=\//删除信息 char code Send_Tc35[]=\//发送信息 char code Creg_Tc35[]=\ //注册 void UART_Init(void) { SCON=0x50; // 01010000b=>1模式 scon,#11011000b; ES=1; }

void SendASC(unsigned char ASC) { bit es; es=ES; ES=0;//关闭中断 TI=0; SBUF=ASC; while (!TI); TI=0; ES=es; }

void SendToTc35 (unsigned char *p,unsigned char Long) { while (Long--) { SendASC(*p++); } }

void Rs485_Do(void) interrupt 4 using 1 { if (RI==1) { RI=0; RsBuf[RsPoint++]=SBUF;

18

if (RsPoint >=sizeof(RsBuf)) { RsPoint=0;//FlagRs485=0; } //数据处理 } }

char code AT_Code[]=\void Send_AT (void) { unsigned char *p; while (1) { ClrRsBuf(RsBuf,sizeof(RsBuf)); SendToTc35(AT_Tc35,2); //\ SendASC(OVER); //***************** 等待应答“ok” ES=1; //必须中断 Delay(50); p=strstr(RsBuf,AT_Code); if(p != NULL ) break; } }

void Send_BPS (void) { SendToTc35(AT_Tc35,3); //\ SendToTc35(Bps_Tc35,sizeof (Bps_Tc35)-1);//\ SendASC(OVER); }

void SetText (void) { SendToTc35(AT_Tc35,3); //\ SendToTc35(Text_tc35,sizeof (Text_tc35)-1);//\ SendASC(OVER); Delay(100);

unsigned char EraseMsg(unsigned char index) { unsigned char *p,i=20; SendToTc35(AT_Tc35,3); //\ SendToTc35(Erase_Tc35,sizeof (Erase_Tc35)-1);//\ SendASC(index); SendASC(OVER); ES=1; while (i--) {

19

Delay(200); p=strstr(RsBuf,AT_Code); if (p !=NULL) { return 1; } } return 0; }

char code Ask_No[]=\char code ERROR[]=\char code Ask_Tc35[]=\

unsigned char ReadMsg(unsigned char index) {

unsigned char *p,i;

unsigned char Buf[40]; SendToTc35(AT_Tc35,3); //\

SendToTc35(Read_Tc35,sizeof (Read_Tc35)-1); SendASC(index); SendASC(OVER); ES=1; //必须中断 Delay(600);

/*-------------------------------- ES=0;

SendToTc35(RsBuf,99); ES=1; */

//-------------------------- p=strstr(RsBuf,ERROR); if (p !=NULL) { Send_AT();return 0; }

//-----------------------------

p=strstr(RsBuf,Ask_No);//无信息 if (p !=NULL) return 0; //--------------------------

p=strstr(RsBuf,Ask_Tc35);//20个字节后是MSG if (p ==NULL) return 0;

//--------------------------------------- p=p+21;

//----------------------------------- for (i=0;i

Buf[i]=*p++; }

if (EraseMsg(index)==0) return 0; 20

p=strcpy(RsBuf,Buf); //放回RsBuf return 1; }

char code SK[]=\void SendMsgStart(void) {

unsigned char *p,i=10;

SendToTc35(AT_Tc35,3); //\

SendToTc35(Send_Tc35,sizeof (Send_Tc35)-1);//\SendASC(YinHao);

SendToTc35(Mp1.Hand,sizeof (Mp1.Hand)); SendASC(YinHao); SendASC(OVER); ES=1; while(i--) {

Delay(100); //Get \p=strstr(RsBuf,SK);//\if (p!=NULL) {

ClrRsBuf(RsBuf,sizeof(RsBuf)); Delay(150); //Get \break; } } }

模拟串口程序:

#define uchar unsigned char sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; #define RXD P1_0 #define TXD P1_1

#define WRDYN 44 //写延时 #define RDDYN 43 //读延时 //往串口写一个字节 void WByte(uchar input) {

uchar i=8;

TXD=(bit)0;//发送启始位

Delay2cp(39);//发送8位数据位 while(i--) {

TXD=(bit)(input&0x01);//先传低位 //\21

Delay2cp(36); input=input>>1; }

//发送校验位(无)

TXD=(bit)1;//发送结束位 Delay2cp(46); }

//从串口读一个字节 uchar RByte(void) {

uchar Output=0; uchar i=8;

uchar temp=RDDYN;//发送8位数据位

Delay2cp(RDDYN*1.5);//此处注意,等过起始位 while(i--) {

Output >>=1;

if(RXD) Output =0x80;//先收低位

Delay2cp(35);//(96-26)/2,循环共占用26个指令周期}

while(--temp)//在指定的时间内搜寻结束位。 {

Delay2cp(1);

if(RXD)break;//收到结束位便退出 }

return Output; }

//延时程序*

void Delay2cp(unsigned char i) {

while(--i);//刚好两个指令周期。 }

22

本文来源:https://www.bwwdw.com/article/ykrp.html

Top