📄 lcd.h
字号:
#ifndef __LCD_H
#define __LCD_H
#include "config.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位整型变量 */
typedef float fp32; /* 单精度浮点数(32位长度) */
typedef double fp64; /* 双精度浮点数(64位长度) */
/********************************************
**** LCD Define ****
*********************************************/
#define LCD_WR 0x01 << 17 //P0.17
#define LCD_RD 0x01 << 18 //P0.18
#define LCD_CS 0x01 << 11 //P0.11
#define LCD_A0 0x01 << 10 //P0.10 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 LCD245_dir 0x01 << 24;
#define LCD_WR_FOOT 0xffFffff3 //P0.17
#define LCD_RD_FOOT 0xffFfffCF //P0.18
#define LCD_CS_FOOT 0xff3fffff //P0.11
#define LCD_A0_FOOT 0xffcfffff //P0.10 A0=1写指令代码和读数据,A0=0写数据,参数和读忙标志
#define LCD_WR_RD LCD_WR_FOOT & LCD_RD_FOOT //位于PINSEL1
#define LCD_CS_A0 LCD_CS_FOOT & LCD_A0_FOOT //位于PINSEL0
#define LCD_CTRL LCD_WR | LCD_RD | LCD_CS | LCD_A0
#define LCD_FOOT LCD_D0 | LCD_D1 | LCD_D2 | LCD_D3 | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7
#define ROW 0x28; /*同SYSTEM SET中的P6设置,液晶的所显示的行数 用来计算光标地址的*/
/******************************************************************************************************************
* 文 件 名:LCM12864Drive.h
* 功 能:LCM12864图形液晶模块驱动头文件。使用LPC213X/214X的GPIO口模拟总线控制操作。
*
******************************************************************************************************************/
// 定义颜色数据类型(可以是数据结构)*/
#define TCOLOR uint8
// 定义LCM像素数宏
#define GUI_LCM_XMAX 320 // 定义液晶x轴的像素数
#define GUI_LCM_YMAX 240 // 定义液晶y轴的像素数
#ifdef LPC2148 //采用快速通道I/0口
#define LCD_RW_STATE() {FIO0SET |= LCD_RD; FIO0CLR = LCD_WR;} // 定义RW控制
#define LCD_RE_STATE() {FIO0SET |= LCD_WR; FIO0CLR = LCD_RD;} // 定义RD控制
#define LCD_CLOSE() {FIO0SET |= LCD_CTRL;} // 定义RD控制
// 定义A0数据线
// 定义D0数据线
#define H_LCD_D0() FIO1SET2 |= LCD_D0
#define L_LCD_D0() FIO1CLR2 = LCD_D0
// 定义D1数据线
#define H_LCD_D1() FIO1SET2 |= LCD_D1
#define L_LCD_D1() FIO1CLR2 = LCD_D1
// 定义D2数据线
#define H_LCD_D2() FIO1SET2 |= LCD_D2
#define L_LCD_D2() FIO1CLR2 = LCD_D2
// 定义D3数据线
#define H_LCD_D3() FIO1SET2 |= LCD_D3
#define L_LCD_D3() FIO1CLR2 = LCD_D3
// 定义D4数据线
#define H_LCD_D4() FIO1SET2 |= LCD_D4
#define L_LCD_D4() FIO1CLR2 = LCD_D4
// 定义D5数据线
#define H_LCD_D5() FIO1SET2 |= LCD_D5
#define L_LCD_D5() FIO1CLR2 = LCD_D5
// 定义D6数据线
#define H_LCD_D6() FIO1SET2 |= LCD_D6
#define L_LCD_D6() FIO1CLR2 = LCD_D6
// 定义D7数据线
#define H_LCD_D7() FIO1SET2 |= LCD_D7
#define L_LCD_D7() FIO1CLR2 = LCD_D7
// 定义A0数据线
#define H_LCD_A0() FIO0SET |= LCD_A0
#define L_LCD_A0() FIO0CLR = LCD_A0
// 定义CS数据线
#define H_LCD_CS() FIO0SET |= LCD_CS
#define L_LCD_CS() FIO0CLR = LCD_CS
#else
#define LCD_COM_START() {IO0SET |= (LCD_A0 | LCD_RD); IO0CLR = (LCD_WR | LCD_CS);} // 定义RW控制
#define LCD_COM_END() {IO0SET |= (LCD_CS | LCD_RD);} // 定义RW控制
#define LCD_DATA_START() {IO0SET |= LCD_RD; IO0CLR = (LCD_WR | LCD_CS | LCD_A0);} // 定义RW控制
#define LCD_DATA_END() {IO0SET |= (LCD_CS | LCD_RD);} // 定义RW控制
#define LCD_RE_BUZY_START() {IO0SET |= LCD_WR; IO0CLR = (LCD_RD | LCD_CS | LCD_A0);} // 定义RW控制
#define LCD_RE_DATA_START() {IO0SET |= (LCD_WR | LCD_A0); IO0CLR = (LCD_RD | LCD_CS);} // 定义RW控制
// 定义D0数据线
#define H_LCD_D0() IO1SET |= LCD_D0
#define L_LCD_D0() IO1CLR = LCD_D0
// 定义D1数据线
#define H_LCD_D1() IO1SET |= LCD_D1
#define L_LCD_D1() IO1CLR = LCD_D1
// 定义D2数据线
#define H_LCD_D2() IO1SET |= LCD_D2
#define L_LCD_D2() IO1CLR = LCD_D2
// 定义D3数据线
#define H_LCD_D3() IO1SET |= LCD_D3
#define L_LCD_D3() IO1CLR = LCD_D3
// 定义D4数据线
#define H_LCD_D4() IO1SET |= LCD_D4
#define L_LCD_D4() IO1CLR = LCD_D4
// 定义D5数据线
#define H_LCD_D5() IO1SET |= LCD_D5
#define L_LCD_D5() IO1CLR = LCD_D5
// 定义D6数据线
#define H_LCD_D6() IO1SET |= LCD_D6
#define L_LCD_D6() IO1CLR = LCD_D6
// 定义D7数据线
#define H_LCD_D7() IO1SET |= LCD_D7
#define L_LCD_D7() IO1CLR = LCD_D7
// 定义A0数据线
#define H_LCD_A0() IO0SET |= LCD_A0
#define L_LCD_A0() IO0CLR = LCD_A0
// 定义CS数据线
#define H_LCD_CS() IO0SET |= LCD_CS
#define L_LCD_CS() IO0CLR = LCD_CS
// 定义WR数据线
#define H_LCD_WR() IO0SET |= LCD_WR
#define L_LCD_WR() IO0CLR = LCD_WR
// 定义RE数据线 LCD_E
#define H_LCD_RE() IO0SET |= LCD_RD
#define L_LCD_RE() IO0CLR = LCD_RD
#endif
typedef struct{ //时间的结构体
Ushort16 YE;
Uchar8 MO;
Uchar8 DD;
Uchar8 HH;
Uchar8 MI;
Uchar8 SS;
}Str_Date;
//定义ms320240操作的命令字
#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 OYLAY 0x5B //令规定画面重叠显示的合成方式及显示一、三区的显示属性
#define CGRAMADR 0x5C //设置CGRAM的起始地址SAG
#define HDOTSET 0x5A //设置以点为单位的显示画面水平移动量,相当于一个字节内的卷动
#define CSRW 0x46 //令设置了光标地址CSR
#define CSRR 0x47 //读出当前的光标地址值
#define MWRTTE 0x42 //指令允许MPU连续地把显示数据写入显示区内,在使用指令之前要首先设置好光标地址和光标移动方向的参数
#define MREAD 0x43 //将光标地址所确定的单元内的数据送至数据输出缓冲器内供MPU读取
#define Buzy_addr_x 0x11 //显示忙图标的位置(居中)
#define Buzy_addr_y 0x60 //显示忙图标的位置(居中)
#define Time16_addr_x 0x02 //显示:"时间" 的位置
#define Time16_addr_y 218 //
#define Time8_addr_x 0x02 //显示:"时间" 的位置
#define Time8_addr_y 231 //
#define Tem16_addr_x 0x1e //显示:"温度" 的位置
#define Tem16_addr_y 218 //
#define Tem8_addr_x 0x1e //显示:"温度" 的位置
#define Tem8_addr_y 231 //
extern const unsigned char ASCII_NUM_8[19][8]; //显示阿拉伯数字
extern Uchar8 H_Channels; //三通道与单通道选择, 0表示单通道,1表示多通道
extern Uchar8 H_tap_num; //高压的分接数
extern Uchar8 L_tap_num; //高压的分接数
extern void LCD_WriteCMD(Uchar8 command);
extern void LCD_WriteData(Uchar8 dat);
extern void LCD_Init(void);
extern void LCD_CLR(void);
extern void LCD_Busy(void);
extern void LCD_Write_CGRAM(void);
//extern void LCD_Write_char(Uchar8 x, Uchar8 y);
extern void LCD_Write_Gui(Ushort16 x, Uchar8 y, Uchar8 code_1);
extern void LCD_Write_Point(Ushort16 x,Ushort16 y);
extern void Display_Chinese(unsigned char fnt[]);
extern void LCD_WR_char16(Uchar8 x, Uchar8 y);
extern void LCD_WR_Singer16_16(Uchar8 x, Uchar8 y, Uchar8 *font);
extern void LCD_WR_String16_16(Uchar8 x, Uchar8 y, Uchar8 num, Uchar8 *font);
extern void LCD_WR_Singer24_24(Uchar8 x, Uchar8 y, Uchar8 *font);
extern void LCD_WR_Singer40_40(Uchar8 x, Uchar8 y, Uchar8 *font);
//extern void LCD_WR_String40_40(Uchar8 x, Uchar8 y, Uchar8 num, Uchar8 *font);
extern void LCD_WAIT_16(Uchar8 x, Uchar8 y);
extern void LCD_WAIT_48(Uchar8 x, Uchar8 y);
extern void LCD_Write_rectangle(Ushort16 x_start,Ushort16 y_start, Ushort16 x_end,Ushort16 y_end); //画矩形框
extern void LCD_Write_Line(Ushort16 x_start, Ushort16 y_start, Ushort16 legth); //画横线
extern void LCD_Write_ROW_Left(Ushort16 x_start, Ushort16 y_start, Ushort16 legth); //画左边的竖线
extern void LCD_Write_ROW_Right(Ushort16 x_start, Ushort16 y_start, Ushort16 legth); //画右边的竖线
extern void WR_Date_16(Uchar8 *Date_time); //显示16*16字符的时间
extern void WR_Date_8(Uchar8 *Date_time); //显示8*8字符的时间
extern void WR_temperature_16(Ushort16 TData); //显示16*16字符的温度
extern void WR_temperature_8(Ushort16 TData); //显示8*8字符的温度
extern void WR_Start_Screen(void); //开机界面
extern void WR_Set_screen(void); //设置界面
extern void WR_Data_screen(void); //显示测试数据界面
#endif // __LPC2103_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -