什么是lcd12864?lcd12864的特性及其應(yīng)用舉例
lcd12864帶中文字庫(kù)的128X64 是一種具有4 位/8 位并行、2 線或3 線串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體 中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊;
其顯示分辨率為128×64, 內(nèi)置8192 個(gè)16*16 點(diǎn)漢字,和128 個(gè)16*8 點(diǎn)ASCII 字符 集.利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。
可以顯示8×4 行16×16 點(diǎn) 陣的漢字. 也可完成圖形顯示.低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類(lèi)型的圖形點(diǎn)陣液晶 顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。
基本參數(shù)
(1)低電源電壓(VDD:+3.0--+5.5V)
(2)顯示分辨率:128×64 點(diǎn)
(3)內(nèi)置漢字字庫(kù),提供8192 個(gè)16×16 點(diǎn)陣漢字(簡(jiǎn)繁體可選)
(4)內(nèi)置128 個(gè)16×8 點(diǎn)陣字符
(5)2MHZ 時(shí)鐘頻率
(6)顯示方式:STN、半透、正顯
(7)驅(qū)動(dòng)方式:1/32DUTY,1/5BIAS
(8)視角方向:6 點(diǎn)
(9)背光方式:側(cè)部高亮白色LED,功耗僅為普通LED 的1/5—1/10
(10)通訊方式:串行、并口可選
(11)內(nèi)置DC-DC 轉(zhuǎn)換電路,無(wú)需外加負(fù)壓
(12)無(wú)需片選信號(hào),簡(jiǎn)化軟件設(shè)計(jì)
(13)工作溫度: 0℃ - +55℃ ,存儲(chǔ)溫度: -20℃ - +60℃
帶中文字庫(kù)的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64,內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。可以顯示8×4行16×16點(diǎn)陣的漢字。也可完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類(lèi)型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。
lcd12864基本特性參數(shù)
(1)低電源電壓(VDD:+3.0--+5.5V)
(2)顯示分辨率:128×64點(diǎn)
(3)內(nèi)置漢字字庫(kù),提供8192個(gè)16×16點(diǎn)陣漢字(簡(jiǎn)繁體可選)
(4)內(nèi)置128個(gè)16×8點(diǎn)陣字符
(5)2MHZ時(shí)鐘頻率
(6)顯示方式:STN、半透、正顯
(7)驅(qū)動(dòng)方式:1/32DUTY,1/5BIAS
(8)視角方向:6點(diǎn)
(9)背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10
(10)通訊方式:串行、并口可選
(11)內(nèi)置DC-DC轉(zhuǎn)換電路,無(wú)需外加負(fù)壓
(12)無(wú)需片選信號(hào),簡(jiǎn)化軟件設(shè)計(jì)
(13)工作溫度:0℃-+55℃,存儲(chǔ)溫度:-20℃-+60℃
lcd12864引腳圖及功能
1VSS-模塊的電源地
2VDD-模塊的電源正端
3V0-LCD驅(qū)動(dòng)電壓輸入端
4RS(CS)H/L并行的指令/數(shù)據(jù)選擇信號(hào);串行的片選信號(hào)
5R/W(SID)H/L并行的讀寫(xiě)選擇信號(hào);串行的數(shù)據(jù)口
6E(CLK)H/L并行的使能信號(hào);串行的同步時(shí)鐘
7DB0H/L數(shù)據(jù)0
8DB1H/L數(shù)據(jù)1
9DB2H/L數(shù)據(jù)2
10DB3H/L數(shù)據(jù)3
11DB4H/L數(shù)據(jù)4
12DB5H/L數(shù)據(jù)5
13DB6H/L數(shù)據(jù)6
14DB7H/L數(shù)據(jù)7
15PSBH/L并/串行接口選擇:H-并行;L-串行
16NC空腳
17/RETH/L復(fù)位低電平有效
18NC空腳
19LED_A(LED+5V)背光源正極
20LED_K(LED-OV)背光源和負(fù)極
控制器接口信號(hào)說(shuō)明
1、RS,R/W的配合選擇決定控制界面的4種模式:
2、E信號(hào)
●忙標(biāo)志:BFBF標(biāo)志提供內(nèi)部工作情況.BF=1表示模塊在進(jìn)行內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù).BF=0時(shí),模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù)。利用STATUSRD指令,可以將BF讀到DB7總線,從而檢驗(yàn)?zāi)K之工作狀態(tài)。
●字型產(chǎn)生ROM(CGROM)字型產(chǎn)生ROM(CGROM)提供8192個(gè)此觸發(fā)器是用于模塊屏幕顯示開(kāi)和關(guān)的控制。DFF=1為開(kāi)顯示(DISPLAYON),DDRAM的內(nèi)容就顯示在屏幕上,DFF=0為關(guān)顯示(DISPLAYOFF)。DFF的狀態(tài)是指令DISPLAYON/OFF和RST信號(hào)控制的。
●顯示數(shù)據(jù)RAM(DDRAM)模塊內(nèi)部顯示數(shù)據(jù)RAM提供64×2個(gè)位元組的空間,最多可控制4行16字(64個(gè)字)的中文字型顯示,當(dāng)寫(xiě)入顯示數(shù)據(jù)RAM時(shí),可分別顯示CGROM與CGRAM的字型;此模塊可顯示三種字型,分別是半角英數(shù)字型(16*8)、CGRAM字型及CGROM的中文字型,三種字型的選擇,由在DDRAM中寫(xiě)入的編碼選擇,在0000H—0006H的編碼中(其代碼分別是0000、0002、0004、0006共4個(gè))將選擇CGRAM的自定義字型,02H—7FH的編碼中將選擇半角英數(shù)字的字型,至于A1以上的編碼將自動(dòng)的結(jié)合下一個(gè)位元組,組成兩個(gè)位元組的編碼形成中文字型的編碼BIG5(A140—D75F),GB(A1A0-F7FFH)。
●字型產(chǎn)生RAM(CGRAM)字型產(chǎn)生RAM提供圖象定義(造字)功能,可以提供四組16×16點(diǎn)的自定義圖象空間,使用者可以將內(nèi)部字型沒(méi)有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過(guò)DDRAM顯示在屏幕中。
●地址計(jì)數(shù)器AC地址計(jì)數(shù)器是用來(lái)貯存DDRAM/CGRAM之一的地址,它可由設(shè)定指令暫存器來(lái)改變,之后只要讀取或是寫(xiě)入DDRAM/CGRAM的值時(shí),地址計(jì)數(shù)器的值就會(huì)自動(dòng)加一,當(dāng)RS為“0”時(shí)而R/W為“1”時(shí),地址計(jì)數(shù)器的值會(huì)被讀取到DB6——DB0中。
光標(biāo)/閃爍控制電路
此模塊提供硬體光標(biāo)及閃爍控制電路,由地址計(jì)數(shù)器的值來(lái)指定DDRAM中的光標(biāo)或閃爍位置。
lcd12864指令說(shuō)明
備注:當(dāng)IC1在接受指令前,微處理器必須先確認(rèn)其內(nèi)部處于非忙碌狀態(tài),即讀取BF標(biāo)志時(shí),BF需為零,方可接受新的指令;如果在送出一個(gè)指令前并不檢查BF標(biāo)志,那么在前一個(gè)指令和這個(gè)指令中間必須延長(zhǎng)一段較長(zhǎng)的時(shí)間,即是等待前一個(gè)指令確實(shí)執(zhí)行完成。
lcd12864應(yīng)用舉例
1、使用前的準(zhǔn)備:先給模塊加上工作電壓,再按照下圖的連接方法調(diào)節(jié)LCD的對(duì)比度,使其顯示出黑色的底影。此過(guò)程亦可以初步檢測(cè)LCD有無(wú)缺段現(xiàn)象。
2、字符顯示:帶中文字庫(kù)的128X64-0402B每屏可顯示4行8列共32個(gè)16×16點(diǎn)陣的漢字,每個(gè)顯示RAM可顯示1個(gè)中文字符或2個(gè)16×8點(diǎn)陣全高ASCII碼字符,即每屏最多可實(shí)現(xiàn)32個(gè)中文字符或64個(gè)ASCII碼字符的顯示。帶中文字庫(kù)的128X64-0402B內(nèi)部提供128×2字節(jié)的字符顯示RAM緩沖區(qū)(DDRAM)。字符顯示是通過(guò)將字符顯示編碼寫(xiě)入該字符顯示RAM實(shí)現(xiàn)的。根據(jù)寫(xiě)入內(nèi)容的不同,可分別在液晶屏上顯示CGROM(中文字庫(kù))、HCGROM(ASCII碼字庫(kù))及CGRAM(自定義字形)的內(nèi)容。三種不同字符/字型的選擇編碼范圍為:0000~0006H(其代碼分別是0000、0002、0004、0006共4個(gè))顯示自定義字型,02H~7FH顯示半寬ASCII碼字符,A1A0H~F7FFH顯示8192種GB2312中文字庫(kù)字形。字符顯示RAM在液晶模塊中的地址80H~9FH。字符顯示的RAM的地址與32個(gè)字符顯示區(qū)域有著一一對(duì)應(yīng)的關(guān)系,其對(duì)應(yīng)關(guān)系如下表所示。
3、圖形顯示
先設(shè)垂直地址再設(shè)水平地址(連續(xù)寫(xiě)入兩個(gè)字節(jié)的資料來(lái)完成垂直與水平的坐標(biāo)地址)
垂直地址范圍AC5.。.AC0
水平地址范圍AC3…AC0
繪圖RAM的地址計(jì)數(shù)器(AC)只會(huì)對(duì)水平地址(X軸)自動(dòng)加一,當(dāng)水平地址=0FH時(shí)會(huì)重新設(shè)為00H但并不會(huì)對(duì)垂直地址做進(jìn)位自動(dòng)加一,故當(dāng)連續(xù)寫(xiě)入多筆資料時(shí),程序需自行判斷垂直地址是否需重新設(shè)定。GDRAM的坐標(biāo)地址與資料排列順序如下圖:
4、應(yīng)用說(shuō)明
用帶中文字庫(kù)的128X64顯示模塊時(shí)應(yīng)注意以下幾點(diǎn):
①欲在某一個(gè)位置顯示中文字符時(shí),應(yīng)先設(shè)定顯示字符位置,即先設(shè)定顯示地址,再寫(xiě)入中文字符編碼。
②顯示ASCII字符過(guò)程與顯示中文字符過(guò)程相同。不過(guò)在顯示連續(xù)字符時(shí),只須設(shè)定一次顯示地址,由模塊自動(dòng)對(duì)地址加1指向下一個(gè)字符位置,否則,顯示的字符中將會(huì)有一個(gè)空ASCII字符位置。
③當(dāng)字符編碼為2字節(jié)時(shí),應(yīng)先寫(xiě)入高位字節(jié),再寫(xiě)入低位字節(jié)。
④模塊在接收指令前,向處理器必須先確認(rèn)模塊內(nèi)部處于非忙狀態(tài),即讀取BF標(biāo)志時(shí)BF需為“0”,方可接受新的指令。如果在送出一個(gè)指令前不檢查BF標(biāo)志,則在前一個(gè)指令和這個(gè)指令中間必須延遲一段較長(zhǎng)的時(shí)間,即等待前一個(gè)指令確定執(zhí)行完成。指令執(zhí)行的時(shí)間請(qǐng)參考指令表中的指令執(zhí)行時(shí)間說(shuō)明。⑤“RE”為基本指令集與擴(kuò)充指令集的選擇控制位。當(dāng)變更“RE”后,以后的指令集將維持在最后的狀態(tài),除非再次變更“RE”位,否則使用相同指令集時(shí),無(wú)需每次均重設(shè)“RE”位.
lcd12864驅(qū)動(dòng)程序
/****************************************************************************/
/* */
/* Copyright (c) 2012, pcwebmaster */
/* All rights reserved. */
/* */
/* Email:pcwebmaste@163.com */
/* */
/****************************************************************************/
/****************************************************************************/
/* 文件名:LCD12864.c */
/* 版 本:Version 1.0 */
/* 描 述:實(shí)現(xiàn)液晶和單片機(jī)的通訊協(xié)議,根據(jù)計(jì)算機(jī)發(fā)給的命令進(jìn)行人機(jī)交互 */
/* 作 者:pcwebmaste */
/* 函 數(shù): */
/* LCD12864_init */
/* LCD12864WriteCommand */
/* LCD12864WriteByte */
/* LCD12864_init */
/* LCD12864SetXY */
/* LCD12864PrintfString */
/* 歷史記錄: */
/* pcwebmaste 2008-07-10 Creat Inital version. (Version 1.0) */
/* 模塊化 2012-06-02 Creat Inital version. (Version 2.0) */
/****************************************************************************/
#include “12864.h”
#define LOW 0
#define HIGH 1
sbit wela = P2^6;
sbit dula = P2^7;
#define LCD12864_RS(x) {if((x))P3 |= 1《《LCD12864_RS_PIN;\
else P3 &=~(1《《LCD12864_RS_PIN);}//寄存器選擇輸入
#define LCD12864_RW(x) {if((x))P3 |= 1《《LCD12864_RW_PIN;\
else P3 &=~(1《《LCD12864_RW_PIN);}//液晶讀/寫(xiě)控制
#define LCD12864_EN(x) {if((x))P3 |= 1《《LCD12864_EN_PIN;\
else P3 &=~(1《《LCD12864_EN_PIN);}//液晶使能控制
#define LCD12864_MD(x) {if((x))P3 |= 1《《LCD12864_MD_PIN;\
else P3 &=~(1《《LCD12864_MD_PIN);}//串/并方式控制
#define LCDWELA(x) {if((x))P2 |= 1《《6; else P2 &=~(1《《6);}
#define LCDDULA(x) {if((x))P2 |= 1《《7; else P2 &=~(1《《7);}
#define DelayNOP() {_nop_();_nop_();_nop_();_nop_();}
/*********************************************/
/* */
/* 主程序 */
/* */
/*********************************************
void main()
{
DelayNOP(); //延時(shí)
wela=LOW;
dula=LOW;
LCD12864_init(); //初始化LCD
LCD12864PrintfString(0,1,dis1);
LCD12864PrintfString(1,0,dis2);
LCD12864PrintfString(2,0,dis3);
LCD12864PrintfString(3,1,dis4);
while(1);
}
/********************************************
*函數(shù)名稱:LCD12864_init
*輸 入:無(wú)
*輸 出:lcd_busy 為1時(shí),忙,等待。
lcd-busy 為0時(shí),閑,可寫(xiě)指令與數(shù)據(jù)
*說(shuō) 明:LCD12864LCD檢查忙狀態(tài)
/*******************************************/
bit LCD1286_busy()
{
bit result;
LCD12864_RS(LOW);
LCD12864_RW(HIGH);
LCD12864_EN(HIGH);
DelayNOP();
result = (bit)(LCD12864_PORT&0x80);
LCD12864_EN(LOW);
return(result);
}
/********************************************
*函數(shù)名稱:LCD12864WriteCommand
*輸 入:ucCmd 要寫(xiě)入的命令
*輸 出:無(wú)
*說(shuō) 明:LCD12864 寫(xiě)命令
RS=L,RW=L,E=高脈沖,D0-D7=指令碼。
********************************************/
void LCD12864WriteCommand(unsigned char ucCmd)
{
while(LCD1286_busy());
LCD12864_RS(LOW);
LCD12864_RW(LOW);
LCD12864_EN(LOW);
_nop_();
_nop_();
LCD12864_PORT = ucCmd;
DelayNOP();
LCD12864_EN(HIGH);
DelayNOP();
LCD12864_EN(LOW);
}
/********************************************
*函數(shù)名稱:LCD12864WriteByte
*輸 入:ucByte 要寫(xiě)入的字節(jié)
*輸 出:無(wú)
*說(shuō) 明:LCD12864 寫(xiě)字節(jié)
RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。
********************************************/
void LCD12864WriteByte(unsigned char ucByte)
{
while(LCD1286_busy());
LCD12864_RS(HIGH);
LCD12864_RW(LOW);
LCD12864_EN(LOW);
LCD12864_PORT = ucByte;
DelayNOP();
LCD12864_EN(HIGH);
DelayNOP();
LCD12864_EN(LOW);
}
/********************************************
*函數(shù)名稱:LCD12864_init
*輸 入:無(wú)
*輸 出:無(wú)
*說(shuō) 明:LCD12864LCD初始化設(shè)定
/*******************************************/
void LCD12864_init()
{
LCD12864_MD(HIGH); //并口方式
LCD12864WriteCommand(0x34); //擴(kuò)充指令操作
LCD12864WriteCommand(0x30); //基本指令操作
LCD12864WriteCommand(0x0C); //顯示開(kāi),關(guān)光標(biāo)
LCD12864WriteCommand(0x01); //清除LCD的顯示內(nèi)容
}
/********************************************
*函數(shù)名稱:LCD12864SetXY
*輸 入:x 橫坐標(biāo) y 縱坐標(biāo)
*輸 出:無(wú)
*說(shuō) 明:LCD12864 設(shè)置坐標(biāo)
********************************************/
void LCD12864SetXY(unsigned char X,unsigned char Y)
{
if (X==0)
{X=0x80;}
else if (X==1)
{X=0x90;}
else if (X==2)
{X=0x88;}
else if (X==3)
{X=0x98;}
LCD12864WriteCommand(X+Y); //顯示地址
}
/********************************************
*函數(shù)名稱:LCD12864SetXY
*輸 入:x 橫坐標(biāo) y 縱坐標(biāo)
*輸 出:無(wú)
*說(shuō) 明:LCD12864 設(shè)置坐標(biāo)
為什么這樣寫(xiě)不行呢?
********************************************
void LCD12864SetXY(unsigned char x,unsigned char y)
{
switch(y)
{
case 1:
{
LCD12864WriteCommand(0x80+x);
}
break;
case 2:
{
LCD12864WriteCommand(0x90+x);
}
break;
case 3:
{
LCD12864WriteCommand(0x88+x);
}
break;
case 4:
{
LCD12864WriteCommand(0x98+x);
}
break;
default:break;
}
// LCD12864WriteCommand(x+y); //顯示地址
}
/********************************************
*函數(shù)名稱:LCD12864PrintfString
*輸 入:x 橫坐標(biāo) y 縱坐標(biāo) s字符串
*輸 出:無(wú)
*說(shuō) 明:LCD12864 打印字符串
********************************************/
void LCD12864PrintfString(unsigned char x,unsigned char y,unsigned char *s)
{
LCD12864SetXY(x,y); //設(shè)置顯示坐標(biāo)
while(s && *s)
{
LCD12864WriteByte(*s); //顯示逐個(gè)字符
s++;
}
}
/****************************************************************************/
/* */
/* Copyright (c) 2012, pcwebmaster */
/* All rights reserved. */
/* */
/* Email:pcwebmaste@163.com */
/* */
/****************************************************************************/
/****************************************************************************/
/* 文件名:LCD12864.c */
/* 版 本:Version 1.0 */
/* 描 述:實(shí)現(xiàn)液晶和單片機(jī)的通訊協(xié)議,根據(jù)計(jì)算機(jī)發(fā)給的命令進(jìn)行人機(jī)交互 */
/* 作 者:pcwebmaste */
/* 函 數(shù): */
/* LCD12864_init */
/* LCD12864WriteCommand */
/* LCD12864WriteByte */
/* LCD12864_init */
/* LCD12864SetXY */
/* LCD12864PrintfString */
/* 歷史記錄: */
/* pcwebmaste 2008-07-10 Creat Inital version. (Version 1.0) */
/* 模塊化 2012-06-02 Creat Inital version. (Version 2.0) */
/****************************************************************************/
#ifndef __12864_H__
#define __12864_H__
#include 《reg52.h》
#include 《intrins.h》
#define LCD12864_PORT P0 //數(shù)據(jù)口
#define LCD12864_RS_PIN 5
#define LCD12864_RW_PIN 6
#define LCD12864_EN_PIN 4
#define LCD12864_MD_PIN 7
unsigned char code dis1[] = {“中國(guó)昌樂(lè)是寶石”};
unsigned char code dis2[] = {“之都,西瓜之鄉(xiāng)!”};
unsigned char code dis3[] = {“中國(guó)昌樂(lè)寶石城”};
unsigned char code dis4[] = {“人民歡迎您!”};
/********************************************
*函數(shù)名稱:LCD12864_init
*輸 入:無(wú)
*輸 出:lcd_busy 為1時(shí),忙,等待。
lcd-busy 為0時(shí),閑,可寫(xiě)指令與數(shù)據(jù)
*說(shuō) 明:LCD12864LCD檢查忙狀態(tài)
/*******************************************/
bit LCD1286_busy();
/********************************************
*函數(shù)名稱:LCD12864WriteCommand
*輸 入:ucCmd 要寫(xiě)入的命令
*輸 出:無(wú)
*說(shuō) 明:LCD12864 寫(xiě)命令
RS=L,RW=L,E=高脈沖,D0-D7=指令碼。
********************************************/
void LCD12864WriteCommand(unsigned char ucCmd);
/********************************************
*函數(shù)名稱:LCD12864WriteByte
*輸 入:ucByte 要寫(xiě)入的字節(jié)
*輸 出:無(wú)
*說(shuō) 明:LCD12864 寫(xiě)字節(jié)
RS=H,RW=L,E=高脈沖,D0-D7=數(shù)據(jù)。
********************************************/
void LCD12864WriteByte(unsigned char ucByte);
/********************************************
*函數(shù)名稱:LCD12864_init
*輸 入:無(wú)
*輸 出:無(wú)
*說(shuō) 明:LCD12864LCD初始化設(shè)定
/*******************************************/
void LCD12864_init();
/********************************************
*函數(shù)名稱:LCD12864SetXY
*輸 入:x 橫坐標(biāo) y 縱坐標(biāo)
*輸 出:無(wú)
*說(shuō) 明:LCD12864 設(shè)置坐標(biāo)
********************************************/
void LCD12864SetXY(unsigned char X,unsigned char Y);
/********************************************
*函數(shù)名稱:LCD12864PrintfString
*輸 入:x 橫坐標(biāo) y 縱坐標(biāo) s字符串
*輸 出:無(wú)
*說(shuō) 明:LCD12864 打印字符串
********************************************/
void LCD12864PrintfString(unsigned char x,unsigned char y,unsigned char *s);
void LCD12864PrintfData(unsigned char x,unsigned char y,unsigned char DData);
/********************************************
*函數(shù)名稱:LCD12864PrintfNum
*輸 入:add ge shi bai
*輸 出:無(wú)
*說(shuō) 明:此函數(shù)不好寫(xiě)成通用函數(shù),在連續(xù)地址里
連續(xù)寫(xiě)數(shù)字半角顯示。根據(jù)情況修改
********************************************/
void LCD12864PrintfNum(unsigned char add,unsigned char ge,unsigned char shi,unsigned char bai)
{
LCD12864WriteCommand(add);
LCD12864WriteByte(bai+0x30);
LCD12864WriteByte(shi+0x30);
LCD12864WriteByte(ge+0x30);
}
#endif