首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 电子技术 > 光电应用
基于移动数据的LED显示屏设计与仿真
来源:本站整理  作者:佚名  2010-04-21 15:59:20



  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 0*F 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 0*F 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;

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:101,574.20000 毫秒