基于STM32的光照測(cè)量報(bào)警仿真設(shè)計(jì)
(Proteus仿真+程序設(shè)計(jì)+設(shè)計(jì)報(bào)告+講解視頻
)
仿真圖Proteus 8.9
程序編譯器:keil 5
編程語(yǔ)言:C語(yǔ)言
設(shè)計(jì)編號(hào):C0111
1.主要功能
本次嵌入式課程設(shè)計(jì)綜合實(shí)驗(yàn)的內(nèi)容為基于STM32單片機(jī)的光照強(qiáng)度采集報(bào)警系統(tǒng)。完成LCD1602液晶顯示、光敏電阻、蜂鳴器控制等多項(xiàng)任務(wù)。
1、以STM32為最小系統(tǒng)電路進(jìn)行連接,用LCD1602液晶顯示屏顯示光照強(qiáng)度和光照閾值。
2、用光敏電阻進(jìn)行光照強(qiáng)度測(cè)量。
3、可以通過(guò)按鍵可以設(shè)置光照閾值。設(shè)置按鍵進(jìn)入設(shè)置模式/退出設(shè)置模式,按鍵加減調(diào)整閾值。
4、當(dāng)光強(qiáng)超過(guò)設(shè)置的閾值時(shí)有聲光報(bào)警,對(duì)應(yīng)報(bào)警指示燈點(diǎn)亮,蜂鳴器報(bào)警。
5、默認(rèn)光照強(qiáng)度100Lux。
STM32單片機(jī) LCD1602 按鍵 光照傳感器
資料下載鏈接:
通過(guò)網(wǎng)盤分享的文件:KEY_C0111
鏈接: https://pan.baidu.com/s/1AMzJsXzeY2ZGYnVBwPEJsQ?pwd=btwv
提取碼: btwv
2.仿真設(shè)計(jì)
打開(kāi)仿真工程,雙擊proteus中的單片機(jī),選擇hex文件路徑,然后開(kāi)始仿真。
開(kāi)始仿真后LCD1602液晶第一行顯示LIGHT光照強(qiáng)度=70Lux,第二行顯示光照強(qiáng)度報(bào)警值,。
調(diào)整光照為90Lux,高于閾值,蜂鳴器報(bào)警。
3.程序設(shè)計(jì)
程序是用keil5 mdk版本打開(kāi)的,如果打開(kāi)有問(wèn)題,核實(shí)下keil的版本。程序是HAL版本編寫的,有stm32cubemx配置文件。有注釋可以結(jié)合講解視頻理解。
int main(void)
{
/* USER CODE BEGIN 1 */
ADC_ChannelConfTypeDef sConfig = {0}; //建立sConfig結(jié)構(gòu)體
char str[20]; //字符串的存放數(shù)組
uint32_t adcv; //存放ADC轉(zhuǎn)換結(jié)果
set_flag = 0;
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; //采樣周期為1.5個(gè)周期
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC1_Init();
MX_USART1_UART_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
LCD_Init(); //初始化LCD1602
HAL_TIM_Base_Start_IT(&htim3);//開(kāi)啟定時(shí)器3
//打開(kāi)串口1接收中斷,接收數(shù)據(jù)存入dat數(shù)組,數(shù)組長(zhǎng)度為1
HAL_UART_Receive_IT(&huart1, dat, 1);
// LCD_ShowString(0,0,dis_str);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
sConfig.Channel = ADC_CHANNEL_1; //選擇通道1
HAL_ADC_ConfigChannel(&hadc1, &sConfig); //選擇ADC1的通道道1
HAL_ADC_Start(&hadc1); //啟動(dòng)ADC1
HAL_ADC_PollForConversion(&hadc1, 10); //等待ADC1轉(zhuǎn)換結(jié)束,超時(shí)設(shè)定為10ms
adcv = HAL_ADC_GetValue(&hadc1); //讀取ADC1的轉(zhuǎn)換結(jié)果
// temp=(float)adcv*(3.3/4095)*100;
light_temp=light_intensity(adcv);
sprintf(str,"LIGHT=%4.0fLux ",light_temp);
// LCD_ShowString(0,0,"MV:");
LCD_ShowString(0,0,str);
HAL_UART_Transmit(&huart1, (uint8_t *)str, 20, 10); //串口1發(fā)送字符串,數(shù)組長(zhǎng)度為5,超時(shí)10ms
HAL_UART_Transmit(&huart1, (uint8_t *)&"nr", 2, 10); //串口1發(fā)送字符串,數(shù)組長(zhǎng)度為2,超時(shí)10ms
if(set_flag){//設(shè)置模式
sprintf(str,"%4.0fLux",warming_val);
LCD_ShowString(1,0,"SET:");
LCD_ShowString(1,4,str);
}else{
sprintf(str,"%4.0fLux",warming_val);
LCD_ShowString(1,0,"ALM:");
LCD_ShowString(1,4,str);
}
HAL_UART_Transmit(&huart1, (uint8_t *)&"ALM=", 3, 10); //串口1發(fā)送字符串,數(shù)組長(zhǎng)度為12,超時(shí)10ms
HAL_UART_Transmit(&huart1, (uint8_t *)str, 8, 10); //串口1發(fā)送字符串,數(shù)組長(zhǎng)度為5,超時(shí)10ms
HAL_UART_Transmit(&huart1, (uint8_t *)&"nr", 2, 10); //串口1發(fā)送字符串,數(shù)組長(zhǎng)度為2,超時(shí)10ms
if(light_temp>warming_val){//如果超過(guò)報(bào)警值
// HAL_GPIO_WritePin(GPIOA,BEEP_Pin, GPIO_PIN_RESET);//BEEP引腳拉低
HAL_GPIO_WritePin(GPIOA,LED0_Pin, GPIO_PIN_SET);
}else{
// HAL_GPIO_WritePin(GPIOA,BEEP_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,LED0_Pin, GPIO_PIN_RESET);//BEEP引腳拉低
}
HAL_ADC_Stop(&hadc1); //停止ADC1
HAL_Delay(300);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
程序流程圖
4.設(shè)計(jì)報(bào)告
9126字設(shè)計(jì)報(bào)告,內(nèi)容包括設(shè)計(jì)目標(biāo)、硬件設(shè)計(jì)、軟件設(shè)計(jì)、結(jié)論等。
隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,嵌入式系統(tǒng)在環(huán)境監(jiān)測(cè)領(lǐng)域的應(yīng)用日益廣泛。光照強(qiáng)度作為環(huán)境參數(shù)之一,在農(nóng)業(yè)大棚、智能倉(cāng)儲(chǔ)、工業(yè)照明等場(chǎng)景中具有重要監(jiān)測(cè)價(jià)值。傳統(tǒng)光照監(jiān)測(cè)設(shè)備功能單一、交互性差,難以滿足實(shí)時(shí)顯示與動(dòng)態(tài)調(diào)控的需求。本設(shè)計(jì)以STM32單片機(jī)為核心,結(jié)合傳感器技術(shù)與人機(jī)交互模塊,構(gòu)建一套具備閾值報(bào)警功能的光照采集系統(tǒng),通過(guò)Proteus仿真驗(yàn)證實(shí)現(xiàn)低成本、高效率的開(kāi)發(fā)流程,為嵌入式課程綜合實(shí)驗(yàn)提供典型案例。
通過(guò)本次設(shè)計(jì),我們希望能夠提高對(duì)單片機(jī)的理解和應(yīng)用能力。通過(guò)實(shí)踐和探索,我們希望能夠掌握相關(guān)的硬件和軟件設(shè)計(jì)方法,為今后的學(xué)習(xí)和工作打下堅(jiān)實(shí)的基礎(chǔ)。同時(shí),我們也希望能夠通過(guò)這次設(shè)計(jì),培養(yǎng)我們的團(tuán)隊(duì)協(xié)作能力和創(chuàng)新精神。
5.下載鏈接
0、常見(jiàn)使用問(wèn)題及解決方法–必讀!!?。?/p>
1、程序代碼
2、Proteus仿真
3、功能要求
4、開(kāi)題報(bào)告
5、設(shè)計(jì)報(bào)告
6、框圖
7、講解視頻
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡(jiǎn)易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊(cè)
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開(kāi)查找嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
資料下載鏈接:
通過(guò)網(wǎng)盤分享的文件:KEY_C0111
鏈接: https://pan.baidu.com/s/1AMzJsXzeY2ZGYnVBwPEJsQ?pwd=btwv
提取碼: btwv