【瑞萨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 显示的相关产品设计和快速应用提供了参考。