宝视来
明基
鸿合
快速搜索:

程序设计

2013年12月03日 10:36  来源:dzsc  字体【   

3程序设计

3.1短消息收发控制

单片机通过AT命令控制TC35i模块进行初始化和短消息的收发,对短消息的控制共有3种模式:Block模式、PDU模式和Text模式。Text模式不支持中文,而使用Block模式需要手机生产厂家提供驱动支持,本系统使用PDU模式进行短消息接收和发送。

系统上电以后首先对TC35i进行初始化,内容主要包括:

(1)设置短消息中心号码AT+CSCA=“+8613800250500”

<CR>(该号码因地区不同而设置不同)。

(2)设置短消息格式AT+CMGF=0<CR>(0代表PDU格式)。

(3)设置短消息存放的位置AT+CPMS=“SM”<CR>(SM表示将短消息存放在SIM卡中)。

(4)设置短信到达通知AT+CNMI=1,1,0,0,1<CR>。此命令可使模块在短消息到达后向单片机发送指令<CR>+CMTI:“SM”,INDEX(信息存储位置)<CR>。

系统操作过程中,单片机通过AT命令控制TC35i模块接收或发送短消息。命令格式如下:

(1)读取短消息指令AT+CMGR=INDEX<CR>。

(2)发送短消息指令AT+CMGS=<length><CR>。

(3)删除短消息指令AT+CMGD=INDEX<CR>。

(4)SIM卡状态查询命令AT^SCKS。

接收和发送的短消息均以PDU串的数据形式被单片机处理,PDU串由数字“0”~“9”和字母“A”~“F”组成,是十六进制数或者BCD码十进制数。PDU串不仅包含可显示的消息本身,还包含很多其他信息,如SMS服务中心号码、目标号码、回复号码、编码方式和服务时间等。发送和接收的PDU串结构不完全相同。下面用2个实例说明PDU串的结构和编排方式。

例1:接收。SMSC号码是+8613800-250500,对方号码是13851872468,消息内容是“你好!”。单片机从TC35模块读取到的PDU串是——0891683108200505F0840D91683158812764F80008303021806354800*F60597D0021。

例2:发送。SMSC号码是+8613800-250500,对方号码是13851872468,消息内容是“你好!”。单片机向TC35模块发出的PDU串是——0891683108200505F011000D91683158812764F80008000*F60597D0021。

3.2LED显示控制程序

LED的动态扫描功能通过使用单片机的定时器0中断实现。定时器0计数初值的设定满足每秒中断1000次以上,每次中断扫描显示一行,这样每行在每秒钟内至少被扫描60次以上。根据人眼的视觉暂留效应,达到了较理想的显示效果。

定时器0中断服务程序:

voidint0(void)interrupt1

{

TR0=0;//关定时器T1

TL0=0x80;//设置初值的低8位

TH0=0xff;//设置初值的高8位

TR0=1;//开定时器T1

if(i<16)//i为扫描的行号,取值0~15,

//依次扫描1~16行

{

P1_5=0;//关HC595锁存

while(z<8)//z为上下各8片HC595按

//从左到右的编号,取值0~7。

//每片HC595都经8次循环,

//实现8位数据的串/并转换

{a=disp[i*2+k];//取上16行的8位显示数据a

b=disp[i*2+k+128];//取下16行的8位

//显示数据b

if(z%2!=0)k+=32-1;

elsek++;

while(j<8)//循环8次,将a通过P1.6

//脚依次移入上面的HC595,

//将b通过P1.7脚依次

//移入下面的HC595

{

P1_4=0;//将P1.4口线拉低,

//产生移位脉冲SHCLK

if((a&au)>0)//假串口P1.6,输出上16行

//的显示数据a

P1_6=1;

else

P1_6=0;

if((b&au)>0)//假串口P1.7,输出下16行

//的显示数据b

P1_7=1;

else

P1_7=0;

P1_4=1;//将P1.4口线置高,产生移位

//脉冲SHCLK

au=au<<1;

j++;

}

j=0;

au=0x01;

z++;

}

k=0;

z=0;

}

P1=(P1&0xf0)|i;//通过P1.0~P1.3产生4位

//行扫描信号ABCD

P1_5=1;//开595锁存

i++;

if(i==16)i=0;

}

本文导航
明基
MAXHUB
快捷
产品关注排行