📄 lcd.c
字号:
/*********************************************************************************************
出品 DoYoung.net
程序名 Dy-12864LC 驱动程序
制作人 杜洋
日期 2007-4-18
参数 MCS-51 12MHZ PG12864LRS-JNN-H
/*********************************************************************************************
//更新日志
2007-4-19|21:49 杜洋 增加显示的涮屏动态效果参数
2007-4-18|22:54 杜洋 完成校验与测试
2007-4-18|20:51 杜洋 开始起草
/*********************************************************************************************
//程序说明
本程序是 PG12864LRS-JNN-H 图形液晶显示屏模块的专用驱动程序及测试程序
本程序须配合 PG12864LRS-JNN-H 技术手册(DoYoung.net原创)一同参考使用
仔细了解程序中的函数以在开发时方便调用
如程序存在问题请到我一只猫 doyoung.net@gmail.com
DoYoung.net 电子技术原创 保留版权
欢迎莅临 http://doyoung.net/
/*********************************************************************************************/
//程序部分开始//
/*********************************************************************************************
//头文件定义
//
/*********************************************************************************************/
#include <reg52.h> // 包含头文件
#include <string.h> //用于指针
/*********************************************************************************************
//接口定义
//
/*********************************************************************************************/
#define LCM12864_DB7_DB0 P0 // 定义LCM12864的数据总线
sbit LCM12864_RS = P2 ^ 3; // 定义LCM12864的RS控制线
sbit LCM12864_RW = P2 ^ 4; // 定义LCM12864的RW控制线
sbit LCM12864_E = P2 ^ 2; // 定义LCM12864的E控制线
sbit LCM12864_CS1 = P2 ^ 7; // 定义LCM12864的CS1控制线
sbit LCM12864_CS2 = P2 ^ 6; // 定义LCM12864的CS2控制线
sbit LCM12864_RESET = P2 ^ 5; // 定义LCM12864的RESET控制线
sbit LCM12864_LEDK = P2 ^ 0; // 定义LCM12864的LEDK(BLK)控制线
/*********************************************************************************************
//数据定义
//定义LCM12864的命令字
/*********************************************************************************************/
#define LCM12864_DISP_ON 0x3f // 打开LCM12864显示
#define LCM12864_DISP_OFF 0x3e // 关闭LCM12864显示
#define LCM12864_START_ROW 0xc0 // 显示起始行0,可以用LCM12864_START_ROW+x设置起始行。(x<64)
#define LCM12864_PAGE_START_ADDR 0xb8 // 页起始地址,可以用LCM12864_PAGE_START_ADDR+x设置当前页。(x<8)
#define LCM12864_COL_START_ADDR 0x40 // 列起始地址,可以用LCM12864_COL_START_ADDR+x设置当前列。(x<64)
//定义LCM12864的状态屏蔽码
//在BUSY和REST状态时,除读状态指令外,其他指令均不对LCM12864产生作用。
//在对LCM12864操作之前要查询BUSY状态,以确定是否可以对LCM12864进行操作。
#define LCM12864_STATUS_BUSY 0x80 // LCM12864忙状态屏蔽码
#define LCM12864_STATUS_DISP_OFF 0x20 // LCM12864显示关闭状态屏蔽码
#define LCM12864_STATUS_REST 0x10 // LCM12864复位状态屏蔽码
/*********************************************************************************************
//字符/图像定义库
//
/*********************************************************************************************/
/*-- 文字: 欢 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
/* 纵向取模,字节倒序 */
unsigned char code feng[]={
0x00,0x00,0xFE,0x02,0x0A,0x12,0x62,0x82,//风
0x62,0x1A,0x02,0xFF,0x02,0x00,0x00,0x00,
0x80,0x40,0x3F,0x20,0x10,0x08,0x06,0x01,
0x06,0x18,0x00,0x3F,0x40,0x80,0xE0,0x00,
};
/*-- 文字: 迎 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
/* 纵向取模,字节倒序 */
unsigned char code yun[]={
0x40,0x40,0x40,0x44,0x44,0x44,0xC4,0x44,//云
0x44,0x44,0x46,0x44,0x40,0x60,0x40,0x00,
0x00,0x00,0x40,0x60,0x58,0x46,0x41,0x40,
0x40,0x40,0x50,0x60,0xC0,0x00,0x00,0x00
};
///////////////////////////////////////////////////////////////////
// ASCII字模的数据表 //
// 码表从0x20~0x7e //
// 字库:Asc8X16E.dat 纵向取模下高位 //
///////////////////////////////////////////////////////////////////
unsigned char code nAsciiDot[] = // ASCII
{
0x08,0x08,0xC8,0x3F,0x08,0x48,0x20,0xF8,//雄
0x4E,0x49,0xFA,0x48,0x6C,0x48,0x00,0x00,
0x04,0x33,0x28,0x27,0x20,0x38,0x00,0xFF,
0x22,0x22,0x3F,0x22,0x23,0x32,0x20,0x00,
0x08,0x24,0xF5,0xA5,0xAD,0xA5,0xF5,0x2F,//霸
0x05,0xE5,0x2D,0x25,0xF5,0x2C,0x04,0x00,
0x00,0x2E,0x2A,0x2A,0xFF,0x2A,0x2A,0xAE,
0x40,0x3F,0x09,0x89,0xFF,0x00,0x00,0x00,
0x40,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,//天
0x42,0x42,0x42,0x42,0x43,0x62,0x40,0x00,
0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,
0x03,0x0C,0x10,0x20,0x40,0xC0,0x40,0x00,
0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,//下
0x22,0x42,0x82,0x82,0x02,0x03,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,
0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00
};
/////////////////////////////////////////////////////////////////////////
// Bitmap点阵数据表 //
// 图片: C:\..鎈doyleee.bmp,纵向取模下高位,数据排列:从左到右从上到下 //
// 图片尺寸: 128 * 64 //
/////////////////////////////////////////////////////////////////////////
unsigned char code doyleee[] = // 数据表
{
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x81,0xF1,0xF1,0xF1,0x71,0x31,
0x31,0x71,0xF1,0xF1,0xE1,0xC1,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x81,0xF1,0xF1,0xF1,0x71,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xF0,0xFF,0xFF,0xFF,0x0F,0x00,0x00,
0x00,0x00,0xC0,0xFF,0xFF,0xFF,0x7F,0x00,
0x00,0xF0,0xFC,0xFE,0xFE,0x0F,0x03,0x03,
0x07,0xFF,0xFE,0xFE,0xF8,0x00,0xE0,0xE0,
0xE0,0xE0,0x00,0x03,0x3F,0xFF,0xFF,0xFC,
0xC0,0xF0,0xFE,0x3F,0x0F,0x03,0x00,0xF0,
0xFF,0xFF,0xFF,0x0F,0x00,0x00,0xF0,0xFC,
0xFE,0xFE,0x3F,0x33,0x33,0x33,0x3F,0x3F,
0x3E,0x38,0x00,0x00,0xF0,0xFC,0xFE,0xFE,
0x3F,0x33,0x33,0x33,0x3F,0x3F,0x3E,0x38,
0x00,0x00,0xF0,0xFC,0xFE,0xFE,0x3F,0x33,
0x33,0x33,0x3F,0x3F,0x3E,0x38,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x8E,0x8F,0x8F,0x8F,0x8C,0x8C,0x8C,0x8C,
0x8E,0x8F,0x87,0x87,0x83,0x81,0x80,0x80,
0x80,0x81,0x87,0x87,0x8F,0x8E,0x8C,0x8C,
0x8F,0x87,0x87,0x83,0x80,0x80,0x80,0xC0,
0xC0,0xC0,0xC0,0xC0,0xC0,0xF3,0x7F,0x3F,
0x0F,0x03,0x00,0x00,0x00,0x00,0x0E,0x0F,
0x0F,0x0F,0x00,0x00,0x00,0x00,0x01,0x07,
0x07,0x0F,0x0E,0x0C,0x0C,0x0F,0x07,0x03,
0x01,0x00,0x00,0x00,0x01,0x07,0x07,0x0F,
0x0E,0x0C,0x0C,0x0F,0x07,0x03,0x01,0x00,
0x00,0x00,0x01,0x07,0x07,0x0F,0x0E,0x0C,
0x0C,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x00,0x00,0xFC,
0xFC,0x04,0x0C,0xF8,0xF0,0x00,0x00,0xF0,
0xF0,0x00,0x00,0xF0,0xF0,0x00,0x00,0x40,
0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x10,
0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,0x18,
0x1C,0x84,0xC4,0x7C,0x38,0x00,0x00,0xB8,
0xFC,0x64,0xC4,0xFC,0xB8,0x00,0x00,0xE0,
0xF0,0x3C,0x2C,0xE4,0xC0,0x00,0x00,0x80,
0xFC,0x7C,0x00,0xF0,0xF0,0x00,0x00,0xFC,
0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,
0xFC,0x04,0x04,0x1C,0x18,0x00,0x00,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x07,0x04,0x06,0x03,0x01,0x00,0x20,0x23,
0x27,0x34,0x1C,0x0F,0x03,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0x07,0x04,0x00,0x00,0x06,
0x07,0x05,0x04,0x04,0x04,0x00,0x00,0x03,
0x07,0x04,0x04,0x07,0x03,0x00,0x00,0x03,
0x07,0x04,0x04,0x07,0x03,0x00,0x00,0x01,
0x01,0x01,0x01,0x07,0x07,0x01,0x00,0x07,
0x07,0x04,0x04,0x04,0x04,0x00,0x00,0x03,
0x07,0x04,0x04,0x07,0x03,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,
0x00,0x00,0x00,0x00,0xF0,0xF0,0x00,0x00,
0x00,0x20,0x20,0xF0,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,
0x10,0x10,0x90,0x50,0xF0,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x83,
0x86,0x8C,0x8C,0x86,0x83,0x81,0x80,0x80,
0x88,0x88,0x88,0x8F,0x8F,0x88,0x88,0x88,
0x80,0x80,0x8C,0x8C,0x80,0x80,0x87,0x8F,
0x8A,0x89,0x88,0x88,0x8F,0x87,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -