【单片机毕业设计选题24043】-可旋转式电视支架控制系统设计与实现

news2024/12/26 0:16:48

系统功能:

系统操作说明:

上电后OLED显示 “欢迎使用电视支架系统请稍后”,两秒后进入正常界面显示

第一页面第一行显示 Mode:Key,

第二行显示 TV:Middle

短按B5按键可控制步进电机左转,

第二行显示 TV:Left 后正常显示 TV:Middle

短按B6按键可控制步进电机右转,

第二行显示 TV:Right 后正常显示 TV:Middle

短按B4按键可切换到第二页面显示。

第二页面第一行显示 Mode:IR,

第二行显示 TV:Middle

短按遥控器按键“+”可控制步进电机左转,第二行显示 TV:Left 后正常显示 TV:Middle

短按遥控器按键“-”可控制步进电机右转,第二行显示 TV:Right 后正常显示 TV:Middle

短按B4按键可切换到第三页面显示。

第三页面第一行显示 Mode:Gesture,

第二行显示 TV:Middle

手掌在PAJ7620手势模块上方左滑可控制步进电机左转,第二行显示 TV:Left 后正常显示 TV:Middle手掌在PAJ7620手势模块上方右滑可控制步进电机右转,第二行显示 TV:Right 后正常显示 TV:Middle短按B4按键可切换到第四页面显示。

第四页面第一行显示 Mode:Gyro,

第二行显示 TV:Middle,

第三行显示pitch角度,

第四行显示Dir方向。

第四行显示 Dir:Left时,倾斜MPU6050模块后恢复可控制步进电机左转,第二行显示 TV:Left 后正常显示 TV:Middle短按B5按键, 第四行显示 Dir:Right 倾斜MPU6050模块后恢复可控制步进电机右转,第二行显示 TV:Right 后正常显示 TV:Middle

短按B4按键可切换到第一页面显示。

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

传感器电路:

资料获取地址

系统主要功能模块代码

初始化代码:

  /* USER CODE BEGIN 1 */


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

  MX_USART2_UART_Init();

  MX_USART3_UART_Init();

  /* USER CODE BEGIN 2 */

    HAL_Delay(100);

    SetUart1RxToInput();

    HAL_Delay(50);

//uart2打开接收中断

    HAL_UART_Receive_IT(&huart2, (uint8_t*)&uart2RecBuff, 1);

//uart3打开接收中断

    HAL_UART_Receive_IT(&huart3, (uint8_t*)&uart3RecBuff, 1);

//初始化手势模块

    if(InitPAJ7620()==1)

    {

        printf("%s", "PAJ7620 Init OK");

        InitGesture();

    }

    else

    {

        printf("%s", "PAJ7620 Init FAIL");

    }

//初始化显示

    InitOled();

    InitOledDisp();


  /* USER CODE END 2 */

系统显示:
 

//处理OLED显示内容

void SystemDisplay(void)

{

    char textBuf[20];

    static uint8_t dispCnt = 0;


    dispCnt++;

    if(dispCnt>=DISP_UPDATE_INTER)

    {

        dispCnt = 0;

//显示第一行

        if(sysMode==KEY_MODE)

        {

            sprintf(textBuf, "Mode:Key        ");

        }

        else if(sysMode==IR_MODE)

        {

            sprintf(textBuf, "Mode:IR         ");

        }

        else if(sysMode==GESTURE_MODE)

        {

            sprintf(textBuf, "Mode:Gesture    ");

        }

        else if(sysMode==MPU6050_MODE)

        {

            sprintf(textBuf, "Mode:Gyro       ");

        } 

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

//显示第二行

        if(turnLeft==true)

        {

            sprintf(textBuf, "TV:Left         ");   

        }

        else if(turnRight==true)

        {

            sprintf(textBuf, "TV:Right        ");   

        }

        else

        {

            sprintf(textBuf, "TV:Middle       ");   

        }

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

//显示第三行

        if(sysMode==MPU6050_MODE)

        {

            sprintf(textBuf, "pitch:%6.1f    ", pitchVal); 

        }

        else

        {

            sprintf(textBuf, "                "); 

        }

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

//显示第四行

        if(sysMode==MPU6050_MODE)

        {

            if(mpu6050Dir==false)

            {

                sprintf(textBuf, "Dir:Left        ");             

            }

            else

            {

                sprintf(textBuf, "Dir:Right       "); 

            }

        }

        else

        {

            sprintf(textBuf, "                "); 

        }

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

    }

}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1888098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【操作系统期末速成】 EP04 | 学习笔记(基于五道口一只鸭)

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️2.1 考点七:进程通信2.2 考点八:线程的概念2.3 考点九:处理机调度的概念及原则2.4 考点十:调度方式与调度算法 一、前言🚀…

因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议,而此协议是不安全的 解决方法

目录 1. 问题所示2. 解决方法3. 解决方法1. 问题所示 输入共享文件地址的时候,出现如下信息: 因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议,而此协议是不安全的,可能会是你的系统遭受攻击。你的系统需要SMB2或更高版本截图如下所示: 2. 解决…

查看电脑显卡(NVIDIA)应该匹配什么版本的CUDA Toolkit

被串行计算逼到要吐时,决定重拾CUDa了,想想那光速般的处理感觉(夸张了)不要太爽,记下我的闯关记录。正好我的电脑配了NVIDIA独显,GTX1650,有菜可以炒呀,没有英伟达的要绕道了。回到正…

茗鹤APS高级计划排程系统,在集团多工厂协同生产下的应用

随着业务规模的扩大和市场的全球化,越来越多的企业选择“总部多工厂基地”的模式,此种模式大幅提升企业的产能与产量,有效分散风险。然后,与之而来的是对企业的管理提出更高的管理要求。多个生产基地不仅面临集团下发的周期性计划…

[漏洞分析] CVE-2024-6387 OpenSSH核弹核的并不是很弹

文章目录 漏洞简介漏洞原理补丁分析漏洞原理 漏洞利用漏洞利用1: SSH-2.0-OpenSSH_3.4p1 Debian 1:3.4p1-1.woody.3 (Debian 3.0r6, from 2005) [无ASLR无NX]漏洞利用原理漏洞利用关键点 漏洞利用2: SSH-2.0-OpenSSH_4.2p1 Debian-7ubuntu3 (Ubuntu 6.06.1, from 2006) [无ASLR…

Python模拟火焰文字效果:炫酷的火焰字动效

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame定义火焰效果类主循环 完整代码 引言 火焰文字效果是一种炫酷的视觉效果,常用于广告、游戏和艺术设计中。在这篇博客中,我们将使用Python创建一个火焰文字的动画效果。通过利用Py…

元素的宽度和高度未知,如何水平垂直居中,3个小办法。

在前端开发中,如果元素的宽度和高度未知,但需要将其水平和垂直居中,可以使用以下方法之一: 使用Flexbox布局: Flexbox是一种强大的布局模型,可以轻松实现元素的居中。可以通过以下CSS代码实现水平和垂直居…

# Sharding-JDBC从入门到精通(7)- Sharding-JDBC 公共表 与 读写分离

Sharding-JDBC从入门到精通(7)- Sharding-JDBC 公共表 与 读写分离 一、Sharding-JDBC 公共表 1、公共表 公共表属于系统中数据量较小,变动少,而且属于高频联合查询的依赖表。参数表、数据字典表等属于此类型。可以将这类表在每…

LabVIEW汽车ECU测试系统

开发了一个基于LabVIEW开发的汽车发动机控制单元(ECU)测试系统。该系统使用了NI的硬件和LabVIEW软件,能够自动执行ECU的功能测试和性能测试,确保其在不同工作条件下的可靠性和功能性。通过自动化测试系统,大大提高了测…

深度网络现代实践 - 深度前馈网络之结构设计篇

序言 深度网络结构设计作为人工智能领域的基石,正引领着技术创新的浪潮。通过模拟人脑神经元间的复杂连接,深度神经网络展现了卓越的特征学习与模式识别能力。随着大数据与计算能力的提升,设计高效、精准且泛化能力强的深度网络结构成为研究…

Linux基础 - LNMP 架构部署动态网站环境

目录 零. 简介 一. 部署 二. 安装 Nginx 三. 安装MySQL 四. 安装PHP 五. 配置网站目录 六. 测试环境 零. 简介 LNMP 是指 Linux Nginx MySQL PHP 这一组合架构,用于部署动态网站环境。 Linux 作为操作系统,提供了稳定、安全和高效的基础平台。…

Linux基础 - MariaDB 数据库管理系统

目录 零. 简介 一. 安装 二. 基本使用 1. 设置root密码 2. 创建库 3. 创建表 4.添加数据 5. 查看数据 三. 管理表单及数据 四. 数据库的备份及恢复 零. 简介 MariaDB 是一种流行的开源数据库管理系统,它是 MySQL 的一个分支。 MariaDB 保留了与 MySQL 的…

学习笔记——动态路由——OSPF(工作原理)

九、OSPF协议的工作原理 1、原理概要 (1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系。 (2)建立邻居关系后,给邻居路由器发送数据库描述报文(DD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器…

提高页面性能:懒加载和预加载都是啥原理。

懒加载(Lazy Loading)和预加载(Preloading)是在 Web 开发中常用的两种优化技术,用于提高页面性能和用户体验。那他们之间有什么不同,又有哪些应用场景呢,本文给小伙伴们分享下。 一、懒加载 懒…

【Python】已解决:ERROR: No matching distribution found for JPype1

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:ERROR: No matching distribution found for JPype1 一、分析问题背景 在安装Python的第三方库时,有时会遇到“ERROR: No matching distribution fo…

three.js地理坐标系有哪些,和屏幕坐标系的转换。

坐标系很好理解,就是点线面体的位置,一个点是一个坐标,一条线段2个坐标,一个矩形四个坐标,一个立方体8个坐标,three.js面对的是三维空间,屏幕则是二维的,这就面临着转换问题&#xf…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《面向电网调峰的电动汽车聚合商多层级实时控制策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

从零开始使用 Docsify 搭建文档站点

引言 在当今的技术环境中,拥有一份易于访问和美观的文档是至关重要的。Docsify 是一个非常适合快速搭建文档站点的工具,它简单易用,且不需要生成静态文件。本文将带你一步步从零开始使用 Docsify 搭建一个文档站点。 1. 安装 Node.js 和 np…

【面试干货】值传递与引用传递:理解Java中的参数传递机制

【面试干货】值传递与引用传递:理解Java中的参数传递机制 1、值传递(Call by Value)2、引用传递(Call by Reference)3、总结 💖The Begin💖点点关注,收藏不迷路💖 值传递…