999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

中文圖形LCD上位機程序設計

2008-04-12 00:00:00張成旭張家生康宗濤
現代電子技術 2008年2期

摘 要:根據中文圖形點陣式LCD的功能及特點,以VC++為開發平臺,設計LCD顯示系統的上位機軟件,包括文件、設置、顯示與通訊、控制指令以及幫助5部分,實現了將圖片、漢字、自繪圖像以及控制指令等下傳給LCD,而且實現了實時繪圖功能,并可根據控制的不同LCD的型號進行相應的移植。該程序可作為LCD的上位機驅動及LCD質量檢測軟件。

關鍵詞:液晶顯示屏;中文圖形點陣;VC++;軟件移植

中圖分類號:TN41,TP33 文獻標識碼:B 文章編號:1004-373X(2008)02-113-03

Programme Design for Chinese Graphic LCD Upper Computer

ZHANG Chengxu,ZHANG Jiasheng,KANG Zongtao

(Qinhuangdao Branch,Northeastern University,Qinhuangdao,066004,China)

Abstract:This paper designs a software system of the upper computer for LCD display system based on visual C++ platform and according to the function and characteristic of Chinese graphic LCD.This software is made up of five parts,including file,configuration,display and communication,control instruction and help.It realizes that download the picture,Chinese,customized picture and control instruction to the LCD.Furthermore,real-time drawing function is also realized.Aiming at the different controlled member,the system can be transplanted.This program can be used as a computer drive for LCD and software to examine the LCD.

Keywords:LCD;Chinese graphic lattice;VC++;software trasplatation

1 引 言

隨著液晶顯示技術的發展,液晶顯示器(LCD)模塊越來越多的被應用于航天、航空、家電、智能儀器、儀表等電子產品中。LCD的種類繁多,其中點陣式LCD不僅可以顯示字符、數字,還可以顯示各種圖形、曲線以及漢字并且可以實現屏幕上下左右滾動、動畫、反轉、閃爍等功能,用途十分廣泛。而在實際應用當中,在一些場合中往往需要動態實時地顯示數據、圖像并隨時在線修改和編輯LCD顯示的內容。本文針對LCD的這種應用需要,采用上位機與單片機通訊,并用單片機控制LCD顯示相應內容的結構,以具有代表性的金鵬電子有限公司生產的OCMJ4×8 B中文圖形兩用液晶顯示模塊為例具體闡述如何利用上位機在線控制LCD顯示漢字、圖像、以及在LCD上實時繪圖等功能。

2 系統結構

本顯示系統采用PC機作為上位機,其任務是輸入用戶所要顯示的漢字、圖片以及一些標準圖形等內容同時對這些內容做相應的處理并通過RS 232串口與單片機通訊,將數據傳送給單片機。單片機將從串口收到的數據按指令與顯示數據區分后發送給LCD,其中顯示數據按照LCD的坐標定義排列后再送于LCD顯示。本系統采用AT89S52單片機,對于一般的LCD都有集成顯示存儲器、驅動控制電路等外部電路,圖1所示是OCMJ4×8 B型LCD與單片機的接口電路。

3 上位機軟件框架

本上位機軟件采用VC++軟件編制,采用MFC單文檔框架設計,在PC機上模擬LCD實際的顯示狀態,為了使用戶方便地將畫布放大,并設有網格,由一個矩形區域代表實際LCD的一個點,操作界面由菜單、畫布、工具欄、狀態欄等窗口組成,界面友好,易于操作。

本系統上位機菜單項分為以下幾個部分,軟件結構框圖如圖2所示:

(1) 文件:設有新建、打開圖像、以及保存圖像子菜單;

(2) 設置:設有網格開關、閥值設定、畫布尺寸設定、實時開關子菜單;

(3) 顯示與通訊:設有顯示文本、繪制圖形、發送圖形子菜單。其中繪制圖形子菜單包括自由繪圖、直線、矩形、橢圓等基本圖形的繪制和漢字和字符點陣的繪制;

(4) 控制指令:包括左移、右移、上移、下移、反白子菜單;

(5) 幫助。

4 上位機軟件功能實現

(1) 文件部分

上位機軟件中,打開圖像可以打開BMP文件、JPG文件以及GIF文件。在以往的顯示圖像的程序中由于這3種圖像的存儲結構不同,一般采用不同的顯示函數。對于BMP文件Microsoft Visual C++ 6.0的MFC庫有著良好的支持,可以讀取、顯示、存儲甚至在內存中創建一塊內存位圖,而對于另外兩種圖像雖然有一些操作、處理他們的Active X控件,但使用起來不太方便。這里采用借助于COM接口的OLE方法來實現上述功能的一種簡便方法,代碼為:

BOOL CTestView::ShowPic(CDC *pDC,CString sPath,int pWidth,int pHeigth,int x,int y)

