STM32F4_LCD12864串行并行驱动程序合集(7)

2019-03-27 20:23

#define MPU_8bit

(Function_SetBasic | (1<<4)) (Function_SetBasic | (0<<4))

//0x30--8bit //0x20--4bit

MPU接口

#define MPU_4bit MPU接口

#define Instruct_Basic4 MPU接口,基本指令集 #define Instruct_Basic8

(MPU_4bit | (0<<2)) (MPU_8bit | (0<<2))

//0x20--4bit //0x30--8bit

MPU接口,基本指令集

#define Instruct_Expansion4 MPU接口,扩充指令集 #define Instruct_Expansion8

(MPU_4bit | (1<<2)) (MPU_8bit | (1<<2))

//0x24--4bit //0x34--8bit

MPU接口,扩充指令集

//设定CGRAM地址

// b7 b6 b5 b4 b3 b2 b1 b0 // 0 1 A5 A4 A3 A2 A1 A0 #define CGRAM_Set 0x40 //基数 //设定CGRAM地址到地址计数器(AC),AC范围为0x00 ~ 0x3f,需确认扩充指令中SR = 0(卷动位置或RAM地址选择)

//设定DDRAM地址

// b7 b6 b5 b4 b3 b2 b1 b0 // 1 0 A5 A4 A3 A2 A1 A0

#define DDRAM_Set 0x80 //基数 //设定CGRAM地址到地址计数器(AC)

//写显示数据到RAM(RS = 1 RW = 0) // b7 b6 b5 b4 b3 b2 b1 b0 // D7 D6 D5 D4 D3 D2 D1 D0

//写入数据后会使AC改变,每个RAM(CGRAM、DDRAM、IRAM)地址都可以连续写入2字节的显示数据,

//当写入第二个字节时,地址计数器(AC)的值自动加1

//读取显示数据到RAM(RS = 1 RW = 1) // b7 b6 b5 b4 b3 b2 b1 b0 // D7 D6 D5 D4 D3 D2 D1 D0

//读取数据后会使AC改变,设定RAM(CGRAM、DDRAM、IRAM)地址后,先要Dummy read一次后才能读取到正确的显示数据,

//第二次读取不需要Dummy read,除非重新设定了RAM地址

/***********扩充指令***********/

//卷动位置或RAM地址选择

// b7 b6 b5 b4 b3 b2 b1 b0 // 0 0 0 0 0 0 1 SR #define Write_Roll_Address_Allow #define Write_IRAM_Address_Allow 定CGRAM地址(基本指令)

//反白显示

// b7 b6 b5 b4 b3 b2 b1 b0 // 0 0 0 0 0 1 0 R0 #define Display_White_One #define Display_White_Two

0x03 //允许输入垂直卷动地址 0x02 //允许输入IRAM地址(扩充指令),及允许设

0x04 0x05 //第一行反白显示 //第二行反白显示

//睡眠模式

// b7 b6 b5 b4 b3 b2 b1 b0 // 0 0 0 0 1 SL 0 0 #define LCD_Sleep_Open #define LCD_Sleep_Close

//扩充功能设定

// b7 b6 b5 b4 b3 b2 b1 b0 // 0 0 1 DL X RE G X #define MPU_4bit_Basic_Draw_Open 接口,基本指令,绘图开

#define MPU_4bit_Basic_Draw_Close 接口,基本指令,绘图关

#define MPU_8bit_Basic_Draw_Open 接口,基本指令,绘图开

#define MPU_8bit_Basic_Draw_Close

(0x08 | (1<<2)) (0x08 | (0<<2))

//进入睡眠模式 //退出睡眠模式

(Instruct_Basic4 | (1<<1)) //0x22--4bit MPU

(Instruct_Basic4 | (0<<1)) //0x20--4bit MPU

(Instruct_Basic8 | (1<<1)) //0x32--8bit MPU(Instruct_Basic8 | (0<<1))

//0x30--8bit MPU

接口,基本指令,绘图关

#define MPU_8bit_Expansion_Draw_Open (Instruct_Expansion8 | (1<<1)) 接口,扩充指令,绘图开

#define MPU_8bit_Expansion_Draw_Close (Instruct_Expansion8 | (0<<1))

