积分规则 网站地图 帮助中心    
嵌入式软件 单 片 机 DSP 存储器 传感控制 光电显示
嵌入式硬件 CPLD/FPGA SOPC AD/DA 接口电路 模拟设计
I C设计 通信产品 汽车电子 电源产品 消费电子 数控系统
工业控制 军工/航天 安防产品 医疗电子 计算机外设 测试测量
供应 I C
求购 公司库

  IC 求购 销售 公司 论文 DATASHEET 参考设计 论坛
当前位置: 电子技术 >> 单片机 >> 应用论文
  相关分类: 相关文章 | 应用论文 | 新产品 | 下载 |
基于STC单片机与GPRS的图文LED屏
 
作者:李秀芝 郝国法   来源:无忧电子开发网    点击数:107   更新时间:2008-9-1
您可以添加到网摘 让更多人关注此文章:

    

1 序言

GPRS(General Packet Radio Service,通用分组无线业务)的出现充分利用了现有的GSM网络,不仅适用于间断的、突发性的或频繁的、少量的数据传输,也适用于偶尔的大数据量传输。它使移动通信与数据网络合二为一,它利用“分组交换”(Packet Switch)的概念所发展出的一套无线传输方式,可高效地利用现有的无线电频谱,为用户提供最快达到ll5kb/s数据传输率的服务。鉴于当前网络的发展,短消息的迅速普及,使得用手机控制LED显示广告、新闻等公众信息成为了可能。用SMS控制车载小屏显示的技术非常多,但能显示小图片的却寥寥无几,本文针对这种情况设计了一种可显示汉字和一些简单图片的车载小屏广告发布软硬件设计系统。

2 硬件设计系统

图1 硬件设计框图

如图1所示,本系统主要由三部分组成:GPRS 模块;单片机模块;LED显示屏模快。


2.1 GPRS 模块

本模块采用的是SIMCOM 的SIM300,外还需要手机卡座,当然还要有手机卡,此手机卡是为收短信而设置的。该模块的功能是通过天线接收手机发过来的短信,并且通过串口与单片机保持联系,看是否有读短信的AT命令,等单片机读短信成功,再完成单片机删除短信的AT命令。

2.2 单片机模块

该模块的主要芯片是STC89C58RD+单片机,该单片机处理速度快且RAM足够大。其主要优势是:时钟频率可达80 MHz;内部含有32 KB 的闪存、1 280 B 的RAM、8 K的EEPROM;IAP/ ISP 程序下载机制,大大降低设备开发成本和使用成本,并使硬件加密做到无懈可击;具有4 级8 个中断源,提供2 个额外的外部中断机制和4 个I/ O 口资源。这些特点大大简化了本系统外围电路的设计。

单片机的主要功能是持续将已有的屏显示数据送LED屏,同时通过串口发AT指令监视GPRS 模块是否有新消息,一旦有,便进入串口中断,对数据进行处理。而外部FLASH主要存的是一些常用汉字和一些符号的字模,单片机处理好文字信息后,将通过它获得汉字字模,以便屏显。

2.3 LED

终端显示设备LED屏主要控制芯片是74HC595,还有双向驱动芯片74LS245以及一些辅助的电流放大芯片。此屏可以显示12个16*16的汉字。

3 软件设计部分

    软件设计部分可谓是整个系统的指挥中心,有了这部分的设计才能完成AT命令读删信息、信息解码、控制屏幕实时显示数据。

3.1  AT命令

使用的主要是与SMS有关的指令:

(1)AT命令读收到的新消息:at +cmgr=1 回车;

(2)删除已读完的消息:at+cmgd=1 回车。

3.2  SMS及汉字、图片的解码方式

SMS:文本短信服务。短消息的内容可以是文本、数字或二进制非文本数据,但每个SMS容量平均有140 字节,一般不超过60个汉字。 如果用户关机或不在服务区内,短消息可存储在短消息中心,待用户开机后就可以自动收到。发送和接收SMS信息有三种方式:Block Mode ,Text Mode和PDU Mode。Block Mode已是昔日黄花。Text Mode是纯文本方式,国内手机一般不支持,主要用于欧美地区。本文所有收到的短信都是PDU Mode。

