基于51单片机的台灯控制(Proteus仿真)

        基于51单片机的台灯控制系统以AT89C51为主控,使用LCD1602作为系统主控,借助ADC0832进行ADC转换,获取光敏传感器的值,灯光颜色共有三种,分别是红绿蓝,系统有两种控制方式,一种是蓝牙控制,一种是传感器自动控制。

一、参考代码

        本次设使用ADC0832获取光敏传感器的值,一般而言,光线越强,led灯亮灯越大,表现在led亮灯数量越多,同时系统具有蓝牙控制功能,通过虚拟串口发送指令进行手动/自动模式切换、亮度控制、灯光模式切换。参考如下代码:

#include <REGX52.H>
#include "LCD1602.H"
#include "delay.h" 
#include "ADC0832.h"
#include "UART.h"typedef unsigned char u8;
typedef unsigned short u16;//定义灯额引脚
sbit Led_R1 = P2^0;
sbit Led_R2 = P2^1;
sbit Led_R3 = P2^2;sbit Led_G1 = P2^3;
sbit Led_G2 = P2^4;
sbit Led_G3 = P2^5;sbit Led_B1 = P2^6;
sbit Led_B2 = P2^7;
sbit Led_B3 = P1^0;//自动和手动模式
u8 auto_hand=0;
//三种模式的变量
u8 mode=0;
//环境光照值
u8 ad_val=0;
//亮度等级
u8 bright=0;
//总开关
u8 btn=0;//Led灯的设置
void Led_Set(u8 r1, u8 r2, u8 r3,u8 g1,u8 g2,u8 g3,u8 b1,u8 b2,u8 b3)
{Led_R1 = r1;Led_R2 = r2;Led_R3 = r3;Led_G1 = g1;Led_G2 = g2;Led_G3 = g3;Led_B1 = b1;Led_B2 = b2;Led_B3 = b3;
}//主函数
void main()
{//LCD初始化LCD_Init();//ADC初始化ADC0832_init1();//串口初始化UART_Init();//显示提示英文LCD_ShowString(2,1,"Light:");while(1){  //获取环境光照值ad_val = ADC0832_ReadAD1()*1.0/255*100;//自动模式,通过环境调节灯亮度if(auto_hand == 0){LCD_ShowString(1,1,"Auto");if(ad_val<30){bright=2;}if(ad_val>=30 && ad_val<60){bright=1;}if(ad_val>=60){bright=0;}}//串口调节灯亮度else if(auto_hand == 1){LCD_ShowString(1,1,"Hand");}//阅读模式if(mode == 0){LCD_ShowString(1,12,"Read ");//通过亮度等级调光if(btn == 0){if(bright == 0){Led_Set(0,1,1, 1,1,1, 1,1,1);}if(bright == 1){Led_Set(0,0,1, 1,1,1, 1,1,1);}if(bright == 2){Led_Set(0,0,0, 1,1,1, 1,1,1);}				}//关闭所有灯else{Led_Set(1,1,1, 1,1,1, 1,1,1);}}//休闲模式if(mode == 1){LCD_ShowString(1,12,"Relax");//通过亮度等级调光if(btn == 0){if(bright == 0){Led_Set(1,1,1, 0,1,1, 1,1,1);}if(bright == 1){Led_Set(1,1,1, 0,0,1, 1,1,1);}if(bright == 2){Led_Set(1,1,1, 0,0,0, 1,1,1);}					}//关闭所有灯else{Led_Set(1,1,1, 1,1,1, 1,1,1);}}//娱乐模式if(mode == 2){LCD_ShowString(1,12,"Asume");//通过亮度等级调光if(btn == 0){if(bright == 0){Led_Set(1,1,1, 1,1,1, 0,1,1);}if(bright == 1){Led_Set(1,1,1, 1,1,1, 0,0,1);}if(bright == 2){Led_Set(1,1,1, 1,1,1, 0,0,0);}				}//关闭所有灯else{Led_Set(1,1,1, 1,1,1, 1,1,1);}}//显示环境光照值LCD_ShowNum(2, 8, ad_val, 3);}
}     u8 cmd=0;void UATR_Routine() interrupt 4
{if(RI==1){cmd = SBUF;//自动/手动模式切换if(cmd == '1'){auto_hand++;auto_hand %= 2;}//串口调节灯		if(auto_hand == 1){//调节灯的开关if(cmd == '2'){btn = !btn;}//调节灯的亮度if(cmd == '3'){bright++;bright%=3;}}//灯光模式的切换if(cmd == '4'){mode++;mode%=3;}//回传数据UART_SendByte(cmd);RI=0;}		
}	

二、功能演示

1、初始状态

        初始状态下,LCD显示光照,自动模式、阅读模式模式,此时是自动模式,可以通过光敏传感器的值进行光照强度调整。如下:

2、自动模式

        自动模式会通过光照强度调整led亮度,表现在led亮灯数量不一样,亮灯数量越多表示灯光亮度越强,如下图:

3、手动模式

        手动模式表现在仿真上使用虚拟串口借助串口助手进行完成,如图,发送1进行自动/手动模式切换,如图,发送1可以将自动模式切换为手动模式。

        手动模式下,按下2可以进行灯光的开关,第一次按下2,led关闭,再次按下,led重新点亮。

        手动模式下,3指令可以调节亮度,并且亮度循环调节,也就是亮度从小到大然后最小亮度的循环切换,如下图:

        按下,可以进行灯光模式切换,循环切换阅读、放松、娱乐模式,如下图:

三、项目总结

        本次项目利用51单片机进行灯光控制,分别是自动/手动模式,以及阅读、方式、娱乐等模式,通过虚拟串口进行控制,集成灯光、亮度等一些控制方式。

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

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

相关文章

[Unity Demo]从零开始制作空洞骑士Hollow Knight第二集:通过InControl插件实现绑定玩家输入以及制作小骑士移动空闲动画

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、通过InControl插件实现绑定玩家输入二、制作小骑士移动和空闲动画 1.制作动画2.玩家移动和翻转图像3.状态机思想实现动画切换总结 前言 好久没来CSDN看看&…

HBase在大数据实时处理中的角色

HBase是一个分布式的、面向列的开源NoSQL数据库&#xff0c;它建立在Hadoop的HDFS之上&#xff0c;被设计用于处理大规模数据集。HBase非常适合于需要随机实时读写访问的应用程序&#xff0c;例如大数据分析、数据仓库和实时数据处理等场景。本文将探讨HBase是如何进行大数据实…

虚幻引擎 | (类恐鬼症)玩家和NPC语音聊天(中)

虚幻引擎 | &#xff08;类恐鬼症&#xff09;玩家和NPC语音聊天-CSDN博客 上篇偏重实现步骤&#xff0c;中篇偏重校准和降低延迟&#xff0c;下篇优化上下文和口音 TTS通用参数 ——————————————————————————————————————————— 以…

传统Malmquist-Luenberger指数与全局Malmquist-Luenberger指数的区别

1.全局技术前沿的构建 1.1传统ML指数 技术前沿的时间依赖性 传统的Malmquist-Luenberger&#xff08;ML&#xff09;指数在每个时期&#xff08;例如年份&#xff09;单独构建各自的技术前沿。这意味着每个时期的生产可能性集合和技术效率都是基于该时期的数据。 不可比性问…

基于SpringBoot+Vue+MySQL的IT技术交流和分享平台

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化转型的浪潮中&#xff0c;构建一个基于SpringBoot、Vue.js与MySQL的IT技术交流与分享平台显得尤为重要。该平台旨在汇聚广大IT从业者、开发者及爱好者&#xff0c;提供一个高效、便捷的线上空间&#xff0c;用于分享最新…

【笔记】1.2 弹性变形

文章目录 一、弹性变形及实质二、胡克定律1. 单向拉伸2. 剪切和扭转3. E、G和v的关系 三、弹性模量弹性模量的影响因素第二相铸铁石墨形态塑性变形温度影响不明显 四、弹性比功弹性比功表示 五、滞弹性弹性体纯弹性体实际弹性体 主要特征和机制延迟反应内部结构影响因素 弹性滞…

性能测试【Locust】基本使用介绍

一.前言 Locust是一款易于使用的分布式负载测试工具&#xff0c;基于事件驱动&#xff0c;使用轻量级执行单元&#xff08;如协程&#xff09;来实现高并发。 二.基本使用 以下是Locust性能测试使用的一个基础Demo示例&#xff0c;该示例有安装Locust、编写测试脚本、启动测…

王者荣耀改重复名(java源码)

王者荣耀改重复名 项目简介 “王者荣耀改重复名”是一个基于 Spring Boot 的应用程序&#xff0c;用于生成王者荣耀游戏中的唯一名称。通过简单的接口和前端页面&#xff0c;用户可以输入旧名称并获得一个新的、不重复的名称。 功能特点 生成新名称&#xff1a;提供一个接口…

【南方科技大学】CS315 Computer Security 【Lab2 Buffer Overflow】

目录 引言软件要求启动虚拟机环境设置禁用地址空间布局随机化&#xff08;ASLR&#xff09;设置编译器标志以禁用安全功能 概述BOF.ctestShellCode.ccreateBadfile.c 开始利用漏洞在堆栈上查找返回地址 实验2的作业 之前有写过一个 博客&#xff0c;大家可以先看看栈溢出基础。…

redis的基础数据结构-list列表

文章目录 1. redis的list数据结构1.1. list结构的特性1.2. 常用命令 2. 常见业务场景2.1 消息队列案例讲解背景优势解决方案代码实现 2.2 排行榜案例讲解背景优势解决方案代码实现 3. 注意事项&#xff1a; 1. redis的list数据结构 参考链接&#xff1a;https://mp.weixin.qq.…

Java面试篇基础部分-Java创建线程详解

导语   多线程的方式能够在操作系统的多核配置上更好的利用服务器的多个CPU的资源,这样的操作可以使得程序运行起来更加高效。Java中多线程机制提供了在一个进程内并发去执行多个线程,并且每个线程都并行的去执行属于线程处理的自己的任务,这样可以提高程序的执行效率,让…

【算法】-单调队列

目录 什么是单调队列 区域内最大值 区域内最小值 什么是单调队列 说到单调队列&#xff0c;其实就是一个双端队列&#xff0c; 顾名思义&#xff0c;单调队列的重点分为「单调」和「队列」。「单调」指的是元素的「规律」——递增&#xff08;或递减&#xff09;。「队列」指…

2.5 ADC模数转换

文章目录 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器AD转换的步骤 与 时间stm32ADC的转换模式 ADC框图stm32的ADC引脚配置stm32ADC的步骤 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转…

c#引用同一命名空间下的其他类

总体结构 Class1的内容 using System.Windows.Forms; namespace demo1 {internal class Class1{public class HelperClass{public void DoSomething(){MessageBox.Show("Doing something useful..."); } }} }Class2的内容 using System.W…

【C++ Primer Plus习题】16.2

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <string> #inc…

基于YOLO V8的学生上课行为检测系统【python源码+Pyqt5界面+数据集+训练代码】有报告

目的是利用YOLOV8这一先进的深度学习技术&#xff0c;开发一个自动化的学生上课行为检测系统。通过对上课行为数据集进行深入分析和标注&#xff0c;我们训练了YOLOV8模型&#xff0c;使其能够精确识别学生在课堂上的各种行为状态。这一系统能够实时监控并分析学生的行为&#…

Ruoyi Cloud K8s 部署

参考 https://blog.csdn.net/Equent/article/details/137779505 https://blog.csdn.net/weixin_48711696/article/details/138117392 https://zhuanlan.zhihu.com/p/470647732 https://gitee.com/y_project/RuoYi-Cloud https://blog.csdn.net/morecccc/article/details/1…

北大领衔:多智能体研究登上Nature子刊

这篇笔记可以作为接EoT那篇笔记内容中某种思想内涵的延伸和实践&#xff0c;即均是将智能体之间的关系描述为一种拓扑连接结构下的网络化关系进行研究&#xff08;贴近物理世界更加真实、自然、客观的拓扑结构&#xff09;&#xff0c;在这项研究中&#xff0c;更多的扩展到大规…

关于 vue/cli 脚手架实现项目编译运行的源码解析

1.vue项目运行命令解析 在日常开发中&#xff0c;vue 项目通过vue-cli-service脚手架包将项目运行起来&#xff0c;常用的命令例如&#xff1a; npm run serve npm run build 上述执行命令实际一般对应为项目中 package.json 文件的 scripts属性中编写的脚本命令&#xff0c;在…

解码3D数字人及AIGC产品,如何赋能医美行业全场景业务增长

9月13日&#xff0c;第六届“医美小小聚”暨医美信息与服务创新发展大会在热烈的氛围中拉开帷幕。此次盛会汇聚了医美行业的顶尖精英与前瞻者&#xff0c;他们围绕“聚焦营销&#xff0c;合规增长&#xff0c;融合共创”的主题&#xff0c;深入剖析了行业的新趋势、新机遇与新挑…