【单片机毕业设计选题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三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

相关推荐
wenchm26 分钟前
细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的另一种方法
stm32·单片机·嵌入式硬件
苹果酱05671 小时前
前端面试vue篇:Vue2 和 Vue3 在设计和性能上有显著区别
java·spring boot·毕业设计·layui·课程设计
编码追梦人2 小时前
如何实现单片机的安全启动和安全固件更新
单片机
电子工程师UP学堂2 小时前
电子应用设计方案-16:智能闹钟系统方案设计
单片机·嵌入式硬件
飞凌嵌入式2 小时前
飞凌嵌入式T113-i开发板RISC-V核的实时应用方案
人工智能·嵌入式硬件·嵌入式·risc-v·飞凌嵌入式
blessing。。3 小时前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
嵌新程5 小时前
day03(单片机高级)RTOS
stm32·单片机·嵌入式硬件·freertos·rtos·u575
Lin2012305 小时前
STM32 Keil5 attribute 关键字的用法
stm32·单片机·嵌入式硬件
计算机毕设孵化场5 小时前
计算机毕设-基于springboot的高校网上缴费综合务系统视频的设计与实现(附源码+lw+ppt+开题报告)
java·spring boot·计算机外设·音视频·课程设计·高校网上缴费综合务系统视频·计算机毕设ppt
电工小王(全国可飞)5 小时前
STM32 RAM在Memory Map中被分为3个区域
stm32·单片机·嵌入式硬件