{

IStream *pStm; 

CFileStatus fstatus; 

CFile file; 

LONG cb; 

//打開文件并檢測文件的有效性

if (file.Open(sPath,CFile::modeRead)

file.GetStatus(sPath,fstatus) 

((cb = fstatus.m_size) != -1))

{

[ZK(]HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE,cb); [ZK)]

LPVOID pvData = NULL; 

if (hGlobal != NULL)

{

pvData = GlobalLock(hGlobal);

if (pvData != NULL)

{

file.ReadHuge(pvData,cb); 

GlobalUnlock(hGlobal); 

CreateStreamOnHGlobal(hGlobal,TRUE,pStm); 

} 

} 

}

else

{

return 1;

} //打開文件結束

IPicture *pPic;

//由于該函數有時會導致失敗,所以應當用SUCCEEDED宏來做一些適當的保護工作,只有在數據裝載成功的前提下才能繼續下面的圖像顯示工作

if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,IID_IPicture,(LPVOID*)pPic))) 

{ 

OLE_XSIZE_HIMETRIC hmWidth; 

OLE_YSIZE_HIMETRIC hmHeight; 

pPic->get_Width(hmWidth); 

pPic->get_Height(hmHeight); 

double fX,fY; 

//獲得圖像高度和寬度

fX=pWidth;

fY=pHeigth;

//應用render函數來顯示圖像

if(FAILED(pPic->Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,

hmHeight,hmWidth,-hmHeight,NULL)))

{

pPic->Release();

return 1;

}

pPic->Release(); 

}

else

{

return 1; 

}

return true;

}

采用此方法可以打開并顯示上述提到的3種圖像,并且有效地簡化了VC對JPEG和GIF文件的打開和顯示。本系統的保存功能將把畫布上的所有圖像信息保存為BMP格式和二進制文件格式適合于用戶的不同要求。

(2) 設置部分

由于本系統點陣信息是通過循環對畫布上的每個矩形區域(對應LCD的一個點)中的中心點的灰度值作為判斷對應LCD點是黑點還是白的,于是對于打開的彩色圖像,固定的閥值可能對不同的圖像有著不同的效果,所以在這里加入了設定閥值的功能。灰度值計算公式為Gray=0.299×R+0.587×G+0.114×B,閥值范圍0~255。首先,利用CDC的GetPixel成員函數將各個點的RGB值賦給COLORREF類型的變量RGB;其次,利用上述公式將每點的灰度值計算出來,并與閥值進行比較,比閥值大的認為是白點,比閥值小的認為是黑點,這樣就可以將彩色圖像二值化從而能夠被LCD所顯示。本系統傳送給單片機的數據是BYTE型數組,數組中的數據是通過將黑點和白點所對應的數組中的相應位置1和0賦值,完成圖像點陣數據的打包。

(3) 顯示與通訊部分

由于中文液晶顯示模塊都集成漢字字庫,顯示文本的功能按照不同LCD說明書的所述指令就可實現。對于基本圖元的繪制,例如直線、矩形、橢圓等圖形可以參照圖形學的算法進行繪制;對于點及連續線條的繪制是在View類的鼠標左鍵按下和鼠標移動的響應函數中完成,這兩個響應函數都傳遞了一個CPoint類的對象point參數,這個參數的2個成員變量正是鼠標所在點的坐標值。這樣就可以將這個對象所對應的點所在的矩形填充為黑色。本軟件中同時對右鍵按下的響應函數定義為橡皮作用,即將右鍵點擊的對應點所在的矩形填充為白色,這樣可實現橡皮的效果。

漢字與字符點陣的繪制是為了使圖像、漢字和字符同時在LCD上顯示,此功能可以在LCD的任意足夠的點陣范圍內繪制出漢字和字符,使用戶更容易地設計LCD的顯示布局。以16×16點陣漢字的繪制為例,首先,應用公式offset=(94×(qh-0xa1)+(wh-0xa1))×32L計算出輸入漢字距離字庫起始位置的偏移量;其次應用CFile類將字庫文件以二進制格式打開,對于16×16點陣的漢字的字庫為HZK16;最后根據偏移量從字庫中取出32個字節即為輸入漢字的點陣信息。

發送圖形功能將上位機畫布上所畫的圖形、所顯示的圖像以及漢字按照上述圖像數據的打包方法打包傳給單片機,本軟件定義68個字節為一個數據包進行發送。這是由于單片機的數據存儲器空間有限一般不能將LCD滿屏的點陣數據一次收全,于是將點陣數據分塊發送。以OCMJ4×8B顯示模塊為例,他是128×64點陣的LCD,這樣上位機通過發送16次數據包來完成傳送LCD繪制滿屏圖像所用數據,每個數據包包括LCD四行的點陣數據。這68個字節中第一個字節為握手信號,第2個字節為發送給LCD的指令,第3個字節為發送的次數的序號。接下來空1個字節作為備用,最后64個字節發送給單片機。數據由上位機發送到單片機并顯示在LCD的過程是:首先,由上位機發送握手信號然后進入等待狀態,單片機收到后向上位機發送0x11作為收到數據的應答。當上位機收到單片機的應答信號后開始發送數據,如果一定時間內上位機沒有收到應答,則做出單片機無響應的提示。最后,單片機收到數據后根據第2個字節所指示的指令以及第3個字節所指示的顯示起始坐標,將數據包的最后64個字節的點陣數據按照LCD的坐標定義排列后送于LCD將圖像顯示出來。

對于實時功能的實現,在自由繪圖的情況下,每當鼠標點擊和移動時判斷繪圖事件是在哪個數據包所對應的區域發生的,并將這個數據包發送出去,可達到實時在LCD繪圖的功能。

(4) 控制指令

對于一般的中文LCD都具有移動屏幕的指令,根據說明書的說明即可實現,對于上位機的畫布上的圖像要達到和LCD所示圖象同時移動的效果可以應用CDC類的SetViewportOrg成員函數來改變視口的原點位置,這樣可以達到圖像移動的效果。

5 結 語

本文根據中文圖形點陣式LCD的功能及特點設計了一套LCD顯示系統方案,并著重介紹以VC++為開發平臺顯示系統的上位機軟件的設計與實現。程序在Windows XP下編譯通過,程序可移植性強,可針對不同的控制對象進行相應的修改。該論文是根據廠商的實際課題而來,廠商應用此軟件在于2個方面:作為LCD的上位機驅動隨LCD交與客戶,使得客戶能夠迅速使用LCD節省客戶的開發周期;作為LCD質量的檢測程序,通過上位機控制LCD實現各種功能,來檢測LCD的質量。本軟件實際應用良好。

參 考 文 獻

[1]孫鑫.VC++深入詳解[M].北京:電子工業出版社,2006.

[2]劉文濤.MCS-51單片機培訓教程[M].北京:電子工業出版社,2005.

[3]李于劍.Visual C++實踐與提高:圖形圖像編程篇[M].北京:中國鐵道出版社,2001.

主站蜘蛛池模板: 亚洲有无码中文网| 毛片久久网站小视频| a天堂视频| 日韩不卡免费视频| 园内精品自拍视频在线播放| 亚洲婷婷在线视频| 91精品国产丝袜| 亚洲中文字幕久久精品无码一区| 亚洲av综合网| 成年看免费观看视频拍拍| 日本人妻丰满熟妇区| 亚洲色无码专线精品观看| 欧美成人aⅴ| 日韩免费成人| 成人欧美在线观看| 狠狠干综合| 人妻中文久热无码丝袜| 欧美福利在线观看| 国产91成人| 国产性爱网站| 免费激情网站| 国产又粗又爽视频| 91黄视频在线观看| 免费又爽又刺激高潮网址 | 久久情精品国产品免费| 国产资源免费观看| 色男人的天堂久久综合| 国产免费看久久久| 国产91无毒不卡在线观看| 亚洲第一视频免费在线| 午夜国产大片免费观看| 精品久久国产综合精麻豆| 在线毛片网站| 欧美a网站| 伊人成人在线视频| 国产黑人在线| 欧美a在线看| 手机在线看片不卡中文字幕| 国产成人禁片在线观看| 美女啪啪无遮挡| 欧美福利在线观看| 黄色片中文字幕| 久久久精品国产亚洲AV日韩| 欧美激情第一欧美在线| 久久综合伊人77777| 亚洲香蕉在线| 国产美女91呻吟求| 国产免费a级片| 视频国产精品丝袜第一页| 久久91精品牛牛| 999福利激情视频| 午夜综合网| 波多野结衣一区二区三区四区| 永久免费无码成人网站| 日韩天堂视频| 国产精品香蕉| 99热这里只有成人精品国产| 在线a视频免费观看| 青草视频在线观看国产| 国产欧美日韩资源在线观看| 又黄又爽视频好爽视频| 免费一级无码在线网站| 國產尤物AV尤物在線觀看| 久久精品中文字幕免费| 国产麻豆精品久久一二三| 日本不卡在线播放| 亚洲第一福利视频导航| 成年免费在线观看| 中文字幕在线永久在线视频2020| 亚洲最大综合网| 国产亚洲精品资源在线26u| 国产精欧美一区二区三区| 精品国产自在在线在线观看| 久久影院一区二区h| yjizz视频最新网站在线| 亚洲区第一页| 青青国产视频| 国产亚洲精品91| 99激情网| 欧美中文字幕在线视频| 国产乱子伦一区二区=| 国产日产欧美精品|