2025年11月14日
配天机器人2025年11月14日
TE2025年11月14日
西门子2025年11月14日
新时达2025年11月14日
蔡司工业
2025年11月13日
埃尔森
2025年11月10日
BBS
2025年11月07日
劳易测
2025年11月06日
和利时
2025年11月14日
威图
2025年11月14日
TE
2025年11月14日
KUKA
2025年11月14日
先导智能
2025年11月14日
TDK

图1 TC35i与AT89C51的接口电路
操作过程如下(斜体字符为响应信息,{}内为注释):
AT+CMGL=2{读未发短消息}+CMGL:1,2,24{1表示信息个数,2表示未发信息,24表示信息总容量}
08 91 683108501505FO 11 00 0B 81 3106656930F1 0000A7 0B E8329BFD06DDDF723619 OK
下面分析这条消息:
08:短消息中心地址长度
91:短消息中心号码类型,91是TON/NPI。TON/NPI遵守International/E.164标准,指在号码前需加“+”号,此处还可以有其他数值,但91最常用。
683108501505FO:短消息号码,是所使用的服务中心地址。由于位置上略有处理,实际号码应为86138055155500(字母F意指长度减1),这是作者所在地GSM短信息中心的号码。
11:文件头字节(header byte,是一种bitmask)。这里11指正常发送短信息。
00:信息类型。
0B:被叫号码长度。
81:被叫号码类型。
3106656930F1:被叫号码,也经过了移位处理,实际号码为13605696031。
0000A7:短信息编码类型GSM Default Alphabet,如为中文则是0010A7。
0B:短信息长度。
E8329BFD06DDDF723619:短信息内容“Hello World!”。
单片机与手机的软件接口其实就是单片机通过与GSM短信息有关的AT指令控制手机的技术,如读取手机的短信息内容、删除短信息内容、列出手机中还未读的短消息等。执行l条指令,并非某些资料介绍的那么简单,事实上,指令的执行过程需要单片机与手机交互应答完成,每一次发送或接收的字节数有严格的规定,二者必须依据这些规定实现数据交换,否则,通信就是失败的。表1列出AT指令执行过程。
表1 AT指令的执行过程
所有AT指令的指令符号、常数、PDU数据包等都以ASCⅡ编码形式传送,比如“A”的ASCⅡ编码为41H,“T”的ASCⅡ编码为54H,数字“0”的ASCⅡ编码为30H等。
单片机控制手机工作,必须把手机的短信息工作模式设置为PDU格式,即通过指令AT+CMGF=0完成。
单片机向手机发送每l条指令后,必须以回车符作为该条指令的结束,回车的ASCⅡ编码为ODH,例如单片机向手机发送“AT+CMGF=0"指令,其ASCⅡ编码列为“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后1个字节0DH就是回车符,表示该条指令结束,如果没有这个回车符,手机将不识别这条指令。
当手机接收到一条完整的AT指令后,手机并不立即执行这条指令,而是首先把刚才接收到的AT指令的全部ASCⅡ编码序列全部反发送出来(含ODH),其次发送1个回车符和换行符的ASCⅡ编码即0DH和OAH,最后执行该条指令。
手机向单片机发送短信息内容时,其PDU数据包的内容是16进制表示的数据,但并不是直接向单片机传递16进制数据,而是仍然把每一位16进制数以ASCⅡ编码来发送,这样,2个字节的16进制数就变成4个字节的ASCⅡ码。但是,PDU数据包中的数据字节长度部分仍然是实际字节长度,而不是变成ASCⅡ码的字节长度,这在编程时应特别注意,否则,接收的数据就不完整。单片机接收到PDU数据包数据后,必须将其恢复成16进制数据,其算法如下:
设a为接收的ASCⅡ码.b为转换后的16进制数,那么,如果a<39H,则b=a-30H;如果a>39H,则b=a-30H-07H。最后把前后2个数合并为1个字节。
手机向单片机应答PDU数据包的字节数不包括前9个字节数据(短信服务中心地址),但向单片机传送PDU数据包时包括这9个字节的数据,例如:如果手机应答的PDU数据长度为50,而实际向单片机传送的16进制数据为59字节,ASCⅡ码为2x59字节,所以,单片机必须按2x59个字节接收PDU数据。
为了使MCU操作,可用1个512 KB的存储器(如本系统中的29F0410)存储全部的国标16x16点阵汉字、8x16的ASCⅡ码点阵数据及汉字语句编码数据。从小到大依次存有国标区位码表中的所有汉字,每个汉字占用32个字节,每个区为94个汉字。在文件ASCl6中按ASCⅡ码从小到大依次存有8x16的ASCⅡ码点阵,每个ASCⅡ码占用16个字节。由于29F040的容量为512 KB,而微控制器只能管理64KB的数据空间,所以可将29F040分成16页,每页32 KB,占单片机系统数据空间的8000H~OFFFFH。首先提取16x16的国标汉字点阵和8x16的ASCⅡ码点阵(如UCDOS软件中的HZKl6和ASCl6)并将其直接写入29F040。其中HZKl6(256 KB)占O-7页。为了便于编程,虽然ASCl6只有4KB,也单独占用第8页。
在PC的文本文件中,汉字是以机内码的形式存放的,每个汉字占用2个字节;第一个字节为区码,为了与ASCⅡ码区别,范围从十六进制的0AIH开始(小于80 H的为ASCⅡ码字符),对应区位码中区码的第一区;第二个字节为位码,范围也从0A1H开始,对应某区中的第一位码。这样,将汉字机内码减去0AOAH就是该汉字的区位码。如汉字“房”的机内码为十六进制的“B7BF”,其中“B7”表示区码,“BF”,表示位码。所以“房”的区位码为0B7BFH-0AOAOH=17lFH。将区码和位码分别转换为十进制得汉字“房”的区位码为“2331”,即“房”的点阵位于第23区的第31个字的位置,相当于在文件HZKl6中的位置第32x[(23-1)x94+(3l-1)>=67136 B以后的32个字节为“房”的显示点阵。
4 结束语
在信息化社会中,远程信息传递扮演着重要的角色,GSM模块以其准确、低廉、实时的特点为人们获得某种信息提供便利,同时LED显示又是沟通的重要窗口,二者结合显示可应用的领域十分广泛,如交通、天气预报、广告、通知、工农业生产、商业信息等,本设计采用的模块市场上容易获得,采用信息直接显示不用返回,显示环节运用动态扫描减少LED工作时间,延长寿命且节能,扩展的数据存储器容量达8 KB,显示时间较长,较多信息可分时显示,结构简单,体积较小,实用性强。