嵌入式蓝桥杯学习拓展 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);//局部刷新
}
相关文章:
嵌入式蓝桥杯学习拓展 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_Wr…...
学习threejs,实现配合使用WebWorker
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️WebWorker web端多线程 二、…...
TDengine 新功能 复合主键
1. 简介 从 TDengine 3.3.0.0 版本之后,新增了复合主键的功能。 TDengine 原来的时间列是不允许有重复时间戳的,有了复合主键功能后,时间列即允许有重复,重复后的时间戳按紧跟其后第二列主键列的值来确定唯一性。 此功能的常用…...
JVM 面试题
Java 虚拟机(JVM)是运行 Java 程序的引擎,它是 Java 语言 “一次编译,处处运行” 的核心技术。JVM 的主要任务是将 Java 字节码(Bytecode)解释成机器码并执行,负责内存管理、线程管理、垃圾回收…...
组件上传图片不回显问题
import { Plus } from "element-plus/icons-vue"; // 图片上传 const img_add ref([]); function httpRequest_add(option) {let dataForm new FormData();dataForm.append("file", option.file);dataForm.append("id", user.data.id);axios({…...
【JavaWeb后端学习笔记】Spring AOP面向切面编程
AOP 1、Spring AOP概述2、SpringAOP快速入门3、SpringAOP核心概念4、通知类型5、通知顺序6、切入点表达式6.1 execution方式6.2 annotation方式 7、连接点 1、Spring AOP概述 AOP:Aspect Oriented Programming,面向特定方法编程。 AOP是通过动态代理技术…...
6.584-Lab5B
6.584-Lab5B Reference CodeReference BlogHomeworkMyself Code Sharded Key/Value Service 梗概 这个图是我从上面参考blog中拿来的,觉得做的不错,借助这张图来讲解一下需要一个什么样的 Service。 ShardCtrler Client: 接收来自客户发出的命…...
OceanBase 的探索与实践
作者:来自 vivo 互联网数据库团队- Xu Shaohui 本文总结了目前我们遇到的痛点问题并通过 OceanBase 的技术方案解决了这些痛点问题,完整的描述了 OceanBase 的实施落地,通过迁移到 OceanBase 实践案例中遇到的问题与解决方案让大家能更好的了…...
安卓调试环境搭建
前言 前段时间电脑重装了系统,最近准备调试一个apk,没想到装环境的过程并不顺利,很让人火大,于是记录一下。 反编译工具下载 下载apktool.bat和apktool.jar 官网地址:https://ibotpeaches.github.io/Apktool/install…...
动画Lottie
Lottie简介 Lottie是一个Airbnb 开发的用于Android,iOS,Web和Windows的库,用于解析使用Bodymovin导出为json的Adobe After Effects动画,并在移动设备和网络上呈现 — GitHub Lottie主要特性 After Effects 兼容性: …...
C++感受14-Hello Object 封装版 - 上
1. 封装即约束——封装和派生、多态的本质区别 一门计算机语言,要如何帮助程序员写出优秀的代码?两个方法:一是给程序员更多能力,二是给程序员更多约束。之前我们学习的派生和多态,更多的是给我们技能,而封…...
网络安全中大数据和人工智能应用实践
传统的网络安全防护手段主要是通过单点的网络安全设备,随着网络攻击的方式和手段不断的变化,大数据和人工智能技术也在最近十年飞速地发展,网络安全防护也逐渐开始拥抱大数据和人工智能。传统的安全设备和防护手段容易形成数据孤岛࿰…...
RISC-V架构下OP-TEE 安全系统实践
安全之安全(security)博客目录导读 本篇博客,我们聚焦RISC-V 2024中国峰会上的RISC-V和OP-TEE结合的一个安全系统实践,来自芯来科技桂兵老师。 关于RISC-V TEE(可信执行环境)的相关方案,如感兴趣可参考R...
40分钟学 Go 语言高并发:【实战】分布式缓存系统
【实战课程】分布式缓存系统 一、整体架构设计 首先,让我们通过架构图了解分布式缓存系统的整体设计: 核心组件 组件名称功能描述技术选型负载均衡层请求分发、节点选择一致性哈希缓存节点数据存储、过期处理内存存储 持久化同步机制节点间数据同步…...
[创业之路-186]:《华为战略管理法-DSTE实战体系》-1-为什么UTStarcom死了,华为却活了,而且越活越好?
目录 前言 一、市场定位与战略选择 二、技术创新能力 三、企业文化与团队建设 四、应对危机的能力 五、客户为中心的理念 六、市场适应性与战略灵活性 七、技术创新与研发投入 八、企业文化与团队建设 九、应对危机的能力 前言 UT斯达康(UTStarcom&#…...
python如何多行注释
在Python中,多行注释通常有两种方式: 使用三个单引号()或三个双引号(""")来创建多行字符串,这可以被用来作为多行注释。这种方式在Python中实际上是创建了一个多行的字符串对象…...
前端工程化面试题目常见
前端工程化面试常见题目包括: • 谈谈你对WebPack的认识。 • Webpack打包的流程是什么? • 说说你工作中几个常用的loader。 • 说说HtmlWebpackPlugin插件的作用。 • Webpack支持的脚本模块规范有哪些? • Webpack和gulp/grunt相比有什么特…...
定点数的乘除运算
原码一位乘法 乘积的符号由两个数的符号位异或而成。(不参与运算)被乘数和乘数均取绝对值参与运算,看作无符号数。乘数的最低位为Yn: 若Yn1,则部分积加上被乘数|x|,然后逻辑右移一位;若Yn0&…...
页面置换算法模拟 最近最久未使用(LRU)算法
最近最久未使用(LRU)算法是一种基于页面访问历史的页面置换算法。它选择最久未使用的页面进行置换。当需要访问一个不在内存中的页面时,如果内存已满,则选择最久未使用的页面进行置换。LRU算法通过记录页面的访问时间戳来判断页面…...
Ubuntu与Centos系统有何区别?
Ubuntu和CentOS都是基于Linux内核的操作系统,但它们在设计理念、使用场景和技术实现上有显著的区别。以下是详细的对比: 1. 基础和发行版本 Ubuntu: 基于Debian,使用.deb包管理系统。包含两个主要版本: LTSÿ…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
