2。5元淘到手
點亮就是寶
程式顯示效果(需調一下對比度)
原是並口,晶片支援串列埠(需小改)
//屏絲印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] ); // “*”
}