版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
河北理工大學(xué)信息學(xué)院 摘要 附錄B/*USERCODEBEGINHeader*//*********************************************************************************@file:main.c*@brief:Mainprogrambody*******************************************************************************@attention**Copyright(c)2022STMicroelectronics.*Allrightsreserved.**ThissoftwareislicensedundertermsthatcanbefoundintheLICENSEfile*intherootdirectoryofthissoftwarecomponent.*IfnoLICENSEfilecomeswiththissoftware,itisprovidedAS-IS.********************************************************************************//*USERCODEENDHeader*//*Includes*/#include"main.h"#include"adc.h"#include"tim.h"#include"usart.h"#include"gpio.h"/*Privateincludes*//*USERCODEBEGINIncludes*/#include"./HAL/key/key.h"#include"./HAL/OLED/OLED_NEW.H"#include"./HAL/DELAY/delay.h"#include"./HAL/HX711/hx711.h"#include"./HAL/dht11/dht11.h"#include"./HAL/AliESP8266/AliESP8266.h"/*USERCODEENDIncludes*//*Privatetypedef*//*USERCODEBEGINPTD*/voidKey_function(void); //°′?üoˉêyvoidMonitor_function(void); //?à2aoˉêyvoidDisplay_function(void); //??ê?oˉêyvoidManage_function(void); //′|àíoˉêy/*USERCODEENDPTD*//*Privatedefine*//*USERCODEBEGINPD*/#defineLED(a)(a?HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET))#defineRELAY(a)(a?HAL_GPIO_WritePin(RELAY_GPIO_Port,RELAY_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(RELAY_GPIO_Port,RELAY_Pin,GPIO_PIN_RESET))#defineBODY_IRHAL_GPIO_ReadPin(GPIOB,GPIO_PIN_4)uint8_tUSART1_TX_BUF[200];#defineu1_printf(...)HAL_UART_Transmit(&huart1,USART1_TX_BUF,sprintf((char*)USART1_TX_BUF,__VA_ARGS__),0xffff)uint8_tUSART2_TX_BUF[200];#defineu2_printf(...)HAL_UART_Transmit(&huart2,USART2_TX_BUF,sprintf((char*)USART2_TX_BUF,__VA_ARGS__),0xffff)/*USERCODEENDPD*//*Privatemacro*//*USERCODEBEGINPM*//*USERCODEENDPM*//*Privatevariables*//*USERCODEBEGINPV*/uint8_tkey_num,flag_display;//°′?üó???ê?±?á?uint16_ttime_1ms,time_500ms;//??ê±±?á?1ms,500ms//′??ú1μ?êy?Y??è?uint8_tuart1_value;//′??ú′?μ?μ¥??êy?Y//′??úμ?′¢′?êy×é£?′??úμ??óê?ê±??£?′??ú′??μμ?êyá?uint8_tuart1_buf[36],uart1_time,uart1_num;uint8_tuart1_rx_flag;//′??úμ???è??μμ?±ê????//?àí¨μàêy?Y??è?uint8_tadc_ch;//adcμ???êyuint32_tadc_buf[2];//adcêy?μμ?′?′¢êy×éuint16_ttemp,humi;//??êa?èuint32_tmaopi,press; //???¤?¢??á?±?á?uint8_tCH4;//?×íéfloatwind;//·??ù±?á?uint8_twind_speed;//·??ùuint16_ttemp_min=10,temp_max=35,humi_min=20,humi_max=80;//??êa?è?D?μ±?á?uint16_tpress_yu=2000;//?1á|?D?μuint8_twind_yu=8,CH4_yu=50;//·??ùoí?×íé?D?μuint16_tPublish_time; //WIFIí??í??ê±uint8_tflag_Publish; //WIFIí??í±ê????uint8_tquake_flag;//?e?ˉ±ê????uint8_tvoice_flag;uint16_tvoice_time;//uint8_tvoive_buf[5];/*USERCODEENDPV*//*Privatefunctionprototypes*/voidSystemClock_Config(void);/*USERCODEBEGINPFP*//*USERCODEENDPFP*//*Privateusercode*//*USERCODEBEGIN0*/uint16_tdong_get_adc(){//?a??ADC1HAL_ADC_Start(&hadc1);//μè′yADC×a??íê3é£?3?ê±?a100msHAL_ADC_PollForConversion(&hadc1,100);//?D??ADCê?·?×a??3é1|if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC)){//?áè??μreturnHAL_ADC_GetValue(&hadc1);}return0;}/***********°′?üéè??oˉêy*****/voidKey_function(void){ key_num=Chiclet_Keyboard_Scan(); //°′?üé¨?è if(key_num!=0) //óD°′?ü°′?? { switch(key_num) { case1: //°′?ü1£??D???£ê? flag_display++; if(flag_display>=8) //ò?128???£ê? flag_display=0; OLED_Clear(); //°′ò???£????áò?′? break; case2: //°′?ü2 switch(flag_display) { case0: //????0 break; case1: //????1 if(temp_min<temp_max-1) { temp_min++; } break; case2: //????2 if(temp_max<99) { temp_max++; } break; case3: //????3 if(humi_min<humi_max-1) { humi_min++; } break; case4: //????4 if(humi_max<99) { humi_max++; } break; case5: //????5 if(CH4_yu<99) { CH4_yu++; } break; case6: //????6 if(wind_yu<30) { wind_yu++; } break; case7: //????7 if(press_yu<5000) { press_yu+=100; } break; default: break; } break; case3: //°′?ü3 switch(flag_display) { case0: //????0 quake_flag=(quake_flag==1)?0:1; break; case1: //????1 if(temp_min>1) { temp_min--; } break; case2: //????2 if(temp_max>temp_min+1) { temp_max--; } break; case3: //????3 if(humi_min>1) { humi_min--; } break; case4: //????4 if(humi_max>humi_min+1) { humi_max--; } break; case5: //????5 if(CH4_yu>1) { CH4_yu--; } break; case6: //????6 if(wind_yu>1) { wind_yu--; } break; case7: //????7 if(press_yu>100) { press_yu-=100; } break; default: break; } break; default: break; } }}/***********?à2aoˉêy*****/voidMonitor_function(void){ if(time_500ms==1) { time_500ms=0;DHT11_Read_TempAndHumidity(&DHT11_Data);//μ÷ó???è???êa?èoˉêy temp=DHT11_Data.temperature;//??è????è humi=DHT11_Data.humidity/10;//??è?êa?è press=Hx711_Get_Weight(maopi);//??è??1á| for(adc_ch=0;adc_ch<2;adc_ch++){//·?±e′?·?í¨μà1?¢2μ?ADC?μadc_buf[adc_ch]=dong_get_adc();} wind=adc_buf[0]/4096.0*3300; //??è?·??ùμ??1?μ wind=wind*0.027; //×a??·??ùêy?μ wind_speed=wind*10; CH4=adc_buf[1]/4095.0*99;//??500ms??è?ò?′??×íé?¨?è }}/***********??ê?oˉêy*****/voidDisplay_function(void){ switch(flag_display) //?ù?Y2?í?μ???ê??£ê?±ê????£???ê?2?í? { case0: Oled_ShowCHinese(0,0,(uint8_t*)"??"); Oled_ShowString(16,0,(uint8_t*)":");OLED_Show_Temp(24,0,temp);Oled_ShowCHinese(72,0,(uint8_t*)"êa"); Oled_ShowString(88,0,(uint8_t*)":");OLED_Show_Humi(96,0,humi); Oled_ShowCHinese(0,2,(uint8_t*)"?×íé"); Oled_ShowString(32,2,(uint8_t*)":");OLED_ShowNum(40,2,CH4,2); Oled_ShowCHinese(0,4,(uint8_t*)"·??ù"); Oled_ShowString(32,4,(uint8_t*)":");OLED_Show_Temp(40,4,wind_speed); Oled_ShowCHinese(0,6,(uint8_t*)"?1á|"); Oled_ShowString(32,6,(uint8_t*)":");OLED_ShowNum(40,6,press,4); if(quake_flag==1) { Oled_ShowCHinese(80,6,(uint8_t*)"μ??eá?"); } else { Oled_ShowString(80,6,(uint8_t*)""); } break; case1: Oled_ShowCHinese(24,1,(uint8_t*)"???è×?D??μ");OLED_ShowNum(56,4,temp_min,2); break; case2: Oled_ShowCHinese(24,1,(uint8_t*)"???è×?′ó?μ");OLED_ShowNum(56,4,temp_max,2); break; case3: Oled_ShowCHinese(24,1,(uint8_t*)"êa?è×?D??μ");OLED_ShowNum(56,4,humi_min,2); break; case4: Oled_ShowCHinese(24,1,(uint8_t*)"êa?è×?′ó?μ");OLED_ShowNum(56,4,humi_max,2); break; case5: Oled_ShowCHinese(24,1,(uint8_t*)"?×íé×?′ó?μ");OLED_ShowNum(56,4,CH4_yu,2); break; case6: Oled_ShowCHinese(24,1,(uint8_t*)"·??ù×?′ó?μ");OLED_ShowNum(56,4,wind_yu,2); break; case7: Oled_ShowCHinese(24,1,(uint8_t*)"?1á|×?′ó?μ");OLED_ShowNum(48,4,press_yu,4); break; }}/***********′|àíoˉêy*****/voidManage_function(void){ if(CH4>CH4_yu)//?×íé′óóú?D?μ£?·?éè×a?ˉ { RELAY(1); } else { RELAY(0); } if(BODY_IR==0)//è?ì?oìía?ì2aμ?£?μ?áá { LED(1); } else { LED(0); } if(quake_flag==1||CH4>CH4_yu||press>=press_yu||wind_speed>wind_yu*10||temp>temp_max*10||temp<temp_min*10||humi>humi_max||humi<humi_min) { if(voice_flag==0) { voice_flag=1; if(quake_flag==1) { u1_printf("%c%c%c%c%c",0xaa,0x55,0x08,0x55,0xaa);//óDμ??e£????±êèé¢ } elseif(CH4>CH4_yu) { u1_printf("%c%c%c%c%c",0xaa,0x55,0x05,0x55,0xaa);//??ì?D1??£????±êèé¢ } elseif(press>=press_yu) { u1_printf("%c%c%c%c%c",0xaa,0x55,0x07,0x55,0xaa);//?1á|òì3£ } elseif(wind_speed>wind_yu*10) { u1_printf("%c%c%c%c%c",0xaa,0x55,0x06,0x55,0xaa);//·??ù?μ3?±ê } elseif(temp>temp_max*10) { u1_printf("%c%c%c%c%c",0xaa,0x55,0x01,0x55,0xaa);//???è3?±ê } elseif(temp<temp_min*10) { u1_printf("%c%c%c%c%c",0xaa,0x55,0x02,0x55,0xaa);//???èμíóúéè?¨?μ } elseif(humi>humi_max) { u1_printf("%c%c%c%c%c",0xaa,0x55,0x03,0x55,0xaa);//êa?è3?±ê } else { u1_printf("%c%c%c%c%c",0xaa,0x55,0x04,0x55,0xaa);//êa?èμíóúéè?¨?μ } } }}/*USERCODEEND0*//***@briefTheapplicationentrypoint.*@retvalint*/intmain(void){/*USERCODEBEGIN1*//*USERCODEEND1*//*MCUConfiguration*//*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();/*USERCODEBEGINInit*//*USERCODEENDInit*//*Configurethesystemclock*/SystemClock_Config();/*USERCODEBEGINSysInit*//*USERCODEENDSysInit*//*Initializeallconfiguredperipherals*/MX_GPIO_Init();MX_TIM1_Init();MX_USART1_UART_Init();MX_USART2_UART_Init();MX_ADC1_Init();/*USERCODEBEGIN2*/HAL_TIM_Base_Start_IT(&htim1);// HAL_UART_Receive_IT(&huart1,&uart1_value,1); HAL_UART_Receive_IT(&Huart_wifi,&uartwifi_value,1);/*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/OLED_Init();OLED_Clear();DHT11_GPIO_Init();Hx711_GPIO_Init();maopi=Hx711_Get_Maopi();//??è????÷?μESP8266_init(); //WiFi3?ê??ˉwhile(1){Key_function(); //°′?üoˉêy Monitor_function(); //?à2aoˉêy Display_function(); //??ê?oˉêy Manage_function(); //′|àíoˉêy Ali_MQTT_Recevie(); //WIFI?óê?oˉêy Ali_MQTT_Publish();/*USERCODEENDWHILE*//*USERCODEBEGIN3*/}/*USERCODEEND3*/}/***@briefSystemClockConfiguration*@retvalNone*/voidSystemClock_Config(void){RCC_OscInitTypeDefRCC_OscInitStruct={0};RCC_ClkInitTypeDefRCC_ClkInitStruct={0};RCC_PeriphCLKInitTypeDefPeriphClkInit={0};/**InitializestheRCCOscillatorsaccordingtothespecifiedparameters*intheRCC_OscInitTypeDefstructure.*/RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState=RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue=RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSI_DIV2;RCC_OscInitStruct.PLL.PLLMUL=RCC_PLL_MUL16;if(HAL_RCC_OscConfig(&RCC_OscInitStruct)!=HAL_OK){Error_Handler();}/**InitializestheCPU,AHBandAPBbusesclocks*/RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider=RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV1;if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_2)!=HAL_OK){Error_Handler();}PeriphClkInit.PeriphClockSelection=RCC_PERIPHCLK_ADC;P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 婚慶策劃與執(zhí)行流程手冊(cè)
- 2026年劇本殺運(yùn)營(yíng)公司宣傳資料發(fā)放管理制度
- 2025年立體庫自動(dòng)化技術(shù)在農(nóng)產(chǎn)品物流配送中的應(yīng)用場(chǎng)景及建設(shè)可行性報(bào)告
- 2025年手工藝主播五年技藝傳承報(bào)告
- 2025年工業(yè)廢水零排放五年處理工藝報(bào)告
- 2026年量子計(jì)算材料行業(yè)突破報(bào)告
- 內(nèi)鏡檢查中密切觀察與配合
- 跨境電商直播基地建設(shè)與2025年跨境支付技術(shù)創(chuàng)新可行性報(bào)告
- 銀川輔警面試題目及答案
- 湖南省中小學(xué)安全課件
- 中藥外洗治療化療導(dǎo)致外周神經(jīng)毒課件
- 上海市松江區(qū)2026屆初三一模英語試題(含答案)
- 2026年孝昌縣供水有限公司公開招聘正式員工備考題庫及參考答案詳解一套
- 臨床技能培訓(xùn)中的教學(xué)理念更新
- 光伏系統(tǒng)并網(wǎng)調(diào)試施工方案
- 2025年太原理工大學(xué)馬克思主義基本原理概論期末考試參考題庫
- 2026屆廣東東莞七校高三上學(xué)期12月聯(lián)考政治試題含答案
- 感染科結(jié)核病防治培訓(xùn)指南
- 思想政治教育研究課題申報(bào)書
- 開發(fā)區(qū)再生水資源化利用建設(shè)項(xiàng)目可行性研究報(bào)告
- 知識(shí)產(chǎn)權(quán)法考試重點(diǎn)復(fù)習(xí)資料
評(píng)論
0/150
提交評(píng)論