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