//0x36--8bit MPU//0x34--8bit MPU

接口,扩充指令,绘图关

#define MPU_4bit_Expansion_Draw_Open (Instruct_Expansion4 | (1<<1)) //0x26--4bit MPU接口,扩充指令,绘图开

#define MPU_4bit_Expansion_Draw_Close (Instruct_Expansion4 | (0<<1)) //0x24--4bit MPU接口,扩充指令,绘图关

//设定IRAM地址或卷动地址

// b7 b6 b5 b4 b3 b2 b1 b0

// 0 1 A5 A4 A3 A2 A1 A0

#define IRAM_Set 0x40 //基数

//SR = 1,A5 ~ A0为垂直卷动地址,SR = 0,A3 ~ A0为IRAM地址

//设定绘图RAM地址

// b7 b6 b5 b4 b3 b2 b1 b0

// 1 0 0 0 A3 A2 A1 A0 --->水平地址范围:A3 ~ A0 // 1 A6 A5 A4 A3 A2 A1 A0 --->垂直地址范围:A6 ~ A0 #define Draw_RAMSet 0x80 //基数 //设定GDRAM地址到地址计数器(AC),先设置垂直位置再设置水平位置(连续写入2字节数据来完成垂直与水平坐标的设置)。

extern u8 LCD12864_LockedFlag;

extern u8 CGROM_Code[]; extern u8 const ClearCGRAM[]; extern u8 const MoonIcon[]; extern u8 const SunIcon[]; extern u8 const AntennaIcon[]; extern u8 const WIFIConnection[]; extern u8 const Battery_100Percent[]; extern u8 const Battery_80Percent[]; extern u8 const Battery_60Percent[]; extern u8 const Battery_40Percent[]; extern u8 const Battery_20Percent[];

/********************************************************** 外部功能函数

**********************************************************/

void LCD_Init(void); //LCD YB12864ZB初始化

void LCD_Clear(void); //LCD YB12864ZB清屏

void LCD_Write_CGRAM_ONE(const u8 *data_code,u8 add_h,u8 add_l);//Modify the character content of the first CGRAM space

void Display_String(u8 x,u8 y,u8 *str,u8 len); //LCD显示字符串

void Display_String1(u8 x,u8 y,u8 *str,u8 starsum,u8 len); //LCD显示字符串

void ClearGDRAM(void);

void DisplayExposureTime(u16 ExpTime,u8 InversePos);

void DisplayCollectNum(u16 ColNum,u8 InversePos);

void Display_CGRAM(u8 x,u8 y,u8 add_h,u8 add_l); //显示一个CGRAM内容

void Display_GDRAM(u8 x,u8 y,u8 width,u8 height,const u8 *bmp,u8 dis_mode); //LCD写入GDRAM绘图

void LCD_BLK_Manage(__IO uint16_t ADC_Result);

#endif

