如何用单片机以读取自GPRS模块的读取短信内容容作

21ic官方微信-->
单片机与GPRS模块串口通信问题
中级技术员, 积分 120, 距离下一级还需 180 积分
中级技术员, 积分 120, 距离下一级还需 180 积分
中级技术员, 积分 120, 距离下一级还需 180 积分
中级技术员, 积分 120, 距离下一级还需 180 积分
过程:使用MSP430单片机控制sim300GPRS模块,串口连接单片机与模块,用单片机给模块发送AT指令,收到返回后,在液晶上显示
问题:单片机串口的数据收发指示灯显示有接受到模块返回的数据,但无法从接受缓存中读出数据,用接收中断方式则程序进入不了接收中断,用查询方式则读不出接收数据,这是什么原因呢。望大侠赐教!!
, , , , , , , ,
满意回复+50
换用PC串口代替GPRS模块,先把串口弄可靠了再接。
换用PC串口代替GPRS模块,先把串口弄可靠了再接。
中级技术员, 积分 120, 距离下一级还需 180 积分
中级技术员, 积分 120, 距离下一级还需 180 积分
中级技术员, 积分 120, 距离下一级还需 180 积分
中级技术员, 积分 120, 距离下一级还需 180 积分
已经解决 原来是程序中全局中断没开 :L 现在已经能够正常收发啦
扫描二维码,随时随地手机跟帖
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
时间类勋章
技术领袖奖章
人才类勋章
您需要登录后才可以回帖
热门推荐 /4常见GSM模块介绍
常见GSM模块介绍 ――刊登于《无线电》2008年10期
&&&&GSM是Global System for Mobile Communications的缩写,意为全球移动通信系统,是世界上主要的蜂窝系统之一。GSM是基于窄带TDMA制式,允许在一个射频同时进行8组通话。GSM80年代兴起于欧洲,1991年投入使用。到1997年底,已经在100多个国家运营,成为欧洲和亚洲实际上的标准,到了2001年,在全世界的162个国家已经建设了400个GSM通信网络。但GSM系统的容量是有限的,在网络用户过载时,就不得不构建更多的网络设施。值得欣慰的是GSM在其他方面性能优异,它除了提供标准化的列表和信令系统外,还开放了一些比较智能的业务如国际漫游等。GSM手机的方便之处在于它提供了一个智能卡,人们称之为SIM卡,并且机卡可以分离,这样用户更换手机并且定制个人信息这方面都十分便利了。
&&&&GSM网络经过多年的发展完善,现在已经非常成熟,盲区少,信号稳定,自动漫游,并且通讯距离不受周围环境影响。尤其是GSM短信息,灵活方便,可以跨市、跨省、甚至跨国传送,而且每发送一条短信息只要1毛钱,非常可靠廉价。此外,目前手机SIM卡近年来可以0元申请办理,某些套餐使用费用比固话还低。因此利用手机短信来实现报警、超远程遥控工业设备、传输数据是一个非常不错的选择。
&&&&GSM模块,是一个类似于手机的通讯模块,集成了手机的若干功能于一块小电路板上,它可以发送短消息,通话等等,模块虽小,但它具备了很多手机的功能,拥有它等于就是拥有了手机的核心部分了,它在很多应用领域中都有着广泛的应用,GSM模块通过使用AT指令才能控制它,模块可以与电脑RS232串口相连,也可以用单片机来进行控制。下面我们例举一些典型的应用:
1、 手机控制的门禁系统:
&&&&用GSM控制门禁系统的电控锁,如果你需要进门,只要用手机拨打GSM模块内手机卡号,门就会自动打开,并且只有你设置的手机号码才能开门,而且没有任何费用产生。
2、 三翻广告牌的灾害天气紧急关闭:
&&&&三翻广告牌是通过电机实现不断翻转显示多个广告内容,因为安装在室外,当出现大风、冰雹等灾害天气时,广告牌很容易被吹坏或者卡死损坏,这时需要紧急关闭,你可以通过继电器常闭接点来控制广告牌的电源,这时你只要发送“关闭”控制短信后,广告牌就会自动关闭,并且自动延时一定时间后自动恢复正常工作(一般灾害性天气不会持续很长时间)如果你想提前打开广告牌,可以发送“打开”控制短信。
3、 工程系统的余款催交:
&&&&一些工程都是安全完成后正常运行一段时间后才把余款结清,如果碰到客户恶意拖欠货款,往往安装方非常头疼,因为设备已经安装了,如果拆回来损失很大,尤其是外地客户非常劳民伤财,这时可以在客户系统中先安装的GSM模块,用它进行一路或多路控制系统的一些关键点,当客户恶意拖欠货款时可以通过短信关闭一些功能,迫使客户付清货款然后立即短信开通,如果已经顺利回收货款还可以借系统维护的名义把GSM模块从客户系统中拆除。
4、 监控系统或者网站服务器的报警及复位:
&&&&监控系统或者网站服务器经过长时间运行后可能会出错死机,这时候断电复位是少有的解决方法,这时可以通过GSM模块控制系统的电源,并设置成打开3秒后自动关闭模式,可以实现断电复位,此外,GSM模块在一些特殊应用领域也起到了非常大的作用,如:主电源消失、内存错误、散热风扇停机、燃油耗尽、有人入侵等各种信息,是无人机房监控的理想选择。
5、 家电的远程控制:
&&&&通过短信控制可以轻松实现远程打开电饭煲、热水器等家电,通过控制遥控器或切换到维修模式也能控制空调。
&&&&看完了GSM模块的一些应用举例,相信你一定对它有了非常大的兴趣了吧,由于当前市场上GSM模块产品型号众多,很多国外产品可用的资料却比较少,特别是中文开发文档比较少,所以,在此我们例举一些技术成熟,文档资料易找,购买起来方便的几款GSM模块产品。它们分别是西门子的TC35i,明基BENQ M22,傻瓜式GSM模块JB35GD等,下面我们就一起来看一下市面上常见的几款GSM模块。
&&&&TC35i模块是一款支持中文短信息的工业级的新版GSM模块,工作在EGSM900和GSM1800双频段,电源范围为直流3.3~4.8V ,休眠状态电流消耗为3.5mA,空闲状态为25mA,发射状态为300mA(平均),峰值为2.5A;可传输语音和数据信号, 功耗在EGSM900(4类)和GSM1800(1类)分别为2W和1W ,通过接口连接器和天线连接器分别连接SIM卡读卡器和天线。SIM电压为3V/1.8V,TC35i通过AT命令可双向传输指令和数据,可选波特率为300b/s~115kb/s , 自动波特率为1.2kb/s~115kb/s。它支持Text和PDU格式的SMS(Short Message Service,短消息),可通过AT命令或关断信号实现重启和故障恢复。
&&&&TC35i由供电模块(ASIC)、闪存、ZIF连接器、天线接口等6部分组成。作为TC35i的核心基带处理器主要处理GSM终端内的语音和数据信号,并涵盖了蜂窝射频设备中的所有模拟和数字功能。
TC35i硬件设计:
&&&&TC35i模块有40个引脚,通过一个ZIF(Zero Insertion Force,零阻力插座)连接器引出。这40个引脚可以划分为5类,即电源、数据输入/输出、SIM卡、音频接口和控制。
&&&&TC35i的第1~5引脚是正电源输入脚通常推荐值4.2V,第6~10引脚是电源地。11、12为充电引脚,可以外接锂电池,13为对外输出电压(共外电路使用),14为ACCU-TEMP接负温度系数的热敏电阻,用于锂电池充电保护控制。
&&&&15脚是启动脚IGT,系统加电后为使TC35i进入工作状态,必须给IGT加一个大于100ms的低脉冲,电平下降持续时间不可超过1ms。
&&&&16~23为数据输入/输出,分别为DSR0、RING0、RxD0、TxD0、CTS0、RTS0、DTR0 和DCD0。tc35i模块的数据输入/输出接口实际上是一个串行异步收发器,符合ITU-T RS232接口标准。它有固定的参数:8位数据位和1位停止位,无校验位,波特率在300bps~115kbps之间可选,默认9600。硬件握手信号用RTS0/CTS0,软件流量控制用XON/XOFF,CMOS电平,支持标准的AT命令集。
&&&&其中18脚RXD、19脚TXD为TTL的串口通讯脚,可以方便和单片机进行通讯。
&&&&TC35i使用外接式SIM卡, 24~29为SIM卡引脚,SIM卡同TC35i是这样连接的:SIM上的CCRST、CCIO、CCCL、CCVCC和CCGND通过SIM卡阅读器与TC35i的同名端直接相连,ZIF连接座的CCIN引脚用来检测SIM卡是否插好,如果连接正确,则CCIN引脚输出高电平,否则为低电平。
&&&&TC35i的第32脚SYNC引脚有两种工作模式,一种是指示发射状态时的功率增长情况,另一种是指示TC35i的工作状态,可用AT命令AT+SYNC进行切换,本模块使用的是后一种。当LED熄灭时,表明TC35i处于关闭或睡眠状态;当LED为600 ms亮/600ms灭时,表明SIM卡没有插入或TC35i正在进行网络登录;当LED为75 ms亮/3s熄时,表明TC35i已登录进网络,处于待机状态。
&&&&30、31、32脚为控制脚,其中30为RTC backup,31为Power down,32 为SYNC。
&&&&35~38为语音接口,35、36接扬声器放音。37、38可以直接接驻极体话筒来采集声音(37是话筒正端,39是话筒负端)
&&&&TC35I开发技巧:
&&&&模块的供电电压如果低于3.3V会自动关机。同时模块在在发射时,电流峰值可高达2A。同时在此电流峰值时,电源电压(送入模块的电压)下降值不能超过0.4V。所以该模块对电源的要求较高,电源的内阻+FFC联接线的电阻必需小于200mΩ。
&&&&单片机通过两根I/O口控制TC35的开关机、复位等,通过串口与TC35进行数据通信,通信速率为9600Kbps,采用8位异步通讯方式,1位起始位,8位数据位,1位停止位。
&&&&TC35模块输入输出的TTL正电平逻辑不是+5V,而是+2.9V,因此必要时加端口保护。
&&&&M22是BENQ推出的一款内置TCP/IP over PPP的GPRS模块,价钱比较便宜。在设计结构上,它采用插槽代替排线,这样就可以将其悬空放置,不占用PCB面积,它的下面可以放置SIM卡槽和其他芯片和电路。通过AT指令完成GPRS拨号,PPP连接,TCP/IP应用,使用较方便。但是,它的缺点也很明显:稳定性不够,麦克风和听筒接口需要比较麻烦的滤波电路。TCP/IP部分功能有限,只能实现标准的TCP/UDP通信,只能作为客户端,不支持侦听,也就不能作服务器。但即使能提供侦听功能模块,在大多数GPRS环境下也不能使用,因为通常,中国移动分配给GPRS终端用户的IP地址并非INTERNET上的公网IP,而是移动内部地址,通过NAT方式访问INTERNET。这样,公网IP用户就无法连接上移动内部IP。这里多说几句,需要实现类服务器功能的用户,在这种情况下可以自己编写代码,通过识别特定短信号码或内容信息来主动连接到INTERNET公网IP地址用户,从而实现类似的伪服务器的功能。如果采用某些DTU,甚至可以不用写该短信识别程序,一般DTU都内置短信-〉连上GPRS的功能,只需要简单设置几个参数。
关于拨号:如果您拨号后显示的是PPP协议信息,请用 AT*97#
&&&&关于TCP/IP使用:拨号成功后,数据实现透明传输。发送+++后等待一段时间后返回AT指令模式,此时如果需要再次返回数据模式,使用ATO;需要断开TCP(UDP不存在持续连接)持续连接,使用ATH。
&&&&一些关于M22的问题(主要谈软件方面,不涉及硬件特性问题):
1、在使用TCP协议时,数据帧长度超过1200个字节,TCP连接会断掉;在使用UDP协议时,数据帧长度超过1024,模块会直接复位。
2、有时候提示连上GPRS之后,却无法发送和接收任何数据。
3、有时候在拨号后,模块会自动重新启动,过程中不响应任何AT指令,通常等待15秒后模块重启,此时可重新拨号。
4、发送数据长度超过1024后自动发送该1024部分;不及1024而需要发送,可以在向串口发送数据后,等待2-3秒,数据会自动发送出去。
5、有些时候,模块一旦断掉后,就无法自动重启,而必须先手动断开电源,再打开的方式重新启动。察看硬件手册,可以通过设置相关硬件引脚并且通过AT指令感应该引脚电压来实现软件重启功能,这样也许可以解决我们遇到的问题,但因为条件限制,没有最终测试。
&&&&常见的家庭防盗报警器都是通过电话线拨号报警的,然而固定电话配线箱一般都集中放置在居民楼的楼道里,如果小偷入室以前先打开配线箱把电话线破坏了,系统就不可能报警了。如果用JB35GD开发的家庭GSM防盗报警器,就完全可以避免被破坏的可能,大大增加了报警器的可靠性和安全性。
&&&&用JB35GD开发汽车GSM报警器,直接把车辆报警短信发到用户的手机里,可以在全球任何一个角落监控你的汽车,有效解决你在高层住宅楼上或商场内听不到车辆报警声音的矛盾。还能用手机远程遥控被盗汽车断油、断电。利用手机SIM卡的基站定位功能还能大至确定被盗汽车的位置。利用JB35GD向外发短信或拨打电话报警,可以做到现场无任何声音,有效解决汽车停在住宅小区内报警噪音扰民的问题,真正做到绿色环保。
JB35GD系列短信模块有着以下一些特点:
1.模块可以直接驱动8路继电器。8路继电器可以用短信遥控、短信定时遥控、DTMF遥控、振铃遥控来控制。
2.具有短信遥控结果回传功能。模块在收到遥控短信后,能把控制结果仍以短信的形式回传。
3.设有来电号码过滤器,拒绝非法手机遥控模块继电器,使你的手机具有遥控“身份证”的作用。
4.模块的设计思路以人性化为本,以直观的中文作为短信遥控指令和报警短信内容,且用户可自定义。
5.模块内可以预先存入20条报警短信内容和发送手机号,可以在有线或无线传感器的触发下对应发送。
6.12个无线报警防区(需在JB35G的扩展管脚上增配315M解码接收板)。
7.8个有线报警防区,采用上下沿跳变触发报警,适合接任何形式的传感器。
8.每路有线和无线报警防区触发后,能同时向6个手机发送报警短信、向6个手机拨打报警电话。
9.报警短信内容和号码的设置可以用电脑软件改写,也可以用手机发短信来改写。
10.设防/解防控制脚,通过外接高低电平来控制12个无线防区和8个有线防区的设防、解防。
11.可以通过手持遥控器对模块进行设防、解防、半设防、禁止解防(需增配315M接收板和遥控器)。
12.可以通过短信和电话控制模块进行设防、解防。
13.可以通过短信定时遥控功能,实现每天几点几分自动设防,几点几分自动解防。
14.支持语音通话功能,可以用模块开发车载电话。
15.报警后可以监听环境声音。
16.智能化RS232、TTL串口,既能传送数据,又能把计算机文本发送给普通手机阅读。
17.来电显示号码可以通过串口输出。
18.工作电压采用12V直流供电,兼容汽车供电系统。
19.具有免话费的振铃遥控功能。通过拨打电话时的来电显示和振铃声的触发下,使继电器的状态翻转。
20.JB35GD增配了短信测量A/D转换板,就能把现场采集测量到的5路温度数据和8路电压量数据以短信的形式发到你的手机上,实现远程漫游监测。
&&&&JB35GD短信模块是一个由GSM模块加上单片机组成的一个控制系统。GSM或CDMA手机模块主要是用来建立无线信道,并接收和发出短消息。单片机系统用来控制手机模块,并且对收到的短消息信息进行解释并执行。单片机控制板采用双CPU模式,使系统能同时处理多项任务,采用独立时钟的看门狗电路,防止软件死机。由MT8870负责双音频解码,完成DTMF通话遥控,MAX232完成和计算机的RS232通讯,CD4094完成输出串行转并行的八路隔离驱动继电器。
&&&&该模块机体积非常小巧,没有设计话筒插座,但是板上预留了接口,模块上21~25引脚的含义是:21、22接驻极体话筒,23、24接32欧姆左右的喇叭,25是地。
管脚描述:
1脚: 接地 GND
2脚: 正电源 VCC +12V
3脚: 第八路三极管集电极开路输出,可直接驱动继电器。
4脚: 第七路三极管集电极开路输出,可直接驱动继电器。
5脚: 第六路三极管集电极开路输出,可直接驱动继电器。
6脚: 第五路三极管集电极开路输出,可直接驱动继电器。
7脚: 第四路三极管集电极开路输出,可直接驱动继电器。
8脚: 第三路三极管集电极开路输出,可直接驱动继电器。
9脚: 第二路三极管集电极开路输出,可直接驱动继电器。
10脚: 一路三极管集电极开路输出,可直接驱动继电器。
11脚: 有线报警传感器S1输入,下降沿触发,受20脚设防、解防控制。
12脚: 有线报警传感器S2输入,下降沿触发,受20脚设防、解防控制,对应报警设置(一)短信。
13脚: 忙闲状态输出(低电平0V:表示JB35GD处于空闲待机状态;高电平5V:表示JB35GD处于忙的状态)
14脚: 有线报警传感器S3输入,下降沿触发,受20脚设防、解防控制。
15脚: 有线报警传感器S4输入,上升沿触发,受20脚设防、解防控制。
16脚: 有线报警传感器S5输入,上升沿触发,受20脚设防、解防控制。
17脚: 有线报警传感器S6输入,上升沿触发,受20脚设防、解防控制。
18脚: 有线火灾烟雾传感器S7输入,下降沿触发,24小时永远设防。
19脚: 有线紧急按钮S8输入,下降沿触发,24小时永远设防。
20脚: 设防/解防控制脚,通过外接高低电平来控制系统的无线报警输入和有线报警输入的设防、解防。
JB35GD右侧扩展管脚描述:
21脚: 连接315M解码接收板上的PT2272的VT脚。
22脚: 连接315M解码接收板上的PT2272的13脚。
23脚: 连接315M解码接收板上的PT2272的12脚。
24脚: 连接315M解码接收板上的PT2272的11脚。
25脚: 连接315M解码接收板上的PT2272的10脚。
26脚: 给外部的315M解码接收板提供+5V的工作电源。
27脚: 接地 GND,连接315M解码接收板上的接地 GND。
使用时一步,接通12V稳压直流电源。(如果驱动8只继电器,则必须保证稳压电源的输出电流≥1000mA,变压器功率≥10W。)
&&&&如果是一次接通电源,须等待20秒~10分钟,LED光才亮,进入待机状态。如果是第二次以后接通电源,则只须等待20~30秒,LED发光管亮,进入待机状态。(在此等待时间内JB35先进行GSM网络搜寻,再进行SIM卡格式化过程。GSM网络搜寻大约须要20~30秒时间。SIM卡格式化过程大约须要1秒~10分钟不等。格式化SIM卡的目的是删除SIM卡内的电话簿和短信箱中的内容,因为这些存储空间是JB35以后用来存储运行中一些重要数据的。格式化时间的长短取决于电话簿里的内容多少,如果电话簿内容本身为空,则只须10秒就完成格式化。)登陆网络成功以后LED会变成常亮,而且手机模块上的一个绿色贴片LED也会以0.5HZ的频率闪光,表示网络连接成功。
&&&&除了上述几款GSM模块,我们还可以看到的模块有:Wavecom 的GSM(Mo3、Mo2),爱立信的DM10/DM20, GM22/GM25,GM47/48等,中兴的ZXGM18,ZXGM28。Motorola 的d10、d15。有兴趣的读者,可以从网络上了解一下相关信息。
&&&&BenQ是较便宜的GPRS模块而且带TCP/IP协议栈。工业及车载的高可靠性应用西门子是一选择,一般工业及车载应用但对成本较敏感的话,可以用Wavecom的。普通环境及成本高度敏感的,建议用BenQ的。另外要清楚的是:在选择GPRS数据通讯时要注意是否需要内嵌TCP/IP协议栈,这亦影响品牌及型号的选择GPRS外置Modem一般仅是GPRS模块+SIM卡+电源变换+RS232接口及简单的控制电路组成,嵌入式应用较好直接用模块,桌面应用可以考虑采用成品外“猫”,原装进口价也就1千多。嵌入式应用选模块时,若仅使用SMS及语音的话,西门子的TC35i是不错的选择,若使用GPRS数据通讯的话,较好选带协议栈的模块,低端则可选BenQ的模块如M22。
以上部分内容转载于网上,如有涉及到版权问题,请即通知本人删除 浙ICP备号
联系地址:浙江省杭州市西湖科技园西园七路3号4层
邮政编码:310011&Email:
电话总机:0
技术QQ熊工:
技术QQ徐工:
杭州晶控电子有限公司 版权所有
COPYRIGHT2003――2011 HANGZHOU KinCony ELECTRONICS CO.,LTD All
rights reservedGPRS模块发送信息代码
09:17:10编辑:什么鱼 关键字:&&
//SIM300测试灯接口
sbit &LED_S0&=& P1^7;
sbit &LED_S1&=& P1^6;
sbit &LED_S2&=& P1^5;
//BELL接口
sbit&&& BELL&=& P1^4;& //这里以P1.4口的LED指示灯代替蜂鸣器接口
sbit &LED_S7&=& P1^0;& //AT+CPIN命令失败
//串口接收数组
#define& RxIn 90&//定义接收的数组长度为90
unsigned char idata SystemBuf[RxIn];& //储存出口接收数据&
unsigned char Rx=0;
//AT指令表
unsigned char code AT[]&&&="AT";&&&&//握手信号
unsigned char code ATZ[]&&="ATZ";&&&&//设备初始化
unsigned char code ATE0V1[]&&="ATE0V1";&&&//关回显设置命令返回OK/V1 0/V0
unsigned char code AT_IPR[]&&="AT+IPR=9600"; &//波特率设置
unsigned char code AT_CPIN[]&="AT+CPIN?";&&//查询SIM卡状态
unsigned char code AT_CSQ[] &="AT+CSQ";&&&//查询信号
unsigned char code ATH[]&&="ATH";&&&&//呼叫挂起
unsigned char code AT_COPS[]&="AT+COPS?";&&//查询网络运营商
unsigned char code AT_CDSNORIP[]="AT+CDNSORIP=0";&//GPRS IP 方式
unsigned char code AT_CIPHEAD[]&="AT+CIPHEAD=1"; &//GPRS 接收方式
unsigned char code AT_CIPSTART[]="AT+CIPSTART=\"TCP\",\"218.109.58.100\",\"2003\"";//GPRS连接方式\GPRS连接地址(根据用户实际IP修改)\GPRS连接的端口
unsigned char code AT_CIPSEND[]&="AT+CIPSEND";&&//GPRS命令
unsigned char code AT_CIPCLOSE[]="AT+CIPCLOSE";&&//TCP连接关闭
unsigned char code AT_CIPSHUT[]&="AT+CIPSHUT";&&//GPRS连接关闭&&&
unsigned char code ATA[]&&="ATA";&&&&//来电接听
//定时TIMER0用
unsigned int&&&&&//50MS定时器,
unsigned char& timer_1S_
unsigned char& timer_10S_
unsigned char& timer_S_
//SIM300函数声明
void Delay_ms(unsigned i);
void UART_init(void);
void GSM_init(void);
void sendchar(unsigned char ch);
void sendstring(unsigned char *p);
void sys_init(void);
void clear_SystemBuf(void);
void BELL_UP(void);
unsigned char strsearch(unsigned char *ptr2,unsigned char *ptr1_at);//查字符串*ptr2在*ptr1中的位置
//延时函数
void delayms(unsigned& int ii)//1ms延时函数
&unsigned int i,x;
&for (x=0;x<x++)
&&for (i=0;i<100;i++);
void delay(unsigned int i)
&while(i!=0)
/*********************************************************************
&** 函数名称: strsearch ()
&** 函数功能: 在指定的数组里连续找到相同的内容
&** 入口参数: ptr2要查找的内容, ptr1当前数组
&** 出口参数: 0-没有 找到&& >1 查找到
&*********************************************************************/
unsigned char strsearch(unsigned char *ptr2,unsigned char *ptr1_at)//查字符串*ptr2在*ptr1中的位置
//本函数是用来检查字符串*ptr2是否完全包含在*ptr1中
//返回:& 0& 没有找到
//1-255 从第N个字符开始相同
&unsigned char i,j,k;
&if(ptr2[0]==0) return(0);
&for(i=0,j=0;i<RxIn-2;i++)
&&&&&&& &if(ptr1_at[i]==ptr2[j])
&&&&&& &&{&//第一个字符相同
&&&&&&& &&for(k=i;k<RxIn-2;k++,j++)
&&&&&&& &&{
&&&&&&& &&&if(ptr2[j]==0)//比较正确
&&&&&&& &&&&return(i+1);&&&&&&&&&&&&&& //返回值是整数,不含0
&&&&&&& &&&if(ptr1_at[k]!=ptr2[j])
&&&&&&& &&}
&&&&&&& &&j=0;
&&&&&&& &}
&return(0);
/******************************************************************************************************************
//////////////////////函数void BELL();实现功能:////////////////////////////////////////////////////////////////////
*****************************************************************************************************************/
void BELL_UP()
&BELL=0;&&
&Delay_ms(2000);&
&Delay_ms(2000);
/******************************************************************************************************************
//////////////////////函数void sendchar(uchar ch);实现功能:发送一字节数据//////////////////////////////////////////
*****************************************************************************************************************/
void sendchar(unsigned char ch)
&while(TI==0);
/*****************************************************************************************************************
//////////////////////函数void sendstring(uchar *p);实现功能:通过串口发送字符串//////////////////////////////////
*****************************************************************************************************************/
void sendstring(unsigned char *p)
& &while(*p)
& &&sendchar(*p);
& &sendchar(0x0D);
& &sendchar(0x0A);
/*****************************************************************************************************************
////////////////////////////////函数void Delay_ms(unsigned int i);实现功能:进行毫秒延时///////////////////////////////////
*****************************************************************************************************************/
void Delay_ms(unsigned int i)
&&&& for(;i>0;i--)
&&&& &for(j=0;j<125;j++)
//---延时US------------------------------
void dmsec (unsigned int count)
&while (count)
&&&&&&& i =300;
&&while (i>0) i--;
&&count--;
/************************************************************************************************
********************************系统初始化*******************************************************
************************************************************************************************/
void sys_init(void)//UART TIMER0初始化
&TH0 = 0xB8;
&TL0 = 0x00; //20ms的时钟基准
&//串口中断
&SCON=0x50;&&&&&&& &&//选用方式1
&TMOD=0x20;
&TMOD = (TMOD & 0xf0) | 1;//MODE 1
&TH1=0&&&&&&&&&&&&& //波特率为9600
&PCON=0x00;&&&&&&&&&&& //倍频0x80
&IE = 0xb0;& &// EA XX ET2 ES ET0 EX0 ET1 EX1
&TR1=1;& &&//enable TIMER1
&ES=1;& //开串口开断
&TR0=1; //串口接收中断
&ET0=0;& //T0 中断
&ET1=0;& // T1 中断
&timer_1S_cnt=0;
/******************************************************************************************************************
///////////////////函数void GSM_INIT(void);实现功能:初始化模块///////////////////////////////
******************************************************************************************************************/
void GSM_init(void)
&Delay_ms(5000);& //
&Delay_ms(5000);&
&Delay_ms(5000);& //等待模块启动并联网
&&clear_SystemBuf();
&&sendstring(AT);
&&Delay_ms(1000);&
&&if((SystemBuf[5]==&#39;O&#39;)&&(SystemBuf[6]==&#39;K&#39;))&//判断是否模块初始化成功,成功的话模块会回复"OK"给单片机
&&&&&&& {&&&&&&&&&&&&//如果单片机没有收到OK,就继续发送初始化指令/&&&&&&&&&&&&&&&&&
&&&LED_S0=~LED_S0;&&&&&&&&&&&&&&&&&&&&&& //P1.7指示灯亮
&&Delay_ms(1000);
&sendstring(ATZ);//初始化
&Delay_ms(1000);
&sendstring(AT_IPR);//9600
&Delay_ms(1000);
&sendstring(ATE0V1);//关闭回显设置DCE为OK方式
&Delay_ms(1000);
&&clear_SystemBuf();
&&sendstring(AT_CPIN);//查询SIM卡状态
&&Delay_ms(1000);
&&//& MOUDULE -> MCU&
&&//&[0D][0A]
&&//&+CPIN: READY[0D][0A]
&&//&[0D][0A]
&&//&OK[0D][0A]
&&if((SystemBuf[18]==&#39;O&#39;)&&(SystemBuf[19]==&#39;K&#39;))
&&&LED_S1=~LED_S1;&&&&&&&&&&&&&&&&&&& //P1.6指示灯亮
&&Delay_ms(1000);//READY??
&&&&&&& LED_S7=~LED_S7;
&//GPRS初始化
&//其他采用模块默认设置
&sendstring(AT_CDSNORIP);Delay_ms(1000);&& //选择域名还是IP方式,这里我们采用IP模式
&sendstring(AT_CIPHEAD); Delay_ms(1000);&& //接收的数据带+IPD字符串&
/****************************************************************************************************************/
///////////////////////////////////////void clear_SystemBuf();清除串口接收缓冲区/////////////////////////////////
/****************************************************************************************************************/
void clear_SystemBuf()
&for(Rx=0;Rx<RxIn;Rx++)
&&SystemBuf[Rx]=0x00;
/******************************************************************************************************************
///////////////////函数void receive(void) interrupt 4 using 1;实现功能:通过串口接收数据////////////////////////////
******************************************************************************************************************/
void receive(void) interrupt 4 using 1
&&if(Rx<RxIn)
&&&SystemBuf[Rx]=SBUF;
关键字:&&
来源: eefocus
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
关注eeworld公众号快捷获取更多信息
关注eeworld服务号享受更多官方福利
单片机微控制器以其体积小、功耗低、使用方便等特点,广泛应用于各种工业、民用的嵌入式系统中;而随着互联网(Internet)的兴起与普及,使微控制 器通过互联网传送数据就变得非常有意义。目前使微控制器上网的解决方案一般有两种:一种是采用微控制器驱动网卡,通过以太网连接Internet;另一种 是使微控制器直接驱动调制解调器(MODEM)通过电话线向ISP拨号上网。这两种方案的缺点在于都要使用有线的网络,无法应用于在边远地区或可移动系统 中。&针对这一问题,提出一种基于GPRS的单片机上网的解决方案,即在单片机中实现PPP协议,并通过驱动GPRS模块经过GPRS无线网连接到 Internet实现上网。这种方案的优点
函数清单和注意事项(底层驱动部分)1. IO口初始化:控制 IO 和通讯 IO,控制包括电源控制,复位和低功耗模式,通讯就是串口啦,相信大家应该都很熟悉了。& & & & & & & & & & & 当然在这个基础上还可以组合出复位的功能,复位在GPRS连接出错的时候会用到。2. 串口初始化:模块的波特率为位数据位,1位停止位,没有校验位和流控。& & & & & & & & & & & 串口还需要
;AT+I&#39;,0DH&
DATA &&&ENDS&
code &&&segment &&&&&&&&&para &public &#39;code&#39;&
start &&proc &&far&
&&&&&&&&assume cs: &&&&&&nbsp
以确保安全运行。而各冷暖气站的设备型
号﹑运作流程则各异,设计选用设备的不恰当会造成运行管理的困难,而运行管理的困难则
直接影响到设备的使用寿命﹑运作的安全稳定等,在发现各冷暖气站的不完善情况下,予以
分析﹑解决,在运行管理中提高设备的使用效能,使设备长期安全可靠﹑高效能的运行成为
基地能源服务人员的重要课题。因此,该公司对系统进行自动化改造。
二、系统原理
本系统为现场实时测控系统与远程监控系统,,它对测量数据的处理以及控制算法都是以数字计算为基础,通过软件实现的。同大多数计算机化监控系统一样,主体部分传感器﹑现场采集模块﹑GPRS模块及工业平板电脑﹑主控计算机﹑远程监控中心等部分组成。
1﹑工业平板电脑﹑主控计算机
分组发送和接收,用户永远在线且按流量、时间计费,降低了服务成本。
  1、硬件系统设计
  设计的基于嵌入式系统的 GPRS系统结构框图如图 1所示,它以嵌入式处理器 S3C2410为核心,分别与 GPRS模块、LCD显示和指示灯及键盘人机接口连接。
  S3C2410微处理器选用Samsung公司为手持设备设计的低功耗、高集成度的基于ARM920T核的微处理器,该处理器集成了16KB指令和16KB数据缓存、MMU、外部存储器控制器、LCD控制器、NAND Flash控制器、4个DMA通道、3个UART通道、1个I2C总线控制器、1个I2S总线控制器、4个PWM定时器和一个内部定时器、通用 I/O口、实时时钟
热门资源推荐
最新单片机文章
最新视频课程
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
相关热搜器件

我要回帖

更多关于 小米手机读取短信内容 的文章

 

随机推荐