毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

LED显示屏控制系统 第8页

更新时间:2009-5-26:  来源:毕业论文
LED显示屏控制系统 第8页
22
MFC的绘图都是通过Device Context(它是设备与数据之间的媒介,
可以缩写为DC)来将绘图输出到一个设备上。DC中存储设备的属性与输
出绘图的数据。在MFC中要输出绘图数据至一个设备上,必须准备一个
针对此设备的DC对象,它是继承于CDC的类的对象。这个DC对象可以
使用CDC类的一些绘图函数(如画线、圆、方形等)。每个DC必须附着一
些所谓的GDI object(GDI对象,如常见的画笔、画刷、字形、位图等
画图工具)以配合DC的绘图函数。
系统通过编写Line()函数画直线、Rectangle()函数画矩形、
Ellipse()函数画椭圆、Circle()函数完成图形的编辑
[2][3]

需要指出的是将newPen析构:调用newPen.DeleteObject()方法。
GDI对象的析构很重要,特别是自己创建的对象,一定要在适当的时机
(GDI对象已经不在附着在DC时)去掉。解除附着的方法只有以
SelectObject函数选择别的新的对象(旧的对象会自动被消除)。可以选择
MFC预存的对象来解除对象的依附关系,因为MFC预存的对象会在不
用的时候自动析构。DeleteObject是CGdiObject类公开的成员函数,所
以它的子类都可以使用。
文字的输入:通过CFontDialog类生成一个选择字体类型(font)
的对话框。
CDC*pDC=GetDC();
LOGFONT m_lFont;
COLORREF m_cTextColor;
CFont myFont;
CFont*pOldFont;
CFontDialog FontDlg;
FontDlg.m_cf.lpLogFont=&m_lFont;
FontDlg.m_cf.rgbColors=m_cTextColor;
FontDlg.m_cf.Flags!=CF_INITTOLOGFONTSTRUCT;
if(FontDlg.DoModal()==IDOK)
{
FontDlg.GetCurrentFont(&m_lFont);
m_cTextColor=FontDlg.GetColor();吉林大学硕士学位论文
23
}调用系统自带的输入法,包括文字的字体、字形、颜色、效果
等。
系统加载TextDialog对话框,以文本编辑区左上顶点为坐标原点,
向右为X轴正方向,向下为Y轴正方向建立逻辑坐标系,实现文字指定
位置的编辑:
CString str;
CTextDlg TextDlg;
//CRect rect(TextDlg.m_ctrEdit.GetClientRect());
if(TextDlg.DoModal()==IDOK)
{
CRect rect(TextDlg.m_iPosX,TextDlg.m_iPosY,
TextDlg.m_iPosX+1000,TextDlg.m_iPosY+1000);
str=TextDlg.m_sText;
myFont.CreateFontIndirect(&m_lFont);
pOldFont=pDC->SelectObject(&myFont);
pDC->SetTextColor(m_cTextColor);
pDC->DrawText(str,rect,0);
pDC->SelectObject(pOldFont);
SaveInStack();}
在OnFont()函数中嵌入TextDialog()函数,
DDX_Text(pDX,IDC_POS_X,m_iPosX);//文本区内文字输入X轴
DDX_Text(pDX,IDC_POS_Y,m_iPosY);//文本区内文字输入Y轴
颜色的控制:
在Windows系统中,色彩是以ture color来定义的,即COLORREF
它是一个四字节字,其中的3个字节分别代表红,绿,蓝三种基本单色,
也就是每一个基本单色由一个字节来表示,亦即每一个基本单色有256
种色阶。所以True color有16777216种色彩变化。虽然计算机内定义
了这么多颜色,但是对于应用与现实生活中的LED显示屏来说无须也无
法达到。因为人眼对不同颜色光线的敏感程度不同,并且红、绿和黄三
种颜色是人眼视觉细胞最敏感的,所以这三种颜色成为基色,通过其不
同比例的混合就能实现从白到黑的各种颜色。所以也正是应用于交通警吉林大学硕士学位论文
24
视最为普遍的颜色。
LED显示屏应用于交通指挥大厅的法律宣传,为公众传输信息以及服
务,基于特殊的应用领域,图文显示屏都只有三种颜色的变化。所以控
制系统在工具栏内只添加了以上三种颜色满足今后扩展的要求。
§4.2字模提取
4.2.1字模简介
文字的字模是一组数字,但它的意义却与数字的意义有着根本的变
化,它是用数字的各位信息来记载英文或汉字的形状
[1]

