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

📄 main3.c

📁 arm7驱动液晶屏显示图片
💻 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极接地。
*        ==================================================================================
*
*
* 说    明:用户可根据实际情况,改变上述的连接关系。
* 作    者: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 + -