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

📄 lcd.h

📁 T6963C12864液晶模块驱动程序+液晶显示+键盘状态机处理程序。
💻 H
字号:
//lcd.h
//Liweihua
//2005.04.12
#define XBYTE ((unsigned char volatile xdata *) 0)
/* T6963C 端口定义 */
#define LCM_CMD		XBYTE[0x7EFF]
#define LCM_DAT		XBYTE[0x7EFE]

/* T6963C 命令定义 */
#define CMD_CUR_POS 0x21 			/* 光标位置设置 */
#define CMD_CGR_POS 0x22 		/* CGRAM偏置地址设置 */
#define CMD_ADD_POS 0x24 			/*  地址指针位置 */
#define CMD_TXT_STP 0x40 		/* 文本区首址 */
#define CMD_TXT_WID 0x41 			/* 文本区宽度 */
#define CMD_GRH_STP 0x42 		/* 图形区首址 */
#define CMD_GRH_WID 0x43 		/* 图形区宽度 */
#define CMD_MOD_OR  0x80 		/* 显示方式:逻辑"或" */
#define CMD_MOD_XOR 0x81 		/* 显示方式:逻辑"异或" */
#define CMD_MOD_AND 0x82     	/* 显示方式:逻辑"与" */
#define CMD_MOD_TCH 0x83 		/* 显示方式:文本特征 */
#define CMD_DIS_SW  0x90 		/* 显示开关: */
                      					/* D0=1/0:光标闪烁启用/禁用; */
                        					/* D1=1/0:光标显示启用/禁用; */
 #define CMD_DIS_TXT 0x94            /* D2=1/0:文本显示启用/禁用; */
                        					/* D3=1/0:图形显示启用/禁用; */
 #define CMD_DIS_GRA	0x98
#define CMD_CUR_SHP 0xA0 		/* 光标形状选择:0xA0-0xA7 表示光标占的行数 */
#define CMD_AUT_WR  0xB0 		/* 自动写设置 */
#define CMD_AUT_RD  0xB1 		/* 自动读设置 */
#define CMD_AUTRD_OVR  0xB2 		/* 自动读/写结束 */
#define CMD_AUTWR_OVR 0xB3
#define CMD_INC_WR  0xC0 		/* 数据一次写,地址加1 */
#define CMD_INC_RD  0xC1 		/* 数据一次读,地址加1 */
#define CMD_DEC_WR  0xC2 		/* 数据一次写,地址减1 */
#define CMD_DEC_RD  0xC3 		/* 数据一次读,地址减1 */
#define CMD_NOC_WR  0xC4 		/* 数据一次写,地址不变 */
#define CMD_NOC_RD  0xC5 		/* 数据一次读,地址不变 */
#define CMD_SCN_RD  0xE0 		/* 屏读 */
#define CMD_SCN_CP  0xE8 		/* 屏拷贝 */
#define CMD_BIT_OP  0xF0 		/* 位操作 */

