基于Q2403A的单片机短消息收发系统

发布者:CW13236066525最新更新时间:2007-12-06 来源: 电子设计应用关键字:总线  串口  中断  定时 手机看文章 扫描二维码
随时随地手机看文章
引言

基于GSM短消息的业务不需要建立拨号连接,只需把待发的消息加上目的地址发送至短消息中心,再由短消息中心转发到最终目标。GSM 短消息业务以其连接简单、费用低廉、覆盖范围广、实现方便等优点得到了广泛的应用。运用 GSM 短消息实现远程测控的可靠性较高、信号传播距离远、覆盖面积广,并且可以节省建网初期的巨额投资。

本文对基于GSM短消息收发系统的设计与实现作了具体描述,给出了系统的软硬件设计方案,对主要硬件,即GSM模块Q2403A 和8051单片机作了重点介绍。给出了系统的软件设计,包括PC与单片机通信部分和短消息收发部分。最后实现系统监控功能。

系统硬件实现

总体系统结构

该系统硬件主要由8051单片机扩展电路、Q2403A手机模块、RS-232总线接口电路、电源转换器等部分组成。图1为系统结构框图。

图1 系统结构框图

其中,电源转换器将PC端口的12V电压转换成3.6V和5V稳压,使系统中的芯片处于正常工作状态。RS-232总线接口电路包括电平转换和串口扩展电路。8051单片机实现存储器扩展之后,通过RS-232总线接口电路与PC进行数据通信;以中断方式对数据进行处理后,控制Q2403A手机模块进行短消息收发,实现系统的监控功能。

单片机扩展电路设计

MCS-51单片机的内部虽已集成了很多资源,这些资源都是折中配置的,片内程序存储器、数据存储器的容量都不大,并行I/O端口的数量也不是很多。此外,在有些应用中,片内定时器、中断、串行口等也显得不足。因此,根据需要,本系统选用8051单片机并对其进行扩展。

读写存储器扩展

本文选用SRAM芯片6264。容量为8K×8bit。其地址线有13条,即A12~A0。8条数据线D7~D0。再加上其他引脚,总共有28个引脚,其中有2个标注为Nc的空引脚。把Nc引脚分别作为地址线A13~A14使用,就是容量为16k×8bit和32k×8bit的SRAM存储芯片。

接口方案采用地址完全译码设计。 使用74138译码器为扩展的存储器分配地址空间。给6264数据存储器分配惟一的地址空间是:0000H~1FFFH。

只读存储器扩展

本文选用AT24C02进行数据存储。它使用两根信号线进行数据传输,一根是串行数据线(SDA),另一根是串行时钟线(SCL)。

RS-232接口电路设计

MAX202是单电源、双RS-232发送/接收器,适用于各种EIA-232E和V.28/V.24的通信接口。MAX202芯片有一个电压转换器,可以把输入的+5V电源转换成RS-232C输出所需的±10V电压,所以,用此芯片接口的串行通信系统只要单一的+5V即可。

本文选用通用异步接收/发送器MAX3100对单片机串行口进行扩展,将单片机与RS-232总线相连。

MAX3100供电电源范围宽、功耗低、在+2.7V~+5.5V的电源中仅吸收0.5mA的电流,具有零功耗的停机模式,并能由接收信号唤醒,使用SPI/Microwire接口与主微控制器进行通信。MAX3100不仅适合于速率高达230kbps的RS-232和RS-485数据链路,而且支持速率为2.4kbps~115.2kbps的红外线数据协会(IrDA)SIR格式,在基于微控制器的小型系统设计中具有良好的应用前景。图2为串口扩展电路图。

图2 串口扩展电路图

电源部分

由于PC端口提供的电压为12V, 系统中的芯片有3.6V和5V两种。因此,电源部分采用美国国家半导体公司输出电压可调的三端集成稳压芯片LM1085-ADJ。

LM1085是一款单芯片集成的电压转换器。提供3 A电流输出,具备过流保护,过温保护,有可靠的工作性能、较高的工作效率,能够为芯片提供稳定的3.6V、5V电压,为芯片工作提供了强有力的保证。图3为电源电路原理图。

             图3电源电路原理图
手机模块部分

