精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
基于LPC2138的VGS12864E程序設計
基于LPC2138的VGS12864E程序設計
 更新時間:2008-8-3 15:48:37  點擊數(shù):6
【字體: 字體顏色


    引言

ARM處理器憑借其強大的功能、極低的功耗、較小的封裝廣泛應用于門禁、無線抄表、智能溫控等小型系統(tǒng)中,在這些系統(tǒng)中人機交互界面一般由LCD完成,但是通常LCD在顯示亮度、環(huán)境適應等方面存在缺陷,所以越來越多新技術新產品逐漸出現(xiàn),OLED就是一種。本文介紹了一種基于OLED的顯示器VGS12864E的結構原理,給出了其在ARM7微處理器LPC2138系統(tǒng)應用中的硬件連接和具體程序設計。



系統(tǒng)簡述


LPC2138簡介


LPC2138是基于支持實時仿真和嵌入式跟蹤的32/16 位ARM7TDMI-S CPU 的微控制器,帶有512 KB高速Flash和32KB的SRAM。128位寬度的存儲器接口和獨特的加速結構使32 位代碼能夠在最大時鐘速率下運行。對代碼規(guī)模有嚴格控制的應用可使用16 位Thumb模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。
LPC2138內含2個32位定時器、2個10位8路ADC、10位DAC、PWM通道和47個GPIO以及多達9個邊沿或電平觸發(fā)的外部中斷,它還具有多個串口,包括2個16C550工業(yè)標準UART、2個高速I 2 C接口(400kbit/s)、SPITM和SSP(具有緩沖功能,數(shù)據(jù)長度可變)。
較小的封裝和極低的功耗使LPC2138可理想地用于工業(yè)控制和醫(yī)療等小型系統(tǒng)中,如訪問控制和POS機、通信網(wǎng)關、協(xié)議轉換器、軟modem、聲音辨別和低端成像等等。


VGS12864E結構原理


VGS12864E是128列×64行點陣單色OLED圖形字符顯示模塊,由于其采用有機發(fā)光技術,無需背光源,所以與傳統(tǒng)LCD相比在陽光照射下更能呈現(xiàn)清晰的圖像和數(shù)據(jù),另外它還具有高亮度、高對比度、寬視角、低驅動電壓和高發(fā)光效率等優(yōu)越的特性,較寬的溫度范圍(存儲溫度:?30℃~80℃,工作溫度:?20℃~70℃)也能適應更惡劣的環(huán)境。
VGS12864E使用兩片列驅動控制器,分別驅動1-64列和65-128列和一片有64行輸出的行驅動器,內藏64×64顯示數(shù)據(jù)RAM,RAM中每位數(shù)據(jù)對應屏上一個點的亮、暗,其結構如圖1所示:它把一個半屏分成了按行的八頁,因為每個字節(jié)的數(shù)據(jù)按低位(LSB)在上,高 位(MSB)在下的結構排列,所以在提取字庫的時候,需要設置取字模的方式為:縱向取模,字節(jié)倒序。

VGS12864E具有非常簡潔的指令系統(tǒng),指令如表1所示。

表1:VGS12864E指令表(略)

圖1 VGS12864E的RAM結構(略)



系統(tǒng)硬件結構


VGS12864E共有20個引腳,功能定義如表2,它與LPC2138的連接如圖2所示。盡管LPC2138的I/O口可以承受5V的輸入電壓,但是其輸出的高電平電壓不能驅動VGS12864,所以在它們中間需要加一個電平轉換芯片。本系統(tǒng)電平轉換采用IDT74FCT164245T芯片,它是基于高速CMOS技術的16位3.3V到5V的雙向轉換口(其中P1.28口負責數(shù)據(jù)方向的控制)。

表2:VGS12864E引腳定義(略)


圖2 VGS12864E與LPC2138連接示意圖(略)


程序設計


對VGS12864E的各種操作都是通過其指令系統(tǒng)完成的,通過控制腳的高低電平和數(shù)據(jù)口的數(shù)據(jù)來完成各種操作。顯示時一般需要設置列地址和頁地址,然后進行相應的讀寫操作(在寫操作前都要讀“忙”狀態(tài)),最后根據(jù)需要進行相應的循環(huán)。在同頁內,列地址在執(zhí)行完讀寫操作后自動加一。


本文程序有如下宏定義:
#define uint32 unsigned int
#define uint16 unsigned short
#define uchar unsigned char

#define DIS_DIR 1<<24 //P1.24
#define DIS_DI1<<28 //P0.28
#define DIS_RW1<<29 //P0.29
#define DIS_E1<<30 //P0.30
#define DIS_CS21<<31 //P0.31
#define DIS_CS11<<16 //P1.16


讀“忙”狀子程序


在對VGS12864E的各種寫操作執(zhí)行之前都需要進行讀“忙”操作,防止在“忙”狀態(tài)下“寫”操作的不正確執(zhí)行,程序代碼如下:


void read_status()


{ uchar busy;


uchar temp;

IOCLR0 = DIS_DI; //選擇"指令"寄存器
IOSET0 = DIS_RW; //選擇"讀"操作
IOCLR1 = DIS_DIR; //控制電平轉換方向
do
{ IOPIN0 = (IOPIN0 & 0xFFFFFF00) | 0xff;
IOSET0 = DIS_E;
busy=(IOPIN0 & 0xff);
IOCLR0 = DIS_E; //使能操作
temp=busy & 0x80;
}while(temp!=0); //忙則繼續(xù)循環(huán)
IOSET1 = DIS_DIR; //控制電平轉換方向


}


寫指令子程序


// 對左半屏寫指令操作,右半屏操作只需要改變片選電平(DIS_CS1、DIS_CS2)


void wr_command1()


{


IOCLR1 = DIS_CS1; //選擇左半屏
IOSET0 = DIS_CS2;
read_status(); //讀"忙"狀態(tài)
IOSET0 = DIS_DI; //選擇"寫"操作
IOCLR0 = DIS_RW; //選擇"指令"寄存器
IOPIN0 = (IOPIN0 & 0xFFFFFF00) | com; //送指令
IOSET0 = DIS_E; //使能操作
IOCLR0 = DIS_E;


}


寫數(shù)據(jù)子程序


//對左半屏寫數(shù)據(jù)操作,右半屏操作只需要改變片選電平(DIS_CS1、DIS_CS2)


void wr_data1()
{


IOCLR1 = DIS_CS1; //選擇左半屏
IOSET0 = DIS_CS2;
read_status(); //讀"忙"狀態(tài)
IOSET0 = DIS_DI; //選擇"寫"操作
IOCLR0 = DIS_RW; //選擇"數(shù)據(jù)"寄存器
IOPIN0 = (IOPIN0 & 0xFFFFFF00) | dat;//送數(shù)據(jù)
IOSET0 = DIS_E; //使能操作
IOCLR0 = DIS_E;


}


其他子程序


//OLED初始化子程序
void init_OLED()
{


com =0xc0; //第"0"行開始顯示
wr_command1();
wr_command2();
com =0x3f; //打開OLED顯示
wr_command1();
wr_command2();


}


//清屏程序
void clear_prog(void)
{


for(i=0;i<8;i++)
{
com =(0xb8+i); //頁面地址設置
wr_command1(); wr_command2();
com =0x40; //列地址設置
wr_command1();
wr_command2();
for(j=0;j<64;j++)//在一頁內,列地址自動增加
{


dat=0x00;
wr_data1();//寫RAM都為0,這樣完成清屏
}
}


}



//漢字顯示標準函數(shù):把屏幕分成0,1,2,3四行和64列進行漢字的顯示,每個漢字占兩//行,字庫數(shù)據(jù)通過指針進行傳遞


void display(uchar hang,uchar lie,uchar *p_dis_data)
{


for(page=hang;page<hang+2;page++)
{
uchar m;
com=(0xb8 + page); //頁面地址設置
wr_command1();
com=0x40+lie; //列地址設置
wr_command1();
f or(m=0;m<64;m++)//顯示大小根據(jù)實際情況 進行改變 {
dat=*p_dis_data;
wr_data1();
p_dis_data++;
}
}


}



結束語


VGS12864E使用簡單,而且相對LCD可以適應惡劣的環(huán)境,所以在工業(yè)控制、軍事等方面都有廣泛應用。由于需要通過字模軟件設計界面,增強設計靈活性的同時也提高了設計復雜界面的難度,而且生成字庫需要占用大量存儲空間。而LPC2138是基于ARM7核心的微控制器,配合VGS12864E可以組成非常通用的小型顯示控制系統(tǒng)。


《世界電子元器件》2007.2

[1]



[1] [2]  下一頁
  • 上一篇: 基于Motorola單片機的機器人追跑控制系統(tǒng)
  • 下一篇: 采用C8051F020設計的嵌入式測試儀
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1
    宝丰县| 来凤县| 修武县| 临沂市| 高要市| 丰台区| 绿春县| 潞西市| 米脂县| 星子县| 滨州市| 临江市| 浦北县| 朔州市| 垦利县| 合作市| 定远县| 临洮县| 鄂托克前旗| 海盐县| 周至县| 临海市| 江陵县| 资溪县| 金溪县| 万源市| 阿尔山市| 长沙市| 耒阳市| 临洮县| 大名县| 全椒县| 阳西县| 石棉县| 昂仁县| 永州市| 江津市| 当雄县| 龙口市| 台安县| 西城区|