【TB作品】51单片机 Proteus仿真 00002仿真-智能台灯色调倒计时光强

在这里插入图片描述

实验报告:基于51单片机的智能台灯控制系统

背景

本实验旨在设计一个基于51单片机的智能台灯控制系统,该系统可以通过按键进行手动控制,并能根据环境光强度自动调节台灯亮度。此外,系统还具备倒计时关灯功能。

器件连接

  1. 51单片机(STC89C52RC)
  2. LCD显示屏
    • RS:P2^5
    • RW:P2^6
    • EN:P2^7
    • 数据端口:P0
  3. ADC0832模数转换器
    • CS:P1^0
    • CLK:P1^1
    • DIO:P1^2
  4. LED灯
    • LED1:P1^7
    • LED2:P1^6
  5. 按键
    • key_01:P3^0
    • key_02:P3^1
    • key_03:P3^2

硬件介绍

  1. 51单片机

    • STC89C52RC是一款高性能、低功耗的8位微控制器,具有丰富的I/O接口和强大的处理能力。
  2. LCD显示屏

    • 使用LCD1602显示屏,通过4位或8位并行接口与单片机连接,用于显示当前状态和设置项。
  3. ADC0832

    • 一款8位分辨率的模数转换器,用于将模拟信号(如光强传感器的输出)转换为数字信号,供单片机处理。
  4. LED灯

    • 作为控制对象,通过PWM(脉宽调制)信号调节其亮度。
  5. 按键

    • 用户接口,用于设置和控制台灯模式及参数。

设计原理

电路原理

  1. LCD显示屏连接

    • RS、RW、EN分别连接到P2的5、6、7脚,数据端口连接到P0口。
    • 通过设定RS、RW和EN信号,控制LCD显示指令和数据。
  2. ADC0832连接

    • 通过P1口的0、1、2脚与单片机连接,分别为CS、CLK和DIO信号。
    • 通过控制CS、CLK和DIO,实现模拟信号到数字信号的转换。
  3. LED灯连接

    • LED1和LED2分别连接到P1的7、6脚,通过PWM信号控制其亮度。
  4. 按键连接

    • key_01、key_02、key_03分别连接到P3的0、1、2脚,通过检测按键状态实现功能选择和参数调整。

程序原理

  1. LCD显示初始化

    • 设置显示模式、光标移动模式和显示开关,通过函数LCD_init实现。
  2. 按键扫描

    • 通过函数KeySscan扫描按键状态,并通过防抖处理确保按键检测的准确性。
  3. ADC0832数据获取

    • 通过函数Get_AD_Result从指定通道读取模拟信号,并转换为数字信号。
  4. LED亮度控制

    • 通过PWM信号控制LED亮度,根据环境光强度或用户设置调整PWM占空比。
  5. 倒计时功能

    • 通过定时器中断实现秒级倒计时功能,并在倒计时结束时关闭LED灯。

核心代码说明

void LCD_write_com(unsigned char com) {
    RS_CLR;
    RW_CLR;
    EN_SET;
    DataPort = com;   // 命令写入端口
    delay_lcd_ms(5);
    EN_CLR;
}

void LCD_write_data(unsigned char dataa) {
    RS_SET;
    RW_CLR;
    EN_SET;
    DataPort = dataa;  // 数据写入端口
    delay_lcd_ms(5);
    EN_CLR;
}

void init_timer1(void) {
    TMOD |= 0x10;  // 定时器1为工作方式1  16bit
    TH1 = (65536 - 500) / 256;
    TL1 = (65536 - 500) % 256;
    ET1 = 1;  // 开定时器1中断
    TR1 = 1;  // 开定时器
    EA = 1;  // 开总开关
}

主要功能

  1. 显示功能

    • 初始化显示屏并在不同模式下显示相应信息,如手动模式、自动模式和倒计时功能。
  2. 按键功能

    • 实现模式切换和参数调整,通过按键选择不同功能并调整相应参数。
  3. 自动亮度调节

    • 根据环境光强度自动调整LED亮度,使得台灯在不同光照条件下保持适宜的亮度。
  4. 倒计时关灯

    • 通过定时器中断实现倒计时功能,在设定时间结束后自动关闭台灯。

实验结果

通过上述设计,实现了一个功能齐全的智能台灯控制系统,具备手动和自动模式调节亮度、显示屏显示当前状态和倒计时关灯功能。通过调试和验证,系统工作稳定,功能实现效果良好。

总结

本实验通过硬件电路设计和软件编程,成功实现了智能台灯控制系统的设计。通过实验验证,系统能够根据用户设置和环境光强度自动调节亮度,具备较高的实用性和智能化水平。未来可进一步优化系统性能,增加更多智能功能,如远程控制和语音识别等。

资源代码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

四大常见的排序算法JAVA

1. 冒泡排序 相邻的元素两两比较,大的放右边,小的放左边 第一轮比较完毕之后,最大值就已经确定,第二轮可以少循环一次,后面以此类推 如果数组中有n个数据,总共我们只要执行n-1轮的代码就可以 package Bu…

ARMv8寄存器详解

文章目录 一、ARMv8寄存器介绍二、通用寄存器三、 PSTAE寄存器四、特殊寄存器五、系统寄存器 一、ARMv8寄存器介绍 本文我来给大家介绍一下ARMv8的寄存器部分,ARMv8中有34个寄存器,包括31个通用寄存器、一个栈指针寄存器SP(X31),一个程序计数器寄存器PC…

【图书推荐】《HTML5+CSS3 Web前端开发与实例教程(微课视频版)》

本书用来干什么 详解HTML5、CSS3、Flex布局、Grid布局、AI技巧,通过两个网站设计案例提升Web前端开发技能,为读者深入学习Web前端开发打下牢固的基础。 配套资源非常齐全,可以当Web前端基础课的教材。 内容简介 本书秉承“思政引领&#…

C生万物之文件操作

文章目录 一、为什么使用文件?二、什么是文件?1、程序文件2、数据文件3、文件名 三、文件的打开和关闭1、文件指针2、文件的打开和关闭 四、文件的顺序读写1. 8个重要的库函数1.1 单字符输入输出【fputc和fgetc】1.2 文本行输入输出【fputs和fgets】1.3 …

robotframework-appiumLibrary 应用 - 实现 app 自动化

1、安装appiumLibrary第三方库 运行pip命令:pip install robotframework-appiumlibrary 若已安装,需要更新版本可以用命令:pip install -U robotframework-appiumlibrary 2、安装app自动化环境。 参考我的另外一篇专门app自动化环境安装的…

elastic-job 定时任务 —— elasticjob 介绍与使用教程

文章目录 Elastic-Job 介绍相关依赖elastic-job 目录结构SimpleJob 简单作业编码下载并启动 ZooKeeper编写定时任务代码并启动 Elastic-Job 介绍 概述: Elastic-Job 是当当网开源的一个分布式调度解决方案,基于 Quartz 二次开发的,由两个相…

科普新能源充电桩

充电桩是新能源电动车的配套基础设施,为电动车提供充电服务,与我们的生活也是息息相关,本篇文章来科普一下充电桩基础知识。 充电桩的分类 按照供电方式分类 交流充电桩:特点是小电流、桩体较小、安装灵活;直流充电…

Linux shell编程学习笔记63:free命令 获取内存使用信息

0 前言 在系统安全检查中,内存使用情况也是一块可以关注的内容。Linux提供了多个获取内存信息的命令很多。今天我们先研究free命令。 1 free命令的功能、用法和选项说明 1.1 free命令的功能 free 命令可以显示系统内存的使用情况,包括物理内存、交换…

论文1:多模态人类活动识别综述

论文题目:A Review of Multimodal Human Activity Recognition with Special Emphasis on Classification, Applications, Challenges and Future Directions 文献偏旧-2021 1、 专业词汇: Human activity recognition (HAR)-人类活动识别 Wearable …

android中activity与fragment之间的各种跳转

我们以音乐播放、视频播放、用户注册与登录为例【Musicfragment(音乐列表页)、Videofragment(视频列表页)、MusicAvtivity(音乐详情页)、VideoFragment(视频详情页)、LoginActivity&…

时钟资源(参考ug472)

目录 时钟资源(参考ug472)7系列 FPGA 时钟连接差异时钟资源连接关系表时钟资源连接示意图不同时钟区域资源连接图Clock-Capable Inputs介绍布局规则 全局时钟 bufferBUFGCTRL介绍原语参数及端口INIT_OUTPRESELECT_I0/1I0/1CE0/1S0/1IGNORE0/1 真值表时序 BUFGBUFGCE&#xff0c…

日本服务器托管需要注意哪些问题

日本服务器托管是一项涉及多方面因素的重要决策,为了确保托管服务的稳定、高效与安全,企业或个人在托管过程中需要注意以下几个关键问题: 首先,数据中心的基础设施建设标准是决定托管稳定性的关键。这包括数据中心的建筑抗震、抗洪…

单片机关键任务优先级的实现学习

与总体产品联调时,需要各个单机系统严格按照总体要求,进行数据输出,时间的偏差将出现系统异常,控制失败等不稳定情况产生,甚至影响到产品安全。 因此必须确保某些关键任务的优先执行。单片机任务优先级一般有两种方式…

Java 基础知识之 switch 语句和 yield 关键字

传统 switch 语句 传统的 switch 语句我们已经写了一万遍了,以下是一个典型的 switch 语句: int dayOfWeek 3; switch (dayOfWeek) {case 1:System.out.println("星期一");break;case 2:System.out.println("星期二");break;case…

STM32-I2C

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. I2C通信1.1 I2C通信简介1.2 硬件电路1.3 I2C时序基本单元1.3.1 起始条件和终止条件1.3.2 发送一个字节1.3.3 接收一个字节1.3.4 发送应答和接收应答 1.4 I2C时序1.4.1 指定地址写1.4.2 当前地址读1.4.3 指定地址读…

Java应用系统设计与实现--学生信息管理系统(附解决方案源码)

一、实验目的及要求 1.1实验目的 掌握Java GUI编程技术,了解Swing框架的使用。 掌握MySQL数据库的基本操作,了解如何在Java中连接和操作数据库。 掌握用户权限管理的基本概念和实现方法。 提升综合运用所学知识设计和实现一个完整应用系统的能力…

QThread moveToThread的妙用

官方文档描述 总结就是移动到线程的对象不能有父对象,执行start即起一个线程,示例是将myObject移动到主线程中。QT中这种方式起一个线程是非常简单的。 示例描述以及代码 描述往Communicate线程中频繁添加任务,等任务结束的时候统计计算的结…

【python教程】数据分析——numpy、pandas、matplotlib

【python教程】数据分析——numpy、pandas、matplotlib 文章目录 什么是matplotlib安装matplotlib,画个折线 什么是matplotlib matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建 安装matplotlib&…

Node 中基于 Koa 框架的 Web 服务搭建实战

前言 在《Node之Web服务 - 掘金 (juejin.cn)》一文中,我们使用 HTTP 模块构建了后端接口,从而实现了后端服务的开发。可以对此进行进一步优化 http模块代码回顾 const http require("http");const server http.createServer((req, res) > {if (reqUrl.pathna…

【面试八股文】java基础知识

引言 本文是java面试时的一些常见知识点总结归纳和一些拓展,笔者在学习这些内容时,特地整理记录下来,以供大家学习共勉。 一、数据类型 1.1 为什么要设计封装类,Integer和int区别是什么? 使用封装类的目的 对象化:…