参考一下本站(ID号306414 69)的帖子,他里面的注释挺清楚的,部分代码 单片机驱动12864液晶的头文件LCD12864.H源程序如下(附件里面有调用方法 很简单): //===========LCD12864.H=============== #ifndef _LCD12864_H__ #define _LCD12864_H__ /*********************************************************************************************/ #include <reg52.h> // 包含头文件 #include <string.h> //用于指针 typedef unsigned char uchar ; typedef unsigned int uint ; /********************************************************************************************* //接口定义 // /*********************************************************************************************/ #define LCD12864_DATABUS P1 // 定义LCD12864的数据总线 sbit LCD12864_RS = P2^6; // 定义LCD12864的RS控制线 sbit LCD12864_RW = P2^7; // 定义LCD12864的RW控制线 sbit LCD12864_E = P3^0; // 定义LCD12864的E控制线 sbit LCD12864_CS1 = P3^1; // 定义LCD12864的CS1控制线 sbit LCD12864_CS2 = P3^2; // 定义LCD12864的CS2控制线 //sbit LCD12864_RESET = P2 ^ 5; // 定义LCD12864的RESET控制线 //sbit LCD12864_LEDK = P2 ^ 0; // 定义LCD12864的LEDK(BLK)控制线 /********************************************************************************************* //数据定义 //定义LCD12864的命令字 /*********************************************************************************************/ #define LCD12864_DISP_ON 0x3F // 打开LCD12864显示 #define LCD12864_DISP_OFF 0x3E // 关闭LCD12864显示 #define LCD12864_START_ROW 0xC0 // 显示起始行,可以用LCD12864_START_ROW+x设置起始行。(x<64) #define LCD12864_PAGE_ADDR 0xB8 // 页起始地址,可以用LCD12864_PAGE_ADDR+x设置当前页。(x<8) #define LCD12864_COL_ADDR 0x40 // 列起始地址,可以用LCD12864_COL_ADDR+x设置当前列。(x<64) //在BUSY和REST状态时,除读状态指令外,其他指令均不对LCD12864产生作用。 //在对LCD12864操作之前要查询BUSY状态,以确定是否可以对LCD12864进行操作。 #define LCD12864_STATUS_BUSY 0x80 // LCD12864忙状态屏蔽码 #define LCD12864_STATUS_DISP_OFF 0x20 // LCD12864显示关闭状态屏蔽码 #define LCD12864_STATUS_REST 0x10 // LCD12864复位状态屏蔽码 void LCD12864_WriteCMD(uchar LCD_com); void LCD12864_WriteData(unsigned char LCD12864_data); void Delay(unsigned int count); |