3.21 PDU Mode

PDU模式是发送或接收手机短消息最常用的一种方法,它把短消息正文经过十六进制编码后传送。它可以发送最多160个字符,当使用7-bits编码的时候。8-bit编码(最多140个字符)通常无法直接通过手机显示;通常被用来作为数据消息,例如:smart messaging中的图片和铃声)和OTA WAP设置。16-bit信息(最多70个字符)被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。

本系统的文本信息采用的是Unicode(UCS2)方式,而小图片信息采用的是7-bits编码方式。由于信息来自手机,所以只介绍收到信息后,单片机的解码过程。

3.22 汉字的解码过程

外部FLASH储存的是用matlab工具将Unicode(UCS2)码与国标码一一对应后的常用汉字和字符的字模,所以单片机的解码过程也就是寻找相应字模的过程。当出现需要处理的情况时,单片机通过串口把手机模块收到信息完全读过来,因为此信息有一段消息头:包括对方手机号、客服中心号码、时间等等。而显示屏显示的时候只需要消息的主题内容,所以单片机处理消息时把屏号做为第一个字节处理将汉字对应的Unicode码转化成十进制的数字,然后分离出区号和位号去寻找字模,然后按相应的顺序存在单片机的内部ram里,方便取数据送屏。可以用图 2描述。

                                                                                                                

 

图2  Unicode(UCS2)码解码简图

3.23图片的解码过程

考虑到图片信息的数据量较大,一个16*16的图片的就有32个字节,用手机发送时采用的是7bit的编码方式,这样可节省一半的内存空间,单片机读和对信息进行取舍同文字信息。关键是这部分的解码。在这部分解码时首先要弄清楚7bit的编码原理。

编码的过程比较容易理解:将源串每8个字符分为一组进行编码,在组内字符间压缩,但每组之间是没有什么联系的。每一组内,首先将各个字符转换为7位的标准二进制ASCII码,然后要将后面字符的低位逐位调整到前面,补齐前面的差别。以发送一个16*16的图片为例编码后就有28个字节,但单片机读取的是56个字节,这是因为手机发送数据的过程中是把一个字节视为为二个字节进行发送的。当单片机负责解码时,采取的处理方法是将每七个字节分为一组,处理为八个字节,再将这八个字节变换成相应的数字进行两两合并,也就是还原原来图片的32个字节,这部分的程序如下:


 for(j=0;j<ccount;j=j+7)

{ h=j/7*4; a=gsm[j]&0x80;

chartemp1=gsm[j]&0x7f;

     if(chartemp1<'A') chartemp1=chartemp1-48;

     else chartemp1=chartemp1-55;

     b=gsm[j+1]&0xc0;

     chartemp3=((gsm[j+1]&0x3f)<<1)|(a>>7);

     if(chartemp3<'A') chartemp3=chartemp3-48;

     else chartemp3=chartemp3-55;

     cun[h]=(chartemp1<<4)|chartemp3;

     c=gsm[j+2]&0xe0;

chartemp5=((gsm[j+2]&0x1f)<<2)|(b>>6);                                                       if(chartemp5<'A') chartemp5=chartemp5-48;

     else chartemp5=chartemp5-55;

     d=gsm[j+3]&0xf0;                                                                                        chartemp7=((gsm[j+3]&0x0f)<<3)|(c>>5);

     if(chartemp7<'A') chartemp7=chartemp7-48;

     else chartemp7=chartemp7-55;                                                                     cun[h+1]=(chartemp5<<4)|chartemp7;                                                                                                                  e=gsm[j+4]&0xf8;                chartemp9=((gsm[j+4]&0x07)<<4)|(d>>4);

     if(chartemp9<'A') chartemp9=chartemp9-48;

     else chartemp9=chartemp9-55;

f=gsm[j+5]&0xfc;

chartemp11=((gsm[j+5]&0x03)<<5)|(e>>3);

     if(chartemp11<'A') chartemp11=chartemp11-48;

     else chartemp11=chartemp11-55;

     cun[h+2]=(chartemp9<<4)|chartemp11;

     g=gsm[j+6]&0xfe;

     chartemp13=((gsm[j+6]&0x01)<<6)|(f>>2);

     if(chartemp13<'A') chartemp13=chartemp13-48;

     else chartemp13=chartemp13-55;

     g=g>>1;

     if(g<'A') g=g-48;

     else g=g-55;

     cun[h+3]=(chartemp13<<4)|g;}