在电脑硬件中,根本没有汉字这个概念,也没有英文的概念,其认
识的概念只有——内码(将ASCII表的高128个很少用到的数值以两个
为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符
使用,即英文的内码)。如果你用启动盘启动系统后用DIR命令可能得到
一串串莫名其妙的字符,但那确确实实是汉字,如果你启动UCDOS或其
他的汉字系统后,就会看到那是一个个熟悉的汉字。在硬件系统内,英
文的字模信息一般固化在ROM里,即使在没有进入系统的CMOS里,也可
以让你看到英文字符。而在DOS下,中文的字模信息一般记录在汉字库
文件里(将制作好的字模放到一个个标准的库中,这就是点阵字库文件)。
4.2.2 LED显示屏领域字模实现技术
在通过软件实现的技术中,目前有许多字模生成软件,软件打开后
输入汉字,点“检取”,十优进制数据的汉字代码即可自动生成,把我们
所需要的竖排数据复制到我们的程序中即可。在通过硬件实现字模提取
的技术中,有在单片机系统中增加硬汉字库的方法,主控器发送的汉字
是其机内码,用两个字节来表示一个汉字。根据机内码,显示单元控制
模块从汉字库中查取显示字模,实现汉字显示。由于带有硬汉字库,进
行动态文字显示时,通用智能显示单元仅接受汉字的机内码即可,这样
数据通讯量大大减少。因此,“动态文字显示速度快”。
4.2.3软件控制系统字模提取的分析与设计
而在LED显示屏控制系统 第8页具体应用的Windows操作系统下如何提取吉林大学硕士学位论文
字模信息是设计的核心。软件控制系统在实际编辑过程中,要求各种字
体、字号的文字都能被编辑、保存。所以系统在设计时,把文本区理解
为由众多的象素点构成,而把不同字体、字号的文字理解为一幅图像。
因为所开启的文本区大小与LED显示屏的大小对应,所以采用16*16点
阵为单位,把文本区内的每个像素点都看成一个二文数组,由于系统中
各种颜色都有对应的值,赋予每个不同颜色的像素点不同的对应值,再
把每个点赋予一个int型的值,这样保存下来的信息就是二进制数据。
通过这样的设计,我们不仅可以把任何字型,任何大小的文字保存下来,
还可以显示以256个像素点阵为单位的任何图形。在软件控制系统中实
现字模的提取,也就避免了在单片机中加载硬汉字库模块,从而简化了
硬件模块的设计。
以下以单色屏为例,介绍系统采用字模保存的算法设计
定义COLORREF zimo_color//像素点的颜色,判断某个点的颜色
值。如果值为0xffffff,说明此点为白色,赋予此点值0。由于单色屏
只有红色和不显色两种,所以可以简单赋值为除白色外其余点赋值为1。
CClientDC dc(this);
CFile myfile;
unsigned int zimo[192][384]={0};
unsigned char zimo_data[192][48]={0};
COLORREF zimo_color;
int row,col;
this->HideCaret();
for(row=0;row<192;row++){
for(col=0;col<384;col++){
zimo_color=dc.GetPixel(col,row);
if(zimo_color==0xffffff)
{zimo[row][col]=0;}else
{zimo[row][col]=1;}}}
定义unsigned int zimo[192][384]={0};//文本区像素点
以8位为一字节(因为在随后的串行通讯中,传输的数据是8位的
二进制数据)定义unsigned char zimo_data[192][48]={0};
this->ShowCaret();

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

LED显示屏控制系统 第8页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。