
本設計的硬件構成:
STM32F103C8T6單片機最小系統板(包含+3.3V穩壓電路+時鐘晶振電路+復位電路(上電自復位,手動復位)),溫度傳感器、水位傳感器、紅外人體傳感器、紅外反射傳感器、超聲波測距模塊、LCD液晶顯示屏、按鍵、蜂鳴器、LED指示燈、繼電器等電路而成;

功能介紹:
1、溫度傳感器采集水溫,按鍵設置水溫閾值,人體感應檢測人體信號,當發現有人時并且水溫低于閾值時,進行加熱(繼電器A),否則不加熱。
2、接水口為固定區域,紅外傳感器檢測是否有水杯,超聲波傳感器檢測水杯里的水位高度。當有水杯時(檢測到紅外信號),開始加水(繼電器B啟動),當超聲波距離小于預設值(程序中設定),停止加水。
3、水位傳感器檢測飲水機內水位,當飲水機水位較低時,發出蜂鳴器提示儲水不足。
4、顯示屏幕顯示數據信息(超聲波距離、 水溫、水位)。
5、通過按鍵設置水溫,按鍵1:設置鍵;按鍵2:加一鍵;按鍵3:減一鍵。
主要物料清單及型號:
顯示屏:LCD1602-5V;
單片機:STM32F103C8T6;
超聲波測距模塊:HC-SR04;
紅外人體傳感器:SR602;
繼電器:SRD-05V;
蜂鳴器:5V有源蜂鳴器;
原理圖:

實物圖1:

設計資料:
元器件清單:

