【单片机毕业设计选题24105】-基于单片机的自动配料机控制系统

系统功能:

系统分为自动状态和手动状态上电默认为手动状态,手动状态下可以通过按键和蓝牙手动控制步进电机正反转,

自动状态下根据采集到的两路接近传感器信号自动控制步进电机正反转。

系统上电后,OLED显示"欢迎使用请稍后",两秒后进入正常页面显示,第一行显示采集到的温湿度,第二行

显示系统状态(正转反转或停止状态),第四行显示系统模式(手动或自动)

短按B4按键切换系统模式,手动或自动

短按B5按键步进电机正转

短按B6按键步进电机反转

手机APP连接蓝牙模块后,自动模式下系统定时上报温湿度信息和系统状态, 手动模式下可以通过APP下发控制命令

控制步进电机正反转, 控制命令分别为字符F和R

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

传感器采集电路:

资料获取地址

系统主要功能模块代码

初始化代码:

cpp 复制代码
  /* USER CODE END 1 */


  /* MCU Configuration--------------------------------------------------------*/


  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();


  /* USER CODE BEGIN Init */

    InitVar();


  /* 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_USART1_UART_Init();

  /* USER CODE BEGIN 2 */

    HAL_Delay(100);

    SetUart1RxToInput();

    HAL_Delay(50);

//uart1打开接收中断

    HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);

//初始化显示

    InitOled();

    InitOledDisp();

    ResetDHT11();


  /* USER CODE END 2 */

系统控制代码;

cpp 复制代码
//系统信息更新

void SystemControl(void)

{

    static uint8_t sysCnt = 0;

   

    sysCnt++;   

    if(sysCnt>=SYS_UPDATE_INTER)

    {

        sysCnt = 0;

        if(DHT11ReadData()==0)  //DHT11温湿度读取OK

        {

            ;

        }  

//系统模式为自动模式       

        if(sysMode==SYS_AUTO)

        {

//打印温湿度值

            printf("Temp:%02d Humi:%02d\r\n", DHT11_Data.temp_int, DHT11_Data.humi_int);

//打印系统状态

            if(sysState==SYS_STOP)

            {

                printf("State:Stop\r\n"); 

            }

            else if(sysState==SYS_FORWARD)

            {

                printf("State:Forward\r\n"); 

            }

            else if(sysState==SYS_REVERSAL)

            {

                printf("State:Reversal\r\n"); 

            }

        }        

    }

//自动模式下判断系统状态

    if(sysMode==SYS_AUTO)

    {

        if(GetForwardStatus()==LOW_LEVEL)

        {

            sysState = SYS_FORWARD;

        }

        else if(GetReversalStatus()==LOW_LEVEL)

        {

            sysState = SYS_REVERSAL;

        }

        else

        {

            sysState = SYS_STOP;

        }

    }

//根据系统状态控制步进电机正反转

    if(sysState==SYS_FORWARD)

    {

        LED_ON();

        StepperRotateForward();

        LED_OFF();

        sysState = SYS_STOP;

    }

    else if(sysState==SYS_REVERSAL)

    {

        LED_ON();

        StepperRotateReversal();  

        LED_OFF();

        sysState = SYS_STOP;

    }

}

系统显示:

cpp 复制代码
//处理OLED显示内容

void SystemDisplay(void)

{

    char textBuf[20];


//第一行显示采集到的温度值

    sprintf(textBuf, "Temp:%02d Humi:%02d", DHT11_Data.temp_int, DHT11_Data.humi_int);   

    OledShowString(0, 0, (uint8_t*)textBuf, OLED_FONT_8X16); 

//第二行显示系统状态

    if(sysState==SYS_STOP)

    {

        sprintf(textBuf, "State:Stop    "); 

    }

    else if(sysState==SYS_FORWARD)

    {

        sprintf(textBuf, "State:Forward "); 

    }

    else if(sysState==SYS_REVERSAL)

    {

        sprintf(textBuf, "State:Reversal"); 

    }

    OledShowString(0, 2, (uint8_t*)textBuf, OLED_FONT_8X16);

//第三行显示系统模式,手动或自动

    if(sysMode==SYS_AUTO)

    {

        sprintf(textBuf, "Mode:Auto  "); 

    }

    else

    {

        sprintf(textBuf, "Mode:Manual"); 

    }

    OledShowString(0, 4, (uint8_t*)textBuf, OLED_FONT_8X16);

}

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

相关推荐
武昌库里写JAVA6 分钟前
39.剖析无处不在的数据结构
java·vue.js·spring boot·课程设计·宠物管理
李白的粉6 小时前
基于springboot的在线教育系统
java·spring boot·毕业设计·课程设计·在线教育系统·源代码
The Mr.Nobody8 小时前
STM32MPU开发之旅:从零开始构建嵌入式Linux镜像
linux·stm32·嵌入式硬件
阿川!8 小时前
嵌入式软件--stm32 DAY 3
stm32·单片机·嵌入式硬件
#金毛9 小时前
STM32的定时器输出PWM时,死区时间(DTR)如何计算
stm32·单片机·嵌入式硬件
无脑学c++9 小时前
STM32串口重定向:MDK与GCC重定向需重写的不同函数
stm32·单片机·物联网
Invinciblenuonuo10 小时前
STM32八股【6】-----CortexM3的双堆栈(MSP、PSP)设计
stm32·单片机·嵌入式硬件
2401_8888597111 小时前
STM32 TIM编码器接口
stm32·单片机·嵌入式硬件
【0931】11 小时前
51单片机中断
单片机·嵌入式硬件
苹果酱056711 小时前
2020-06-23 暑期学习日更计划(机器学习入门之路(资源汇总)+概率论)
java·vue.js·spring boot·mysql·课程设计