📄 main3.c
字号:
/********************************************************************************************
* 文 件 名:test019.c
* 功 能:LCM12864液晶模块驱动。
* 硬件条件:1.CPU型号:AT89S52
* 2.晶振:12.000MHz
* 3.用跳线帽短接JP4跳线,即P0口全部接上拉电阻。
* 4.LCM12864与AT89S52的连接如下:
*
* LCM12864 AT89S52 备 注
* ==================================================================================
* RS P2.7 0:写指令或读状态; 1:数据操作
* R/W P2.6 0:进行写操作; 1:进行读操作
* E P2.5 读写脉冲:在E下降沿,数据被锁存(写)入KS0108
* 在E高电平期间,数据被读出。
* DB0 P0.0 数据线0
* DB1 P0.1 数据线1
* DB2 P0.2 数据线2
* DB3 P0.3 数据线3
* DB4 P0.4 数据线4
* DB5 P0.5 数据线5
* DB6 P0.6 数据线6
* DB7 P0.7 数据线7
* CS1 P2.4 高电平选通,选中左半屏。.
* RESET P2.2 低电平有效,复位信号有效时,关闭液晶显示,使显示
* 起始行为0,该引脚可与MCU相连,由MCU控制;也可以
* 直接接VDD,使之不起作用。
* LEDK(BLK) P2.1 背光控制,高电平点亮。
* 注意:LEDK与P2.1不是直接连接!P2.1应通过一个1K的
* 电阻接8050三极管的B极,LEDK接8050的C极,8050
* 的E极接地。
* ==================================================================================
*
*
* 说 明:用户可根据实际情况,改变上述的连接关系。
* 作 者:POWER
* 日 期:2006年12月12号
* 斯凯科技主页:http://www.armsky.net/
* 斯凯科技论坛:www.armsky.net/bbs
*********************************************************************************************/
#include "config.h" // 包含头文件
/* 与编译器无关的数据类型定义 */
/********************************************************************************************/
typedef unsigned char uint8; // 无符号8位整型变量
typedef signed char int8; // 有符号8位整型变量
typedef unsigned short uint16; // 无符号16位整型变量
typedef signed short int16; // 有符号16位整型变量
typedef unsigned int uint32; // 无符号32位整型变量
typedef signed int int32; // 有符号32位整型变量
typedef float fp32; // 单精度浮点数(32位长度)
typedef double fp64; // 双精度浮点数(64位长度)
/********************************************************************************************/
#define LCM12864_DB7_DB0 P0 // 定义LCM12864的数据总线
/* 定义位变量 */
sbit LCM12864_RS = P2 ^ 7; // 定义LCM12864的RS控制线
sbit LCM12864_RW = P2 ^ 6; // 定义LCM12864的RW控制线
sbit LCM12864_E = P2 ^ 5; // 定义LCM12864的E控制线
sbit LCM12864_CS1 = P2 ^ 4; // 定义LCM12864的CS1控制线
sbit LCM12864_CS2 = P2 ^ 3; // 定义LCM12864的CS2控制线
sbit LCM12864_RESET = P2 ^ 2; // 定义LCM12864的RESET控制线
sbit LCM12864_LEDK = P2 ^ 1; // 定义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 --*/
/* 纵向取模,字节倒序 */
uint8 code huan1[]={
0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,
0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00,
};
/*-- 文字: 迎 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
/* 纵向取模,字节倒序 */
uint8 code ying2[]={
0x40,0x41,0xCE,0x04,0x00,0xFC,0x04,0x02,0x02,0xFC,0x04,0x04,0x04,0xFC,0x00,0x00,
0x40,0x20,0x1F,0x20,0x40,0x47,0x42,0x41,0x40,0x5F,0x40,0x42,0x44,0x43,0x40,0x00,
};
/*-- 文字: 使 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
/* 纵向取模,字节倒序 */
uint8 code shi3[]={
0x40,0x20,0xF0,0x1C,0x07,0xF2,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xF4,0x04,0x00,
0x00,0x00,0x7F,0x00,0x40,0x41,0x22,0x14,0x0C,0x13,0x10,0x30,0x20,0x61,0x20,0x00,
};
/*-- 文字: 用 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
/* 纵向取模,字节倒序 */
uint8 code yong4[]={
0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,
};
/*-- 文字: A --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_A[]={
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
};
/*-- 文字: R --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_R[]={
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,
};
/*-- 文字: M --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_M[]={
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,
};
/*-- 文字: S --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_S[]={
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,
};
/*-- 文字: K --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_K[]={
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,
};
/*-- 文字: Y --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_Y[]={
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,
};
/*-- 文字: - --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_shortline[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
};
/*-- 文字: 5 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_5[]={
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
};
/*-- 文字: 1 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_1[]={
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
};
/*-- 文字: E --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_E[]={
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,
};
/*-- 文字: a --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_a_[]={
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,
};
/*-- 文字: s --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_s_[]={
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,
};
/*-- 文字: y --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_y_[]={
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,
};
/*-- 文字: w --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_w_[]={
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,
};
/*-- 文字: . --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_dot[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
};
/*-- 文字: r --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_r_[]={
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,
};
/*-- 文字: m --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_m_[]={
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,
};
/*-- 文字: k --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_k_[]={
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,
};
/*-- 文字: n --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
/* 纵向取模,字节倒序 */
uint8 code char_n_[]={
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -