当前位置: 首页 > news >正文

嵌入式蓝桥杯学习拓展 LCD翻转显示

通过配置SS和GS两个标志位,实现扫描方向的切换。

将lcd.c的REG_932X_Init函数进行部分修改。

将LCD_WriteReg(R1, 0x0000);修改为LCD_WriteReg(R1,0x0100);  
将LCD_WriteReg(R96, 0x2700); 修改为LCD_WriteReg(R96, 0xA700);

void REG_932X_Init1(void)
{LCD_WriteReg(R227, 0x3008);   // Set internal timingLCD_WriteReg(R231, 0x0012); // Set internal timingLCD_WriteReg(R239, 0x1231);   // Set internal timingLCD_WriteReg(R1, 0x0100);   // set SS and SM bit		  //0x0100LCD_WriteReg(R2, 0x0700);   // set 1 line inversionLCD_WriteReg(R3, 0x1030);     // set GRAM write direction and BGR=1.LCD_WriteReg(R4, 0x0000);     // Resize registerLCD_WriteReg(R8, 0x0207);     // set the back porch and front porchLCD_WriteReg(R9, 0x0000);     // set non-display area refresh cycle ISC[3:0]LCD_WriteReg(R10, 0x0000);    // FMARK functionLCD_WriteReg(R12, 0x0000);  // RGB interface settingLCD_WriteReg(R13, 0x0000);    // Frame marker PositionLCD_WriteReg(R15, 0x0000);  // RGB interface polarity/**************Power On sequence ****************/LCD_WriteReg(R16, 0x0000);    // SAP, BT[3:0], AP, DSTB, SLP, STBLCD_WriteReg(R17, 0x0007);    // DC1[2:0], DC0[2:0], VC[2:0]LCD_WriteReg(R18, 0x0000);  // VREG1OUT voltageLCD_WriteReg(R19, 0x0000);    // VDV[4:0] for VCOM amplitude//	Delay_Ms(200);                    // Delay 200 MS , Dis-charge capacitor power voltageHAL_Delay(200);LCD_WriteReg(R16, 0x1690);    // SAP, BT[3:0], AP, DSTB, SLP, STBLCD_WriteReg(R17, 0x0227);  // R11H=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0]//	Delay_Ms(50);      // Delay 50msHAL_Delay(50);LCD_WriteReg(R18, 0x001D);  // External reference voltage= Vci;//	Delay_Ms(50);      // Delay 50msHAL_Delay(50);LCD_WriteReg(R19, 0x0800);  // R13H=1D00 when R12H=009D;VDV[4:0] for VCOM amplitudeLCD_WriteReg(R41, 0x0014);  // R29H=0013 when R12H=009D;VCM[5:0] for VCOMHLCD_WriteReg(R43, 0x000B);    // Frame Rate = 96Hz//	Delay_Ms(50);      // Delay 50msHAL_Delay(50);LCD_WriteReg(R32, 0x0000);  // GRAM horizontal AddressLCD_WriteReg(R33, 0x0000);  // GRAM Vertical Address/* ----------- Adjust the Gamma Curve ---------- */LCD_WriteReg(R48, 0x0007);LCD_WriteReg(R49, 0x0707);LCD_WriteReg(R50, 0x0006);LCD_WriteReg(R53, 0x0704);LCD_WriteReg(R54, 0x1F04);LCD_WriteReg(R55, 0x0004);LCD_WriteReg(R56, 0x0000);LCD_WriteReg(R57, 0x0706);LCD_WriteReg(R60, 0x0701);LCD_WriteReg(R61, 0x000F);/* ------------------ Set GRAM area --------------- */LCD_WriteReg(R80, 0x0000);    // Horizontal GRAM Start AddressLCD_WriteReg(R81, 0x00EF);    // Horizontal GRAM End AddressLCD_WriteReg(R82, 0x0000);  // Vertical GRAM Start AddressLCD_WriteReg(R83, 0x013F);  // Vertical GRAM Start AddressLCD_WriteReg(R96, 0xA700);  // Gate Scan Line		  0xA700LCD_WriteReg(R97, 0x0001);  // NDL,VLE, REVLCD_WriteReg(R106, 0x0000); // set scrolling line/* -------------- Partial Display Control --------- */LCD_WriteReg(R128, 0x0000);LCD_WriteReg(R129, 0x0000);LCD_WriteReg(R130, 0x0000);LCD_WriteReg(R131, 0x0000);LCD_WriteReg(R132, 0x0000);LCD_WriteReg(R133, 0x0000);/* -------------- Panel Control ------------------- */LCD_WriteReg(R144, 0x0010);LCD_WriteReg(R146, 0x0000);LCD_WriteReg(R147, 0x0003);LCD_WriteReg(R149, 0x0110);LCD_WriteReg(R151, 0x0000);LCD_WriteReg(R152, 0x0000);/* Set GRAM write direction and BGR = 1 *//* I/D=01 (Horizontal : increment, Vertical : decrement) *//* AM=1 (address is updated in vertical writing direction) */LCD_WriteReg(R3, 0x01018);    //0x1018LCD_WriteReg(R7, 0x0173);   // 262K color and display ON
}

修改以上内容即可完成翻转显示。

按键实现LCD翻转

#include "my_main.h"
uint8_t led_sta=0x01;
char text[30];
void LED_Disp(uint8_t dsLED)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);//所有LED熄灭(l小写)HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);//左移8位:控制C8-C15引脚,值为1的电量HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//开锁存器HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);//关锁存器
}//单独控制LED某一位
void LED_chg(uint8_t num,uint8_t sta)
{uint8_t pos=0x01<<(num-1);led_sta=(led_sta&(~pos))|(pos*sta);LED_Disp(led_sta);
}//程序开始时执行一次
void setup()
{LED_Disp(0x00);LCD_Init();LCD_SetBackColor(Black);LCD_SetTextColor(White);}
//反复执行
void loop()
{if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==GPIO_PIN_RESET){HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==GPIO_PIN_RESET){led_sta=(led_sta&0xfe)|0x01;led_sta=(led_sta&0xfd)|0x00;LED_Disp(led_sta);			}}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==GPIO_PIN_RESET){HAL_Delay(10);if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==GPIO_PIN_RESET){led_sta=(led_sta&0xfd)|0x02;led_sta=(led_sta&0xfe)|0x00;LED_Disp(led_sta);	//180°翻转屏幕//LCD_Clear(Black);//REG_932X_Init1();}}/*     LCD演示     */sprintf(text,"    number:%x  ",led_sta);LCD_DisplayStringLine(Line8,(uint8_t *)text);//局部刷新LCD_SetBackColor(Yellow);sprintf(text,"    T:%d                ",30);LCD_DisplayStringLine(Line5,(uint8_t *)text);//局部刷新LCD_SetBackColor(Black);sprintf(text,"    X:A01  ");LCD_DisplayStringLine(Line6,(uint8_t *)text);//局部刷新
}

http://www.lryc.cn/news/500799.html

相关文章:

  • 学习threejs,实现配合使用WebWorker
  • TDengine 新功能 复合主键
  • JVM 面试题
  • 组件上传图片不回显问题
  • 【JavaWeb后端学习笔记】Spring AOP面向切面编程
  • 6.584-Lab5B
  • OceanBase 的探索与实践
  • 安卓调试环境搭建
  • 动画Lottie
  • C++感受14-Hello Object 封装版 - 上
  • 网络安全中大数据和人工智能应用实践
  • RISC-V架构下OP-TEE 安全系统实践
  • 40分钟学 Go 语言高并发:【实战】分布式缓存系统
  • [创业之路-186]:《华为战略管理法-DSTE实战体系》-1-为什么UTStarcom死了,华为却活了,而且越活越好?
  • python如何多行注释
  • 前端工程化面试题目常见
  • 定点数的乘除运算
  • 页面置换算法模拟 最近最久未使用(LRU)算法
  • Ubuntu与Centos系统有何区别?
  • RK3568平台开发系列讲解(pinctrl 子系统篇)pinctrl_debug
  • 避大坑!Vue3中reactive丢失响应式的问题
  • springSecurity权限控制
  • Pytorch训练固定随机种子(单卡场景和分布式训练场景)
  • Conda + JuiceFS :增强 AI 开发环境共享能力
  • 人工智能-人机交互的机会
  • 【系统架构核心服务设计】使用 Redis ZSET 实现排行榜服务
  • elasticsearch基础总结
  • 【慕伏白教程】Zerotier 连接与简单配置
  • Brain.js(九):LSTMTimeStep 实战教程 - 未来短期内的股市指数预测 - 实操要谨慎
  • C# 字符串(String)