3.3 与屏有关的软件设计

这些函数包括往内部ram写数据的writeyipin() 函数,送临时储存区的读数据函数,行扫描列扫描函数,送行列数据函数,同时还有一些延时函数。值得一提的是writeyipin() 函数,在写数据时,因为采用的条屏是可显示12个16*16的图片,所以按照一个字行列的显示顺序存储,这样以来读数据送屏时不必做其他的处理,节省了时间和资源。

综上所述软件的流程图如图3所示。

图3 软件主要流程图

4结束语

本系统运行稳定,能清晰准确的显示汉字与图片信息,且成本较低,可用于车载小屏广告信息的发布,也可用于偏远地区的政策宣传。




相关文章
· 中国LED发展神速将成为未来照明产业主角[29]
· 金融危机来袭 台湾LED产业下半年产能现过剩[40]
· LED应用领域及LED驱动IC技术市场分析[142]
· 聚积科技深耕LED驱动市场[122]
· 第四届上海国际LED、照明展览会[329]
热门评论排行
·VHDL设计中电路简化问题的
·ARM嵌入式系统基础教程(N
·江苏嵌入式Linux教育培训
·ARM处理器应用开发4步骤
·锐极LINUX驱动培训班定于

文章评论
    没有任何评论
*只显示最新10条评论。评论内容只代表网友观点,与本站立场无关。更多评论
发表评论
  * 请先[登陆]再进行评论,谢谢。
评分: 1分 2分 3分 4分 5分
内容: *
发帖须知:
一.所发文章必须遵守《互联网电子公告服务管理规定》;
二.严禁发布供求代理信息,公司介绍,产品信息等广告宣传信息;
三.严禁恶意重复发帖;
四.严禁对个人,实体,民族,国家等进行漫骂,污蔑,诽谤。
 
热点新闻 [更多]
 
新兴半导体技术催生绿色节能的大学校园
电子系统创新促进汽车走向环保与节能
意法CEO携新品巡游中国 
未来3年新余需要8万光伏产业人才
看好中国未来发展:瑞萨提升在华芯片产
中国LED发展神速将成为未来照明产业
剖析联发科技2009年五大产品策略
突破四大障碍 蓝牙立体声耳
瑞萨向德国企业出售当地半导体前工序工
产业紧缩 PCB业或将提前
 
热门下载 [更多]
 
[ PCB设计] Protel99教程下载
[ ] 手把手学单片机20个例
[ ] 单片机做的智能台灯
[ ] 单片机入门书
[ ] linux系统移植开发文档
[ ] IC卡的读写程序
[ ] 8051单片机C语言彻底应用
[ 常用软件] 555定时器电路设计软件V1.2
[ 常用软件] 51定时器计算软件
[ ] ARM处理器应用开发4步骤
 
论坛新帖 [更多]
 
[转]教你如何进行电磁兼容设计...
[转]汽车和专业音响原厂设计原...
诺基亚,三星手机原厂图纸和PC...
电子元器件可靠性和失效分析经典...
[建议]FPGA设计技巧与实例...
Xilinx FPGA设计快速...
基于CPLD的各种设计实例和分...
教你如何学会MSP430单片机...
凌阳单片机教程(共8章)非常详...
[建议]学习PIC系列单片机的...

 
赞助商 [更多]
 

ICP许可证号:[粤 05056597]
联系电话:010-82517432 82517615 传真: 010-82517615

版权所有 Copyright © 2006 嵌入式技术网