如何将ADC与带有LCD的stm32 Discovery板一起使用

发布者:SerendipityRose最新更新时间:2024-04-10 来源: elecfans关键字:ADC  LCD  stm32 手机看文章 扫描二维码
随时随地手机看文章

步骤1:ADC

使用HAL Cube,ADC的实现非常简单(在第1部分中提到)。


我正在使用 12位ADC模块

ADC预分频器= 8

转换数= 1

ADC分辨率= 128

采样时间为112个周期。

我们还可以将ADC与DMA一起使用。用于它的IRQ处理程序是 HAL_DMA_IRQHandler(AdcHandle.DMA_Handle) ,其中AdcHandle是ADC_HandleTypeDef类型。

要显示ADC值,我们必须使用uint32t uhADCxConvertedValue的外部值。它将值从0转换为4096(2 ^ 12),因此如果要显示从0开始的电压-3V,我们必须做简单的计算 uhADCxConvertedValue * 30/4095;

步骤2:编辑窗口小部件

如何将ADC与带有LCD的stm32 Discovery板一起使用

在segger的文档的500页上,有解释如何使用EDIT窗口小部件的信息。

要创建它,我们必须像在第1部分中创建按钮(1)一样,对其进行类似操作。要设置EDIT小部件参数,请在 WM_INIT_DIALOG case(2)中的小部件回调函数中执行此操作。我们还必须创建函数以附加ADC值编辑。我将在下面显示(3)。

/**** 1 **************************************************************************************************************/

#define ID_W0_EDIT0 (GUI_ID_USER + 3)

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =

{

{ EDIT_CreateIndirect , 0 , ID_W0_EDIT0 , 178, 15, 40, 20 },

};

/**** 2 **************************************************************************************************************/

hItem = WM_GetDialogItem(hDlg, ID_W0_EDIT0);

EDIT_SetHexMode(hItem, 0x1234, 0, 0xffffff); // set your own parameters

/**** 3 **************************************************************************************************************/

static void _ShowADCval(void)

{

WM_HWIN hItem;

int adc_val = uhADCxConvertedValue * 30 / 4095;

hItem = WM_GetDialogItem(oscWindow, ID_W0_EDIT0);

EDIT_SetDecMode(hItem, adc_val, 0, 300, 1, GUI_EDIT_NORMAL);

}

步骤3:ADC图



该图显示了来自PA0引脚的ADC值电平。在第一张图片中,我将具有3V和GND的PA0连接到第二张图片中的PA0。在图表上,我们可以实时看到这些值。我也将编辑小部件放在右上角。如您所见,该值随图形而变化。

创建图形的功能类似于EDIT小部件的创建。

创建所有框架图,编辑和图形:

#define ID_W0 (GUI_ID_USER + 1)

#define ID_W0_GRAPH0 (GUI_ID_USER + 2)

#define ID_W0_EDIT0 (GUI_ID_USER + 3)

//

// Dialog resource

//

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =

{

{ FRAMEWIN_CreateIndirect, “Osciloscope” , ID_W0 , 0, 0, 240, 320, 0 },

{ GRAPH_CreateIndirect , 0 , ID_W0_GRAPH0 , 5, 5, 225, 230 },

{ EDIT_CreateIndirect , 0 , ID_W0_EDIT0 , 178, 15, 40, 20 },

};


关键字:ADC  LCD  stm32 引用地址:如何将ADC与带有LCD的stm32 Discovery板一起使用

上一篇:STM32F1/F4复位的实现方式有哪些
下一篇:使用STM32和RFID连接的读卡器系统设计

推荐阅读最新更新时间:2026-03-20 02:33

STM32电子钟万年历时钟闹钟LCD1602仿真设计
仿真:protues 8.9 程序编译器:keil 5 编程语言:C语言 编号C0003 题目要求: 1.具有显示年、月、日、时、分、秒功能; 2.能计算并显示星期; 3.能手动调整时间,设置闹钟; 4.具有闹钟功能,时间到声光报警(蜂鸣器嘟嘟嘟,LED灯闪烁)。 讲解视频: 仿真图(提供源文件): 原理图(提供源文件): PCB(提供源文件): 程序(提供源文件源码): 以下为部分程序: int main(void) { bool i = 0; /* Reset of all peripherals, Initializes the Flash interface and the Systick
[单片机]
<font color='red'>STM32</font>电子钟万年历时钟闹钟<font color='red'>LCD</font>1602仿真设计
STM32 ILI9341驱动TFTLCD(九)LCD显示ASCIIII
ASCII值在LCD上显示,同样要在一个区域中写显存,这样不同大小字号的字符也就对应不同的字模了。这里生成字模用到了字体取模软件工具PCtoLCD2002,可以方便地生成不同字号的字模。 打开软件并选择设置。 进入设置界面。 根据自己需要进行取模设置: 点阵格式:阴码表示1有效,阳码表示1有效。 取模方式和取模方向与写入显存的算法有关,这里选择顺向逐行式。 设置完成后,根据ASCII表把需要的ASCII值写入,这里写入可见的ASCII值,点击生成字模。 然后复制生成的字模,定义为一个常量存储起来。 可以根据生成的字符右边的序列选取字符所在的序列,由于我们选取的是ASCII的可视字符,在原有的字符上偏移了32
[单片机]
<font color='red'>STM32</font> ILI9341驱动TFT<font color='red'>LCD</font>(九)<font color='red'>LCD</font>显示ASCIIII
STM32 ILI9341驱动TFTLCD屏(六)LCD画直线
通过前面的学习,已经掌握了LCD显示图片以及显示Gif动画。这些图片其实也可以自己通过写显存,以画画的方式完成。而画画最基本的就是点和线了。 要画一个点,只要取一个点的区域,写该点的显存就可以完成。 void LCD_DrawPoint(u16 x,u16 y,u16 color) { ILI9341_SetPageAddr(y,y); //页地址设置 ILI9341_SetColumnAddr(x,x); //列地址设置 ILI9341_WriteMemory(&color,1); //写点的显存 } 接着进行测试,连续画多个点看最终效果。 主函数 #include stm32f4xx.h #i
[单片机]
<font color='red'>STM32</font> ILI9341驱动TFT<font color='red'>LCD</font>屏(六)<font color='red'>LCD</font>画直线
STM32 ILI9341驱动TFTLCD屏(三)
上次已经常用的指令封装成函数,今天通过调用这些函数在屏幕上显示图片,让大家进一步了解ILI9341。 要让屏幕显示图片,那就要先把图片转化为计算机能识别的数据.,这里用Image2Lcd这款工具软件,把图片转换成特定的数据格式以用来匹配STM32系统所需要的显示数据格式。 图片转换成特定的数据格式步骤: (1)把图片尺寸修改为想要显示的大小并保存; (2)在Image2Lcd中打开要显示的图片; (3)设置输出类型为C语言数组;扫描模式要和ILI9341的扫描方式一致;输出灰度选择屏幕适用的;确定要显示的宽度和高度; (4)将生成的数组保存到一个h文件或c文件,方便调用。 数组保存到文件后,文件会自动打开,图片现在
[单片机]
<font color='red'>STM32</font> ILI9341驱动TFT<font color='red'>LCD</font>屏(三)
STM32入门学习笔记之TFTLCD显示实验2
Bit 19:成组写使能位 0:写操作始终处于异步模式 1:写操作为同步模式 Bit 14:EXTMOD:扩展模式使能(即允许读和写使用不同的时序) 0:不使用FSMC_BWTR寄存器(默认) 1:FSMC使用FSMC_BWTR寄存器 Bit 13:等待使能位 0:禁用NWAIT信号,在设置的闪存保持周期之后不会检测NWAIT信号插入等待状态 1:使用NWAIT信号,在设置的闪存保持周期之后根据NWAIT信号插入等待状态(默认) Bit 12:写使能位 0:禁止FSMC对存储器的写操作,否则产生一个AHB错误 1:允许FSMC对存储器的写操作(默认) Bit 11:配置等待时序 0:N
[单片机]
STM32 ADC转换完成回调函数解析:HAL_ADC_ConvCpltCallback与HAL_ADC_ConvHalfCpltCallback详解
HAL_ADC_ConvCpltCallback 和 HAL_ADC_ConvHalfCpltCallback 是 STM32 HAL 库中用于处理 ADC(模数转换器)转换完成事件的回调函数。它们分别在 ADC 转换完成和转换完成一半时被调用。以下是它们的详细说明: 1. HAL_ADC_ConvCpltCallback 功能:当 ADC 转换完全完成时,此回调函数会被调用。 使用场景:适用于需要处理完整转换数据的场景。例如,当 ADC 完成一组采样后,你可以在这个回调函数中读取转换结果并进行处理。 示例代码: void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* ha
[单片机]
案例 stm32单片机,adc的双通道+dma 内部温度
可以这样理解 先配置adc :有几个通道就配置几个通道. 然后配置dma,dma是针对adc的,而不是针对通道的. 一开始我以为一个adc通道对应一个dma通道.(这里是错的,其实是我想复杂了) 一个adc,对应一个dma. adc可以开多个通道.比如采集电池的电量是一个通道,采集单片机温度是另一个通道. adc1的所有通道对应着dma的某一个通道. 然后开启后dma,就会依次把各通道的数据存入数组: 数组元素1: 通道1的数据 数组元素2: 通道2的数据 数组元素3: 通道3的数据 数组元素4: 通道4的数据 数组元素5: 通道5的数据 然后又会从头存,一直循环下去....
[单片机]
stm32相关笔记——ADC部分
我们在学习一门技术的时候,应该对它的理论部分有所了解,然后才能在实践中进一步加深理解,进而掌握。对于stm32来说,我认为学习的时候应该先仔细阅读相关的参考手册,然后再动手实践,这样才能理解得更加透彻,掌握得更加牢固! 今天记录一下我学习stm32的ADC部分的了解。 1.介绍 小结:stm32的ADC有18个通道(16个外部通道+2个内部通道),有单次、连续、扫描和间断四种模式,ADC的结果可以左对齐和右对齐的方式存储在16位的数据寄存器中(一般我们都是使用右对齐的方式) 2、特征 3、框图 框图应该是最重要的部分了,理解了框图,对这个外设的理解就比较透彻了。 ①模拟至数字转换器中有两个通道,一个是注入通
[单片机]
<font color='red'>stm32</font>相关笔记——<font color='red'>ADC</font>部分
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved