基于STM32的數(shù)字電壓表仿真設(shè)計(jì)(仿真+程序+設(shè)計(jì)報(bào)告+講解)
仿真圖proteus 8.9
程序編譯器:keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):C0080
1.主要功能
結(jié)合實(shí)際情況,基于STM32F103單片機(jī)設(shè)計(jì)一個(gè)數(shù)字電壓表仿真設(shè)計(jì)。該設(shè)計(jì)應(yīng)滿足的功能要求為:
1、以STM32單片機(jī)為控制核心設(shè)計(jì)數(shù)字電壓表;
2、可以測(cè)量0~3.3V輸入電壓值;
3、液晶屏LCD1602顯示電壓;
4、最小分辨率為0.1V,測(cè)量誤差約為±0.1V。
主要硬件設(shè)備:STM32F103單片機(jī)
以下為本設(shè)計(jì)資料展示:
2.仿真
整體設(shè)計(jì)方案
本實(shí)驗(yàn)利用STM32單片機(jī)的ADC等資源,將軟、硬件有機(jī)地結(jié)合起來(lái),使得系統(tǒng)能夠正確地進(jìn)識(shí)別輸入電壓大小,LCD1602能夠正確地顯示。
測(cè)試如下所示:
仿真運(yùn)行情況:
通過(guò)滑動(dòng)變阻器改變輸入電壓,滑動(dòng)變阻器100%,模擬信號(hào)輸入理論值為3.3V。3.3V測(cè)試如下
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時(shí)鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//配置時(shí)鐘
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模擬輸入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PC4
}
void ADC_Config(void)
{
ADC_InitTypeDef ADC_InitStructure;//ADC結(jié)構(gòu)體變量//注意在一個(gè)語(yǔ)句快內(nèi)變量的聲明要放在可執(zhí)行語(yǔ)句的前面,否則出錯(cuò),因此要放在ADC1_GPIO_Config();前面
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1和ADC2工作在獨(dú)立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //使能掃描
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC轉(zhuǎn)換工作在連續(xù)模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//由軟件控制轉(zhuǎn)換,不使用外部觸發(fā)
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//轉(zhuǎn)換數(shù)據(jù)右對(duì)齊
ADC_InitStructure.ADC_NbrOfChannel = 1;//轉(zhuǎn)換通道為1
ADC_Init(ADC1, &ADC_InitStructure); //初始化ADC
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);
//ADC1選擇信道14,音序等級(jí)1,采樣時(shí)間55.5個(gè)周期
// 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); //重置.(復(fù)位).ADC1校準(zhǔn)寄存器
// while(ADC_GetResetCalibrationStatus(ADC1));//等待ADC1校準(zhǔn)重置完成
// ADC_StartCalibration(ADC1);//開始ADC1校準(zhǔn)
// while(ADC_GetCalibrationStatus(ADC1));//等待ADC1校準(zhǔn)完成
// ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC1軟件開始轉(zhuǎn)換
}
主函數(shù)
#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(); //延時(shí)函數(shù)初始化
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);
//實(shí)際電壓 = (ADC_DR)/分辨率 *(正參考電壓-負(fù)參考電壓)
//正參考電壓3.3V才對(duì),但是做仿真需要改3.4V才準(zhǔn)
a=temp/1;
c=temp*10;
d=c%10;
LCD_ShowNum(11,0,a);//顯示個(gè)位
LCD_ShowNum(13,0,d);//顯示小數(shù)點(diǎn)后一位
}
}
開題報(bào)告
基于STM32的簡(jiǎn)易數(shù)字電壓表Proteus仿真設(shè)計(jì)
一、課題背景和目標(biāo)
在電子工程中,數(shù)字電壓表是一種常見的測(cè)量?jī)x器,用于測(cè)量電路中的電壓值。本課程大作業(yè)的目標(biāo)是設(shè)計(jì)一個(gè)基于STM32單片機(jī)的簡(jiǎn)易數(shù)字電壓表,并在Proteus仿真環(huán)境中進(jìn)行驗(yàn)證。設(shè)計(jì)的主要功能包括:
以STM32單片機(jī)為控制核心,實(shí)現(xiàn)數(shù)字電壓表的邏輯控制和數(shù)據(jù)處理。
測(cè)量0~3.3V的輸入電壓值,并實(shí)現(xiàn)電壓的精確測(cè)量和顯示。
使用液晶屏LCD1602顯示電壓值。
最小分辨率為0.1V,測(cè)量誤差約為±0.1V。
通過(guò)本課程大作業(yè)的設(shè)計(jì)與仿真,旨在加深對(duì)STM32單片機(jī)應(yīng)用、數(shù)字電壓表原理以及Proteus仿真技術(shù)的理解和掌握。
二、研究方法
我們將采用理論研究與仿真實(shí)驗(yàn)相結(jié)合的方法,具體步驟如下:
理論研究:收集相關(guān)資料,了解STM32單片機(jī)、數(shù)字電壓表和液晶屏LCD1602的工作原理和技術(shù)特點(diǎn)。
電路設(shè)計(jì):在Proteus仿真軟件中設(shè)計(jì)數(shù)字電壓表的電路圖,包括STM32單片機(jī)、電壓輸入電路、A/D轉(zhuǎn)換器、液晶屏LCD1602等部分。
程序設(shè)計(jì):使用C語(yǔ)言編寫STM32單片機(jī)的程序,實(shí)現(xiàn)電壓的測(cè)量、處理和顯示。
仿真測(cè)試:在Proteus中運(yùn)行程序,輸入不同的電壓值,觀察液晶屏LCD1602的顯示結(jié)果,驗(yàn)證數(shù)字電壓表的功能和性能。
三、預(yù)期結(jié)果
通過(guò)上述研究方法,我們期望實(shí)現(xiàn)以下預(yù)期結(jié)果:
在Proteus仿真軟件中成功構(gòu)建數(shù)字電壓表的電路圖,各部分電路元件能夠正確連接。
通過(guò)STM32單片機(jī)的程序?qū)崿F(xiàn)0~3.3V的電壓測(cè)量,并能夠?qū)y(cè)量結(jié)果顯示在液晶屏LCD1602上。
液晶屏LCD1602能夠正確顯示電壓值,最小分辨率為0.1V。
測(cè)量誤差在±0.1V范圍內(nèi),達(dá)到設(shè)計(jì)要求。
四、實(shí)驗(yàn)安排
本課程大作業(yè)預(yù)計(jì)需要一個(gè)月的時(shí)間完成。前兩周主要用于理論研究和電路設(shè)計(jì),第三周進(jìn)行編程和調(diào)試,第四周進(jìn)行仿真測(cè)試和結(jié)果分析。
五、實(shí)驗(yàn)材料和方法
實(shí)驗(yàn)材料包括:
STM32單片機(jī)。
A/D轉(zhuǎn)換器。
液晶屏LCD1602。
Proteus仿真軟件。
實(shí)驗(yàn)方法包括:
設(shè)計(jì)電路。
編寫程序。
仿真測(cè)試。
六、實(shí)驗(yàn)步驟和數(shù)據(jù)記錄
實(shí)驗(yàn)步驟如下:
在理論研究階段,收集相關(guān)資料,了解STM32單片機(jī)、數(shù)字電壓表和液晶屏LCD1602的工作原理和技術(shù)特點(diǎn)。
在Proteus中設(shè)計(jì)數(shù)字電壓表的電路圖,包括STM32單片機(jī)、電壓輸入電路、A/D轉(zhuǎn)換器、液晶屏LCD1602等部分。
使用C語(yǔ)言編寫STM32單片機(jī)的程序,實(shí)現(xiàn)電壓的測(cè)量、處理和顯示。
在Proteus中運(yùn)行程序,輸入不同的電壓值,觀察液晶屏LCD1602的顯示結(jié)果,記錄實(shí)驗(yàn)數(shù)據(jù)。
分析實(shí)驗(yàn)結(jié)果,判斷數(shù)字電壓表的功能和性能是否達(dá)到設(shè)計(jì)要求。
撰寫報(bào)告,總結(jié)實(shí)驗(yàn)過(guò)程和結(jié)果。
數(shù)據(jù)記錄包括:
記錄實(shí)驗(yàn)過(guò)程中遇到的問題和困難。
記錄液晶屏LCD1602的顯示結(jié)果。
記錄數(shù)字電壓表的最小分辨率和測(cè)量誤差。
七、實(shí)驗(yàn)結(jié)論與討論
在實(shí)驗(yàn)結(jié)束后,我們將根據(jù)實(shí)驗(yàn)數(shù)據(jù)和結(jié)果進(jìn)行分析和討論,得出實(shí)驗(yàn)結(jié)論??赡艿慕Y(jié)論包括:
成功實(shí)現(xiàn)0~3.3V的電壓測(cè)量和顯示。
液晶屏LCD1602能夠正確顯示電壓值,最小分辨率為0.1V。
測(cè)量誤差在±0.1V范圍內(nèi),達(dá)到設(shè)計(jì)要求。
在實(shí)驗(yàn)過(guò)程中遇到的問題和困難,以及如何解決這些問題和困難的經(jīng)驗(yàn)和教訓(xùn)。
實(shí)驗(yàn)討論將包括對(duì)實(shí)驗(yàn)過(guò)程中遇到的問題和困難的分析,以及對(duì)未來(lái)改進(jìn)的建議和方向。
4. 設(shè)計(jì)報(bào)告
報(bào)告部分內(nèi)容
二、主控制器選擇
2.1 stm32f103芯片的概述
STM32單片機(jī)有很多個(gè)系列,其中包括基本型、USB基本型、增強(qiáng)型以及互聯(lián)型幾大系列,這寫系列的STM32單片機(jī)都是具有性能高、功耗低、成本低等特點(diǎn)。其內(nèi)部結(jié)構(gòu)圖如圖 2.2所示:
圖 2.2 STM32內(nèi)部結(jié)構(gòu)圖
本課題采用的是STM32F103C8T6單片機(jī)芯片,這是是一款A(yù)RM M3內(nèi)核的增強(qiáng)型微控制器,這款內(nèi)核的工作頻率是能夠達(dá)到72MHz的,它擁有著128K字節(jié)的閃存和極其豐富的外設(shè),如GPIO口,串口,定時(shí)器,中斷,數(shù)模轉(zhuǎn)換,實(shí)時(shí)時(shí)鐘,看門狗,SPI,IIC,CAN總線等部分組成。STM32F103系列單片機(jī)的性能在同一個(gè)類別的產(chǎn)品中是最高的,它能夠在-40°C -85°C溫度下正常地進(jìn)行工作,工作的電壓范圍為2V-3.6V,具有低功耗的節(jié)能工作模式,閃存存儲(chǔ)器的容量為64K字節(jié)。
資料清單&下載鏈接
0、常見使用問題及解決方法–必讀!?。?!
1、仿真
2、程序
3、功能要求
4、講解視頻
5、設(shè)計(jì)報(bào)告
6、軟硬件設(shè)計(jì)框圖
雙擊打開更多 51 STM32單片機(jī)設(shè)計(jì).url
網(wǎng)盤下載鏈接