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

【瑞萨RA4L1-SENSOR套件测评】LCD 显示

【瑞萨RA4L1-SENSOR套件测评】LCD 显示

本文介绍了 RA4L1 开发套件和瑞萨 e2 Studio 灵活软件包(FSP)实现 LCD 断码管显示的工程设计。

简介

液晶显示(liquid crystal display,LCD)是嵌入式系统中常见的人机交互方式,广泛应用于工业控制、智能家电、医疗设备和消费电子产品。

在这里插入图片描述

Renesas RA4L1 微控制器(MCU)内置 Segment LCD Controller (SLCDC),可直接驱动 静态、1/2、1/3、1/4 Bias 的段式 LCD 显示屏,无需额外的 LCD 驱动芯片。这种集成方案不仅降低了硬件成本,还简化了设计。

Renesas RA4L1 的 SLCDC 模块提供了一种高效、低功耗、低成本的 LCD 显示方案。

在这里插入图片描述

通过 FSP 提供的 r_slcdc 驱动,开发者可以快速初始化 LCD,轻松控制显示内容。

在实际项目中,合理配置 COM/SEG 引脚、优化时钟和对比度设置,可以进一步提升 LCD 显示效果。

详见:How LCDs Work , .

工作原理

在这里插入图片描述

LCD 的基本工作原理是遮光。它不能自行产生光。因此,需要一个外部光源。当外部光线从一个偏振器移动到下一个偏振器时,液晶接收到外部电源,偏振光自行对齐,在屏幕上形成图像。

在这里插入图片描述

液晶密封厚层两侧的透明层是氧化铟导电表面。在没有任何外部偏差的情况下,分子排列不受影响。

当发生外部偏倚时,分子排列会发生变化,使一个区域看起来是暗的,而另一个区域看起来是清晰的。

详见:What is LCD? .

LCD 引脚配置

这里使用的 LCD 缩略图

在这里插入图片描述

  • SEG(Segment):控制 LCD 具体显示的段,如数码管的 A-G 段。
  • COM(Common):LCD 的 公共信号,决定哪个段被驱动,多 COM 允许减少 I/O 引脚数量。
LCD 管脚连接

原理图(引脚对应关系)

在这里插入图片描述

详见:RA4L1_LCD: RA4L1_LCD .

工程测试

介绍了 RA4L1 实现 LCD 断码屏驱动的工程创建流程。

创建工程

打开 e2 studio 软件,依次点击 文件 - 新建 - 瑞萨 C/C++ 项目 - Renesas RA

依次进行工程命名,路径设置,FSP版本,目标开发板选择,Device 选择 R7FA4L1BD4CFP ,工具链选择 GNU ARM Embedded ,完成工程创建。

时钟配置

根据 MCU 外部硬件配置,设置晶振及时钟树

在这里插入图片描述

LCD 堆栈

新建数码管 LCD 堆栈

New Stack - Graphics - Segment LCD (r_slcdc)

属性设置

点击选中 Segment LCD 堆栈,修改属性配置

在这里插入图片描述

设置名称、LOCO 时钟源、(LOCO/SOSC)256 分频器、1/3偏压驱动、COM公共端、波形A、内部电压升压、VL1或VCC参考电压、0对比度。

引脚配置

LCD 引脚配置如下

在这里插入图片描述

在这里插入图片描述

VL(Voltage Level)引脚用于提供 LCD 偏置电压,控制 LCD 的对比度和驱动电压。

在内部电压提升模式(Internal Voltage Boosting) 下,RA MCU 会自动产生 VL1、VL2、VL3、VL4 并提供给 LCD 作为驱动电压。

在这里插入图片描述

配置完成后,点击 Generate Project Content ,构建工程,确保没有报错。

工程代码

void hal_entry(void)
{/* TODO: add your own code here */fsp_err_t err;/* Open SLCDC driver */err = R_SLCDC_Open(&g_slcdc0_ctrl, &g_slcdc0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* When using internal boost mode this delay is required to allow the boost circuit to charge. See RA4M1 User's* Manual (R01UH0887EJ0100) 8.2.18 "Segment LCD Source Clock Control Register (SLCDSCKCR)" for details. */R_BSP_SoftwareDelay(5, BSP_DELAY_UNITS_MILLISECONDS);/* Start SLCDC output */err = R_SLCDC_Start(&g_slcdc0_ctrl);assert(FSP_SUCCESS == err);/* Set Display Area of SLCDC driver.*///    err = R_SLCDC_SetDisplayArea(&g_slcdc0_ctrl, SLCDC_DISP_A);//    assert(FSP_SUCCESS == err);while(1){//清空0-41段uint8_t segment_data_num_off[41+1] ;for(int i=0;i<=41;i++)segment_data_num_off[i]=0;R_SLCDC_Write(&g_slcdc0_ctrl, 0, segment_data_num_off, sizeof(segment_data_num_off));R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);//全部点亮uint8_t segment_data_num_on[41+1] ;for(int i=0;i<=41;i++)segment_data_num_on[i]=0xf;R_SLCDC_Write(&g_slcdc0_ctrl, 0, segment_data_num_on, sizeof(segment_data_num_on));R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);//清空0-41段for(int i=0;i<=41;i++)segment_data_num_off[i]=0;R_SLCDC_Write(&g_slcdc0_ctrl, 0, segment_data_num_off, sizeof(segment_data_num_off));R_BSP_SoftwareDelay (200, BSP_DELAY_UNITS_MILLISECONDS);//准备并写入段显示数据,第一个数码管显示1R_SLCDC_Modify(&g_slcdc0_ctrl, 3, 0x0, 0xF);R_SLCDC_Modify(&g_slcdc0_ctrl, 11, 0x6, 0xF);//准备并写入段显示数据,第二个数码管显示2R_SLCDC_Modify(&g_slcdc0_ctrl, 15, 0xE, 0xF);R_SLCDC_Modify(&g_slcdc0_ctrl, 16, 0x3, 0xF);//准备并写入段显示数据,第三个数码管显示3R_SLCDC_Modify(&g_slcdc0_ctrl, 22, 0xA, 0xF);R_SLCDC_Modify(&g_slcdc0_ctrl, 23, 0x7, 0xF);//准备并写入段显示数据,第四个数码管显示4R_SLCDC_Modify(&g_slcdc0_ctrl, 24, 0x3, 0xF);R_SLCDC_Modify(&g_slcdc0_ctrl, 29, 0x6, 0xF);//准备并写入段显示数据,第五个数码管显示5R_SLCDC_Modify(&g_slcdc0_ctrl, 30, 0xB, 0xF);R_SLCDC_Modify(&g_slcdc0_ctrl, 39, 0x5, 0xF);//准备并写入段显示数据,第六个数码管显示6R_SLCDC_Modify(&g_slcdc0_ctrl, 40, 0xF, 0xF);R_SLCDC_Modify(&g_slcdc0_ctrl, 41, 0x5, 0xF);R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);}
#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();
#endif
}
  • 通过循环实现指定 LCD 数码管的段显示;

  • 切换数字前,清空所有显示。

效果演示

在这里插入图片描述

数字显示

在这里插入图片描述

总结

本文介绍了 RA4L1 开发套件和瑞萨 e2 Studio 灵活软件包(FSP)实现 LCD 断码屏显示的工程设计,工程快速构建、LCD 运行原理、硬件连接、代码、效果展示等流程,为瑞萨单片机 LCD 显示的相关产品设计和快速应用提供了参考。

http://www.xdnf.cn/news/1044.html

相关文章:

  • 2025年pta团队设计天梯赛题解
  • FreeRTOS互斥信号量解决优先级翻转实战教程
  • docker 中将dpo后的模型转为ollama能够调用的gguf格式
  • 通过Docker Desktop配置OpenGauss数据库的方法(详细版+图文结合)
  • 助conda命令把环境导出为一个文件,然后在 Linux 系统里利用该文件重新创建相同的环境
  • mapbox进阶,实现掩膜效果,并控制掩膜透明度
  • 数组的应用
  • Linux[基本指令]
  • Ubuntu20.04安装Pangolin遇到的几种报错的解决方案
  • 【项目中的流程管理(九)】
  • 关于 LangChain Execution Language (LCEL) 的详细解释,涵盖其核心概念、语法、应用场景及示例
  • C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟
  • 探究CF1009(div3)C题——XOR and Triangle
  • 宝塔面板引发的血案:onlyoffice协作空间无法正常安装的案例分享
  • 深入了解 WebGIS 系统:构建地理空间信息的网络桥梁
  • C语言高频面试题——strcpy与memcpy区别
  • mcp server、client和本地大模型集成调用
  • Argo CD
  • C语言高频面试题——常量指针与指针常量区别
  • 智慧能源安全新纪元:当能源监测遇上视频联网的无限可能
  • 消息队列知识点详解
  • 做虚拟化应该怎么选择美国服务器?
  • 利用人工智能(AI)增强IT运营,提高IT管理效率
  • Redis 事务
  • Linux基础学习--linux的文件权限与目录配置
  • [FPGA基础] 时钟篇
  • 第 5 篇:初试牛刀 - 简单的预测方法
  • Spring AI Alibaba Graph基于 ReAct Agent 的天气预报查询系统
  • Kubernetes相关的名词解释Worker(12)
  • MyBatis-Plus 防止 SQL 注入最佳实践指南