Q2403A GSM/GPRS模块支持双频EGSM/GPRS 900MHz/1800MHz模式,支持AT指令,短消息功能完备。Q2403A模块具有60引脚的通用接口,非常容易集成到应用产品中;具有SIM卡确认、供电、时钟、复位及I/O的3V SIM卡接口,包括SIMVCC、SIMRST、SIMDATA、SIMCLK和SIMPRES等。另外,模块提供一个符合V24协议的6线串行通信接口,包括TX、RX、RTS、CTS、DTR、DSR;同时提供DCD和RI信号接口、上电信号PowerON/OFF和复位信号RST。模块正常工作要求提供两路电源,其中,VBATT提供给RF部分,电压范围为3.3V~4.5V,最大功率为2 W;VDD提供给基带部分,电压范围为3.1V~4.5V,最大功率为0.5W。图4为手机模块与SIM卡外围电路设计。

图4 手机模块与SIM卡外围电路图

系统软件设计

主程序流程

主程序主要负责系统的初始化,包括单片机时钟设置、端口工作方式设置、串口设置(波特率、中断允许等)、默认系统数据的恢复(如时间设置、标志位清零等)、GPRS模块的初始化、中断初始化等。然后反复查询SIM卡网络注册情况,直到注册成功。最后进入低功耗模式,等待中断。流程如图5所示。

图5 系统主程序流程

PC与单片机通信部分

该部分包括机组工作数据的采集和反向控制命令的发送,由串口RXD/TXD完成。

PC控制器通过RS-232总线传送多帧数据,数据内容包括机组运行状态、全部温度数据和输入/输出状态信息,以及故障信息等。短消息控制器内的单片机在串口RXD/TXD接收中断过程中判断并处理接收到的数据。

短消息收发

本部分要实现的功能有:接收控制方发来的短消息并提取有效命令词、组装控制帧;采集到紧急故障信息时,或是需要反馈执行结果时,向控制方发送短消息。采用中断方式接收来自Q2403A模块的信息。图6为串口RX/TX的接收和发送中断流程。

图6 串口RX/TX接收/发送中断流程

Q2403A支持的功能相当完备,本系统主要使用了短消息功能。单片机与Q2403A模块间主要通过串口RX/TX进行通信,以AT命令来实现接收及发送的功能。用到的AT命令主要有:查询注册状态AT+CREG;短消息列表AT+CMGL;短消息发送AT+CMGS;短消息删除AT+CMGD。

结语

本文在提出总体设计方案的基础上,完成了系统的硬件和软件设计、应用程序的编写及调试,经实际运行验证,取得了满意的效果。就目前的测试结果而言,结合远程监控的优势,具有较强的实用性。对软硬件作适当扩充修改后,还可应用于环境监测、石油开采设备的监测与控制、农作物生长状况的监测、交通管理系统及安防系统等诸多领域。

参考文献:

1. 李华,等.MCS51系列单片机实用接口技术.第9版.北京:北京航空航天大学出版社,2002
2. 马中梅,籍顺心,张凯等.单片机的C语言应用程序设计.北京航空航天大学出版社,1999
3. 龚建伟,等.Visual C++/Turbo C串口通信编程实践[M].北京:电子工业出版社,2004

关键字:总线  串口  中断  定时 引用地址:基于Q2403A的单片机短消息收发系统

上一篇:基于Q2403A的单片机短消息收发系统
下一篇:Silicon Laboratories发表C8051T610系列低成本8位MCU

推荐阅读最新更新时间:2024-03-16 12:22

基于PIC单片机的CAN总线扩展技术
0 引 言 CAN总线是一种串行多主站局域网总线,被广泛应用于汽车控制系统、自动控制、楼宇自动化、医学设备等各个领域。其传输距离远,最远可达10 km,传输速率高,最高可达1 Mb/s,容错性能好,可靠性能高。但是由于CAN驱动器的驱动能力有限,CAN总线能够驱动的节点数有限,一般在100个左右,同时会随着传输距离的增加,最高传输速率会下降,如果距离过长会引起信号丢失、反射等故障。在实验室条件下测得在5 Kb/s的通信速率下最远通信距离能达到10 km;在18 Kb/s的通信速率下最远通信距离只能达到2 km;而在42 b/s的通信速率下,最远通信距离只能达到1 km。测试条件:线缆采用线径为0.75 mm2的屏蔽双绞线,线
[单片机]
基于CAN总线接口的红外检测系统的设计思路
  1 引言   一氧化碳(CO)是剧毒性气体,人体吸人后造成人体组织和细胞缺氧,导致引起中毒窒息。在煤矿井下,CO也是引起瓦斯爆炸的主要气体之一。CO无论是对工业生产还是人类都造成巨大的损害,因此,CO检测尤为重要,特别在煤矿井下,《煤矿安全规程》规定,井下作业场所的CO浓度应控制在0.002 4%以下。因此,实时、准确地测出井下CO气体浓度,对保障煤矿工业安全生产具有重要意义。   目前检测CO的方法主要有化学法、电化学法、气相色谱法等。这些方法普遍存在价格高、普适性差等问题,且测量精度较低。这里设计一种新的检测系统,选用红外CO传感器和MSP430单片机作为核心信号处理电路,结合数字滤波、温度补偿运算.具有检测浓度范围宽
