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

【瑞萨RA4L1-SENSOR套件测评】LCD 实时显示 ADC 水位高度

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

本文介绍了瑞萨 RA4L1 开发套件通过瑞萨 e2 Studio 灵活软件包(FSP)快速创建工程,ADC 读取水位传感器模拟信号电压,实现 LCD 段码屏实时显示水位高度的项目设计。

简介

在前三篇帖子中,我们介绍了瑞萨 RA4L1 开发套件通过 e2 studio 软件实现 ADC 水位监测计与串口打印、 LCD 显示工程测试、LCD 自定义数字显示 的主要流程。

这里我们将进一步实现 ADC 电压值的 LCD 显示水位高度的 LCD 显示 的项目设计。

项目方案

  1. 创建 LCD 显示工程;
  2. 构建 LCD 显示函数库文件,实现自定义数字显示;
  3. 添加 UART 和 ADC 堆栈,将 A0 模拟通道采集的电压值通过串口打印,并输送至 LCD 显示;
  4. 连接水位传感器,通过 A0 读取模拟信号电压值,转换为水位高度,并输送至 LCD 显示。

代码

使用 e2 studio 软件和 FSP 快速创建目标工程,配置 UART、 ADC 和 LCD 堆栈,生成工程的基本架构;

添加 LCD 数字显示库文件和主函数代码;

电压 LCD 显示

添加串口打印和ADC电压采集关键代码;

#include "hal_data.h"
#include <stdio.h>
#include "LCD_ShowNum.h"FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTERfsp_err_t err = FSP_SUCCESS;
volatile bool uart_send_complete_flag = false;
void user_uart_callback (uart_callback_args_t * p_args)
{if(p_args->event == UART_EVENT_TX_COMPLETE){uart_send_complete_flag = true;}
}
#ifdef __GNUC__                                 //串口重定向#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else#endifPUTCHAR_PROTOTYPE
{err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);if(FSP_SUCCESS != err) __BKPT();while(uart_send_complete_flag == false){}uart_send_complete_flag = false;return ch;
}int _write(int fd,char *pBuffer,int size)
{for(int i=0;i<size;i++){__io_putchar(*pBuffer++);}return size;
}volatile bool scan_complete_flag = false;
void adc_callback (adc_callback_args_t * p_args)
{FSP_PARAMETER_NOT_USED(p_args);scan_complete_flag = true;
}void hal_entry(void)
{/* TODO: add your own code here *//* Open the transfer instance with initial configuration. */err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);assert(FSP_SUCCESS == err);printf("hello world!\n");/* Initializes the module. */err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);/* Handle any errors. This function should be defined by the user. */assert(FSP_SUCCESS == err);/* Enable channels. */err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);assert(FSP_SUCCESS == 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);while(1){uint16_t adc_data25 = 0;double a25;/* Enable scan triggering from ELC events. */(void) R_ADC_ScanStart(&g_adc0_ctrl);scan_complete_flag = false;while (!scan_complete_flag){/* Wait for callback to set flag. */}err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_25, &adc_data25);assert(FSP_SUCCESS == err);a25 = (double)(adc_data25/4095.0)*3.3;printf("P510(AN25) = %d, Voltage = %fV\n",adc_data25,a25);uint16_t Num = a25 * 100; // convert to uint16_t styleLCD_ShowNum(Num);R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);LCD_Clear();}#if BSP_TZ_SECURE_BUILDR_BSP_NonSecureEnter();
#endif
}

构建工程并调试、上传固件,即可实现 ADC 电压值的 LCD 显示。

水位 LCD 显示

添加水位高度与电压关系的转换代码

while(1)
{uint16_t adc_data25 = 0;double a25,wl;(void) R_ADC_ScanStart(&g_adc0_ctrl);scan_complete_flag = false;while (!scan_complete_flag){}err = R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_25, &adc_data25);assert(FSP_SUCCESS == err);a25 = (double)(adc_data25/4095.0)*3.3;wl = (double)(41.774 * a25 - 38.686); // water level definition equationprintf("P510(AN25) = %d, Voltage = %fV, Water Level = %fmm\n",adc_data25,a25,wl);uint16_t Num = wl * 100; // convert to uint16_t styleLCD_ShowNum(Num);R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);LCD_Clear();
}

构建工程并调试、上传固件,即可实现水位高度的 LCD 显示。

效果

这里分别展示了 ADC 电压值和水位高度的 LCD 显示以及串口输出效果。

ADC 电压的 LCD 显示

A0 分别连接 3V3GND、悬空,LCD 显示结果分别如下

在这里插入图片描述

在这里插入图片描述

ADC 电压的串口发送

使用 Type-C 数据线连接开发板的UART接口,运行串口调试助手软件,打开对应的端口即可获得输出本文

在这里插入图片描述

水位传感器信号的 LCD 显示

将水位传感器的模拟信号输出引脚与开发板的 A0 排母接口相连,此时 LCD 实时显示其电压值(单位:V 伏特)

在这里插入图片描述

动态效果

在这里插入图片描述

水位高度的 LCD 显示

电压转换为水位高度(单位:毫米),实现 LCD 显示水位高度值

在这里插入图片描述

动态效果

在这里插入图片描述

可见 LCD 显示的水位高度值随水位传感器的上下移动不断发生变化,即实现了实时水位监测。

同时串口打印水位

在这里插入图片描述

总结

本文介绍了瑞萨 RA4L1 开发套件通过瑞萨 e2 Studio 软件和灵活软件包(FSP)快速创建工程,ADC 读取水位传感器的模拟信号电压,实现 LCD 段码屏实时显示水位高度的项目设计,为瑞萨 RA4L1 系列单片机的快速开发和应用提供了参考。

相关文章:

  • vue中$set原理
  • AIO-1126-JD4蓝牙通讯(BLE)
  • Lucene并不是只有倒排索引一种数据结构,支持多种数据结构
  • Angular教程前言:历史、安装与用途
  • Webug4.0靶场通关笔记08- 第11关万能密码登录(SQL注入漏洞)
  • 数字智慧方案5968丨智慧农业产销一体化云平台建设方案(72页PPT)(文末有下载方式)
  • 【Docker】Dockerfile 使用
  • python如何把pdf转word
  • 高等数学-第七版-下册 选做记录 习题9-7
  • C++11新特性_自动类型推导_auto
  • 【RocketMQ】- 源码系列目录
  • 神经网络—损失函数
  • Windows服务器提权实战:常见方法、场景与防御指南
  • 2025五一杯C题五一杯数学建模思路代码文章教学:社交媒体平台用户分析问题
  • 【精选】基于数据挖掘的广州招聘可视化分析系统(大数据组件+Spark+Hive+MySQL+AI智能云+DeepSeek人工智能+深度学习之LSTM算法)
  • 【playwright】内网离线部署playwright
  • UE实用地编插件Physical Layout Tool
  • 深度学习-神经网络参数优化的约束与迭代策略
  • PCIe 中的 ARI 介绍
  • 2025五一数学建模ABC题选题建议,思路模型分析
  • 阿曼外交部:美伊谈判因故推迟
  • 人民日报钟声:国际社会应共同维护科学溯源的正确方向
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • 北京发布今年第四轮拟供商品住宅用地清单,共计5宗22公顷
  • 匈牙利国会通过退出国际刑事法院的决定
  • 市场监管总局:2024年查办商标、专利等领域违法案件4.4万件