12864 LCD屏絲印WOM-13064H2—B(NT7538)驅動C程式

12864 LCD屏絲印WOM-13064H2—B(NT7538)驅動C程式

2。5元淘到手

12864 LCD屏絲印WOM-13064H2—B(NT7538)驅動C程式

點亮就是寶

12864 LCD屏絲印WOM-13064H2—B(NT7538)驅動C程式

程式顯示效果(需調一下對比度)

12864 LCD屏絲印WOM-13064H2—B(NT7538)驅動C程式

原是並口,晶片支援串列埠(需小改)

//屏絲印WOM-13064H2

//NT7538 驅動例程, 12864 點陣, 6800 時序 驅動電壓 VDD=3。3V

#include

//#include

#define uchar unsigned char

//函式

void LCD_Init() ;

void Delay(int) ;

void LCD_RegWrite(uchar) ; //寫命令暫存器

void LCD_dataWrite(uchar) ; //寫顯示資料暫存器

void Write_Indirect68(uchar _data); //間接驅動 68 模式寫資料子程式

LCD_Data_Read(void); //讀顯示資料暫存器

Read_Indirect68(void); //間接驅動 68 模式讀資料子程式

Read_STATUS_Indirect68(void); //間接驅動 68 模式讀狀態字

void Write_HANZI( uchar _x,uchar _y,uchar *hz ); //寫一個漢字

void Write_ZIFU( uchar _x,uchar _y,uchar *zf ); //寫一個字元

void Test_Read_Modify_Write(); //讀功能及讀修改寫測試

void Dot_Write(uchar _x,uchar _y); //寫單點, 讀修改寫模式

void LCD_Clear() ;

void LCD_XY() ; //X_Y 座標定位,根據 col,row 的值在顯示區定位

void LCD_DISPPIC( uchar *pic ); //寫全屏圖片

void LCD_BIAN( ); //寫邊框

void LCD_HANZI( ); //寫漢字列表

void LCD_ZIFU( ); //寫字元列表

void LCD_Line_Write(uchar x0,uchar y0,uchar xt,uchar yt); //兩點劃直線 起點(x0,y0), 終點(xt,yt)

//間接驅動模式功能位定義

sbit LCD_CS = P0^3 ;

sbit LCD_A0 = P0^4 ;

sbit LCD_RST = P0^1 ; //

sbit LCD_WR = P0^2 ;

sbit LCD_RD = P0^5 ;

#define DBBUS P1 //並口資料埠

#define LCMLIMIT 130 //128總列數。

#define EXCURSION 1 //列驅動偏移量, 從 SO 開始該值為 0, 從 S1 開始該值為 1,

//全域性變數

uchar col,row; /*列 x,行(頁)y,輸出資料 */

uchar lcdvop; //對比度引數

uchar status; //狀態字

uchar code tu[];//圖片陣列

uchar code hanzi[][32];//漢字陣列

uchar code zifu[][16];//字元陣列

/*主函式*/

void main(void)

{

//EA=1,EX1=1,IT1=0;//中斷設定, 開啟外部中斷 1, 低電平觸發

lcdvop=0x20; //vop 預設引數

LCD_Init(); //初始化

LCD_Clear(); //清屏

status=Read_STATUS_Indirect68();//讀狀態字

LCD_RegWrite(0xa5); //強制全顯指令

Delay(1000); //顯示延時

LCD_RegWrite(0xa4); //恢復正常顯示

LCD_BIAN(); //寫邊框

Delay(1000);

LCD_Clear();

LCD_HANZI( ); //寫入漢字

LCD_ZIFU(); //寫入字元

Delay(1000);

LCD_Line_Write(10,3,3,60); // 畫線

LCD_Line_Write(3,61,124,61);

LCD_Line_Write(124,61,117,3);

LCD_Line_Write(118,3,10,3);

Delay(1500);

while(1)

{

}

}

/************************/

//初始化

/************************/

void LCD_Init()

{

DBBUS=0xff;

LCD_CS = 1 ;

LCD_A0 = 1 ;

LCD_RST = 0 ; //復位腳復位

Delay(50);

LCD_RST = 1 ;

Delay(100);

LCD_RegWrite(0xe2); //復位指令

LCD_RegWrite(0xae); //關顯示

LCD_RegWrite(0x60); //起始行設定 40-7F

LCD_RegWrite(0xa2); //LCD 偏壓設定,A2=1/9,A3=1/7

LCD_RegWrite(0xa1); //SEG 掃描方向設定 A0=正掃 S0->S131,A1=反掃 S131->S0

LCD_RegWrite(0xc0); //COM 掃描方向設定,C0=正掃 C0->C63,C8=反掃 C63->C0

LCD_RegWrite(0xA6); //顯示正/反顯設定,A6=1 顯示,A7=0 顯示

LCD_RegWrite(0x26); //V0 的電壓調節器的內部電阻率設定, Rb/Ra Ratio 20-27

LCD_RegWrite(0x81); //對比度 VOP 設定指令

LCD_RegWrite(lcdvop); //對比度引數 00-3F

LCD_RegWrite(0xf8); //倍壓模式設定指令

LCD_RegWrite(0x00); //倍壓模式選擇 00=2X,3X,4X 01=5X 03=6X

LCD_RegWrite(0xa4); //全部顯示控制 ,A4=正常顯示,A5=強制所有畫素全亮

LCD_RegWrite(0x2f); //電源設定

LCD_RegWrite(0xAf); //開啟顯示

}

/****************************************/

/* 寫漢字列表 */

/****************************************/

void LCD_HANZI(void)

{

Write_HANZI( 16,1,hanzi[0] ); // “電”

Write_HANZI( 32,1,hanzi[1] ); // “子”

Write_HANZI( 48,1,hanzi[2] ); // “淘”

Write_HANZI( 64,1,hanzi[3] ); // “寶”

Write_ZIFU( 80,1,zifu[11] ); //“D”

Write_ZIFU( 88,1,zifu[16] ); //“I”

Write_ZIFU( 96,1,zifu[17] ); //“Y”

Write_HANZI( 16,3,hanzi[4] ); // “液”

Write_HANZI( 32,3,hanzi[5] ); // “晶”

Write_HANZI( 48,3,hanzi[6] ); // “顯”

Write_HANZI( 64,3,hanzi[7] ); // “示”

Write_HANZI( 80,3,hanzi[8] ); // “模”

Write_HANZI( 96,3,hanzi[9] ); // “塊”

}

/****************************************/

/* 寫字元列表 */

/****************************************/

void LCD_ZIFU(void)

{

Write_ZIFU( 8,5,zifu[10] ); // “*”

Write_ZIFU( 16,5,zifu[10] ); // “*”

Write_ZIFU( 24,5,zifu[1] ); // “1”

Write_ZIFU( 32,5,zifu[2] ); // “2”

Write_ZIFU( 40,5,zifu[8] ); // “8”

Write_ZIFU( 48,5,zifu[15] ); // “X”

Write_ZIFU( 56,5,zifu[6] ); // “6”

Write_ZIFU( 64,5,zifu[4] ); // “4”

Write_ZIFU( 72,5,zifu[11] ); //“D”

Write_ZIFU( 80,5,zifu[12] ); // “O”

Write_ZIFU( 88,5,zifu[13] ); // “T”

Write_ZIFU( 96,5,zifu[14] ); // “S”

Write_ZIFU( 104,5,zifu[10] ); // “*”

Write_ZIFU( 112,5,zifu[10] ); // “*”

}