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

📄 lcd_12864.h

📁 ATMEGA16单片机控制LCD1264程序。
💻 H
字号:
#ifndef _LCD_12864_H__
#define _LCD_12864_H__
#include <avr\io.h>

//LCD命令字(ST7920)
//RE=0:基本指令
#define LCD_CLS			0x01	//清除显示
#define LCD_HOME		0x02	//地址归位
#define LCD_POINT		0x04	//进入点设定
	#define b_I_D	0x02	//移动方向
	#define b_S		0x01	//显示移位
#define LCD_VISIBLE		0x08	//显示状态开/关
	#define b_D		0x04	//1:整体显示ON;0:整体显示OFF
	#define b_C		0x02	//1:游标ON;0:游标OFF
	#define b_B		0x01	//1:游标位置反白允许;0:游标位置不反白
#define LCD_SHIFT		0x10	//游标或显示移位控制
	#define b_S_C	0x80	//1:画面平移;0:光标平移
	#define b_R_L	0x40	//1:右移;0:左移
#define LCD_FUNCTION	0x20	//功能设定
	#define b_DL	0x10	//1:8位数据;0:4位数据
	#define b_RE	0x04	//1:扩充指令操作;0:基本指令操作
#define LCD_CGRAM		0x40	//设定CGRAM地址
#define LCD_DDRAM		0x80	//设定DDRAM地址(显示地址)
								//第一行:80H-87H
								//第二行:90H-97H
//RE=1:扩充指令
#define LCD_STBY		0x01	//侍命模式
#define LCD_ROLL		0x02	//卷动地址开关开启
	#define b_SR	0x01	//1:允许输入垂直卷动地址;0:允许输入IRAM和CGRAM地址
#define LCD_INVERSE		0x04	//反白选择
	#define b_R1	0x02	//选择2行中的任一行作反白显示,并可决定反白与否。
	#define b_R2	0x01	//初始值R1R0=00,第一次设定为反白显示,再次设定变回正常
#define LCD_SLEEP		0x08	//睡眠模式
	#define b_SL	0x04	//0:进入睡眠模式;1:脱离睡眠模式
#define LCD_EFUNCTION	0x20	//扩充功能设定
	#define b_CL	0x10	//1:8位数据;0:4位数据
	#define b_RE	0x04	//1:扩充指令操作;0:基本指令操作
	#define b_G		0x02	//1:绘图开关ON;0:绘图开关OFF
#define LCD_DRAW		0x80	//设定绘图RAM
								//先设定垂直(列)地址AC5AC4…AC0
								//再设定水平(行)地址AC3AC2AC1AC0
								//将以上16位地址连续写入即可

/*********LCD读写指令***********/
#define LCD_WR_CMD	0xF8	//写指令
#define LCD_WR_DAT	0xFA	//写数据
#define LCD_RD_STA	0xFC	//读状态
#define LCD_RD_DAT	0xFE	//读数据

/*********枚举类型**********/
//LCD忙
enum LDCifBusy {
	LCD_OK = 0,
	LCD_BUSY = 1
};

//图片显示的开关
enum DisplayOnOff {
	Off = 0,
	On
};
//自定义字型选择
enum Char_sel {
	Char_1 = 0x00,
	Char_2 = 0x02,
	Char_3 = 0x04,
	Char_4 = 0x06
};

/********************公共函数********************/
//初始化LCD
void Init_LCD12864(void);
//LCD清屏
void LCD_clear(void);
//设置字符显示坐标
void LCD_set_XY(unsigned char posx, unsigned char posy);
//在指定坐标输出字符串
void LCD_puts(unsigned char posx, unsigned char posy, char *s);

//输出一个半角字符
//void LCD_put_char(unsigned char c);
//输出十六进制数
//void LCD_put_hex(unsigned char num);
//void LCD_puts_P(unsigned char posx, unsigned char posy, const char *s);

/************图片操作函数*************/
//选择显示图片
void LCD_Pic_Sel(unsigned char index);
//图片显示开关
void LCD_Pic_Show(enum DisplayOnOff onoff);
/********自定义字型操作函数***********/
//在指定坐标显示自定义字型
void LCD_Char_Show(unsigned char posx, unsigned char posy, enum Char_sel index);

/*******************内部函数*******************/
//往LCD写一个字节数据
void LCD12864_write_byte(unsigned char cmd, unsigned char Data);
//调入整张图片
void Lcd_GDrw(const char *ptr);
//调入自定义字型数据
void LCD_Char_Gen(const char *ptr, unsigned char num);

//void LCD_write_chinese_string(unsigned char X, unsigned char Y,
//						unsigned char ch_with,unsigned char num,
//						unsigned char line,unsigned char row);
//void LCD_move_chinese_string(unsigned char X, unsigned char Y, unsigned char T);                 

//void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,const unsigned char *map,
//						unsigned char Pix_x,unsigned char Pix_y);

#endif

⌨️ 快捷键说明

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