/*LCD消息*/
#define SCR_EV_DISP_OVER							0x00//LCD闲置
#define SCR_EV_DISP_SYSTEM_MSG					0x01//初始化完成后显示系统参数
#define SCR_EV_DISP_TIME							0x02//显示时间
/////////////////////////////////////
#define SCR_EV_WIN_JAM								0x03//显示提示信息,需延时显示
#define SCR_EV_WIN_ACCIDENT_ALARM				0x04//显示提示信息,需延时显示
#define SCR_EV_WIN_SETTING							0x05//显示设置菜单选项
#define SCR_EV_WIN_PHONEBOOK						0x06//显示电话本条目
#define SCR_EV_WIN_HISMSG_ENTRY					0x07//显示历史信息入口
/////////////////////////////////////
#define SCR_EV_SELECT_OPERATION 					0x08//屏幕最后一行显示操作按钮
#define SCR_EV_CANCEL_OPERATION					0x09//擦除操作按钮
////////////////////////////////////////////
#define SCR_EV_WIN_SET_DEVICE_ID					0x0A//设置设备编号
#define SCR_EV_WIN_SET_NUMBER						0x0B//显示输入电话号码的窗口
#define SCR_EV_WIN_SET_IP							0x0C//显示输入IP地址的窗口
#define SCR_EV_WIN_SET_PORT						0x0D//显示输入端口号的窗口
#define SCR_EV_QUESTION1							0x0E//询问是否要替换某一个号码
#define SCR_EV_WIN_SET_SN							0x0F//只有用户选择了替换号码时才发生
#define SCR_EV_DISP_DEVICE_ID						0x10
#define SCR_EV_DISP_NUMBER							0x11//显示输入框中的电话号码
#define SCR_EV_DISP_IP								0x12//显示输入框中的IP地址
#define SCR_EV_DISP_PORT							0x13//显示输入框中的端口号
#define SCR_EV_DISP_SN								0x14//显示输入框中的电话号码编号
/////////////////////////////////////
#define SCR_EV_DIALING								0x15//屏幕上方提示正在拨号
#define SCR_EV_TALKING								0x16//屏幕上方提示正在通话
//需要延时显示的消息
#define SCR_EV_HANGUP								0x17//屏幕上方提示结束通话
#define SCR_EV_PEER_HANGUP						0x18//屏幕上方提示对方挂断
#define SCR_EV_PEER_TOUT							0x19//屏幕上方提示对方超时
#define SCR_EV_ADD_OK								0x1A//输入框后面提示加入电话号码成功
#define SCR_EV_REPLACE_OK							0x1B//输入框后面提示替换电话号码成功
#define SCR_EV_MODIFY_OK							0x1C//输入框后面提示修改电话号码成功
#define SCR_EV_DEL_OK								0x1D//输入框后面提示删除电话号码成功
#define SCR_EV_DEL_ALL_OK							0x1E
#define SCR_EV_SET_OK								0x1F//提示设置成功(ip/port)
#define SCR_EV_INPUT_ERR							0x20
//////////////////////////////////////
//需要闪烁显示的消息
#define 	SCR_EV_FLASH_RTMSG						0x21//电话打入,闪烁的电话图标
#define 	SCR_EV_FLASH_CALL							0x22//收到实时信息,闪烁的信息图标
/////////////////////////////////////
//新信息阅读超时
//#define SCR_EV_TOUT_NEW_MSG						0x24//屏幕上方中间提示x条未读
/////////////////////////////////////
#define SCR_EV_DISP_RTMSG							0x25//显示实时信息内容
#define SCR_EV_DISP_HISTORY_MSG					0x26//显示历史信息内容
#define SCR_EV_QUESTION2							0x27//询问是否阅读下一条信息
/////////////////////////////////////				
//系统状态参数等的查询和显示	
#define SCR_EV_GPS_QUERY     						0x28//根据GPS信号作显示
#define SCR_EV_GPRS_SIGNAL_VALUE					0x29//显示GPRS信号强度
#define SCR_EV_GPRS_ONLINE_MODE					0x2A//显示在线状态(数据/命令)
#define SCR_EV_VEHICLE_LOGINOK						0x2B//显示车辆登陆成功图标
#define SCR_EV_ALARMING							0x2C//显示正在报警
#define SCR_EV_ALARM_OK							0x2D//显示报警成功,需要延时显示
#define SCR_EV_CLEAR_HINT_MSG						0x2E//擦除屏幕上方提示信息
////////////////////////////////////////////////////
//与主机通信错误
#define SCR_EV_CHECK_CABLE							0x2F//显示电缆错误
#define RECV_RTMSG_MAXNUM				8
#define NEW			0xFF
#define OLD			0x00
#define RTMSG_MAXLEN					300//XXXX,xx:xx:xx:xx,xxxxxxxxx...
#define OPERATOR_ID_LEN					6
#define OPERATION_ID_LEN					4
#define DISPATCH_ACK_TOUT					20
typedef struct
{
	unsigned char type;
	unsigned char state;
	unsigned char buf[RTMSG_MAXLEN];
	unsigned char len;
	unsigned char operator_id[OPERATOR_ID_LEN];
	unsigned char operation_id[OPERATION_ID_LEN];
	unsigned char msg_ack_flag;
	unsigned char dispatch_ack_timerh;
	//新增
////////////////////////////////////////////
	unsigned char *addr;//对应的flash地址
///////////////////////////////////////////
}RTMSG;

#define HISTORY_MSG_CONTENT_MAX_LEN		248
typedef struct
{
	unsigned char type;
	unsigned char year;
	unsigned char month;
	unsigned char day;
	unsigned char hour;
	unsigned char minute;
	unsigned char second;
	unsigned char msg_buf[HISTORY_MSG_CONTENT_MAX_LEN];
	unsigned char state;
	unsigned char len;//length of the content in msg_buf
}HISTORY_MSG;

#define FLASH_DISP_TOUT				20//闪烁超过20秒不再闪烁
#define FLASH_DISP_INTERVAL			33//闪烁间隔为330毫秒
//#define FLASH_DISP_INTERVAL2			25//闪烁间隔为250毫秒
#define DELAY_DISP_TOUT				2//延时2秒
#define ARROW_ROTATE_TOUT				1 
#define SYSINIT_TOUT					21
#define HOST_ACK_TOUT					15
typedef struct
{
	//LCD显示消息
	unsigned char event_notice;
	//标志位,状态位
	unsigned char vehicle_logined;
	unsigned char gps_data_validate_flag;
	unsigned char first;
	unsigned char gprs_online_state;
	unsigned char arrow_no;
//	unsigned char speed;
	unsigned char gprs_signal_value;
	unsigned char err_msg_on;
	unsigned char check_cable;
	unsigned char flash_disp_no;
	unsigned char flash_count1;//rtmsg
	unsigned char flash_count2;//call in
	unsigned char flash_count3;//alarm
	unsigned char satelite_rotate_count;
	unsigned char delay_disp_no;
	unsigned char ignored_msg_on;
	unsigned char ignored_call_on;
	//实时信息显示缓存偏移量
	unsigned int offset_rtmsg;
	//历史信息显示缓存偏移量
	unsigned int offset_hismsg;
	//存放读出的一条历史信息
	HISTORY_MSG tmp_rdbuf;
//	unsigned char buf_read[256];
	//指向当前处理的实时信息
	RTMSG *rtmsg_p;
	//指向当前回复的调度信息
	RTMSG *ackmsg_p;
	//Timer	
	unsigned char flash_tout_timerh;
	unsigned char flash_interval_timerh1;
	unsigned char flash_interval_timerh2;
	unsigned char flash_interval_timerh3;
	unsigned char delay_disp_timerh;
	unsigned char satelite_rotate_timerh;
	unsigned char sysinit_timerh;
	unsigned char wait_ack_timerh;
	//for drow a pixel
	unsigned char lcd_dot[128][16];
}LCDCB;

typedef struct
{
	unsigned char* cc_mb;
	unsigned char cc_sum;
	unsigned char cc_x;
	unsigned char cc_y;
}MENU_ITEM;

typedef struct 
{
	MENU_ITEM    header;
	unsigned char menuitem_sum;
	MENU_ITEM    menu_item[6];
}WINDOW;

unsigned char ST01(void) ;
unsigned char ST3(void);
unsigned char WrDblParaCmd(unsigned char uCmd,unsigned char uPar1,unsigned char uPar2) ;
unsigned char WrSglParaCmd(unsigned char uCmd,unsigned char uPar1) ;
unsigned char WrNonParaCmd(unsigned char uCmd) ;
unsigned char WrDat(char uData) ;
void SetPos(unsigned char urow,unsigned char ucol) ;
void LcdInit(void) ;
void ClearAll(void);
void ClearMenuRegion(void);
void ClearInputRegion(unsigned char y);
void ClearHintMsg(void);
void ClearButton(void);
void ClearMenuRegion(void);
void ClearIcon(unsigned char x,unsigned char y);
void GetHZDot(unsigned char hh,unsigned char ll);//reentrant;
void GetAsciiDot(unsigned char ascii);
void DispChn(unsigned char type,unsigned char cc_x,unsigned char cc_y);
void DispAscii(type,unsigned char x,unsigned char y);
void DispWindow(WINDOW* win_p);
void DispMenuItem(unsigned char type,unsigned char chn_sum,unsigned char *hzmb,unsigned char x,unsigned char y);//reentrant;
void DispIcon(unsigned char *icon_dot,unsigned char dot_num,unsigned char x,unsigned char y);
void DispIcon2(unsigned char *icon_dot,unsigned char x,unsigned char y);
//unsigned int TextRecombine (unsigned char* str1,unsigned char* str2,unsigned int len);
void DispTxt(unsigned char txt_len,unsigned char *hzmb,unsigned char cc_x,unsigned char cc_y);
void DispDateTime(void);
void DispSysMsg(void);
void SetPixel(unsigned char point_x,unsigned char point_y);
void PlotCirclePoint(unsigned char x,unsigned char y,unsigned char xx,unsigned char yy)  ;
void Circle (unsigned char xc,unsigned char yc,unsigned char radius);
void InitPoll(void);
void LcdPoll(void);

⌨️ 快捷键说明

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