加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入

基于STM32單片機水位檢測系統(tǒng)仿真設(shè)計

08/02 09:12
1716
服務(wù)支持:
技術(shù)交流群

完成交易后在“購買成功”頁面掃碼入群,即可與技術(shù)大咖們分享疑惑和經(jīng)驗、收獲成長和認(rèn)同、領(lǐng)取優(yōu)惠和紅包等。

虛擬商品不可退

當(dāng)前內(nèi)容為數(shù)字版權(quán)作品,購買后不支持退換且無法轉(zhuǎn)移使用。

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論
放大
實物圖
相關(guān)方案
  • 方案介紹
  • 相關(guān)文件
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

本設(shè)計基于STM32單片機水位檢測系統(tǒng)仿真設(shè)計(proteus仿真+程序)

仿真圖proteus 8.11

程序編譯器:keil 5

編程語言:C語言

設(shè)計編號:C0046

主要功能

1.使用滑動變阻器模擬水位監(jiān)測器,通過改變電壓值表示水位的變化。

2.單片機顯示水位的檢測值,同時顯示水泵的工作狀態(tài)。

3.stm32通過ADC檢測電壓值和設(shè)定的閾值比較,低于閾值則驅(qū)動電機轉(zhuǎn)動,同時通過led表示水泵狀態(tài)。

資料下載

仿真圖

image-20220821121732591

程序(提供源文件源碼)

image-20220821121803449

main函數(shù)

主要完成ADC的初始化,延時函數(shù)的初始化,LED燈初始化,LCD1602的初始化,在while循環(huán)中讀取ADC的值,完成對水泵的控制。

int main(void)
{	 
	u16 ADCValue;
	float voltage;
	u8 Mflag=2;
	u8 OPENflag=0;	//起初代表水泵關(guān)
	delay_init();	    	 	  
	Adc_Init();		  	
	GPIO_InitStructReadtempCmd();
	MotoR_GPIO();
	lcd_system_reset();
	LED1=1;
	LED2=0;
	MOTOR=1;
	while(1)
	{
	    ADCValue=Get_Adc_Average(ADC_Channel_0,10);
		voltage=((float)ADCValue/4096)*3.3;//計算電壓
		H=(10000*voltage)/33;
		if(H>400) //40%  閾值
		{
		  display2();
		  Mflag=1;		//儲水量足夠,關(guān)閉水泵
		}
		else
	   {
		 display1();
		 Mflag=0;	//儲水量不足夠,需要啟動水泵
	   }  
	   if(Mflag==1&&OPENflag==1)
		{ 
		   	LED1=1;
           	LED2=0;
			MOTOR=1;//關(guān)閉水泵
		    Mflag=2;
		    OPENflag=0;	 //已經(jīng)關(guān)好
		}
		else if(Mflag==0&&OPENflag==0)
	   {
		   LED1=0;
           LED2=1;
		   MOTOR=0;//開水泵
		   Mflag=2; 
		   OPENflag=1;	  //已經(jīng)開好
           
	   }
	}
}

ADC轉(zhuǎn)換驅(qū)動

初始化ADC通道。

 #include "adc.h"
 #include "delay.h"	   
		   
//初始化ADC
//這里我們僅以規(guī)則通道為例
//我們默認(rèn)將開啟通道0~3																	   
void  Adc_Init(void)
{ 	
	ADC_InitTypeDef ADC_InitStructure; 
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1	, ENABLE );	  //使能ADC1通道時鐘
 

	RCC_ADCCLKConfig(RCC_PCLK2_Div6);   //設(shè)置ADC分頻因子6 72M/6=12,ADC最大時間不能超過14M

	//PA1 作為模擬通道輸入引腳                         
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;		//模擬輸入引腳
	GPIO_Init(GPIOA, &GPIO_InitStructure);	

	ADC_DeInit(ADC1);  //復(fù)位ADC1,將外設(shè) ADC1 的全部寄存器重設(shè)為缺省值

	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;	//ADC工作模式:ADC1和ADC2工作在獨立模式
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;	//模數(shù)轉(zhuǎn)換工作在單通道模式
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;	//模數(shù)轉(zhuǎn)換工作在單次轉(zhuǎn)換模式
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	//轉(zhuǎn)換由軟件而不是外部觸發(fā)啟動
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	//ADC數(shù)據(jù)右對齊
	ADC_InitStructure.ADC_NbrOfChannel = 1;	//順序進行規(guī)則轉(zhuǎn)換的ADC通道的數(shù)目
	ADC_Init(ADC1, &ADC_InitStructure);	//根據(jù)ADC_InitStruct中指定的參數(shù)初始化外設(shè)ADCx的寄存器   

  
	ADC_Cmd(ADC1, ENABLE);	//使能指定的ADC1
	
	ADC_ResetCalibration(ADC1);	//使能復(fù)位校準(zhǔn)  
	 
//	while(ADC_GetResetCalibrationStatus(ADC1));	//等待復(fù)位校準(zhǔn)結(jié)束
	
	ADC_StartCalibration(ADC1);	 //開啟AD校準(zhǔn)
 
//	while(ADC_GetCalibrationStatus(ADC1));	 //等待校準(zhǔn)結(jié)束
 
}				  
//獲得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)   
{
  	//設(shè)置指定ADC的規(guī)則組通道,一個序列,采樣時間
	ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );	//ADC1,ADC通道,采樣時間為239.5周期	  			    
  
	ADC_SoftwareStartConvCmd(ADC1, ENABLE);		//使能指定的ADC1的軟件轉(zhuǎn)換啟動功能	
	 
	while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待轉(zhuǎn)換結(jié)束

	return ADC_GetConversionValue(ADC1);	//返回最近一次ADC1規(guī)則組的轉(zhuǎn)換結(jié)果
}

u16 Get_Adc_Average(u8 ch,u8 times)
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<times;t++)
	{
		temp_val+=Get_Adc(ch);
		delay_ms(5);
	}
	return temp_val/times;
} 	 

 Get_Adc_Average(u8 ch,u8 times)
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<times;t++)
	{
		temp_val+=Get_Adc(ch);
		delay_ms(5);
	}
	return temp_val/times;
} 	 

  • 設(shè)計資料獲取聯(lián)系方式.doc

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
ATXMEGA192D3-MH 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, 9 X 9 MM, 1 MM HEIGHT, 0.50 MM PITCH, GREEN, MO-220VMMD, MLF-64
$5.62 查看
LPC4357FET256,551 1 NXP Semiconductors LPC4357FET256 - Dual-core Cortex-M4/M0, 1 MB Flash, 136 kB SRAM, 2 HS USB with on-chip PHY, Ethernet, LCD, CAN, AES, SPIFI, SGPIO, SCT BGA 256-Pin

ECAD模型

下載ECAD模型
$15.87 查看
MK70FN1M0VMJ12R 1 Freescale Semiconductor 32-BIT, FLASH, 120MHz, RISC MICROCONTROLLER, PBGA256, 17 X 17 MM, MAPBGA-256
暫無數(shù)據(jù) 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