【STM32項目】環境監測設計

????大家好,這里是5132單片機畢設設計項目分享,今天給大家分享的是基于《基于STM32的環境監測設計》。

目錄

1、系統功能

2.1、硬件清單

2.2、功能介紹

2.3、控制模式

2、演示視頻和實物

3、系統設計框圖

4、軟件設計流程圖

5、原理圖

6、主程序

7、總結


1、系統功能

2.1、硬件清單

STM32F103C8T6最小核心控制板+ESP8266-01SWiFi模塊+DHT11溫濕度傳感器+0.96寸OLED顯示屏+PM2.5傳感器+4按鍵模塊+聲光報警模塊(LED燈+蜂鳴器)+光敏電阻+后備電池+MQ2煙霧傳感器+MQ9一氧化碳傳感器+MQ135空氣質量傳感器

2.2、功能介紹

(1)STM32F103C8T6最小核心控制板:作為系統主控單元,負責協調各傳感器數據采集、處理及控制外設動作。
(2)ESP8266-01SWiFi模塊:連接機智云平臺,實現手機APP遠程監控與控制,支持數據上傳云端及接收遠程指令。
(3)DHT11溫濕度傳感器:實時檢測環境溫度與濕度,數據同步顯示于OLED屏并上傳云平臺。
(4)0.96寸OLED顯示屏:分頁面顯示傳感器參數(PM2.5、光照強度、空氣質量、一氧化碳、煙霧、溫濕度)及閾值設置界面。
(5)PM2.5傳感器:監測空氣中PM2.5濃度,當數值超過設定閾值時觸發聲光報警。
(6)4按鍵模塊:
??? ?第1個按鍵:頁面切換(傳感器數據頁/閾值設置頁)。
??? ?后3個按鍵:閾值設置(切換閾值類型、增加閾值數值),支持本地手動調整各參數報警閾值。
(7)聲光報警模塊:由LED燈和蜂鳴器組成,當傳感器檢測值超過閾值時同步發出光閃與聲音報警。
(8)光敏電阻:采集環境光照強度,數值用于閾值比較及顯示,支持手動調整光照報警閾值。
(9)后備電池:系統斷電后為時鐘供電,確保實時時間準確性。
(10)MQ2煙霧傳感器:檢測環境煙霧濃度,超過閾值時觸發報警。
(11)MQ9一氧化碳傳感器:監測一氧化碳濃度,超標時啟動聲光報警。
(12)MQ135空氣質量傳感器:檢測空氣質量指數,數值異常時觸發報警。

2.3、控制模式

(1)遠程模式:通過機智云平臺連接手機APP,可遠程查看PM2.5、溫濕度、光照強度、煙霧、一氧化碳、空氣質量等實時數據,支持遠程設置各參數報警閾值及控制聲光報警功能。
(2)本地手動模式:
??? ?頁面切換:通過第1個按鍵切換傳感器數據顯示頁與閾值設置頁。
??? ?閾值設置:在閾值設置頁,通過后3個按鍵調整各參數閾值(如PM2.5閾值、光照強度閾值、溫濕度閾值等),設置時數值實時更新并顯示。
(3)自動報警模式:系統實時監測各傳感器數據,當檢測值超過預設閾值時(如PM2.5>300、光照強度<設定值、一氧化碳濃度超標等),自動觸發聲光報警模塊,LED燈閃爍且蜂鳴器發聲,報警狀態同步上傳至手機APP。


2、演示視頻和實物

基于STM32的環境監測設計


3、系統設計框圖


4、軟件設計流程圖


5、原理圖


6、主程序

#include "sys.h"                //頭文件
/***********************************************************************************************
同學好!我們是5132單片機設計,定制單片機設計,實物和說明書均可定制,歡迎大家咨詢。VX:lwfw123456789
其他項目演示視頻和說明請大家移步嗶哩嗶哩、CSDN和公眾號等。
淘寶:5132單片機設計
嗶哩嗶哩:5132單片機設計
CSDN:    5132單片機設計
公眾號:  5132單片機設計
抖音  :  5132單片機設計
小紅書:  5132單片機設計
咸魚:    5132單片機設計
************************************************************************************************/
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "usart3.h"
#include "gizwits_product.h"
#include "Key.h"
#include "Buzzer.h"
#include "OLED.h"
#include "AD.h"
#include "MyRTC.h"
#include "Serial2.h"
#include "dht11.h"
#include "PM25.h"extern uint32_t bufe[10];                     //存儲傳感器采集的數據
uint16_t AD0, AD1,AD2, AD4, AD5, AD6;             //存儲5路ADC值
uint32_t GuangYu = 70;                  //光照強度閾值上限
uint32_t TempYu = 35;
uint32_t HumiYu = 70;
uint32_t YanYu = 80;
uint32_t COYu = 80;
uint32_t PM25Yu = 300;
uint32_t KONGYu = 80;u8 temp, humi;                                //存放溫濕度
u8 state, state2 = 2, state2_1, state3;       //按鍵狀態標志
u8 t = 0;                                     //傳感器讀取時間間隔
uint8_t KeyNum;                               //存儲按鍵值
u8 Flag_dakai = 0;                            //窗戶狀態標志
u16 ii = 0;                                   //步進電機循環
extern u8 flag;                               //遠程控制標志
u8 flag2 = 0, flag1, flag3;uint16_t RTC_Time[] = {0, 0, 0};
uint16_t RTC_Time1[] = {7, 0, 0};    //定時時間---開
uint16_t RTC_Time2[] = {19, 0, 0};   //定時時間---關u8 T_state, T_state1, qingping = 1, state_dingshi_yu_guan, state_dingshi_yu_kai, state_dingshi_yu_switch, state3_1;void TimeSet(void);
void TimeRead(void);
void ChuangGanXinXi(void);
void Yu_Set(void);
void KongZhi(void);
void YuZhiSet(void);void MY_Gizwits_Init(void)              //機智云初始化函數
{TIM3_Int_Init(9, 7199); //1MS系統定時usart3_init(9600);//WIFI初始化memset((uint8_t *)&currentDataPoint, 0, sizeof(dataPoint_t)); //設備狀態結構體初始化gizwitsInit();//環形緩沖區初始化gizwitsSetMode(2);   //設置模式userInit();
}//void shoudong()
//{
//    TimeRead();
//    if (KeyNum == 2)        //按鍵PB0控制窗戶開關
//    {
//        delay_ms(20);
//        if (KeyNum == 2)
//        {
//            state2++;
//            if (state2 > 1)
//            {
//                state2 = 0;
//            }
//        }
//    }
//    if (state2 == 0)
//    {
//        if (Flag_dakai == 0)
//        {//        }//    }
//    if (state2 == 1)
//    {
//        if (Flag_dakai == 1)
//        {//        }
//    }
//}
//void zhidong()
//{
//    TimeRead();
//    if (KeyNum == 5)                          //自動模式下PB0按鍵控制閾值切換
//    {
//        flag1 = 0;
//        flag3 = 0;
//        delay_ms(20);
//        if (KeyNum == 5)
//        {
//            state2_1++;
//            if (state2_1 > 1)
//            {
//                state2_1 = 0;
//            }
//        }
//    }
//    if (state2_1 == 1)
//    {
//        flag2 = 1; //傳感器閾值
//        if (KeyNum == 2)                          //自動模式下PB0按鍵控制閾值切換
//        {
//            delay_ms(20);
//            if (KeyNum == 2)
//            {
//                state3++;
//                if (state3 > 8)
//                {
//                    state3 = 0;
//                }
//            }
//        }
//        if (state3 == 1)
//        {
//            if (KeyNum == 3)GuangYu_Shang++;
//            if (KeyNum == 4)GuangYu_Shang--;
//        }
//        if (state3 == 0)
//        {
//            if (KeyNum == 3)GuangYu_Xia++;
//            if (KeyNum == 4)GuangYu_Xia--;
//        }
//        if (state3 == 6)
//        {
//            if (KeyNum == 3)YanYu++;
//            if (KeyNum == 4)YanYu--;
//        }
//        if (state3 == 7)
//        {
//            if (KeyNum == 3)COYu++;
//            if (KeyNum == 4)COYu--;
//        }
//        if (state3 == 3)
//        {
//            if (KeyNum == 3)TempYu_Shang++;
//            if (KeyNum == 4)TempYu_Shang--;
//        }
//        if (state3 == 2)
//        {
//            if (KeyNum == 3)TempYu_Xia++;
//            if (KeyNum == 4)TempYu_Xia--;
//        }
//        if (state3 == 5)
//        {
//            if (KeyNum == 3)HumiYu_Shang++;
//            if (KeyNum == 4)HumiYu_Shang--;
//        }
//        if (state3 == 4)
//        {
//            if (KeyNum == 3)HumiYu_Xia++;
//            if (KeyNum == 4)HumiYu_Xia--;
//        }
//    }
//    if (state2_1 == 0)
//    {
//        flag2 = 0;  //傳感器信息
//        /*********室內煙霧和CO量超過各自閾值,蜂鳴器報警***********/
//        if ((bufe[1] > YanYu) || (bufe[2] > COYu))
//        {
//            Buzzer_ON();
//        }
//        else
//        {
//            Buzzer_OFF();
//        }
//    }
//}int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級uart_init(9600);       //串口初始化為9600delay_init();      //延時函數初始化LED_Init();            //初始化與LED連接的硬件接口DHT11_Init();Buzzer_Init();             //下面為外設初始化OLED_Init();Key_Init();PM25_Init();       //里面包含了AD_Init();MyRTC_Init();MY_Gizwits_Init();   //機智云初始化while (1){userHandle();    //數據上傳gizwitsHandle((dataPoint_t *)&currentDataPoint);   //后臺處理,必須放在while里DHT11_Read_Data(&temp, &humi);  //讀取溫濕度并顯示在OLED上bufe[0] = temp;bufe[1] = humi;if (t % 10 == 0){AD0 = AD_GetValue(ADC_Channel_0);    //光照傳感器 if (AD0 > 4000)AD0 = 4000;bufe[2] = (u8)(100 - (AD0 / 40));AD1 = AD_GetValue(ADC_Channel_1);    //煙霧傳感器if (AD1 > 4000)AD1 = 4000;bufe[3] = (u8)(80 - (AD1 / 40));AD2 = AD_GetValue(ADC_Channel_2);    //CO傳感器if (AD2 > 4000)AD2 = 4000;bufe[4] = (u8)(80 - (AD2 / 40));AD4 = AD_GetValue(ADC_Channel_4);    //空氣質量傳感器if (AD4 > 4000)AD4 = 4000;bufe[5] = (u8)(80 - (AD4 / 40));bufe[6] = Get_PM25_Average_Data();}t++;KongZhi();KeyNum = Key_GetNum();if (KeyNum == 1){qingping = 0;state2 = 2,delay_ms(20);if (KeyNum == 1){state++;if (state > 2){state = 0;}}}if (state == 1)   {if (qingping == 0){OLED_Clear();qingping = 1;}							ChuangGanXinXi();}if (state == 2)    {if (qingping == 0){OLED_Clear();qingping = 1;}	Yu_Set();}if (state == 0)    {if (qingping == 0){OLED_Clear();qingping = 1;}	TimeRead();OLED_ShowChinese(2, 3, 49);OLED_ShowChinese(2, 4, 50);OLED_ShowChinese(2, 5, 72);OLED_ShowChinese(2, 6, 73);OLED_ShowChinese(3, 2, 74);OLED_ShowChinese(3, 3, 75);OLED_ShowChinese(3, 4, 76);OLED_ShowChinese(3, 5, 77);						OLED_ShowChinese(3, 6, 78);OLED_ShowChinese(3, 7, 79);										if (flag == 0) {Buzzer_OFF();LED_OFF();}if (flag == 1) {Buzzer_Turn();LED_Turn();}}}
}void TimeSet()           //設置時間
{if (KeyNum == 2)    //PB10{delay_ms(20);if (KeyNum == 2){T_state++;if (T_state > 2){T_state = 0;}}}if (T_state == 0)    //時間顯示模式{MyRTC_ReadTime();OLED_ShowNum(1, 5, MyRTC_Time[3], 2);    //時OLED_ShowString(1, 7, ":");OLED_ShowNum(1, 8, MyRTC_Time[4], 2);    //分OLED_ShowString(1, 10, ":");OLED_ShowNum(1, 11, MyRTC_Time[5], 2);   //秒RTC_Time[0] = MyRTC_Time[3];RTC_Time[1] = MyRTC_Time[4];RTC_Time[2] = MyRTC_Time[5];}if (T_state == 1)    //修改時間{if (KeyNum == 5){delay_ms(20);if (KeyNum == 5){T_state1++;if (T_state1 > 2){T_state1 = 0;}}}if (T_state1 == 0)  //修改時{if (KeyNum == 4)RTC_Time[0]++;if (KeyNum == 3)RTC_Time[0]--;if (RTC_Time[0] > 23 & RTC_Time[0] < 100)RTC_Time[0] = 0;if (RTC_Time[0] > 100)RTC_Time[0] = 23;OLED_ShowNum(1, 5, RTC_Time[0], 2);  //時}if (T_state1 == 1)  //修改分{if (KeyNum == 4)RTC_Time[1]++;if (KeyNum == 3)RTC_Time[1]--;if (RTC_Time[1] > 59 & RTC_Time[1] < 100)RTC_Time[1] = 0;if (RTC_Time[1] > 100)RTC_Time[1] = 59;OLED_ShowNum(1, 8, RTC_Time[1], 2);  //時}if (T_state1 == 2)  //修改秒{if (KeyNum == 4)RTC_Time[2]++;if (KeyNum == 3)RTC_Time[2]--;if (RTC_Time[2] > 59)RTC_Time[2] = 0;if (RTC_Time[2] > 59 & RTC_Time[2] < 100)RTC_Time[2] = 0;if (RTC_Time[2] > 100)RTC_Time[2] = 59;OLED_ShowNum(1, 11, RTC_Time[2], 2);  //時}}if (T_state == 2){MyRTC_Time[3] = RTC_Time[0];MyRTC_Time[4] = RTC_Time[1];MyRTC_Time[5] = RTC_Time[2];MyRTC_SetTime();T_state = 0;}
}void TimeRead()
{MyRTC_ReadTime();OLED_ShowNum(1, 5, MyRTC_Time[3], 2);    //時OLED_ShowString(1, 7, ":");OLED_ShowNum(1, 8, MyRTC_Time[4], 2);    //分OLED_ShowString(1, 10, ":");OLED_ShowNum(1, 11, MyRTC_Time[5], 2);   //秒
}void ChuangGanXinXi(void)
{OLED_ShowString(1, 1, "PM2.5:");	OLED_ShowNum(1, 7, bufe[6], 4);	OLED_ShowChinese(2, 1, 53);    //光強OLED_ShowChinese(2, 2, 54);OLED_ShowString(2, 5, ":");OLED_ShowNum(2, 6, bufe[2], 2);OLED_ShowString(2, 11, "KQ:");   OLED_ShowNum(2, 14, bufe[5], 2);OLED_ShowChinese(3, 1, 60);     //煙霧OLED_ShowChinese(3, 2, 61);OLED_ShowString(3, 5, ":");OLED_ShowNum(3, 6, bufe[3], 2);OLED_ShowString(3, 11, "CO:");   OLED_ShowNum(3, 14, bufe[4], 2);OLED_ShowChinese(4, 1, 26);    //溫濕度OLED_ShowChinese(4, 2, 28);OLED_ShowString(4, 5, ":");OLED_ShowChinese(4, 5, 27);OLED_ShowChinese(4, 6, 28);OLED_ShowString(4, 13, ":");OLED_ShowNum(4, 6, bufe[0], 2);OLED_ShowNum(4, 14, bufe[1], 2);
}void Yu_Set(void)
{OLED_ShowChinese(1, 3, 80);OLED_ShowChinese(1, 4, 81);						OLED_ShowChinese(1, 5, 82);OLED_ShowChinese(1, 6, 83);			OLED_ShowString(2, 1, "G:");OLED_ShowNum(2, 3, GuangYu, 2);OLED_ShowString(2, 7, "K :");OLED_ShowNum(2, 10, KONGYu, 2);OLED_ShowString(2, 13, "W:");OLED_ShowNum(2, 15, TempYu, 2);OLED_ShowString(3, 1, "Y:");OLED_ShowNum(3, 3, YanYu, 2);OLED_ShowString(3, 7, "CO:");OLED_ShowNum(3, 10, COYu, 2);OLED_ShowString(3, 13, "S:");OLED_ShowNum(3, 15, HumiYu, 2);OLED_ShowString(4, 1, "PM2.5:");OLED_ShowNum(4, 7, PM25Yu, 4);
}void KongZhi(void)
{if((bufe[0]>TempYu)||(bufe[1]>HumiYu)||(bufe[2]>GuangYu)||(bufe[3]>YanYu)||(bufe[4]>COYu)||(bufe[5]>KONGYu)||(bufe[6]>PM25Yu)){LED_Turn();Buzzer_Turn();}else{LED_OFF();Buzzer_OFF();}	YuZhiSet();			
}void YuZhiSet()
{if (KeyNum == 2)                          //自動模式下PB0按鍵控制閾值切換{delay_ms(20);if (KeyNum == 2){state3++;if (state3 > 6){state3 = 0;}}}if (state3 == 0){if (KeyNum == 3)GuangYu++;if (KeyNum == 4)GuangYu--;}if (state3 == 1){if (KeyNum == 3)KONGYu++;if (KeyNum == 4)KONGYu--;}if (state3 == 2){if (KeyNum == 3)TempYu++;if (KeyNum == 4)TempYu--;}if (state3 == 3){if (KeyNum == 3)YanYu++;if (KeyNum == 4)YanYu--;}if (state3 == 4){if (KeyNum == 3)COYu++;if (KeyNum == 4)COYu--;}if (state3 == 5){if (KeyNum == 3)HumiYu++;if (KeyNum == 4)HumiYu--;}if (state3 == 6){if (KeyNum == 3)PM25Yu+=10;if (KeyNum == 4)PM25Yu-=10;}}

7、總結

本文介紹了一個基于STM32F103C8T6的環境監測系統設計。系統通過多種傳感器(溫濕度、PM2.5、煙霧、一氧化碳等)實時采集環境數據,并通過OLED顯示屏本地顯示或通過ESP8266 WiFi模塊上傳至機智云平臺實現遠程監控。系統支持手動和自動兩種控制模式,當檢測值超過預設閾值時會觸發聲光報警。硬件包括STM32主控、傳感器模塊、顯示模塊和通信模塊等,軟件采用模塊化設計,包含數據采集、處理、顯示和通信等功能。該系統實現了環境參數的全面監測和智能報警,具有實用性和可擴展性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91197.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

不同系統記錄項目進度不一致,如何統一口徑

不同系統記錄項目進度不一致&#xff0c;會造成項目管理混亂、信息混淆和決策失誤。統一口徑的方法包括&#xff1a;采用統一的項目管理平臺、明確數據記錄與更新規范、建立進度數據對接與整合機制。特別是采用統一的項目管理平臺&#xff0c;通過統一的信息輸入與輸出渠道&…

玩轉Docker | 使用Docker部署Drawnix在線白板工具

玩轉Docker | 使用Docker部署Drawnix在線白板工具 前言一、Drawnix介紹Drawnix簡介Drawnix主要特點二、系統要求環境要求環境檢查Docker版本檢查檢查操作系統版本三、部署Drawnix服務下載Drawnix鏡像編輯部署文件創建容器檢查容器狀態檢查服務端口安全設置四、訪問Drawnix服務訪…

Linux操作系統從入門到實戰(九)Linux開發工具(中)自動化構建-make/Makefile知識講解

Linux操作系統從入門到實戰&#xff08;九&#xff09;Linux開發工具&#xff08;中&#xff09;自動化構建-make/Makefile前言一、 make/Makefile是什么&#xff1f;1. 我們先想個問題&#xff1a;手動編譯代碼有多麻煩&#xff1f;2. 為了解決麻煩&#xff0c;才有了自動化工…

開源b2b2c商城源碼 支持多端適用 含完整代碼包和圖文搭建教程

在電商行業蓬勃發展的當下&#xff0c;b2b2c商城系統成為眾多企業拓展業務版圖的有力工具。這種支持自營與商家入駐并存的系統&#xff0c;含豐富平臺商品種類&#xff0c;能通過多元化運營提升平臺競爭力。本文分享一個開源b2b2c商城源碼的相關知識&#xff0c;并詳細介紹其搭…

Vue3入門-指令補充

&#x1f3e0;個人主頁&#xff1a;Yui_ &#x1f351;操作環境&#xff1a;vscode\node.js &#x1f680;所屬專欄&#xff1a;Vue3 文章目錄1. 指令修飾符1.1 按鍵修飾符1.2 事件修飾符1.3 v-model修飾符2. v-model用在其他表單元素上3. 樣式綁定3.1 操作class4. 操作style5.…

UDP類型套接字

理解UDP協議&#xff1a;互聯網世界的"明信片"通信 UDP是什么&#xff1f;為什么需要它&#xff1f; 想象一下&#xff0c;你正在給朋友寄送兩種不同的東西&#xff1a;一份重要的合同文件和一疊度假時的風景明信片。對于合同文件&#xff0c;你會選擇掛號信&#xf…

redis快速入門教程

更新中基本概念安裝centOS安裝redis&#xff1a;yum install redis -y啟動&#xff1a;systemctl start redis設置開機啟動&#xff1a;systemctl enable redis檢查運行狀態&#xff1a;systemctl status redis遠程訪問編輯配置文件 vi /etc/redis.conf在其中修改為bind 0.0.0.…

UDP和TCP的主要區別是什么

UDP&#xff08;用戶數據報協議&#xff09;和 TCP&#xff08;傳輸控制協議&#xff09;是互聯網傳輸層的兩大核心協議&#xff0c;主要區別體現在??連接方式、可靠性、傳輸效率、頭部開銷??及??適用場景??上。以下是具體對比&#xff1a;??一、核心區別對比表???…

ASP .NET Core 8結合JWT輕松實現身份驗證和授權

身份驗證和授權是每一個后端服務必不可少的&#xff0c;可以實現對非法請求進行攔截&#xff0c;能夠有效保護數據的安全性。 JSON Web Token&#xff08;JWT&#xff09;是一項開放標準&#xff08;RFC 7519&#xff09;&#xff0c;它定義了一種緊湊且自包含的方法&#xff…

5G時代的智慧燈桿:塔能“一桿多用”方案如何激活城市新基建?

在《5G應用“揚帆”行動計劃》持續推進的進程之中&#xff0c;智慧桿已然成為了5G基站部署環節極為重要的載體&#xff0c;并且被明確地歸入到新型基礎設施建設的重點范疇之內。相關政策提出&#xff0c;要在2025年達成重點區域5G網絡全面且深度覆蓋的目標&#xff0c;與此同時…

護照閱讀器:國外證件識別的 OCR “解碼師”

國外證件版式多樣、語種繁雜&#xff0c;人工識別不僅耗時&#xff0c;還易因翻譯誤差、格式不熟悉導致信息錯漏。尤其在跨境業務場景中&#xff0c;傳統識別方式嚴重影響效率與準確性。護照閱讀器搭載的 OCR 技術成為破局關鍵。它能精準提取國外護照、駕照等證件上的多語種文字…

Linux部署Python服務

1、創建項目目錄與虛擬環境#確保安裝 Python 和 python3-venv 工具 sudo apt update sudo apt install python3 python3-pip python3-venvmkdir myproject cd myproject python3 -m venv venv # 創建虛擬環境#Linux source venv/bin/activate # 激活虛擬環境#Windowds venv\S…

【Python辦公】使用Python和Tkinter構建Excel數據導入MySQL工具(GUI版)

目錄 專欄導讀前言項目概述技術棧環境準備核心代碼實現1. 導入必要的庫2. 主應用類設計3. 用戶界面設計數據庫配置區域數據庫選擇區域4. 數據庫連接功能測試連接獲取數據庫列表5. 數據導入功能關鍵技術點解析1. SQLAlchemy 2.x 兼容性2. MySQL 8.0 認證問題3. 避免啟動時連接錯…

華為OD機試_2025 B卷_猜數字(Python,100分)(附詳細解題思路)

題目描述 一個人設定一組四碼的數字作為謎底&#xff0c;另一方猜。 每猜一個數&#xff0c;出數者就要根據這個數字給出提示&#xff0c;提示以XAYB形式呈現&#xff0c;直到猜中位置。 其中X表示位置正確的數的個數&#xff08;數字正確且位置正確&#xff09;&#xff0c;而…

【網絡安全】理解安全事件的“三分法”流程:應對警報的第一道防線

1. 簡介 在網絡安全領域&#xff0c;每天都會產生大量安全警報。作為一名安全分析師&#xff0c;識別、評估并優先處理這些警報的能力至關重要。三分法&#xff08;Triage&#xff09; 是確保安全團隊高效響應安全事件的核心流程&#xff0c;它能夠幫助我們合理分配資源、集中精…

AI大模型計數能力的深度剖析:從理論缺陷到技術改進

AI大模型計數能力的深度剖析&#xff1a;從理論缺陷到技術改進 AI大模型在計數任務上表現出明顯的局限性&#xff0c;這不僅反映了模型架構的核心缺陷&#xff0c;也揭示了當前深度學習技術在處理結構化信息時的本質挑戰。通過對文本計數、圖像計數以及相關技術改進方向的全面分…

[C語言初階]結構體初階

目錄一、結構體的聲明二、結構體的定義和初始化三、結構體成員訪問四、結構體傳參五、函數調用的參數壓棧&#xff08;了解&#xff09;在C語言中&#xff0c;我們知道數組是一組相同類型元素的集合&#xff0c;而結構體則更為靈活&#xff0c;它允許我們將不同類型的數據組合在…

LVS(Linux Virtual Server)集群技術詳解

一.集群和分布式: 集群&#xff1a;同一個業務系統&#xff0c;部署在多臺服務器上&#xff0c;集群中&#xff0c;每一臺服務器實現的功能沒有差別&#xff0c;數據和代碼都是一樣的 分布式&#xff1a;一個業務被拆成多個子業務&#xff0c;或者本身就是不同的業務&#…

leetcode_27 移除元素

1. 題意 給定一個數組&#xff0c;把不等于val的元素全部移動到數組的前面來。 不需要考慮值為val里的元素。 2. 題解 2.1 同向雙指針 我們利用雙指針&#xff0c;慢指針指向下一個插入的位置。而快指針不斷向前找到首個不為val的值&#xff0c;找到后將快指針位置值賦給慢…

Linux-Ubuntu下的git安裝與配置

一、安裝git1.打開終端&#xff0c;運行以下命令&#xff08;需要聯網&#xff09;sudo apt-get update sudo apt-get install git2.驗證安裝安裝完成之后&#xff0c;通過運行以下命令驗證git是否已經正確安裝&#xff1a;git --version二、配置git2.1.配置用戶名及郵箱地址在…