📄 lcd.h
字号:
//数据类型定义
typedef unsigned char Uchar8; /* 无符号8位整型变量 */
typedef signed char Schar8; /* 有符号8位整型变量 */
typedef unsigned short Ushort16; /* 无符号16位整型变量 */
typedef signed short Sshort16; /* 有符号16位整型变量 */
typedef unsigned int Uint32; /* 无符号32位整型变量 */
typedef signed int Sint32; /* 有符号32位整型变量 */
/********************************************
**** LCD Define ****
*********************************************/
//LCD引脚与2148引脚连接定义
#define LCD_WR 0x01<<25 //P1.25
#define LCD_RD 0x01<<29 //P0.29
#define LCD_CS 0x01<<24 //P1.24
#define LCD_A0 0x01<<30 //P0.30 A0=1写指令代码和读数据,A0=0写数据
#define LCD_D0 0x01<<16 //P1.16
#define LCD_D1 0x01<<17 //P1.17
#define LCD_D2 0x01<<18 //P1.18
#define LCD_D3 0x01<<19 //P1.19
#define LCD_D4 0x01<<20 //P1.20
#define LCD_D5 0x01<<21 //p1.21
#define LCD_D6 0x01<<22 //P1.22
#define LCD_D7 0x01<<23 //P1.23
#define ROW 0x28; /*同SYSTEM SET中的P6设置,液晶的所显示的行数 用来计算光标地址的*/
//2148和LCD连接的引脚的功能选择的定义,定义为GPIO口。
#define LCD_PINSEL0 0xffffffff //PINSEL0的管脚定义不变
#define LCD_PINSEL1 0xc3ffffff //定义PINSEL1的bit[26..29]为0,使p0.29和p0.30为GPIO口
#define LCD_PINSEL2 0xfffffff7 //定义PINSEL2的bit[3]为0,使P1.16 - P1.25为GPIO口
//2148与LCD连接的引脚的数据传输方向定义
#define RDA0_0DIR LCD_RD | LCD_A0 //定义P0.29和P0.30方向选择
#define WRCS_1DIR LCD_WR | LCD_CS //定义P1.24和P1.25方向选择
#define Data_1DIR LCD_D0 | LCD_D1 | LCD_D2 | LCD_D3 | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7 // P1.16至P1.23的方向选择
// 定义A0数据线
#define H_LCD_A0() IO0SET |= LCD_A0
#define L_LCD_A0() IO0CLR = LCD_A0
// 定义CS数据线
#define H_LCD_CS() IO1SET |= LCD_CS
#define L_LCD_CS() IO1CLR = LCD_CS
// 定义WR数据线
#define H_LCD_WR() IO1SET |= LCD_WR
#define L_LCD_WR() IO1CLR = LCD_WR
// 定义RD数据线
#define H_LCD_RD() IO0SET |= LCD_RD
#define L_LCD_RD() IO0CLR = LCD_RD
//写数据时序
#define DATA_WR_STEP1() (L_LCD_CS(),L_LCD_A0(),H_LCD_RD(),H_LCD_WR();)
#define DATA_WR_STEP2() (L_LCD_CS(),L_LCD_A0(),H_LCD_WR(),L_LCD_WR();)
#define DATA_WR_STEP3() (L_LCD_CS(),L_LCD_A0(),H_LCD_WR(),H_LCD_WR();)
#define DATA_WR_STEP4() (H_LCD_CS(),L_LCD_A0(),H_LCD_RD(),H_LCD_WR();)
//写指令时序
#define CMD_WR_STEP1() (L_LCD_CS(),H_LCD_A0(),H_LCD_RD(),H_LCD_WR();)
#define CMD_WR_STEP2() (L_LCD_CS(),H_LCD_A0(),H_LCD_RD(),L_LCD_WR();)
#define CMD_WR_STEP3() (L_LCD_CS(),H_LCD_A0(),H_LCD_RD(),H_LCD_WR();)
#define CMD_WR_STEP4() (H_LCD_CS(),H_LCD_A0(),H_LCD_RD(),H_LCD_WR();)
/*
//RA8835的控制参数
#define SYSTEMSET 0x40 //该指令是SID13305软件初始化指令
#define SLEEP_IN 0x53 //空闲状态设置
#define DISP_ON 0x59 //开(59H)/关(58H)显示
#define DISP_OFF 0x58 //开(59H)/关(58H)显示
#define SCROLL 0x44 //设置了显示RAM区中各显示区的起始地址及所占有的显示行数
#define CSRFORM 0x5D //该指令设置了光标的显示方式及其形状
#define CSRDIR_RIGHT 0x4C //令规定了光标地址指针自动移动的方向
#define CSRDIR_LEFT 0x4D //令规定了光标地址指针自动移动的方向
#define CSRDIR_UP 0x4E //令规定了光标地址指针自动移动的方向
#define CSRDIR_DOWN 0x4F //令规定了光标地址指针自动移动的方向
#define OVLAY 0x5B //令规定画面重叠显示的合成方式及显示一、三区的显示属性
#define CGRAMADR 0x5C //设置CGRAM的起始地址SAG
#define HDOTSCR 0x5A //设置以点为单位的显示画面水平移动量,相当于一个字节内的卷动
#define CSRW 0x46 //令设置了光标地址CSR
#define CSRR 0x47 //读出当前的光标地址值
#define MWRTTE 0x42 //指令允许MPU连续地把显示数据写入显示区内,在使用指令之前要首先设置好光标地址和光标移动方向的参数
#define MREAD 0x43 //将光标地址所确定的单元内的数据送至数据输出缓冲器内供MPU读取
*/
#define SystemSet 0x40
Uchar8 ParaSysTable[8]= {0x30,0x87,0x07,0x27,0x42,0xF0,0x30,0x00}; // {0x30,0x87,0x07,0x28,0x42,0xF0,0x30,0x00};
#define Scroll 0x44
//uchar ParaScrTableA[10]={0x00,0x00,0xF0,0x00,0x40,0xF0,0x00,0xF0,0x00,0x00};
//Uchar8 ParaScrTableA[10]={0x00,0x00,0x80,0xf0,0x01,0x80,0x00,0x00,0x00,0x00};
Uchar8 ParaScrTableA[10] = {0x00,0x00,0xF0,0x00,0x40,0xF0,0x00,0x80,0x00,0x00};
#define DispOn 0x59
#define DispOnP1 0x56 // 0x06
#define Ovlay 0x5B
#define OvlayP1 0x01//0x01 //原来是00,改成01,现为异或显示方式 ,又改为或了,00
#define HdotScr 0x5A
#define HdotScrP1 0x00
#define CsrForm 0x5D
#define CsrFormP1 0x07
#define CsrFormP2 0x87
#define CgramAdr 0x5C
#define CgramAdrP1 0x00
#define CgramAdrP2 0x80
#define CsrDirR 0x4C
#define CsrW 0x46
#define mWrite 0x42
#define MREAD 0x43 //将光标地址所确定的单元内的数据送至数据输出缓冲器内供MPU读取
//function
void InputData (Uchar8 dat);
//void LCD_Clear(void);
void WriteCommand(Uchar8 CMD);
void WriteData(Uchar8 DATA);
void Delay1ms(Uint32 count);
//void LCD_Initial(void) ;
void LCD_Init(void); //LCD初始化
void LCD_Clear(void); //清屏
void delay50ns(Uint32 count); //延时程序count * 50ns
void delay1us(Uint32 count); //延时count * 1us
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -