news 2026/9/13 15:28:56

基于51单片机的蓝牙智能台灯设计

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于51单片机的蓝牙智能台灯设计

基于51单片机的蓝牙智能台灯设计

(程序+原理图+设计报告)

功能介绍

具体功能:

1、当人靠近时,灯亮起,如果人靠得太近,蜂鸣器会发出警报,一段时间后如果没有人,灯会自动熄灭;

2、当人离开时,灯会熄灭;

3、通过手机蓝牙可以控制灯的开关和亮度。发送“1”、“2”命令可以使灯在“较亮”、“很亮”之间切换,发送“C”命令可以让灯灭掉。

​演示视频:

基于51单片机的蓝牙智能台灯设计

#include "sysdefine.h" //#include <string.h> #define LOW 1 #define HIGH 3 #define PWM_XZ HIGH unsigned long times_20ms=0; unsigned char pwm_val=HIGH; unsigned long times_pwm=0; unsigned int HotW_numC=0; unsigned int HotW_numO=0; unsigned char Led_crl=FALSE; unsigned int Juli_num=0; unsigned char JuLi1_crl=FALSE; extern bit ack; void main (void) { unsigned char num=0; Init_Timer0(); //定时器0初始化 UART_Init(); DelayMs(50); //延时有助于稳定 SendStr_U("system start!\r\n",15); Deng_led=1; while(1) //主循环 { if(HotW_key==1) { DelayMs(20); if(HotW_key==1) { HotW_numC=0; HotW_numO++; if(HotW_numO>=80)//2S时间 有人 { num=ReadADC(0); //读取AD检测到的 光敏地值 if(num>=210) {} else { Led_crl=FALSE; } HotW_numO=0; } } } else if(HotW_key==0) { HotW_numO=0; HotW_numC++; DelayMs(2); if(HotW_numC>=800)//2S { HotW_numC=0; Led_crl=FALSE; } } if(JuLi1_key==0) { DelayMs(20); if(JuLi1_key==0) { Juli_num++; if(Juli_num>=50) //1s { buzzer=0; if(Juli_num>=450) //10S { JuLi1_crl=TRUE; } } } } else { JuLi1_crl=FALSE; buzzer=1; Juli_num=0; } } } void Init_Timer0(void) { TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响 TH0=(65536-10000)/256; //重新赋值 20ms TL0=(65536-10000)%256; EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 } 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.0592MHz TL1 = TH1; TR1 = 1; // TR1: timer 1 打开 EA = 1; //打开总中断 ES = 1; //打开串口中断 } void SendByte_U(unsigned char dat) { unsigned char time_out; time_out=0x00; SBUF = dat; while((!TI)&&(time_out<10)) {time_out++;DelayMs(1);} TI = 0; } void SendStr_U(unsigned char *s,unsigned char length) { unsigned char NUM; NUM=0x00; while(NUM<length) { SendByte_U(*s); s++; NUM++; } } void Timer0_isr(void) interrupt 1 { TH0=(65536-5000)/256; //重新赋值 10ms TL0=(65536-5000)%256; times_20ms++; if(times_20ms>=0xfffffffe) { times_20ms=0; } times_pwm++; if((Led_crl==TRUE)&&(JuLi1_crl==FALSE)) { if(times_pwm<=pwm_val) { Deng_led=0; if(times_pwm==PWM_XZ) { times_pwm=0; } } else if((times_pwm>pwm_val)&&(times_pwm<=PWM_XZ)) { Deng_led=1; if(times_pwm==PWM_XZ) { times_pwm=0; } } else { Deng_led=1; times_pwm=0; } } else { Deng_led=1; times_pwm=0; } } void UART_SER (void) interrupt 4 //串行中断服务程序 { unsigned char R_buf; if(RI) //判断是接收中断产生 { RI=0; //标志位清零 R_buf=SBUF; if(SBUF=='1') { pwm_val=LOW; } else if(SBUF=='2') { pwm_val=HIGH; } else if(SBUF=='C') { pwm_val=0; } } if(TI) //如果是发送标志位,清零 TI=0; } /*------------------------------------------------ 读AD转值程序 输入参数 Chl 表示需要转换的通道,范围从0-3 返回值范围0-255 ------------------------------------------------*/ unsigned char ReadADC(unsigned char Chl) { unsigned char Val; Start_I2c(); //启动总线 SendByte(AddWr); //发送器件地址 if(ack==0)return(0); SendByte(0x40|Chl); //发送器件子地址 if(ack==0)return(0); Start_I2c(); SendByte(AddWr+1); if(ack==0)return(0); Val=RcvByte(); NoAck_I2c(); //发送非应位 Stop_I2c(); //结束总线 return(Val); }

硬件设计

使用元器件:

单片机:STC89C52;

(注意:单片机是通用的,无论51还是52、无论stc还是at都一样,引脚功能都一样。程序也是一样的。)

硬件设计模块

1、传感器及信号处理部分,它用于检测人体辐射红外信号和光强信号,然后将它们处理成数字信号,以便后续处理。

2、51单片机组成的中央处理单元,它可以处理传感器传来的数字信号,并根据这些信号发出控制命令。

3、输出提醒电路及电源控制电路,它可以发出提醒信号并根据89C51发出的命令来控制灯光等设备的开关。

工作过程

系统使用光敏电阻检测光强度并将其转换为数字信号,通过单片机89C51处理信号并发出控制命令。当环境光强度较强时,光敏电阻阻值较小,信号处理电路检测到低电平信号,禁止热释电红外传感器工作。当光强度较弱时,光敏电阻阻值变大,信号处理电路接收到高电平,启动热释电红外传感器工作。传感器1可以探测到较远的距离,当人体进入传感器1的控测范围内且光强度较弱时,信号检测电路处理信号并向单片机发送中断信号,触发灯光控制电路,使灯慢慢变亮。当人体过于靠近桌面且在热释电红外传感器2的控测范围内时,热释电红外传感器2检测到信号,同时在传感器1的控测范围内,信号处理电路向89C51发送信号,触发警报以使人离开,若在设定的时间内未离开桌面,则灯光逐渐熄灭。当人体离开热释电红外传感器2的控测范围且在热释电红外传感器1的控测范围内时,灯光又慢慢变亮。

结构图:

设计资料

01 原理图

本系统原理图采用Altium Designer19设计,具体如图!

02 程序

本设计使用软件keil5版本编程设计,资料中有软件安装教程,无需担心!具体如图!

03 设计报告

七千字设计报告,具体如下!

04 设计资料

资料获取请关注同名公众号,全部资料包括程序(含注释)、AD原理图、开题报告、参考论文、结构图、任务书等。具体内容如下,全网最全! !

资料获取请观看前面演示视频!

点赞分享一起学习成长。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 11:04:00

45、实时系统中的线程调度与优先级管理

实时系统中的线程调度与优先级管理 1. 工作线程与系统挂起问题 在系统运行过程中,如果工作线程不被接收的数据包抢占,那么工作线程的任务会持续运行,从而阻止该 CPU 上优先级较低的任务运行,最终可能导致系统挂起。当其他所有线程的优先级都低于工作线程时,就没有其他线…

作者头像 李华
网站建设 2026/9/11 7:33:23

OpenProject版本选择终极指南:从社区版到企业级的完整决策路径

OpenProject版本选择终极指南&#xff1a;从社区版到企业级的完整决策路径 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject 在项目管理软件的选择过…

作者头像 李华
网站建设 2026/9/12 17:32:28

快速掌握d2s-editor:暗黑破坏神2存档修改的终极指南

快速掌握d2s-editor&#xff1a;暗黑破坏神2存档修改的终极指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款功能强大的暗黑破坏神2存档编辑工具&#xff0c;专为D2和D2R玩家设计&#xff0c;通过直观的Web界…

作者头像 李华
网站建设 2026/9/12 23:51:05

α-Bungarotoxin, AF680 ,α-眼镜蛇毒素-荧光素680标记物,反应原理

α-Bungarotoxin, AF680 &#xff0c;α-眼镜蛇毒素-荧光素680标记物&#xff0c;反应原理一、α-Bungarotoxin, AF680的中文名称α-Bungarotoxin, AF680 在中文文献中通常称为&#xff1a;“α-眼镜蛇毒素-荧光素680标记物”其中&#xff1a;α-Bungarotoxin&#xff08;α…

作者头像 李华
网站建设 2026/9/13 11:47:44

智能体互联网:AI时代公共服务均等化的基础设施

【摘要】智能体互联网以具备感知、决策和协同能力的智能体为节点&#xff0c;通过统一编排算力、数据和模型&#xff0c;构建“服务随网走”的新型基础设施。它突破传统公共服务对物理网点和专业人才的依赖&#xff0c;在政务、教育、医疗、社保、文化等领域提供724小时、多终端…

作者头像 李华
网站建设 2026/9/13 10:34:04

APP已死?用户永生!

【先看PPT后看文章】一、以用户为名义的战争硝烟无处不在最近一段时间不太平&#xff0c;到处都在战争&#xff1a;手机桌面上&#xff0c;一个个人助手在和微信「打架」、和银行软件「打架」&#xff1a;谁都想占据离用户最近的入口&#xff1b;现实世界里&#xff0c;俄罗斯和…

作者头像 李华