基于STM32的简易数字电压表仿真设计

这篇具有很好参考价值的文章主要介绍了基于STM32的简易数字电压表仿真设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本设计


基于STM32的数字电压表仿真设计(仿真+程序+设计报告+讲解)

仿真图proteus 8.9

程序编译器:keil 5

编程语言:C语言

设计编号:C0080

1.主要功能

结合实际情况,基于STM32F103单片机设计一个数字电压表仿真设计。该设计应满足的功能要求为:

1、以STM32单片机为控制核心设计数字电压表;

2、可以测量0~3.3V输入电压值;

3、液晶屏LCD1602显示电压;

4、最小分辨率为0.1V,测量误差约为±0.1V。

主要硬件设备:STM32F103单片机

以下为本设计资料展示:

2.仿真

整体设计方案

本实验利用STM32单片机的ADC等资源,将软、硬件有机地结合起来,使得系统能够正确地进识别输入电压大小,LCD1602能够正确地显示。

测试如下所示:

仿真运行情况:

通过滑动变阻器改变输入电压,滑动变阻器100%,模拟信号输入理论值为3.3V。3.3V测试如下

基于STM32的简易数字电压表仿真设计,STM32单片机设计,stm32,单片机,嵌入式硬件

3. 程序

ADC部分初始化

#include "adc.h"

void ADC1_GPIO_Config(void){
    GPIO_InitTypeDef GPIO_InitStructure;
	  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1, ENABLE);	//使能ADC1,GPIOC时钟
 	  
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//配置时钟
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;	//模拟输入
    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PC4
}


void ADC_Config(void)
{
	

  ADC_InitTypeDef ADC_InitStructure;//ADC结构体变量//注意在一个语句快内变量的声明要放在可执行语句的前面,否则出错,因此要放在ADC1_GPIO_Config();前面
  ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在独立模式
  ADC_InitStructure.ADC_ScanConvMode =	DISABLE; //使能扫描
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC转换工作在连续模式
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//由软件控制转换,不使用外部触发
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐
  ADC_InitStructure.ADC_NbrOfChannel = 1;//转换通道为1
  ADC_Init(ADC1, &ADC_InitStructure); //初始化ADC
	
  ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);
  //ADC1选择信道14,音序等级1,采样时间55.5个周期
//  ADC_DMACmd(ADC1, ENABLE);//使能ADC1模块DMA
  ADC_Cmd(ADC1, ENABLE);//使能ADC1
	ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);
//  ADC_ResetCalibration(ADC1); //重置.(复位).ADC1校准寄存器
//  while(ADC_GetResetCalibrationStatus(ADC1));//等待ADC1校准重置完成
//  ADC_StartCalibration(ADC1);//开始ADC1校准
//  while(ADC_GetCalibrationStatus(ADC1));//等待ADC1校准完成
//  ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC1软件开始转换
}


主函数

#include "stm32f10x.h"
#include "bsp-lcd1602.h"
#include "delay.h"
#include "sys.h"
#include "adc.h"

int main(void)
{
	int a,b,c,d;
	float temp;
	
	delay_init();	    	 //延时函数初始化	  	
	LCD1602_Init();				//LCD1602显示初始化
  ADC1_GPIO_Config();		//ADC引脚初始化
  ADC_Config();  				//ADC使能
	LCD1602_ShowStr(2,0,"adcvalue=0.0V",13);//LCD1602显示
	
	while(1)
	{
	b=ADC_GetConversionValue(ADC1);//得到ADC值
	temp=(float)b*(3.4/4096);
	//实际电压 =  (ADC_DR)/分辨率 *(正参考电压-负参考电压) 
	//正参考电压3.3V才对,但是做仿真需要改3.4V才准
	a=temp/1;
	c=temp*10;
	d=c%10;
	LCD_ShowNum(11,0,a);//显示个位
	LCD_ShowNum(13,0,d);//显示小数点后一位
	}
}




开题报告

基于STM32的简易数字电压表Proteus仿真设计
一、课题背景和目标

在电子工程中,数字电压表是一种常见的测量仪器,用于测量电路中的电压值。本课程大作业的目标是设计一个基于STM32单片机的简易数字电压表,并在Proteus仿真环境中进行验证。设计的主要功能包括:

以STM32单片机为控制核心,实现数字电压表的逻辑控制和数据处理。
测量0~3.3V的输入电压值,并实现电压的精确测量和显示。
使用液晶屏LCD1602显示电压值。
最小分辨率为0.1V,测量误差约为±0.1V。
通过本课程大作业的设计与仿真,旨在加深对STM32单片机应用、数字电压表原理以及Proteus仿真技术的理解和掌握。

二、研究方法

我们将采用理论研究与仿真实验相结合的方法,具体步骤如下:

理论研究:收集相关资料,了解STM32单片机、数字电压表和液晶屏LCD1602的工作原理和技术特点。
电路设计:在Proteus仿真软件中设计数字电压表的电路图,包括STM32单片机、电压输入电路、A/D转换器、液晶屏LCD1602等部分。
程序设计:使用C语言编写STM32单片机的程序,实现电压的测量、处理和显示。
仿真测试:在Proteus中运行程序,输入不同的电压值,观察液晶屏LCD1602的显示结果,验证数字电压表的功能和性能。
三、预期结果

通过上述研究方法,我们期望实现以下预期结果:

在Proteus仿真软件中成功构建数字电压表的电路图,各部分电路元件能够正确连接。
通过STM32单片机的程序实现0~3.3V的电压测量,并能够将测量结果显示在液晶屏LCD1602上。
液晶屏LCD1602能够正确显示电压值,最小分辨率为0.1V。
测量误差在±0.1V范围内,达到设计要求。
四、实验安排

本课程大作业预计需要一个月的时间完成。前两周主要用于理论研究和电路设计,第三周进行编程和调试,第四周进行仿真测试和结果分析。

五、实验材料和方法

实验材料包括:

STM32单片机。
A/D转换器。
液晶屏LCD1602。
Proteus仿真软件。
实验方法包括:

设计电路。
编写程序。
仿真测试。
六、实验步骤和数据记录

实验步骤如下:

在理论研究阶段,收集相关资料,了解STM32单片机、数字电压表和液晶屏LCD1602的工作原理和技术特点。
在Proteus中设计数字电压表的电路图,包括STM32单片机、电压输入电路、A/D转换器、液晶屏LCD1602等部分。
使用C语言编写STM32单片机的程序,实现电压的测量、处理和显示。
在Proteus中运行程序,输入不同的电压值,观察液晶屏LCD1602的显示结果,记录实验数据。
分析实验结果,判断数字电压表的功能和性能是否达到设计要求。
撰写报告,总结实验过程和结果。
数据记录包括:

记录实验过程中遇到的问题和困难。
记录液晶屏LCD1602的显示结果。
记录数字电压表的最小分辨率和测量误差。
七、实验结论与讨论

在实验结束后,我们将根据实验数据和结果进行分析和讨论,得出实验结论。可能的结论包括:

成功实现0~3.3V的电压测量和显示。
液晶屏LCD1602能够正确显示电压值,最小分辨率为0.1V。
测量误差在±0.1V范围内,达到设计要求。
在实验过程中遇到的问题和困难,以及如何解决这些问题和困难的经验和教训。
实验讨论将包括对实验过程中遇到的问题和困难的分析,以及对未来改进的建议和方向。

4. 设计报告

基于STM32的简易数字电压表仿真设计,STM32单片机设计,stm32,单片机,嵌入式硬件

报告部分内容

二、主控制器选择

2.1 stm32f103芯片的概述

STM32单片机有很多个系列,其中包括基本型、USB基本型、增强型以及互联型几大系列,这写系列的STM32单片机都是具有性能高、功耗低、成本低等特点。其内部结构图如图 2.2所示:

基于STM32的简易数字电压表仿真设计,STM32单片机设计,stm32,单片机,嵌入式硬件

图 2.2 STM32内部结构图

本课题采用的是STM32F103C8T6单片机芯片,这是是一款ARM M3内核的增强型微控制器,这款内核的工作频率是能够达到72MHz的,它拥有着128K字节的闪存和极其丰富的外设,如GPIO口,串口,定时器,中断,数模转换,实时时钟,看门狗,SPI,IIC,CAN总线等部分组成。STM32F103系列单片机的性能在同一个类别的产品中是最高的,它能够在-40°C -85°C温度下正常地进行工作,工作的电压范围为2V-3.6V,具有低功耗的节能工作模式,闪存存储器的容量为64K字节。

资料清单&下载链接

基于STM32的简易数字电压表仿真设计,STM32单片机设计,stm32,单片机,嵌入式硬件
0、常见使用问题及解决方法–必读!!!!
1、仿真
2、程序
3、功能要求
4、讲解视频
5、设计报告
6、软硬件设计框图
双击打开更多 51 STM32单片机设计.url

网盘下载链接文章来源地址https://www.toymoban.com/news/detail-724351.html

到了这里,关于基于STM32的简易数字电压表仿真设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 毕设--基于51单片机数字电压表的设计

    注:本毕设资源可在微信公众号:“Kevin的学习站” 中获取! 3.1、基本功能 利用51单片机作为主控芯片,模拟量输入范围直流0v-5v。模拟量经A/D(ADC0809)模数转换芯片,把模拟量转换为数字量输入到单片机的P0口,再由单片机控制LCD1602液晶显示模拟量输入的电压值。 3.2、主

    2023年04月08日
    浏览(52)
  • 单片机——C51实验含Proteus仿真(AD转换器(数字电压表),DA转换器(波形发生器))

    分为两部分:AD转换器实现数字电压表,DA转换器实现波形发生器(在仿真部分详细说明) 所用到的原理图:  AD转换器实现数字电压表部分         需要打开main函数中LCD_init(),ADC(),display()三个注释其中电压的输出显示用到了LCD1602关于这部分详情见(96条消息) 单片机——

    2024年02月08日
    浏览(56)
  • 51单片机_电压采集器&电压表

    实物演示效果: https://www.bilibili.com/video/BV1My4y1F7xY/?vd_source=6ff7cd03af95cd504b60511ef9373a1d         利用51单片机作为主控芯片,3段式电压采集。模拟量经A/D(ADC0809)模数转换芯片,把模拟量转换为数字量输入到单片机的P0口,再由单片机控制LCD1602液晶显示模拟量输入的电压值。

    2024年01月19日
    浏览(58)
  • 基于STM32的简易数字频率计仿真设计(仿真+程序+设计报告+讲解)

    基于STM32的简易数字频率计仿真设计(仿真+程序+设计报告+讲解) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0079 基于STM32的简易数字频率计仿真设计(仿真+程序+设计报告+讲解) 结合实际情况,基于STM32F103单片机设计一个数字频率计仿真设计。该设计应满

    2024年02月09日
    浏览(47)
  • 基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解)

    仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0078 基于STM32的简易电子秒表proteus仿真设计 结合实际情况,基于STM32F103单片机设计一个电子秒表。该设计应满足的功能要求为: 1、以STM32为最小系统电路进行连接,用四位数码管显示计时时间。 2、三个按键作为

    2024年02月11日
    浏览(53)
  • Proteus使用STM32F103系列芯片仿真ADC电压总是为0问题解答

    STM32F103芯片有一组ADC参考电压端口  对应到Proteus中,发现原理图上并没有但是在“配置供电网”中存在 可以看出,VSSA与VDDA同为3.3V,这就导致采集到的电压没有0电位参考,所以需要将 VSSA 转移到 GND 组   此时再允许正确的ADC程序就可以采集到正确的电压了      

    2024年02月13日
    浏览(50)
  • 基于STM32电压检测和电流检测

    CPU: STM32F103C8 屏幕: 0.96寸OLED屏幕(SPI接口) 电压测量模块: INA226(IIC接口) 点流测量模块: ACS712(ADC采集) 1.可测量直流电压0~36V,适用于低电压电子电路中。 2.可测量直流电0~5A范围内,目前采用的ACS712测量量程为5A,该模块有多个量程,可测量到20A 3.实时功率监测 4.电池电量监测

    2024年02月02日
    浏览(48)
  • 基于stm32+HAL库的ADC电压采集实验

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 只会用if的大神提醒您,敌军还有30秒到达战场,碾碎他们!白银局不要怕! 软件:keil5、stm32cubemx、串口调试助手 硬件:stm32f103系列的开发板、杜邦线*1、串口工具 仅此而已!!!正好6神 1、打开cube

    2023年04月15日
    浏览(44)
  • 基于STM32设计的简易手机

    基于STM32设计的简易手机可以作为智能手表的模型进行开发,方便老人和儿童佩戴。项目主要是为了解决老年人或儿童使用智能手表时可能遇到的困难,例如操作困难、功能复杂等问题。 在这个项目中,采用了STM32F103RCT6主控芯片和SIM800C GSM模块,实现了短信发送、电话接打等

    2024年02月14日
    浏览(41)
  • 基于STM32F103C8T6ADC检测交流电压

    上篇文章写了硬件部分的实现思路,通过采样电阻的到小电压后经过二级放大电路得到单片机可处理的交流电压,此文介绍了如何采用单片机采集交流电压以及stm32ADC外设的使用。首先是硬件电路部分。  电路没有采用核心板,而是直接将芯片焊接到主板上,采用type-c接口供

    2024年02月12日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包