#include "main.h"
#ifndef __LCD1602_H__
#define __LCD1602_H__


#define	LCD1602_SET_RS()		P3LR4=1
#define	LCD1602_CLR_RS()		P3LR4=0
#define	LCD1602_SET_RW()		P3LR5=1
#define	LCD1602_CLR_RW()		P3LR5=0
#define	LCD1602_SET_E()			P1LR5=1
#define	LCD1602_CLR_E()			P1LR5=0

#define	LCD1602_rBus()			0
#define LCD1602_wBus(data_out)		Write_cd4094(data_out)



/*-------------------1602液晶命令定义-------------------*/

/*初始化命令*/
#define DISP_CLR			0b00000001	/*清显示,光标复位到第一行首(地址00H）*/
#define CUR_HOME			0b00000010	/*光标复位，光标返回到第一行首*/

/*光标和显示模式设置*/
#define CUR_AUTO_R			0b00000110	/*设置光标在文字插入后自动右移*/
#define CUR_AUTO_L			0b00000100	/*设置光标在文字插入后自动左移*/
#define DISP_AUTO_R			0b00000111 	/*设置显示在文字插入后自动右移*/
#define DISP_AUTO_L			0x00000101 	/*设置显示在文字插入后自动左移*/

/*显示开关控制*/
#define DISP_ON				0b00001111	/*显示开*/
#define DISP_OFF			0b00001011	/*显示关*/
#define CUR_ON				0b00001111	/*光标开*/
#define CUR_OFF				0b00001101	/*光标关*/
#define BLINK_ON			0b00001111	/*光标闪烁开*/
#define BLINK_OFF			0b00001110	/*光标闪烁关*/

/*光标或显示移位*/
#define CUR_SHIFT_L			0b00010000	/*光标左移*/
#define CUR_SHIFT_R			0b00010100	/*光标右移*/
#define DISP_SHIFT_L		0b00011000	/*显示左移*/
#define DISP_SHIFT_R		0b00011100	/*显示右移*/


/*工作模式设置*/
#define LCD_MODE_STD		0x38		/*1602标准工作模式：8位数据传送，2行显示，字符点阵5*7*/


/*字符发生器RAM地址设置*/
#define SET_ADDR_CGRAM		0x40	/*设置CGRAM地址*/

/*数据存储器地址设置*/
#define SET_ADDR_DDRAM		0x80	/*设置DDRAM地址*/






void LCD1602_Init(void);
void LCD1602_Clear(void);
void LCD1602_setxy(unsigned char x,unsigned char y);
void LCD1602_PrintString(const char *s);
void LCD1602_PrintInteger(long data_out);

void LCD1602_PrintHEX(long data_out);
//==================================
void LCD1602_PrintHEX_TWO(long data_out);



#endif
