void LCD_direction(uint8_t direction) { lcddev.setxcmd=0x2A; lcddev.setycmd=0x2B; lcddev.wramcmd=0x2C; switch(direction){ case 0: lcddev.width=LCD_W; lcddev.height=LCD_H; LCD_WriteReg(0x36,(1<<3)|(0<<6)|(0<<7));//BGR==1,MY==0,MX==0,MV==0 break; case 1: lcddev.width=LCD_H; lcddev.height=LCD_W; LCD_WriteReg(0x36,(1<<3)|(0<<7)|(1<<6)|(1<<5));//BGR==1,MY==1,MX==0,MV==1 break; case 2: lcddev.width=LCD_W; lcddev.height=LCD_H; LCD_WriteReg(0x36,(1<<3)|(1<<6)|(1<<7));//BGR==1,MY==0,MX==0,MV==0 break; case 3: lcddev.width=LCD_H; lcddev.height=LCD_W; LCD_WriteReg(0x36,(1<<3)|(1<<7)|(1<<5));//BGR==1,MY==1,MX==0,MV==1 break; default:break; } } 逐行注释该程序并说明其功能
时间: 2023-08-24 15:05:25 浏览: 53
/*
* 函数名:LCD_direction
* 功能:设置液晶屏方向
* 参数:direction - 方向参数,0-3分别对应正常、逆时针旋转90°、顺时针旋转180°、逆时针旋转270°
*/
void LCD_direction(uint8_t direction) {
// 设置液晶屏的命令
lcddev.setxcmd = 0x2A; // 设置列地址指令
lcddev.setycmd = 0x2B; // 设置行地址指令
lcddev.wramcmd = 0x2C; // 设置写数据指令
switch (direction) {
// 方向0:正常显示
case 0:
lcddev.width = LCD_W; // 设置屏幕宽度为LCD_W
lcddev.height = LCD_H; // 设置屏幕高度为LCD_H
// 设置液晶屏参数,BGR=1表示使用BGR颜色模式,MY/MX/MV表示是否翻转,此处设置为0表示不翻转
LCD_WriteReg(0x36, (1 << 3) | (0 << 6) | (0 << 7));
break;
// 方向1:逆时针旋转90度
case 1:
lcddev.width = LCD_H; // 设置屏幕宽度为LCD_H
lcddev.height = LCD_W; // 设置屏幕高度为LCD_W
// 设置液晶屏参数,BGR=1表示使用BGR颜色模式,MY/MX/MV表示是否翻转,此处设置为1表示翻转
LCD_WriteReg(0x36, (1 << 3) | (0 << 7) | (1 << 6) | (1 << 5));
break;
// 方向2:顺时针旋转180度
case 2:
lcddev.width = LCD_W; // 设置屏幕宽度为LCD_W
lcddev.height = LCD_H; // 设置屏幕高度为LCD_H
// 设置液晶屏参数,BGR=1表示使用BGR颜色模式,MY/MX/MV表示是否翻转,此处设置为0表示不翻转
LCD_WriteReg(0x36, (1 << 3) | (1 << 6) | (1 << 7));
break;
// 方向3:逆时针旋转270度
case 3:
lcddev.width = LCD_H; // 设置屏幕宽度为LCD_H
lcddev.height = LCD_W; // 设置屏幕高度为LCD_W
// 设置液晶屏参数,BGR=1表示使用BGR颜色模式,MY/MX/MV表示是否翻转,此处设置为1表示翻转
LCD_WriteReg(0x36, (1 << 3) | (1 << 7) | (1 << 5));
break;
default:
break;
}
}
该程序功能为设置液晶屏显示的方向,根据传入的参数direction,分别设置不同的屏幕参数,以达到不同的显示效果。其中,通过使用LCD_WriteReg()函数,设置液晶屏的参数。每次设置屏幕参数前,需要先设置液晶屏的命令。在设置屏幕参数时,需要设置屏幕的宽度和高度。最终实现不同方向的屏幕显示。