一個比較簡單的課程設計:智能澆花
通俗易懂
用的是STM32
有需要的可以下載
單片機源程序如下:
- // ADC 單通道采集
- #include "stm32f10x.h"
- #include "./usart/bsp_usart.h"
- #include "bsp_adc.h"
- #include "bsp_pwm_output.h"
- #include "./lcd/bsp_ili9341_lcd.h"
- #include "./flash/bsp_spi_flash.h"
- // ADC1轉換的電壓值通過MDA方式傳到SRAM
- extern __IO uint16_t ADC_ConvertedValue;
- int get_YL_value_percent(float a);
- int b;
- // 局部變量,用于保存轉換計算后的電壓值
- float ADC_ConvertedValueLocal;
- int humi;
- char humiBuff[10];
- // 軟件延時
- void Delay(__IO uint32_t nCount)
- {
- for(; nCount != 0; nCount--);
- }
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- //LCD初始化
- ILI9341_Init();
- // 配置串口
- USART_Config();
- // ADC 初始化
- ADCx_Init();
- //pwm配置
- TIMx_PWM_Init();
-
- printf("\r\n ----土壤濕度讀出數據----\r\n");
-
- LCD_SetColors(RED,BLACK);
- ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH); /* 清屏,顯示全黑 */
-
- while (1)
- {
- ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3; // 讀取轉換的AD值
-
- //換算成對應的濕度值
- b=get_YL_value_percent(ADC_ConvertedValueLocal);
- humi=100-b;
-
- printf("\r\n 轉換到的電壓值 = %04fV \r\n", ADC_ConvertedValueLocal);
- printf("\r\n 獲取濕度 = %d %RH \r\n",humi);
-
- //把整形轉換成字符串
- //LCD顯示當前濕度
- LCD_SetFont(&Font8x16);
- LCD_SetTextColor(RED);
- ILI9341_DispStringLine_EN(LINE(5),"The new humi is");
- sprintf(humiBuff," %dRH ",humi);
- LCD_SetTextColor(GREEN);
- LCD_SetFont(&Font24x32);
- ILI9341_DispString_EN(50,180,humiBuff);
-
- if((humi>0)&&(humi<5)) //正轉
- {
- Delay(0xff);
- TIM_SetCompare1(TIM3,900); //設置定時器3通道1 新的占空比
- TIM_SetCompare2(TIM3,0);
- Delay(0xfffe);
- }
- else //不轉
- {
- Delay(0xff);
- TIM_SetCompare1(TIM3,0);
- TIM_SetCompare2(TIM3,0);
- Delay(0xfffe);
- }
- Delay(0xffffe);
- }
- }
- /*********************************************END OF FILE**********************/
復制代碼
所有資料51hei提供下載:
智能灌溉系統.rar
(783.2 KB, 下載次數: 134)
2018-4-20 18:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|