⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 构造是在两片平行的玻璃当中放置液态的晶体
💻 C
📖 第 1 页 / 共 3 页
字号:
													   /******************************************************************************************** 
* 文 件 名: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极接地。 
*        ================================================================================== 
#include "reg52.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_[]={ 
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20, 
}; 
/*--  文字:  e  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16  --*/ 
/* 纵向取模,字节倒序 */ 
uint8 code char_e_[]={ 
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00, 
}; 
/*--  文字:  t  --*/ 
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16  --*/ 
/* 纵向取模,字节倒序 */ 
uint8 code char_t_[]={ 
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00, 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -