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

蓝桥杯嵌入式16届———LCD模块

LCD有官方给我们提供的库,我们使用其非常简单,唯一要注意的就是LCD和LED的引脚冲突。

引脚状况

 STM32CubeMX

端口配置 

 

使能 

 

比赛给的选手 资源数据包中有以下三个文件,(除去led相关的),将他们复制到自己项目中

 

代码部分

 在项目中将上面三个文件添加进入项目即可

主要记住的几个函数

  void LCD_Init(void);                   //初始化
  void LCD_SetTextColor(vu16 Color);	 //设置文本颜色
  void LCD_SetBackColor(vu16 Color);     //设置背景颜色
  void LCD_Clear(u16 Color);			 //清屏
  void LCD_DisplayStringLine(u8 Line, u8 *ptr);  //在哪行写字,字使用指针传递

处理引脚冲突 

资源复用场景下经典应用方法,通过寄存器状态的保存与恢复,确保外设间独立工作;

 主要用于解决 ​GPIO 端口复用导致的外设状态冲突问题

void LCD_Init(void)
{
    //保存
	uint16_t temp = GPIOC->ODR;
    //保存

    LCD_CtrlLinesConfig();
    dummy = LCD_ReadReg(0);
 
    if(dummy == 0x8230)
    {
        REG_8230_Init();
    }
    else
    {
        REG_932X_Init();
    }
    dummy = LCD_ReadReg(0);

	GPIOC->ODR = temp;   //恢复
}
 
void LCD_Clear(u16 Color)
{
    //保存
	uint16_t temp = GPIOC->ODR;
    //保存

    u32 index = 0;
    LCD_SetCursor(0x00, 0x0000);
    LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
    for(index = 0; index < 76800; index++)
    {
        LCD_WriteRAM(Color);
    }
 
	GPIOC->ODR = temp;    //恢复
    
}

void LCD_DisplayStringLine(u8 Line, u8 *ptr)
{
    //保存
	uint16_t temp = GPIOC->ODR;
    //保存

    u32 i = 0;
    u16 refcolumn = 319;//319;
 
    while ((*ptr != 0) && (i < 20))	 //	20
    {
        LCD_DisplayChar(Line, refcolumn, *ptr);
        refcolumn -= 16;
        ptr++;
        i++;
    }

	GPIOC->ODR = temp;    //恢复
}

main部分

LCD_Init();
LCD_Clear(White);
LCD_SetBackColor(White);
LCD_SetTextColor(Black);

while部分

这是比赛要求的显示屏幕,我们可以按照这个设置行数和列数

while (1)
  {
    /* USER CODE END WHILE */
    char text[20];
    sprintf(text,"         PARA");
	LCD_DisplayStringLine(Line3,(uint8_t *)text);
	sprintf(text,"     R=1");
	LCD_DisplayStringLine(Line4,(uint8_t *)text);
	sprintf(text,"     K=1");
	LCD_DisplayStringLine(Line5,(uint8_t *)text);
    /* USER CODE BEGIN 3 */
  }

http://www.dtcms.com/a/109772.html

相关文章:

  • 批量删除git本地分支和远程分支命令
  • 基于Docker容器部署DeepSeek-R1-Distill-Qwen-7B
  • CExercise04_2数组_1 利率在投资年份内每年的资产总价值
  • 虚拟电商-话费充值业务(五)充值成功逻辑和网络异常重试逻辑
  • Spring Boot 集成Redis 的Lua脚本详解
  • HCIP-12 中间系统到中间系统基础
  • 深度学习与神经网络 | 邱锡鹏 | 第三章学习笔记
  • 根据源码分析vue中nextTick的实现原理
  • makefile , CFALGS 与 EXTRA CFLAGS
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(九)
  • 奇数和偶数的求法c++
  • MINIQMT学习课程Day2
  • 驱动开发硬核特训 · Day 1
  • 【4】搭建k8s集群系列(二进制部署)之安装master节点服务(kube-apiserver)
  • 使用 JavaScript 动态设置 CSS 样式
  • 09_TPL
  • 优质SD-WAN设备厂商推荐:Ogcloud
  • 选择网上购物系统要看几方面?
  • 7-4 BCD解密
  • 零基础玩转树莓派5!从系统安装到使用VNC远程控制树莓派桌面实战
  • [机器学习]随手记
  • NVM 多版本Node.js 管理全指南(Windows系统)
  • TP-Link TL-WR720N v3改造成无线打印伺服器
  • 【力扣hot100题】(048)二叉树的最近公共祖先
  • 硬件负载均衡:让服务像“牛顿钟”一样稳!
  • 如何重构前端项目
  • 深入解析Java哈希表:从理论到实践
  • Qt进阶开发:QDirModel的使用
  • 基于S函数的simulink仿真
  • 4.2-3 fiddler抓取手机接口