基于GSM短信和MCU的LED信息发布屏系统的设计
基于GSM短信和MCU的LED信息发布屏
系统的设计
网络,通信与多媒体《电子技术》2004年第6期
基于GSM短信和MCU的
LED信息发布屏系统的设计
中国科技大学物理系微电子研究室(230026)陈文建郭俊福谢家纯
摘要文章提出并实现了一种在LED屏中嵌入摩托罗拉G18GSM手机模块和MSP430F149
单片机,
通过将GSM模块接收到的短信息解码后在LED屏上显示出来,从而实现信息的无线发布
系统的设计.
介绍了系统的硬件组成和固化软件的工作
,阐述了MSP43OF149单片机和
MotorolaG18GSM手机
模块的接口,AT指令的应用,连续多条短信收发处理的实现,短信PDU编解码在单片机上的
实现,
中英文字符在IIC总线存贮器中存取和在LED上显示的原理等.
关键词GSM短信单片机LED显示屏AT指令IIC总线
随着GSM移动通信网络的完善和发展,各种基
于GSM网络的应用应运而生,特别是在一些不便架
设有线网络的场所,基于GSM网络的远程信息传递
更显出它的优势.在我们的应用中,某气象信息中心
希望以室外LED屏的形式向公众实时发布天气预报
信息.为此,我们设计并实现了以下这种以GSM短
信作为气象信息传递媒介,以MSP430单片机作为系
统的主控模块,通过将GSM手机模块接收到的短信
息解码后在LED屏上显示出来,从而实现天气预报信
息的远程动态发布功能的系统.
1系统硬件组成和固化软件工作流程
如图1所示,系统主要由四部分组成:TI公司的
16位单片机MSP430F14912】,该单片机带JTAG在线
编程接口,片内集成60kB的FlashROM和2kB的
RAM,并有两个硬件UART异步串行通信口,用于系
统主控,完成GSM手机模块的控制,短信收发和编
解码,中英文字模存取显示等功能;MotorolaG18GSM
手机模块【l】,用以实现系统与GSM网络的接入:两
片IIC总线的AT24C10241rjJ构成的256kB片外Flash
存贮器,用来存贮中英文字符的字模点阵和保存系统
当前的各种参数和数据:192x32点阵的图形LED屏.
气象信息中心发送到系统的短信有两种:普通的
气象信息短信和以字符串”<CMD>”开头的命令短信.
430单片机的两个串行通信口UART0和UART1分别
用于同GSM模块和LED屏的通信,当新短信到达后,
单片机首先应用AT指令…从GI8手机模块中获取接
收到的短信的PDU码,解码后对短信内容加以分析,
行的程序,不安装1
2.5定期对服务器进行备份
为防止不能预料的系统故障或用户不小心的非法
操作,必须对系统进行安全备份.除了对全系统进行
每月一次的备份外,还应对修改过的数据进行每周一
次的备份.同时,应该将修改过的重要系统文件存放
在不同的服务器上,以便出现系统崩溃时(通常是硬
盘出错),可及时地将系统恢复到正常状态.
除了采用上述措施之外,还要及时安装最新版本
的SP及补丁程序,加强网络安全管理,制定有关规
章
,确保系统及网络安全可靠地运行.
按照本文组建网络考核环境的方法,通过对
Windows2000Server服务器设置及操作系统为
Windows2000Professional工作站或操作系统为
Windows98SE工作站的设置,使学生们能在该环境中
正常地进行考核,效果良好.
参考文献
l韩伟峰,王祥仲编着.局域网组建实用培训教程口vl】.北
京:清华大学出版社,2002
2甘登岱,李慕霞,郭玲文编着.Windows2000Server组
网教程【M】.电子工业出版社,2001
3李进,朱振霞编着.Windows2000注册表技术与应用实
例【M】.清华大学出版社,2001
4戴有炜编着.Windows2000网络实用指南【M1.清华大
学出版社,2001
《电子技术》2004年第6期网络,通信与多媒体
G
S
M
网
络
S
L
E
D
点
阵
屏
l皇堕II垄鱼些!!兰查些墨l
图1系统硬件结构框图和固化软件数据流图
若为普通的气象信息短信,则从字模存贮器中提取相
应的中英文字模点阵,发送到LED屏上显示;若接收
到的短信为命令短信,则按要求完成各种命令动作,
例如,更改,查询LED屏幕显示方式和系统参数,回
送保存在Flash中或正在显示的短信内容等.
2G18与单片机的接口,AT指令的应用和
连续多条短信收发处理
G18与单片机的接口,AT指令的应用和连续多
条短信收发处理的实现如图2所示.
Power0rgOff??————一P4.1
DscEN—————-..P4.2
RXD—————_.-RXDO
DTRTXD??————一TXDO
TS
图2MOTOG18GSM模块与单片机的接口电路图
G18手机模块作为MCU的从设备,其串行数据
收发线RXD,TXD与单片机的串口0(uART0)相
应引脚相连,而Modem信号线DTR,RTS则直接接
地,从而构成通信回路.另外,我们将单片机的两个
引脚1’4.1,1’4.2分别与G18的PowerOn/Off,DSC_EN
脚相连,分别用来实现G18开启/关闭功能和检测G18
是否开机的功能.在以上硬件基础上,单片机即可应
用GSMAT指令…对G18进行各种操作.在我们的系
统中,主要用到以下三条AT指令:”列SIM卡中接
收到的短信”命令AT+CGML,”发送短信”命令
AT+CGMS和”删除短信息”命令AT+CGMD等.
系统设计的核心目标是无遗漏地将每一条接收到
的短信息解码后显示到LED屏或按要求完成各种命
令动作.如何才能无遗漏地捕获到每一条接收到的短
信息呢?通常的作法是应用”短信到达通知”命令
AT+CNMI让GSM模块接收到新的短信之后自动向
MCU发一个新短信到达通知帧,MCU便可用”读短
信”命令AT+CMGR读取接收到的短信息.但考虑到
系统有可能在短时间连续接收到多条短信,这样就有
可能出现系统在处理第一条短信息的时候错过后来的
短信息.为此,我们设计了以下MCU工作时序:(1)
中国传惑器hnp://www.sensor.com,cn
应用MCU片内定时器每隔一定时间(如4s),就用
AT+CGML列出SIM卡内的短信息.如下,即为G18
模块接收到”AT+CGML”命令的响应帧的一个实例:
+CMGL:001,001,,048
0891683108507905D0l40D91683159801016F
10008206022128523231C621189C95F974F60
96644E865E7D9ED85916002C51764ED690F
D597D
+CMGL:002,001,,038
089168…(余下略)
字符”+GMGL:”后的第一个数字指明了短信在
SIM卡的位置,后面以”0891”开头的字符串即是接
收到的短信的PDU码串;(2)截取第一条完整的短
信息(第一个”+GMGL:”到第二个”+GMGL:”
之间所有的字符),并将它读取到内存后,解码即得
到短信内容;(3)根据短信内容作不同的处理,若需
回复,则将回复的内容放在短信息中编码后用
AT+CMGS命令回送给信息中心:(4)短信处理完后,
应用AT+CMGD=nnn(nnn为短信在S卡中的位置)
将其从SIM卡上删除;(5)重复以上步骤,直到SIM
卡中再无未处理的短信息.这样,对GSM模块连续
接收到的多条短信,MCU可依次在后续的定时器事件
中对短信逐条进行处理,同时也及时清空了SIM卡内
存以腾出空间存放新接收的短信.
3短信PDU码和解码在单片机上的实现
GSM系统收发短信有三种:BlockMode,Text
Mode和PDUMode,其中PDUMode最为通用,是手
机默认的编码方式.一个PDU串不仅包含可显示的消
息本身(sms),还包含很多其他信息,如短信服务
中心号码(smsc),目标号码(dest),回复号码(SrC),
编码方式(dcs)和服务时间引.其中,短信消息本
身在PDU串中以7bit或UCS2形式编码,故必须将它
解码后才能得到短信内容.对编码方式为7bitASCII
码(dcs=0)的情况,其编解码的实现与在微机上的实
现相似,可以通过编写转化函数来实现I4J;而对编码方
式为UCS2(dcs=8)的情况,涉及到Unicode宽字节
字符串,在微机编程中,可应用Windows提供的API
函数MultiByteToWideChar和WideCharToMultiByte
来实现国标码GB2312到宽字节UCS2码之间的转变,
然而单片机不支持宽字节字符串也没有现成的库函数
可调用,故只能用查表的方式来实现这一功能:在系
统的固化程序中建立一个UCS2到GB2312码的转化
31
网络,通信与多媒体《电子技术》2004年第6期
表,然后用二分检索法即可快速地实现UCS2到
GB2312码的转换(相应代码略).
4中英文字符的存取和在LED屏上的显示
MSP430F149单片机的另一个串行通信口UART1
用于同LED屏的通信.由于我们的LED屏是图形点
阵形式的,所以系统要在LED屏上显示各种中英文字
符也必须以图形点阵的形式发送,这就存在中英文字
模的创建,存贮,读取和显示问题.
如图3所示,在我们的系统中,选用两片
AT24C1024芯片构成256kB的闪存用于存贮中英文
字模等内容.该芯片是一种IIC总线的存贮器,和MCU
的数据通信只需要两个引脚SDA和SCL即可,和通
常的并行存贮器相比,可以大大地节约MCU的端口
引脚资源,也节约了PCB的布线面积:两片
AT24C1024芯片的A1脚分别接逻辑电平”0”和”1”,
构成低128kB和高128kB片外存贮器.
一图3IIC闪存同单片机接口电路图
闪存中存贮的中英文字模分别选用UCDOS软件
中的16x16汉字字模文件HZK16和8×16英文字模文
件ASC16.在HZK16文件中,汉字按区位码的顺序
排列,共94区,每区94个汉字,每个汉字占用32
个字节,单个汉字的起始位置可由下式算出:
offset=((qm—-1)x94+(wm—-1))x32
式中,qm和wm分别为该汉字的区码和位码;在
ASC16文件,英文按ASC码顺序排列,每个英文占
16个字节,其起始位置offset=ASCIIx16.
由于HZK16文件有262kB,ASC16有4kB,而
我们的闪存仅有256kB不足以存放上述两个文件.
为此,我们去掉了HZK16文件中位置大于256kB
的生僻汉字,同时,考虑到HZK16文件中10,15区
共32x94x6约18kB的空间未用,故我们将英文字模
点阵ASC16文件存在此段空间中,而剩余的空间则用
于存放系统参数和数据等信息.
系统中用到的LED屏是192x32单色点阵形式,
每点在内存中用lbit表示,可显示两行,每行24个
英文字符或12个汉字.故对多于48个字符(一个汉
字当两个英文字符)的短信应分割为多屏显示.以下
是短信分割为多屏显示和中英文字符同屏混合显示的
32
程序原理:
voidShowSMS(char*sms){#sms为短信内容(GB2312码)
Imglndex=0;//Imglndex为屏数序号
while(*sins){,/短信所有字符显示完毕?
j=0;,/j为列坐标,每行至多24列
while(sms&&j<23){,/显示第一行
iffsms&0x80&&(sms+1)&0x80)
{,/当前字符为汉字
offset=(((sms+1)-161+(sms-161))94)32;
Read1024(offset,font,32);//取字模
,/将字模放到LED显示缓冲区buf中
for(i=O;I<16;i++){
buf[i24+j]=font[i2】;
buf[i24+j+1]=font]i2+1】;
)
sms+=2;j+=2;,/汉字相当于两个字符
)
else{,/当前字符为英文
offset=ASC_START+(sms)16;
Read1024(offset,font,16);//取字模
for(I=0;I<16;I++)buf[I24+j】=font【I】;
sms++;jH;
)
)//ofwhile
……
?显示第二行的方法类似
,/发送缓冲区buf中的内容到LED屏,屏数加1
SendBufToLED(buf,Imgldex++,DispMode);
)//ofwhile
)//offunction
基于GSM短信和MCU的LED信息发布屏系统
投入应用后,效果良好.目前,本系统~-a—P’支持多条
短信的循环滚动显示,可广范应用于交通,水文等多
种信息的无线发布.进一步改进后,系统将有接收和
显示EMS图片短信的功能,从而更形象有效地向公
众发布信息.
参考文献
lMotorolaG18DevelopGuideV3.0[M/CD】
2魏小龙.MSP430系列单片机接口技术及系统设计实例
【M】.北京:北京航天航空大学,2001
3ATMELAT24C1024DataSheet[M/CD]
4SMS.7bit.英文编码.英文解码.usc2中文编码.中文
解码[EB/OL],
中国传感器h钍pY/www.sensor.com.cn