一個比較簡單的課程設計:智能澆花系統
用的是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**********************/
|