基于移动数据的LED显示屏设计与仿真

2011-02-10 15:15:56来源: 与非网

  LED电子显示屏幕作为一种信息显示设备,主要用于播放广告、新闻、通知、天气预报、时间、股票信息、航班信息、售票信息等,在站牌、交通路口、公交车、售票大厅、营业大厅、等候大厅、证券公司、机场、体育、气象、交通控制等场所得到了越来越多的应用,具有广阔的应用前景。

  但是,传统的LED显示屏使用有线通信方式传输数据,受到地域和布线的严重限制。如果有大量的LED显示屏同时工作,为LED显示屏传输更新的数据就成为很麻烦的事,并且在没有其他附加控制设备的情况下,LED显示屏的管理部门也无法监控LED显示屏的实际运行情况。

  基于移动数据的LED显示屏使用目前覆盖范围最广、最稳定的GSM/GPRS/CDMA/小灵通网络,在任何有移动网络覆盖的地方都可实时方便地通过短消息方式更新LED显示屏的内容,有效解决了LED显示屏数据更新麻烦、无法监控的困难,减轻了管理部门的工作负担。随着移动通信技术的发展及LED显示屏幕应用范围的进一步推广,此种基于移动数据的LED显示屏幕具有较大应用价值。

1 系统构成及原理

  此种基于移动数据的LED显示屏幕系统由GSM无线收发模块、MCU(单片机)、LED驱动电路、LED显示屏幕四部分组成。原理框图如图1所示。

  系统的控制中心为MCU(单片机),本设计使用ATMEL公司的AT89C51芯片,它通过串口控制GSM无线模块收发移动数据,并控制LED驱动电路及显示屏幕将需要显示的内容用适当的方式显示出来。GSM无线收发模块使用西门子公司的TC35i,配一张市面上常见的普通SIM卡,负责接收合法用户通过移动网络发过来的显示内容,并将LED显示屏的状态数据通过移动网络回传给用户。LED驱动电路及显示屏幕与传统方式基本相同[1,2],采用具有“16 PIN 08接口”的LED单元板,可拼接成需要的屏幕尺寸。

  使用时,用户只需将希望在LED屏幕上显示的内容在手机或电脑上按短信格式编辑好,然后像普通短信一样发送给插在TC35i模块中的SIM卡所对应的号码。带SIM卡的TC35i模块接收到发来的短信后,首先检查短信的发送者是否为合法用户。若不是合法用户,TC35i丢弃该短信;若是合法用户,则取出要显示的内容,并按要求的方式控制LED屏幕将信息显示出来。同时,TC35i可将LED屏幕的状态数据以短信格式发送给合法用户。如此,利用移动通信网络实现了显示内容及状态数据的双向实时传输。

  考虑到简便性,本文以一块32×64点阵的LED单元板显示16×16点阵的汉字为例说明系统原理。至于更大尺寸的LED屏幕,只要将类似的多块LED单元板通过“16 PIN 08接口”依次级联即可。

2 硬件实现

2.1 TC35i模块与单片机的硬件接口电路

  本系统中移动数据的收发都依靠TC35i模块进行。TC35i模块集射频电路和基带处理于一体,可工作在GSM 900 MHz和DCS 1 800 MHz两个频段,使用RS232串口与MCU(单片机)连接,其RS232数据接口符合GSM07.05和GSM07.07规范,使用标准的AT命令集。模块通过50 Ω的天线连接器连接天线,还通过40引脚的ZIF连接器实现电源和SIM卡支架的连接,以及指令、数据、语音信号及控制信号的双向传输[3]。

  图2显示了单片机和TC35i接口的关键部分。

  需要注意,系统加电后,为使TC35i进入工作状态,必须给IGT引脚加一延时大于100 ms的低脉冲,并且电平下降持续时间不可超过1 ms。启动后,IGT应保持高电平(3.3 V)。驱动IGT时,TC35i供电电压不能低于3.3 V,否则TC35i不能激活。另外,ZIF连接座的SIMPRES引脚用来检测SIM卡是否插好,如果连接正确,则SIMPRES引脚输出高电平,否则为低电平。

