LED显示屏控制系统Word格式.docx
《LED显示屏控制系统Word格式.docx》由会员分享,可在线阅读,更多相关《LED显示屏控制系统Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
LED显示屏的研究背景及意义
在当今现代信息化社会的高速发展过程中,大屏幕显示已经从公共信息展示等商业应用向消费类多媒体应用渗透。
随着宽带网络的发展,数字化的多媒体内容将在信息世界中占据主流,新型的大屏幕显示设备将代替传统电视机成为人们享受信息和多媒体内容的中心。
与传统的显示设备相比,这种未来的巨大需求让大屏幕显示技术成为众人目光的焦点:
(1)LED显示屏色彩丰富,显示方式变化多样(图形、文字、三维、二维动画、电视画面等)、亮度高、寿命长,是信息传播设施划时代的产品。
(2)LED显示屏是集光电子技术、微电子技术、计算机技术、信息处理技术于一体的高技术产品,可用来显示文字、计算机屏幕同步的图形。
它以其超大画面、超强视觉、灵活多变的显示方式等独居一格的优势,是目前国际上使用广泛的显示系统。
(3)LED显示屏应用广泛,金融证券、银行利率、商业广告、文化娱乐等方面,有巨大的社会效益和丰厚的经济效益。
在其历史的演变过程中,出现了多种信息传播媒体:
但就其性能看:
如阴级管(crt)或石英管(dv)大型电视,成本非常昂贵,在不需要超大画面且在室内使用时效果尚可;
彩色液晶显示同样成本昂贵、电路复杂,面积有限,受视频角的影响非常大,可视角度很小;
影象投影设备亮度小、清晰度差(画面受光不均匀);
电视墙表面有分割线,视觉上有异物感,室外应用时亮度效果差。
而LED显示屏以其受空间限制较小,并可以根据用户要求设计屏的大小,具有全彩色效果,视角大,可以用于显示文字、图案、图象、动画、视频、录象信号等各种信息的特点得到了突飞猛进的发展。
LED显示屏的发展主要经历了三个阶段:
1、1990年以前LED显示屏的成长时期。
一方面,受LED材料器件的限制,LED显示屏的应用领域没有广泛开展;
另一方面,显示屏控制技术基本上是通讯控制方式,客观上影响了显示效果。
这一时期的LED显示屏在国外应用较广,国内很少,产品以红、绿双基色为主,控制方式为通讯控制,灰度等级为单点4级调灰,成本较高。
2、1990-1995年,这一段是LED显示屏迅速发展的时期。
进入九十年代,全球信息产业高速增长,信息技术各个领域不断突破,LED显示屏在LED材料和控制技术方面也不断出现新的成果。
蓝色LED晶片研制成功,全彩色LED显示屏进入市场;
电子计算机及微电子领域的技术发展,在显示屏控制技术领域出现了视频控制技术,显示屏灰度等级实现16级灰度和64级灰度调灰,显示屏的动态显示效果大大提高,产品应用领域涉及金融证券、体育、机场、铁路、车站、公路交通、商业广告、邮电电信等诸多领域,特别是1993年证券股票业的发展更引发了LED显示屏市场的大幅增长。
LED显示屏在平板显示领域的主流产品局面基本形成,LED显示屏产业成为新兴的高科技产业。
3、1995年以来,LED显示屏的发展进入一个总体稳步提高产业格局调整完善的时期。
进入新世纪,光电子产业得到广泛的重视,中国加入WTO、北京申奥成功等,成为LED显示屏产业发展的契机,LED显示屏必将得到飞跃发展[5]。
软件开发工具C++概述
C++语言是一种优秀的面向对象程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。
C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用。
面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。
VC++作为一个面向对象的开发工具,而不同于传统的基于过程的编程工具,所以在本文中必须明确以下几个概念:
1、对象
从概念上讲,对象代表着正在创建的系统中的一个实体。
例如,在一个学校管理系统中,像学生、教师、成绩单等都是对象,这些对象对于实现系统的完整功能都是必要的。
从实现形式上讲,对象一个属性(状态)和操作(方法或行为)的封装体。
属性是由对象中变量的内容和值定义的,例如学生有年龄、性别、入学日期等属性。
各个对象的属性值互不相同。
操作是一系列的实现步骤,它能够完成特定的功能,例如对学生可以有选课、毕业等操作。
在C++中,对象的状态由成员变量的值表示,操作由对象的成员函数完成。
对象实现了信息隐藏,对象与外部是通过操作接口联系的,操作的具体实现外部是不可见的。
封装的目的就是阻止非法的访问,操作接口提供了这个对象的功能。
对象是通过消息与另一个对象传递信息的,每当一个操作被调用,就有一条消息被发送到这个对象上,消息带来将被执行的这个操作的详细内容。
在C++中,向对象发送消息就是调用对象的成员函数,从而获取对象的状态信息或是对对象的状态进行修改。
2、类
类是对象的模板,它包含所创建对象的状态描述和方法的定义。
类的完整定义包含了外部接口和内部算法以及数据结构的形式。
由一个特定的类所创建的对象被称为这个类的实例,因此类是对象的抽象及描述,它是具有共同行为的若干对象的统一描述体。
类是抽象数据类型的实现。
一个类的所有对象都有相同的数据结构,并且共享相同的实现操作的代码,而各个对象有着各自不同的状态,即私有的存储。
因此,类是所有对象的共同的行为和不同状态的集合体。
3、继承
类提供了说明一组对象结构的机制,再借助于继承扩充类的定义方式,从而体现代码可重用的优越性。
继承提供了创建新类的一种方法,这种方法就是说,一个新类可以通过对已有类进行修改或扩充来满足新类的要求。
新类共享已有类的行为,而自己还具有修改的或额外添加的行为。
因此,可以说继承的本质特征是行为共享。
从一个类继承定义的新类将继承已有类的所有方法和属性,并且还可以添加所需要的新的方法和属性。
新类被称为已有类的子类,而已有类称为父类,又叫基类,新类又叫派生类。
面向对象的3个要素是对象、类和继承。
在C++中,类是主要的编程对象,程序员需要设计类的成员变量和成员函数,以及类与外界的接口。
对象即类的实例化,类是对象的模板。
同一个类的对象具有相同的行为,但状态可以不同。
继承是创建新类的一种重要方法,派生类按照继承类型的不同可以从基类继承到不同的成员,同时派生类还可以添加新的成员,通过这种继承和扩充得到新的类。
2LED显示屏控制系统的系统分析
根据LED显示屏控制系统的应用,本章设计了LED图文显示屏的体系结构和工作流程。
其中软件系统与无线传输控制硬件主系统之间采用串行通讯方式完成程序下载,实现文本信息的传输。
整体分析
LED显示屏系统组成
LED图文显示屏系统由软件控制系统、无线传输系统、设备主控制器、LED显示点阵、电源等部分组成。
基本结构如下图:
图4-1LED显示屏总体框架
系统工作过程:
软件控制系统主要完成的任务为图文编辑、字模提取与保存、图像预览与文件传输;
无线传输系统主要完成文件信息由PC机传输至LED显示器,硬件控制系统中LED点阵主要任务是通过电流控制完成信息显示,通过单片机的扫描驱动方式的控制对LED点阵行列驱动,实现设备的驱动并最终实现接收的图文显示功能。
计算机软件模块分析与设计
软件模块分为编辑部分和控制通讯部分,编辑部分实现图文文件的编辑功能,通讯部分通过RS-232C串口通讯完成文件到单片机存储模块的传输。
通讯部分将在第三章做详细的介绍。
系统设计采用Windows操作系统下,开启文本编辑窗口,客户区内像素点采用与实际LED点阵显示屏像素点相同,功能类似Word文档编辑工具,包括编辑模块、绘图模块、文字编辑模块、颜色控制模块、显示效果加载模块、预览模块、信息下载模块。
1、编辑模块
1)除Windows自生成的剪贴、复制、粘贴功能,系统加入了撤消、重复功能。
(1)选中撤消功能可以实现之前编辑工作的一步步取消功能。
(2)选中重复功能可以实现之前编辑工作的最近的一条操作命令。
2)绘图:
包括直线、矩形、椭圆、圆等在内的图形绘制功能。
3)文字编辑:
包括各种字体、字形、字号、效果、颜色的文字的编辑,并且根据应用的特殊用途,加入指定位置文字的编辑。
(1)选中文字功能,弹出字体选择框体,可以选择各种字体的文字进行编辑
(2)调出具体文字位置编辑对话框,输入文字和要求显示位置的横坐标和纵坐标。
4)颜色控制模块:
由于应用领域的具体特点,主要采用了红、绿、黄三种颜色,可以实现颜色控制。
2、增添效果模块:
通过增添显示效果和传输通讯中多屏文件单屏传送,完善了控制系统的功能。
1)普通效果,静态的显示屏幕上的信息
2)滚动效果,可以实现从左向右的信息滚动显示,可以与静态信息穿插显示。
3)单屏信息传输,实现编辑待传输信息的保存。
4)多屏信息传输,实现编辑保存好的单屏信息合并保存成一个文件,大大减少传输文件时的烦琐。
3、图像预览模块:
在文件传输之前实现字模信息的预览功能,可以实现预览传输前所保存的任何形式的字模信息,并且直接集成到工具栏文件打开功能键按钮。
1)显示效果,通过文件传输前的预览,可以调整静态与滚动显示效果的排列顺序。
2)显示时间,显示不同屏幕显示信息之间的时间间隔。
软件模块结构图如下:
图3-2软件模块结构图
串行通信的工作原理
在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等,都会遇到怎样与PC机进行通讯的问题。
微机的主板通过并行口和串行口等与外设交换数据,并行口主要进行短距离的数据传送,传送速率较快,通常用作打印机的输出。
而长距离的数据传送只能采用串行口,串行口只需一根数据线进行数据传送,传送距离较长,投资较少,但传送速率较低。
因此,在数据量不大、传输要求不高的情况下,一般都采用串行通讯方式,即通过与PC机配置的RS-232标准串行接口COMl,COM2等相连接来实现应用系统与PC机之间的数据交换。
为了能使微机与单片机之间能通信,必须遵守相同的通信协议。
由于单片机的串行口以TTL电平进行输入输出,而微机的RS-232接口则采用+12V和的-12V电平方式,与PC机RS-232标准串行接口的电气规范不一致,因此要实现单片机与PC机之间的数据通读,必须进行电平转换。
一般常用的平转换器件有MC1488,MC1489及MAX232等,但MC1488,MC1489需要+-12V电源,这对于不具备+-12V电源的单片机系统是非常不便的,而双路RS-232收发器MAX232就是基于这一功能开发的新型器件[4]。
RS-232C串行通信简介
串行通信接口标准经过使用和发展,目前已经有几种。
但都是在RS-232标准的基础上经过改进而形成的。
RS-232C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。
它适合于数据传输速率在0~20000b/s范围内的通信。
这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。
由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。
RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(recommededstandard)代表推荐标准,232是标识号,C代表RS-232的最新一次修改(1969在这之前,有RS232B,RS232A)。
它规定连接电缆和机械、电气特性、信号功能及传送过程。
RS-232C规定标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,常用的只有9根,它们是:
(1)联络控制信号线:
数据装置准备好(Datasetready-DSR)——有效时(ON)状态,表明MODEM处于可以使用的状态。
数据终端准备好(Datasetready-DTR)——有效时(ON)状态,表明数据终端可以使用。
这两个信号有时连到电源上,一上电就立即有效。
这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。
请求发送(Requesttosend-RTS)——用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。
它用来控制MODEM是否要进入发送状态。
允许发送(Cleartosend-CTS)——用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。
当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TXD发送数据。
这对RTS/CTS请求应答联络信号是用于半双工MODEM系统中发送方式和接收方式之间的切换。
在全双工系统中作发送方式和接收方式之间的切换。
在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。
接收线信号检出(ReceivedLinedetection-RLSD)——用来表示DCE已接通通信链路,告知DTE准备接收数据。
当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RXD送到终端。
此线也叫做数据载波检出(DataCarrierdectection-DCD)线。
振铃指示(Ringing-RI)——当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。
(2)数据发送与接收线:
发送数据(Transmitteddata-TXD)——通过TXD终端将串行数据发送到MODEM,(DTE→DCE)。
接收数据(Receiveddata-RXD)——通过RXD线终端接收从MODEM发来的串行数据,(DCE→DTE)。
(3)地线有两根线SG,PG——信号地和保护地信号线,无方向。
RS-232C引脚及使用
从机械特性而言,RS-232C包括标准的25针及简化的9针引脚排列。
实际上,RS-232C的25条引脚中有许多是很少使用的,要完成最基本的串行通信功能,只需要RXD,TXD和GND即可。
表1为常用的9针接口各引脚的信号功能。
引脚
信号
信号源
类型
描述
1
DCD
DCE
控制
载波信号检测
2
RXD
数据
数据接收
3
TXD
DTE
4
DTR
数据终端准备好
5
GND
信号地
6
DSR
数据设置准备好
7
RTS
请求发送
8
CTS
清除发送
9
RI
振铃指示
表1
从电气特性而言,RS-232总线的逻辑电平与TTL电平完全不兼容,因此必须进行电平转换。
目前常使用的电平转换电路为MAX232。
MAX-232介绍
MAX232是双路驱动/接收器,内部包括电容型的电压生成器,可以将单5V电源转换成符合EIA/TIA-232-E的电压等级。
接收器将EIA/TIA-232-E标准的输入电平转换成SVTTL/CMOS电平。
接收器的典型临界值是,典型磁滞是V,可以接收+-30V的输入信号。
驱动器(发送器)将TTL/CMOS输入电平转换成EIA/TIA-232-E电平。
图为其管脚分布图。
其特性如下[6]。
图3-1MAX232管脚图
(1)单5V电源
(2)LinBiCMOS工艺
(3)两个驱动器和两个接收器
(4)+-30V的输入电平
(5)低工作电流:
8mA典型值
(6)满足和超过ANSIEIA/TIA-232-E和ITU推荐标准
其工艺技术如下:
(1)两个驱动器及两个接收器
(2)+-30V输入电平
(3)低电源电流:
典型值是8mA
(4)符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28
(5)可与Maxim公司的MAX232互换
(6)ESD保护大于MIL-STD-883(方法3015)标准的2000V
注意事项:
(1)工作温度(自然通风)范围内的极限参数(除非另有说明)
(2)输入电源电压范围,Vcc-0.3V至6V
(3)正输出电源电压范围,VS+Vcc-0.3V至15V
(4)负输出电源电压范围,VS--0.3V至-15V
(5)输入电压范围,VI:
驱动器-0.3v至Vcc+0.3V
(6)接收器+-30V
(7)输出电压范围,V0:
T10UT,T20UTVS--0.3V至VS++O.3V
(8)RlOUT,R20UT-0.3V至Vcc+O.3V
(9)短路持续时间:
T10UT,T20UT未限制
(10)工作温度(自然通风)范围,TA:
MAX2320℃至70℃
(11)MAX232I-40℃至85℃
(12)存储温度范围,Tstg-65℃至150℃
(13)引线温度,离外壳1.6mm(1/16英寸),10秒260℃
强度超出所列的极限参数可能导致器件的永久性损坏。
这些仅仅是极限参数,并不意味着在极限参数条件下或在任何其它超出推荐工作条件所示参数的情况下器件能有效地工作。
延长在极限参数条件下的工作时间会影响器件的可靠性[7]。
4软件控制系统的设计与实现
在LED显示屏的软件控制系统中,文本信息的编辑、字模信息的保存、显示效果的处理、图像预览以及设备通讯是设计的核心上作。
下面就这四个核心功能做详细的研究与设计。
编辑功能设计与实现
在LED显示屏上展现所要显示的内容以及效果,编辑工作是最重要的环节之一。
本系统在设计时采用VC6.0开发工具,用VC++完成整个设计工作。
基于MFCAppWizard建立工程,以单文档View的形式开启文本区。
下面对工程进行分析和设计:
1、文本区的开启:
由于所应用的LED显示屏的像素点数量已定,而计算机屏幕的分辨率显然远远高于显示屏,这样造成逻辑坐标的不同,即而显示的图像会有扭曲、拉长甚至失真情况。
所以可以通过选择开启窗口的计算机屏幕像素点与显示屏像素数之间恰当的比例来减小误差。
现在用来解决此问题的方法很多。
例如点阵数据的压缩方法,由于在Windows环境下,系统默认的每个汉字为4000多点,而16×
16点阵一个字的大屏幕,每个汉字为256点,所以根据计算,可以采用间隔取点的方式,在横向和纵向每隔12个点取一个点,每个汉字256个点组成的原理来压缩数据。
但为了图像不失真,本系统采用所开启文本区与显示屏像素数完全相同的方式,从而避免了圆变椭圆,正方形变矩形,甚至连划斜线时的斜率也不会变。
CMainFrame:
:
PreCreateWindow函数用来设置整个窗口的大小,但是窗口外框还包括菜单,工具栏,状态栏与客户区。
而系统定义的文本区要求精确的clientarea,用于字模信息保存。
所以表示客户区大小的纵坐标要加上状态栏与工具栏的高度,甚至菜单与窗口外框的边缘也要扣除[1]。
SetClientSize()Size();
cy+=(winSize.cy);
}
pBar=GetControlBar(AFX_IDW_TOOLBAR);
if((pBar!
=NULL)&
&
(pBar->
IsWindowVisible())){
pBar->
GetWindowRect(rect);
winSize=();
cy+=(winSize.Cy*2);
cx=384+(384-m_clientSize.cx);
cy+=(192+(192-m_clientSize.cy));
SetWindowPos(this,rect.left,,cx,cy,SWP_NOZORDER);
OnViewStatusBar(){
CFrameWnd:
OnBarCheck(ID_VIEW_STATUS_BAR);
SetClientSize();
通过对客户区的精确控制,可以真正的使文本区的像素点数与显示屏的平面发光点数对应,而且为了编辑操作过程中不至于因为失误造成文本区内的象素改变,所以系统限制了窗体最大化控制[3][9]。
cs.style&
=~WS_MAXIMIZEBOX;
DeleteObject)方法。
GDI对象的析构很重要,特别是自己创建的对象,一定要在适当的时机(GDI对象已经不在附着在DC时)去掉。
解除附着的方法只有以SelectObject函数选择别的新的对象(旧的对象会自动被消除)。
可以选择MFC预存的对象来解除对象的依附关系,因为MFC预存的对象会在不用的时候自动析构。
DeleteObject是CGdiObject类公开的成员函数,所以它的子类都可以使用。
文字的输入:
通过CFontDialog类生成一个选择字体类型(font)的对话框。
CDC*pDC=GetDC();
LOGFONTm_lFont;
COLORREFm_cTextColor;
CFontmyFont;
CFont*pOldFont;
CFontDialogFontDlg;
FontDlg.m_cf.lpLogFont=&
m_lFont;
FontDlg.m_cf.Flags!
=CF_INITTOLOGFONTSTRUCT;
if(FontDlg.DoModal()==IDOK)
{
(&
m_1Font);
m_cTextColor=();
}
调用系统自带的输入法,包括文字的字体、字形、颜色、效果等。
系统加载TextDialog对话框,以文本编辑区左上顶点为坐标原点,向右为X轴正方向,向下为Y轴正方向建立逻辑坐标系,实现文字指定位置的编辑:
CStringstr;
CTextDlgTextDlg;
m_ctrEdit.GetClientRect());
if(TextDlg.DoModal)==IDOK)
{
CRectrect(TextDlg.m_iPosX,TextDlg.m_iPos