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

📄 lcd1602.h

📁 包括力天电子MINI 16板的各项程序
💻 H
字号:
#ifndef _lcd1602_h
#define _lcd1602_h
//---------------------------------------------------------
// HD44780 LCD指令集
#define LCD_CLEAR_DISPLAY    0x01    // 清屏

// 光标归位设定,光标移到左上角
#define LCD_Return_Home        0x02
// 设定字符进入模式
// 模式1:光标左移一格,AC值减1,字符全部不动
#define LCE_MODE_SET1        0x04
// 模式2:光标不动,AC值减1,字符全部右移一格
#define LCE_MODE_SET2        0x05
// 模式3:光标右移一格,AC值加1,字符全部不动
#define LCE_MODE_SET3        0x06
// 模式4:光标不动,AC值加1,字符全部右移一格
#define LCE_MODE_SET4        0x07

// 显示器开关
#define LCD_DISPLAY_ON        0x08    // 关显示
// 光标设定模式1
// 光标会出现在地址计数器所指的位置,光标不闪烁
#define LCD_CURSOR_SET1        0x0E
// 光标设定模式2
// 光标会出现在地址计数器所指的位置,光标闪烁
#define LCD_CURSOR_SET2        0x0F
// 光标会出现在地址计数器所指的位置,光标不出现
#define LCD_CURSOR_SET3        0x0C

// 光标显示移位
// 光标左移1格,AC值减1
#define LCD_CURSOR_SHOW_SHIFT1    0x10
// 光标右移1格,AC值加1
#define LCD_CURSOR_SHOW_SHIFT2    0x11
// 字符和光标同时左移1格
#define LCD_CURSOR_SHOW_SHIFT3    0x12
// 字符和光标同时右移1格
#define LCD_CURSOR_SHOW_SHIFT4    0x13

// LCD功能设定(按4位数据)
// 单行显示,字体5x7
#define LCD_FUNCTION_SET01        0x20
// 单行显示,字体5x10
#define LCD_FUNCTION_SET02        0x24
// 双行显示,字体5x7
#define LCD_FUNCTION_SET03        0x28
// 双行显示,字体5x10
#define LCD_FUNCTION_SET04        0x2C

// LCD功能设定(按8位数据)
// 单行显示,字体5x7
#define LCD_FUNCTION_SET1        0x30
// 单行显示,字体5x10
#define LCD_FUNCTION_SET2        0x34
// 双行显示,字体5x7
#define LCD_FUNCTION_SET3        0x38
// 双行显示,字体5x10
#define LCD_FUNCTION_SET4        0x3C

//---------------------------------------
// 自定义字型RAM(CG RAM)地址初始
// #define CG_RAM_ADDRESS    0x40
// 数据显示RAM(DD RAM)地址初始
// #define DD_RAM_ADDRESS    0x80
// RAM类型
#define CG_RAM    0x40    // 自定义字型RAM
#define DD_RAM    0x80    // 数据显示RAM


/***************************************************************************************** 
电路连接方式:
数据D0~D7-----PA
RS------------PG0(WR)
RW------------PG1(RD)
EN------------PC7
*****************************************************************************************/
//端口定义
/*
#define LCD_RS_DDR     DDRG
#define LCD_RS_PORT    PORTG
#define LCD_RS_PIN     0
 
#define LCD_RW_DDR     DDRG
#define LCD_RW_PORT    PORTG
#define LCD_RW_PIN     1

#define LCD_EN_DDR     DDRC
#define LCD_EN_PORT    PORTC
#define LCD_EN_PIN     7

#define LCD_DATA_PORT  PORTA
#define LCD_DATA_DDR   DDRA
#define LCD_DATA_PIN   PINA

#define LCD_RS_HIGH()     LCD_RS_PORT |=  _BV(LCD_RS_PIN)       //RS置高电平
#define LCD_RS_LOW()      LCD_RS_PORT &= ~_BV(LCD_RS_PIN)		//RS置低电平

#define LCD_RW_HIGH()     LCD_RW_PORT |=  _BV(LCD_RW_PIN)       //RW置高电平
#define LCD_RW_LOW()      LCD_RW_PORT &= ~_BV(LCD_RW_PIN)		//RW置低电平

#define LCD_EN_HIGH()     LCD_EN_PORT |=  _BV(LCD_EN_PIN)       //EN置高电平
#define LCD_EN_LOW()      LCD_EN_PORT &= ~_BV(LCD_EN_PIN)		//EN置低电平
*/


#define LCD_RS_DDR     DDRA
#define LCD_RS_PORT    PORTA
#define LCD_RS_PIN     4
 
#define LCD_RW_DDR     DDRA
#define LCD_RW_PORT    PORTA
#define LCD_RW_PIN     5

#define LCD_EN_DDR     DDRA
#define LCD_EN_PORT    PORTA
#define LCD_EN_PIN     6

#define LCD_DATA_PORT  PORTB
#define LCD_DATA_DDR   DDRB
#define LCD_DATA_PIN   PINB

#define LCD_RS_HIGH()     LCD_RS_PORT |=  _BV(LCD_RS_PIN)       //RS置高电平
#define LCD_RS_LOW()      LCD_RS_PORT &= ~_BV(LCD_RS_PIN)		//RS置低电平

#define LCD_RW_HIGH()     LCD_RW_PORT |=  _BV(LCD_RW_PIN)       //RW置高电平
#define LCD_RW_LOW()      LCD_RW_PORT &= ~_BV(LCD_RW_PIN)		//RW置低电平

#define LCD_EN_HIGH()     LCD_EN_PORT |=  _BV(LCD_EN_PIN)       //EN置高电平
#define LCD_EN_LOW()      LCD_EN_PORT &= ~_BV(LCD_EN_PIN)		//EN置低电平



//unsigned char X=0,Y=0;//全局变量,用于设置显示坐标

void LCD_Init(void);//液晶初始化函数
void LCD_set_xy( unsigned char xx, unsigned char yy );//设置显示的位置
void LCD_write_char(unsigned char LCD_Command,unsigned char LCD_Data);
void DisplayListChar(unsigned char XStart, unsigned char YStart,char *pData);//写入LCD命令或数据函数,时序参照LCD1602的Datasheet
int LCD_putc(unsigned char c);//标准输入流,写一个字节子函数
#endif	

⌨️ 快捷键说明

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