/*********************************************************/ /*

1、指令表1(RE = 0,基本指令集)

___________________________________________________________________________ | | 控制信号 | 控制代码 | 执行 | | |____________|_______________________________________| | | 指令名称 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 时间 | HEX |_______________|____|_______|____|____|____|____|____|____|____|____|______| | 清除显示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1.6ms| 0x01

|_______________|____|_______|____|____|____|____|____|____|____|____|______| | 地址归0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | X | 72us | 0x02 //不改变DDRAM内容

|_______________|____|_______|____|____|____|____|____|____|____|____|______| | 进入设定点 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D| S | 72us | 0x06 游标右移 0x07 画面整体左移

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 0x04 游标左移 0x05 画面整体右移

| 显示开关设置 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | S | 72us | D = 1; 整体显示开 D = 0; 整体显示关 // 不改变DDRAM内容

|_______________|____|_______|____|____|____|____|____|____|____|____|______| C = 1; 游标显示开 C = 0; 游标显示关 S = 1; 游标位置显示反白 S = 0; 正常显示

| 移位控制 | 0 | 0 | 0 | 0 | 0 | 1 | S/C| R/L| X | X | 72us | 0x10 游标向左移动 AC = AC - 1 0x14 游标向右移动 AC = AC + 1

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 0x18 显示向左移动 AC = AC 0x1c 显示向右移动 AC = AC

| 功能设定 | 0 | 0 | 0 | 0 | 1 | DL | X |0/RE| X | X | 72us | 0x30 8bit接口,基本指令 0x34 8bit接口,扩充指令

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 0x20 4bit接口,基本指令 0x24 4bit接口,扩充指令

| 设定CGRAM地址 | 0 | 0 | 0 | 1 | A5 | A4 | A3 | A2 | A1 | A0 | 72us |

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 设定CGRAM地址到地址计数器(AC),AC范围0x00 ~ 0x3f,需确认扩充指令中SR = 0 | 设定DDRAM地址 | 0 | 0 | 1 | 0 | A5 | A4 | A3 | A2 | A1 | A0 | 72us |

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 设定DDRAM地址到地址计数器(AC),第一行AC范围 0x80 ~ 0x8f 第二行AC范围 0x90 ~ 0x9f

| 读忙标志和地址| 0 | 1 | BF | A6 | A5 | A4 | A3 | A2 | A1 | A0 | 72us |

|_______________|____|_______|____|____|____|____|____|____|____|____|______| BF = 0; //可以接受新数据

| 写显示数据 | 1 | 0 | 显示数据 | 72us | |_______________|____|_______|_______________________________________|______| 每个RAM(CGRAM、DDRAM、IRAM)地址都可以连续写入2个字节,第二个字节时AC自动增加1

| 读显示数据 | 1 | 1 | 显示数据 | 72us | |_______________|____|_______|_______________________________________|______| 设定RAM(CGRAM、DDRAM、IRAM)地址后,先要Dummy read(假读)一次后才能读到正确的显示

数据,第二次读取不需要再Dummy read(假读)一次,除非重新设置了RAM地址

2、指令表2(RE = 1,扩充指令集)

___________________________________________________________________________ | | 控制信号 | 控制代码 | 执行 | | |____________|_______________________________________| | | 指令名称 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 时间 | HEX |_______________|____|_______|____|____|____|____|____|____|____|____|______|

| 待命模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 72us | 0x01 该指令不能改变RAM内容

|_______________|____|_______|____|____|____|____|____|____|____|____|______| | 卷动地址或 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | SR | 72us |

| RAM地址选择 | | | | | | | | | | | | 初始值0x02, 0x03 允许输入垂直卷动地址

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 0x02 允许输入IRAM地址(扩充指令),及允许设定CGRAM地址(基本指令) | 反白显示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | R1 | R0 | 72us |

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 初始值0x04 0x05反白显示

| 睡眠模式 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | SL | X | X | 72us |

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 0x0c 脱离睡眠模式 0x08 进入睡眠模式

| 扩充功能设定 | 0 | 0 | 0 | 0 | 1 | DL | X |1/RE| G | 0 | 72us |

|_______________|____|_______|____|____|____|____|____|____|____|____|______| |设定IRAM地址或 | 0 | 0 | 0 | 1 | A5 | A4 | A3 | A2 | A1 | A0 | 72us |

| 卷动地址 | | | | | | | | | | | | SR = 1; //A5 ~ A0为垂直卷动地址

|_______________|____|_______|____|____|____|____|____|____|____|____|______| SR = 0; //A3 ~ A0为IRAM地址

| | | | | 0 | 0 | 0 | A3 | A2 | A1 | A0 | |

| | | | |____|____|____|____|____|____|____| | 设定GDRAM地址到计数器地址(AC),先设置垂直地址再设置水平地址,

|设定绘图RAM地址| 0 | 0 | 1 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | 72us | (连续写入2个字节数据来完成垂直和水平地址设置)

|_______________|____|_______|____|____|____|____|____|____|____|____|______| 垂直地址范围:AC6 ~ AC0 水平地址范围:AC3 ~ AC0

扩充功能设定: DL = 1; //8bit MPU接口 DL = 0;

RE = 1;

//扩充指令 RE = 0; //绘图显示开 G = 0;

//4bit MPU接口 //基本指令 // 绘图显示关

G = 1; */


STM32F4_LCD12864串行并行驱动程序合集(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:如何挽救出轨的老婆老婆果然没有经受住“七年之痒”

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: