当前位置: 首页 > news >正文

毕业设计 基于51单片机的手机蓝牙控制8位LED灯亮灭设计

基于51单片机的手机蓝牙控制8位LED灯亮灭设计

  • 1、项目简介
    • 1.1 系统构成
    • 1.2 系统功能
  • 2、部分电路设计
    • 2.1 STC89C52单片机核心系统电路设计
    • 2.2 LED电路设计
    • 2.3 蓝牙模块电路设计
  • 3、部分代码展示
    • 3.1 定时器初始化以及中断处理
    • 3.2 串口初始化
    • 3.3 串口中断处理

1、项目简介

  • 选题指导,项目分享: https://gitee.com/lighter-z/embedded-base/tree/master
  • 点击查看详细资料

1.1 系统构成

本设计由STC89C52单片机电路+8位LED灯电路+蓝牙模块电路+电源电路组成。

1.2 系统功能

  • 1、通过手机APP可以控制8路LED灯的亮灭。
  • 2、通过手机APP可以控制8路LED灯的亮度。每个灯的亮度有3档。
  • 3、可以发送指令控制8个灯全灭和全亮。
    • 蓝牙发送数据内容:
      ON // 打开所有灯 大写字母’O’
      SN // 关闭所有灯
      Ax //一档打开 第x个灯 x为1-8中的一个数 如A2表示把led2灯打开的亮度为1挡
      Bx //二档打开 第x个灯 x为1-8中的一个数 如A2表示把led2灯打开的亮度为2挡
      Cx //三档打开 第x个灯 x为1-8中的一个数 如A2表示把led2灯打开的亮度为3挡

2、部分电路设计

2.1 STC89C52单片机核心系统电路设计

STC89C52单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后,单片机即可正常工作。

单片机最小系统原理图如下图所示:

2.2 LED电路设计

LED电路由8个LED构成,通过上拉电阻连接在51单片机的P0端口。

其具体电路原理图如下图所示:

实物图如下图所示:

2.3 蓝牙模块电路设计

本设计中使用JDY-30蓝牙模块,将蓝牙模块的RX引脚连接在51单片机的P31引脚,TX引脚连接在单片机的P30引脚。

蓝牙模块是指集成蓝牙功能的芯片基本电路集合,用于无线网络通讯。本蓝牙模块就是为了只能无线数据传输而专门打造的,本模块支持串行接口,支持SP蓝牙串口协议,具有成本低、体积小、收发灵敏性高等特点,只需配备少许的外围元件就能实现大功能。

其具体电路原理图如下图所示:

实物图如下:

3、部分代码展示

3.1 定时器初始化以及中断处理

void Init_Timer0(void)
{TMOD |= 0x01;	  //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响		     TH0=(65536-10000)/256;		  //重新赋值 20msTL0=(65536-10000)%256;EA=1;            //总中断打开ET0=1;           //定时器中断打开TR0=1;           //定时器开关打开
}void Timer0_isr(void) interrupt 1 
{TH0=(65536-5000)/256;		  //重新赋值 5msTL0=(65536-5000)%256;times_5ms++;}

3.2 串口初始化

void UART_Init(void)
{SCON  = 0x50;		        // SCON: 模式 1, 8-bit UART, 使能接收  TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装TH1   = 0xFD;               // TH1:  重装值 9600 波特率 晶振 11.0592MHzTL1 = TH1;  TR1   = 1;                  // TR1:  timer 1 打开                         EA    = 1;                  //打开总中断ES    = 1;                  //打开串口中断
}

3.3 串口中断处理

void UART_SER (void) interrupt 4 	//串行中断服务程序
{unsigned char R_buf;if(RI)                        //判断是接收中断产生{RI=0;                      //标志位清零R_buf=SBUF;if((R_buf=='O')||(R_buf=='o')){Commd_Flag=OPEN;	//接收到打开灯标志}else if((R_buf=='S')||(R_buf=='s')){Commd_Flag=CLOSE;	//接收到 关闭灯标志}else if((R_buf=='A')||(R_buf=='a')){				  Commd_Flag=DAGN01;	//接收到 关闭灯标志}else if((R_buf=='B')||(R_buf=='b')){Commd_Flag=DAGN02;	//接收到 关闭灯标志}else if((R_buf=='C')||(R_buf=='c')){Commd_Flag=DAGN03;	//接收到 关闭灯标志}else if((R_buf!='1')&&(R_buf!='2')&&(R_buf!='3')&&(R_buf!='4')&&(R_buf!='5')&&(R_buf!='6')&&(R_buf!='7')&&(R_buf!='8')&&(R_buf!='N')){Commd_Flag=INIT;	 //否则 初始化接受标志}if((Commd_Flag==OPEN)||(Commd_Flag==DAGN01))			//根据命令值进行打开相应的灯{switch(R_buf){case '1':pwmLed01=3;Commd_Flag=INIT;break;	//打开相应的灯 并恢复命令标志case '2':pwmLed02=3;Commd_Flag=INIT;break;			case '3':pwmLed03=3;Commd_Flag=INIT;break;			case '4':pwmLed04=3;Commd_Flag=INIT;break;			case '5':pwmLed05=3;Commd_Flag=INIT;break;	case '6':pwmLed06=3;Commd_Flag=INIT;break;			case '7':pwmLed07=3;Commd_Flag=INIT;break;			case '8':pwmLed08=3;Commd_Flag=INIT;break;case 'N':pwmLed01=3;pwmLed02=3;pwmLed03=3;pwmLed04=3;pwmLed05=3;pwmLed06=3;pwmLed07=3;pwmLed08=3;Commd_Flag=INIT;break;default:break;						 //此处错误判断 不可恢复命令标准}}
else if(Commd_Flag==CLOSE)//根据命令值进行关闭相应的灯{switch(R_buf){case '1':pwmLed01=1;Commd_Flag=INIT;break;	//打开相应的灯 并恢复命令标志case '2':pwmLed02=1;Commd_Flag=INIT;break;			case '3':pwmLed03=1;Commd_Flag=INIT;break;			case '4':pwmLed04=1;Commd_Flag=INIT;break;			case '5':pwmLed05=1;Commd_Flag=INIT;break;	case '6':pwmLed06=1;Commd_Flag=INIT;break;			case '7':pwmLed07=1;Commd_Flag=INIT;break;			case '8':pwmLed08=1;Commd_Flag=INIT;break;case 'N':pwmLed01=1;pwmLed02=1;pwmLed03=1;pwmLed04=1;pwmLed05=1;pwmLed06=1;pwmLed07=1;pwmLed08=1;Commd_Flag=INIT;break;default:break;						 //此处错误判断 不可恢复命令标准}}else if(Commd_Flag==DAGN02)//根据命令值进行关闭相应的灯{switch(R_buf){case '1':pwmLed01=6;Commd_Flag=INIT;break;	//打开相应的灯 并恢复命令标志case '2':pwmLed02=6;Commd_Flag=INIT;break;			case '3':pwmLed03=6;Commd_Flag=INIT;break;			case '4':pwmLed04=6;Commd_Flag=INIT;break;			case '5':pwmLed05=6;Commd_Flag=INIT;break;	case '6':pwmLed06=6;Commd_Flag=INIT;break;			case '7':pwmLed07=6;Commd_Flag=INIT;break;			case '8':pwmLed08=6;Commd_Flag=INIT;break;				default:break;						 //此处错误判断 不可恢复命令标准}}else if(Commd_Flag==DAGN03)//根据命令值进行关闭相应的灯{switch(R_buf){case '1':pwmLed01=9;Commd_Flag=INIT;break;	//打开相应的灯 并恢复命令标志case '2':pwmLed02=9;Commd_Flag=INIT;break;			case '3':pwmLed03=9;Commd_Flag=INIT;break;			case '4':pwmLed04=9;Commd_Flag=INIT;break;			case '5':pwmLed05=9;Commd_Flag=INIT;break;	case '6':pwmLed06=9;Commd_Flag=INIT;break;			case '7':pwmLed07=9;Commd_Flag=INIT;break;			case '8':pwmLed08=9;Commd_Flag=INIT;break;				default:break;						 //此处错误判断 不可恢复命令标准}}SBUF=R_buf;				   //返回接收到的数据}if(TI)  //如果是发送标志位,清零TI=0;
} 

相关文章:

毕业设计 基于51单片机的手机蓝牙控制8位LED灯亮灭设计

基于51单片机的手机蓝牙控制8位LED灯亮灭设计1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STC89C52单片机核心系统电路设计2.2 LED电路设计2.3 蓝牙模块电路设计3、部分代码展示3.1 定时器初始化以及中断处理3.2 串口初始化3.3 串口中断处理1、项目简介 选题指导&…...

一起Talk Android吧(第五百零八回:多层布局功能)

文章目录功能介绍使用方法示例代码各位看官们大家好,上一回中咱们说的例子是"图片滤镜ImageFilterView",这一回中咱们说的例子是" 多层布局功能"。闲话休提,言归正转, 让我们一起Talk Android吧!功能介绍 我…...

丁小喜の兵器谱(学生管理系统)

我的第一个独立看需求完成项目,虽然很简单(笑)建立一个可以增加,修改,删除,展示学生信息的系统首先是一个界面,让你决定进行哪个操作1.2.3.4.5分别对应不同的操作,switch与这一操作完…...

linux:字符串拷贝的五种方法:使用指针下标,指针变量加偏移量,指针变量自加等

字符串数组名做函数形参&#xff0c;会退化正指针变量&#xff0c;需要使用指针变量操作字符串 代码&#xff1a; #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <s…...

cesium常用方法汇集(工具篇)

1.Scene.prototype.pickPositionWorldCoordinates 根据屏幕坐标获取世界坐标 2&#xff0c;Scene.prototype.pickPosition 根据屏幕坐标获取世界坐标 3&#xff0c;Scene.prototype.drillPick 通过屏幕坐标拾取多个对象 4&#xff0c;Scene.prototype.pickFromRay 通过射线拾…...

分布式一致性与共识算法(一)

这里写目录标题是什么ACIDCAP组合一致性概念共识为什么需要共识算法会如何发展列举Paxos算法ZAB&#xff08;Zookeeper Atomic Broadcast&#xff09;协议Raft 算法参考引用是什么 从实现效果上来说&#xff0c;很多人或多或少都了解或者设计过具有强一致性的系统。但是&#…...

C++---最长上升子序列模型---怪盗基德的滑翔翼(每日一道算法2023.2.27)

注意事项&#xff1a; 本题为"线性dp—最长上升子序列的长度"的扩展题&#xff0c;所以dp思路这里就不再赘述。 题目&#xff1a; 怪盗基德是一个充满传奇色彩的怪盗&#xff0c;专门以珠宝为目标的超级盗窃犯。 而他最为突出的地方&#xff0c;就是他每次都能逃脱中…...

Python 之 Pandas 文件操作和读取 CSV 参数详解

文章目录一、Pandas 读取文件二、CSV 文件读取1. 基本参数2. 通用解析参数3. 空值处理相关参数4. 时间处理相关参数5. 分块读入相关参数一、Pandas 读取文件 当使用 Pandas 做数据分析的时&#xff0c;需要读取事先准备好的数据集&#xff0c;这是做数据分析的第一步。Panda 提…...

微服务的异步通信技术RabbitMQ

文章目录前言1.WorkQueue&#xff08;工作队列&#xff09;消息预取机制2.Publish&Subscribe&#xff08;发布-订阅&#xff09;1.Fanout&#xff08;广播&#xff09;2.DirectExchange&#xff08;路由&#xff09;3.TopicExchange&#xff08;话题&#xff09;MQ的优点前…...

Word处理控件Aspose.Words功能演示:使用 C++ 在 Word (DOC/DOCX) 中添加或删除水印

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…...

chatGPT模型原理

文章目录简介BertGPT 初代GPT-2GPT-3chatGPT开源ChatGPT简介 openai 的 GPT 大模型的发展历程。 Bert 2018年&#xff0c;自然语言处理 NLP 领域也步入了 LLM 时代&#xff0c;谷歌出品的 Bert 模型横空出世&#xff0c;碾压了以往的所有模型&#xff0c;直接在各种NLP的建模…...

四、阻塞队列

文章目录基础概念生产者消费者概念JUC阻塞队列的存取方法ArrayBlockingQueueArrayBlockingQueue的基本使用生产者方法实现原理ArrayBlockingQueue的常见属性add方法实现offer方法实现offer(time,unit)方法put方法消费者方法实现原理remove方法poll方法poll(time,unit)方法take方…...

企业电子招投标采购系统源码之登录页面

​ 信息数智化招采系统 服务框架&#xff1a;Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构&#xff1a;VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术&#xff1a;Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…...

SQL零基础入门学习(十三)

上一篇&#xff08;SQL零基础入门学习&#xff08;十二&#xff09;&#xff09; SQL 视图&#xff08;Views&#xff09; 视图是可视化的表。 SQL CREATE VIEW 语句 在 SQL 中&#xff0c;视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列&#xff0c;就像一个…...

Java实现简单KV数据库

用Java实现一个简单的KV数据库 开发思路&#xff1a; 用map存储数据&#xff0c;再用一个List记录操作日志&#xff0c;开一个新线程将List中的操作写入日志文件中&#xff0c;再开一个线程用于网络IO服务接收客户端的命令&#xff0c;再启动时检查日志&#xff0c;如果有数据就…...

【Spark分布式内存计算框架——Spark Streaming】5. DStream(上)

3. DStream SparkStreaming模块将流式数据封装的数据结构&#xff1a;DStream&#xff08;Discretized Stream&#xff0c;离散化数据流&#xff0c;连续不断的数据流&#xff09;&#xff0c;代表持续性的数据流和经过各种Spark算子操作后的结果数据流。 3.1 DStream 是什么…...

Spring系列-9 Async注解使用与原理

背景&#xff1a; 本文作为Spring系列的第九篇&#xff0c;介绍Async注解的使用、注意事项和实现原理&#xff0c;原理部分会结合Spring框架代码进行。 本文可以和Spring系列-8 AOP原理进行比较阅读 1.使用方式 Async一般注解在方法上&#xff0c;用于实现方法的异步&#xf…...

Python自动化测试实战篇(6)用PO分层模式及思想,优化unittest+ddt+yaml+request登录接口自动化测试

这些是之前的文章&#xff0c;里面有一些基础的知识点在前面由于前面已经有写过&#xff0c;所以这一篇就不再详细对之前的内容进行描述 Python自动化测试实战篇&#xff08;1&#xff09;读取xlsx中账户密码&#xff0c;unittest框架实现通过requests接口post登录网站请求&…...

Linux 进程:父子进程

目录一、了解子进程二、创建子进程1.创建子进程2.区分父子进程三、理解子进程四、创建子进程的意义进程就是运行中的应用程序&#xff0c;如果一个程序较为庞大&#xff0c;我们可以给这个程序创建多个进程&#xff0c;每个进程负责一部分代码的运行。 A进程如果创建了B进程&am…...

Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具

Unity 之 实现读取代码写进Word文档功能前言一&#xff0c;实现步骤1.1 逻辑梳理1.2 用到工具二&#xff0c;实现读写文件2.1 读取目录相关2.2 读写文件三&#xff0c;编辑器拓展3.1 编辑器拓展介绍3.2 实现界面可视化四&#xff0c;源码分享4.1 工具目录4.2 完整代码前言 之所…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...