程序:
int main(void)
{
u8 key_value;
delay_init(); //延時函數初始化
uart_init(9600); //串口初始化為9600
TIM3_Cap_Init(1,72-1); //以1Mhz的頻率計數,第一個選項,最小只能是1
TIM2_Int_Init(499,7199);//10Khz的計數頻率,計數到1000為100ms
// LED_Init(); //初始化與LED連接的硬件接口
BEEP_Init();
KEY_Init(); //初始化按鍵
RELAY_Init();
Adc_Init();
Lcd_GPIO_init(); //初始化lcd引腳
Lcd_Init(); //初始化lcd屏幕
UltrasonicWave_Configuration(); //初始化超聲IO
delay_ms(200);
cool_relay=0;
while(1)
{
key_value=KEY_Scan(0);
key_Handle(key_value);
APP_Handle();
if(PEOPLE==1)
{
people_flag=10;
}
if(disFlag>10) //顯示標志
{
disFlag = 0;
if(people_flag>0)
people_flag--;
ceju(); //獲取水位
water=Get_Adc_Average(9,10)/40;
temperature=(float)DS18B20_Get_Temp()+7; //縮小10倍為實際值
if(settemp>temperature&&people_flag>0)
{
heat_relay=0;
}
else
{
heat_relay=1;
}
if(S>10&&HR==0)
{
cool_relay=0;
}
else
{
cool_relay=1;
}
if(water<10)
{
BEEP=!BEEP;
}
else
BEEP=1;
if(set==0)
display();
}
}
}
關鍵字:STM32 單片機
引用地址:
基于STM32單片機的多功能水杯設計
推薦閱讀最新更新時間:2025-04-09 11:35
嵌入式單片機之stm32串口你懂了多少!!
stm32作為現在嵌入式物聯網單片機行業中經常要用多的技術,相信大家都有所接觸,今天這篇就給大家詳細的分析下有關于stm32的出口,還不是很清楚的朋友要注意看看了哦,在最后還會為大家分享有些關于stm32的視頻資料便于學習參考。 什么是串口 UART : Universal Asynchronous Receiver/Transmitter 通用異步收發器 USART : Universal Synchronous Asynchronous Receiver/Transmitter 通用同步/異步收發器 一種是常用也是最簡單的串行數據傳輸協議。數據線只需要兩根就可以實現全雙工。 Tx: 發送數據線 Rx
[單片機]
STM32單片機寄存器的功能解析
“大神”叫你先上STM32,51是小朋友玩的,所以你就不學51了 初學者建議從51單片機開始,雖然很多人建議直接上STM32,但本人還是建議先學習51單片機,簡單且不容易打消積極性,很多人都是在積極性消退之后就會半途而廢,等熟悉了LED、串口、SPI、按鍵、中斷、IIC等這些基礎之后,如果對單片機還有興趣,不妨再去晉升學習STM32單片機,有了51單片機作為基礎,這時候學習STM32也是可以非常快的就能上手。 一般的寄存器的定制是從0開始定義,0000這個寄存器地址存放的是溫度的一個數據,然后0001這個采用的是濕度的數據,它們兩個數據的范圍都是0到65535,并且都是只讀的,所以它適用于的是03這個功能,組態地址就不用關心了
[單片機]
STM32單片機串口空閑中斷接收不定長數據
在使用單片機的串口通信功能時,常用的接收數據方法是通過固定的字節數來判斷一幀數是否發送完成,或者是通過固定的結束標志位來表示一幀數據發送完成。但是有時候會遇到發送的數據長度不固定,也沒有固定的結束標志,對于這樣的數據通常的做法是每隔一段時間查看一下接收數據的長度是否發生了變化,如果指定的一段時間內接收數據長度沒有發生變化,就認為是一幀數據發送完成。在STM32單片機中串口提供了一個更好用的功能,就是空閑中斷功能。也就是說當一幀數據發送結束后,就會產生一個空閑中斷。這樣就可以利用這個空閑中斷來判斷一幀數據接收是否完成。 關于串口空閑檢測可以在STM32參考手冊上找到相關介紹 通過這個圖可以看出來,當第一組數據Data1、Da
[單片機]
ST和Arduino聯手擴寬創客社區使用STM32微控制器和傳感器的途徑
2016年6月30日,致力于為創客提供更多創造空間,橫跨多重電子應用領域、全球領先的半導體供應商意法半導體 (STMicroelectronics,簡稱ST)和教育、創客和物聯網市場最大的開源生態系統Arduino公司,宣布了一項合作協議,讓業界領先的STM32系列微控制器(MCU)以及意法半導體的傳感器、功率器件和通信連接技術走近Arduino創客社區。STAR (ST和Arduino的前兩個字母組合)開發項目的首款產品基于STM32F469的STAR Otto基板于近日向公眾展出。現在,物聯網開發人員和創客可以在他們的智能硬件內創建高性能圖形功能,使用容易上手的軟硬件開發好用的觸屏和聲控以及媒體流功能,改進他們的應用設計。
[物聯網]
【STM32 LL庫編程】GPIO實現獨立按鍵
0x01 介紹 按鍵是單片機控制系統中主要的輸入硬件之一,一般的學習板上都會板載獨立按鍵,用于輸入輸出實驗,外部中斷實驗等需要與用戶實現交互的嵌入式系統中。 下面介紹 基于 STM32的GPIO輸入實驗 0x02 實驗平臺及電路 開發平臺 :STM32CubeIDE 實驗平臺 普中PZ6806L 主控芯片 STM32F103ZET6 按鍵管腳 按鍵電路 LED管腳 LED電路 0x03 實驗目的 按鍵按下后使LED燈點亮,按鍵松開LED燈熄滅。 0x04 關于延時函數 本篇文章我們不使用庫自帶的延時函數,而是選擇自行編寫,進一步了解如何通過系統滴答定時器來完成精確延時 按鍵按下的波形 按
[單片機]
【STM32學習筆記4.1】GPIO基本概念
前言 本系列文章統一圍繞STM32F103C8T6最小系統開發板進行記錄,如涉及其他開發板將會特別說明。 GPIO基本概念 GPIO(General-purpose Inputs/Outputs,通用輸入輸出口),可以連接外設進行數據的傳輸或進行控制,也可以作為信號輸入口接收信息。 STM32F103C8T6采用 LQFP48 方式封裝,一共擁有 37 個 I/O 引腳,所有 I/O 接口可以映像到 16 個外部中斷,并且大部份端口都可以可以兼容 5V 信號。 GPIO引腳基本電路 每個GPIO引腳都包含以下基本電路結構,以實現不同功能: GPIO引腳電路結構 其中: 二極管保護電路:防止外部輸入引腳的信號電平過高造成芯片
[單片機]
基于STM32的對射式紅外傳感以及旋轉編碼器
重點內容:中斷設置 配置流程RCC-GPIO-AFIO-EXTI-NVIC 對射式紅外傳感器: 主要功能:利用中斷系統,實現對傳感器的遮擋移開,并以此在OLED顯示屏上計數 重難點:通過一套配置流程來實現對傳感器的初始化,再加一中斷程序,實現計數(以上內容在非main函數中寫出,并把頭文件保存在另一部分中),最后只需要在主函數中標記頭文件,main函數中寫出利用就行。 要記住利用計數在中斷函數中進行計數 旋轉編碼器: 主要功能:利用中斷系統,通過旋轉左右方向的旋鈕,來實現旋轉編碼器的功能,以此在OLED顯示屏上進行正反轉的計數(右為+,左為-) 重難點:和上部分一樣,但此次中中斷系統用了兩個中斷口,初始化設置中些許不同
[單片機]
基于stm32的多功能時鐘10——數據采集與藍牙控制
嘿,我的小可愛們! 在《藍牙串口通信》這一章中,小編帶著大家編寫了藍牙串口通信程序,測試了藍牙通信正常。由于我后來又找到了《藍牙調試器》軟件,功能強大,可自定義控件,所以下面將編寫通信協議,通過這款軟件,來實現數據采集和藍牙控制。而我們在上一章中,完成了藍牙監控界面的設計,所以這一章中,我們開始講解程序的編寫。 首先,我們要將數據包設置成結構體的形式,便于后面的操作和管理,同時定義接收數據堆棧和發送數據堆棧。之所以這樣做,是因為通信協議規定,數據包必須包括起始字節、數據字節、校驗字節和結束字節,這樣做的目的就是確保數據傳輸的正確性和穩定性。關于通信方面的知識,我以后用到的話,還會介紹的,例如ESP8266等
[單片機]