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

📄 lcd.h

📁 1、ARM7芯片LPC2138驱动ym320240的点阵液晶. 2、320240的液晶驱动.
💻 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 + -