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

相关推荐
双古21 分钟前
步进电机调试记录(先让我的步进电机转起来)
单片机·嵌入式硬件
lixzest25 分钟前
STM32开发中,线程启动异常问题排查简述
stm32·嵌入式硬件
程序员JerrySUN1 小时前
全面理解 Linux 内核性能问题:分类、实战与调优策略
java·linux·运维·服务器·单片机
学习噢学个屁1 小时前
基于STM32语音识别柔光台灯
c语言·stm32·单片机·嵌入式硬件·语音识别
糯米导航1 小时前
Java毕业设计:办公自动化系统的设计与实现
java·开发语言·课程设计
糯米导航1 小时前
Java毕业设计:WML信息查询与后端信息发布系统开发
java·开发语言·课程设计
程序员阿龙3 小时前
【精选】计算机毕业设计Python Flask海口天气数据分析可视化系统 气象数据采集处理 天气趋势图表展示 数据可视化平台源码+论文+PPT+讲解
python·flask·课程设计·数据可视化系统·天气数据分析·海口气象数据·pandas 数据处理
欢乐熊嵌入式编程4 小时前
欢乐熊大话蓝牙知识14:用 STM32 或 EFR32 实现 BLE 通信模块:从0到蓝牙,你也能搞!
stm32·单片机·嵌入式硬件
傍晚冰川4 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
SY师弟7 小时前
51单片机基础部分——矩阵按键检测
嵌入式硬件·矩阵·51单片机