2.2 单片机及LED显示驱动电路

  由于通过移动网络短消息得到的只是汉字的内码,而LED屏幕显示需要汉字的点阵信息,所以在本系统中必须存放GB2312汉字点阵字库,再加上LED屏幕显示时需要存放大量的显示数据,所以在单片机AT89C51的外围扩展了64 KB的RAM(62256)和512 KB的Flash 存储器(29F040)。其中29F040存放点阵字库(HZK16、ASC16)和Unicode转GB2312码表,62256做显示缓存。单片机收到短消息后先把待显示信息转换成GB2312码,显示时再从29F040中读出对应点阵信息存储在62256中。

  单片机P1口用于控制LED屏幕的显示,其中P1.0~P1.3脚分别输出4位行选信号A、B、C、D,ABCD从0000变到1111,逐行扫描1~16行点,将显示数据依次显示出来;P1.4脚输出移位时钟信号SHCLK,使得显示数据可以依次进入LED单元板;P1.5脚输出锁存信号STB,使得显示数据可以稳定输出;P1.6脚输出LED单元板的上16行的显示数据R1,P1.7脚输出LED单元板的下16行的显示数据R2。

  32×64点阵的LED单元板用于显示16点阵的汉字时,可以显示2行,每行4个汉字。其组成电路如图3。行驱动电路使用了2片74HC138芯片,上、下16行的列驱动电路都使用了8片74HC595芯片。具体显示时采用动态扫描方式,单片机输出的4位行选信号A、B、C、D经2片74HCl38译码后逐行扫描LED单元板的1~16行和17~32行;上16行的显示数据R1及下16行的显示数据R2在同一移位时钟信号SHCLK的作用下分别依次打入各自的74HC595,最后在共同锁存信号STB的作用下稳定输出在74HC595的并行输出端。

  在实际制作LED单元板时,往往在74HCl38芯片输出的行扫描线上再加上4953芯片以增加驱动能力。

3 程序设计

3.1 短消息收发控制

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

  系统上电以后首先对TC35i进行初始化,内容主要包括:
                (1)设置短消息中心号码AT+CSCA=“+8613800250500”
                     (该号码因地区不同而设置不同)。
                (2)设置短消息格式AT+CMGF=0(0代表PDU格式)。
                (3)设置短消息存放的位置AT+CPMS=“SM”(SM表示将短消息存放在SIM卡中)。
                (4)设置短信到达通知AT+CNMI=1,1,0,0,1。此命令可使模块在短消息到达后向单片机发送指令+CMTI:“SM”,INDEX(信息存储位置)。 

  系统操作过程中,单片机通过AT命令控制TC35i模块接收或发送短消息。命令格式如下:
                 (1)读取短消息指令AT+CMGR=INDEX。 
                 (2)发送短消息指令AT+CMGS=<length><CR>。
                 (3)删除短消息指令AT+CMGD=INDEX
                 (4)SIM卡状态查询命令AT^SCKS。

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

  例1:接收。SMSC号码是+8613800-
250500,对方号码是13851872468,消息内容是“你好!”。单片机从TC35模块读取到的PDU串是——08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21。

  例2:发送。SMSC号码是+8613800-
250500,对方号码是13851872468,消息内容是“你好!”。单片机向TC35模块发出的PDU串是——08 91 68 31 08 20 05 05 F0 11 00 0D 91 68 31 58 81 27 64 F8 00 08 00 06 4F 60 59 7D 00 21。

3.2 LED显示控制程序 

  LED的动态扫描功能通过使用单片机的定时器0中断实现。定时器0计数初值的设定满足每秒中断1 000次以上,每次中断扫描显示一行,这样每行在每秒钟内至少被扫描60次以上。根据人眼的视觉暂留效应,达到了较理想的显示效果。
  定时器0中断服务程序:
                          void int0(void) interrupt 1
                       {
                          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;
                         else k++;

                     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;
                               }