[单片机]
基于CAN<font color='red'>总线</font>接口的红外检测系统的设计思路
STM32L151调试串口cubeMX
1、使用cubeMX自动生成底层代码,配置串口参数及相关IO口。 2、出现问题,可以发送,但是不能接收数据。 3、问题原因:没有开启中断。需要在初始化过程添加以下代码: __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);//开启串口接收中断 4、另外还要在串口接收中断函数末尾加上清除接收中断函数标识位函数: __HAL_UART_CLEAR_FLAG(&huart1,UART_FLAG_RXNE);
[单片机]
mini2440串口轮询实验
程序依然烧写在norflash上面 Makefile uart.bin : start.s function.c arm-linux-gcc -g -c -o start.o start.s arm-linux-gcc -g -c -o function.o function.c arm-linux-ld -Ttext 0x30000000 -g start.o function.o -o uart.elf arm-linux-objcopy -O binary -S uart.elf uart.bin arm-linux-objdump -D -m arm uart.elf uart.d
[单片机]
STM32学习记录14 ucosii中的串口中断
先看邵老师的书中怎么写 里面写到: C/OS中,中断服务子程序要用汇编语言来写。然而,如果用户使用的C语言编译器支持在线汇编语言的话,用户可以直接将中断服务子程序代码放在C语言的程序文件中。 再看《M3权威指南》2.11.2节与9.11节中讲到Cortex-M3在进入异常时自动压栈。。。。返回时自动出栈,再也不需要汇编语言编写了。也就是说我们可以使用C语言来编写中断服务程序。并且省去了上面程序清单的(1)(5)(6). 其实ucos中的终端和裸奔的中断写法基本一致,只是加了几条语句,如下为串口中断的写法: void USART1_IRQHandler(void) { uint8_t RxData; O
[单片机]
STM32学习记录14 ucosii中的<font color='red'>串口</font><font color='red'>中断</font>
单片机串口通信控制步进电机
这是一个来自单片机开发板的源程序,原理图的下载地址: http://www.51hei.com/f/ks51.pdf 下面是源代码: /** ************************************************************************************************* * @file main.c * @author xr * @date 2014年3月18日20:00:03 * @note 步进电机的参数:减速比:1:64 步进角:5.625/64 启动频率: =550 启动时间最小:1.08ms * @brief 串口通信控制步进电
[单片机]
STM32中断与事件的区别
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套.图中的蓝色虚线箭头,标出了外部中断信号的传输路径。 首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了. 按下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器,
[单片机]
STM32<font color='red'>中断</font>与事件的区别
基于单片机的通用型智能充电器设计
1 概 述 电子信息技术的快速发展使得各种各样的电子产品不断涌现,并朝着便携和小型轻量化的趋势发展,这也使得更多的电气化产品采用基于电池的供电系统。目前,较多使用的电池有镍镉、镍氢、铅蓄电池和锂电池,由于它们各自的优缺点使得它们在相当长的时期内将共存发展 。由于不同类型的电池的充电特性不同,目前通常对不同类型,甚至不同电压、容量等级的电池使用不同的充电器,这在实际使用中有诸多不便。本文设计了一种通用型的充电器,可对电压等级为1.2V~48V的镍镉、镍氢、铅蓄电池和锂电池进行充电。为达到如此宽的充电范围,充电电源采用二级电路拓扑,并使用同一PWM信号源对两级电路进行联动控制。该电源在 85VAC~265VAC的通用输入范围内均可实
[电源管理]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved