基于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测试如下
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. 设计报告
报告部分内容
二、主控制器选择
2.1 stm32f103芯片的概述
STM32单片机有很多个系列,其中包括基本型、USB基本型、增强型以及互联型几大系列,这写系列的STM32单片机都是具有性能高、功耗低、成本低等特点。其内部结构图如图 2.2所示:
图 2.2 STM32内部结构图
本课题采用的是STM32F103C8T6单片机芯片,这是是一款ARM M3内核的增强型微控制器,这款内核的工作频率是能够达到72MHz的,它拥有着128K字节的闪存和极其丰富的外设,如GPIO口,串口,定时器,中断,数模转换,实时时钟,看门狗,SPI,IIC,CAN总线等部分组成。STM32F103系列单片机的性能在同一个类别的产品中是最高的,它能够在-40°C -85°C温度下正常地进行工作,工作的电压范围为2V-3.6V,具有低功耗的节能工作模式,闪存存储器的容量为64K字节。
资料清单&下载链接
0、常见使用问题及解决方法–必读!!!!
1、仿真
2、程序
3、功能要求
4、讲解视频
5、设计报告
6、软硬件设计框图
双击打开更多 51 STM32单片机设计.url
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)