4 PROTEUS仿真实现

  本设计结合使用Keil μVision2和Proteus软件实现系统的软件设计和硬件仿真调试。

  Proteus软件可以仿真包括51系列在内的多种常用单片机及其外围电路(如LCD、RAM、ROM、键盘、马达、LED等),是目前最好的模拟单片机外围器件的工具。仿真时只需在Proteus软件中画好单片机的外围控制及LED显示驱动电路,然后在单片机芯片的属性中设置好晶振频率,将用Keil C51编写的源程序生成的.HEX文件保存到芯片中,就可以仿真调试了[4,5]。仿真过程中如有硬件问题可在Proteus ISIS中直接修改,如有软件问题可在Keil μVision2中直接修改。通过Keil与Proteus的联合调试就可以得到满意的结果,避免了一开始就直接制作实物,从而缩短了系统的开发周期,降低了开发调试成本。

  在Proteus软件中没有GSM模块TC35i,但可以利用Proteus提供的串口仿真功能来实现单片机与TC35i模块通信的仿真调试。具体电路如图4所示。单片机的串口(P3.0、P3.1脚)通过串行接口器件COMPIM连接TC35i模块(图中未画出TC35i模块)。首先在仿真主机上利用虚拟串口软件VSPDXP(Virtual Serial Port Driver XP)设置出2个相互连接的虚拟串口COM3和COM4,再启动 “串口调试助手”软件,将其中的串口设置为COM4,波特率选择为4 800 b/s,然后将Proteus仿真电路中的COMPIM器件的串口设置为COM3,波特率也选择为4 800 b/s。必须注意COM3和COM4中波特率的设置值与单片机软件中的波特率设置值要相同,在此都设定为4 800 b/s,最后运行Proteus仿真,此时就可以通过“串口调试助手”软件模拟TC35i输出的数据格式向单片机发出数据了。例如,正常情况下如果从“串口调试助手”发送16进制数据串“08 91 68 31 08 20 05 05 F0 84 0D 91 68 31 58 81 27 64 F8 00 08 30 30 21 80 63 54 80 06 4F 60 59 7D 00 21”,仿真电路中的LED屏幕将显示“你好!”。而单片机发给TC35i模块的AT命令串将在“串口调试助手”的接收窗口里实时显示出来。如果不正确,则可以借助Proteus软件中的虚拟串口终端等虚拟仪器和图表进行代码级跟踪调试。

  将仿真成功的电路稍加修改后,制作出电路实物,将程序固化到实物的单片机芯片中,得到的实物运行结果与Proteus的仿真结果完全一致。

  基于移动数据的LED显示屏,使用移动通信网络实时更新LED显示屏的内容,避免了原有系统铺设线路或建造专用无线收发装置的麻烦,有效降低了系统成本,对远离办公场所、特别是室外LED显示屏幕的设计提供了一种新思路。同时,在开发此系统过程中,充分利用嵌入式系统硬件设计仿真平台Proteus软件的强大功能,进行系统虚拟开发,成功后再进行实际制作,大大提高了开发效率,降低了开发成本,对单片机及嵌入式系统的开发具有实用意义。

参考文献
[1] 诸昌钤.LED显示屏系统原理及工程技术[M].成都:电子科技大学出版社,2002.
[2] 张明波.基于单片机的点阵LED显示系统的设计[J].微计算机信息,2007,2(2):85-86.
[3] Siemens TC35i Terminal User Guide[DB/0l].http://www.siemens.com/wm.
[4] 倪升跃.Proteus——一种集单片机模拟和SPICE分析于一身的软件[J].电子世界,2004(12):38-39.
[5] 黄夙绚.Proteus与Ultra Edit、Keil的联合使用[J].无线电,2005(7):36-37.

关键字:LED显示屏  TC35i  单片机  Proteus

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/wltx/2011/0210/article_3669.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
LED显示屏
TC35i
单片机
Proteus

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved