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

news2024/11/26 12:43:38

在这里插入图片描述

实验报告:基于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.coloradmin.cn/o/1903733.html

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

相关文章

latex英文转中文word,及一些latex相关工具分享

前言:想要转换latex生成的英文pdf文件为中文word文件 一、主要步骤 1、文字翻译:直接使用谷歌翻译等辅助将英文翻译成中文即可; 2、图片: 使用latex时一般保存的.png,.bmp格式图片可以直接插入word, 但是.eps或者 .p…

期末成绩发布方式

期末考试结束后,成绩单的发放总是让老师们头疼不已。想象一下,每个学生的成绩都需要老师一个个私信给家长,不仅耗时耗力,而且极易出错。 在传统的成绩单发放方式中,老师往往需要通过电子邮件、短信或者微信等方式&…

使用Keil将STM32部分程序放在RAM中运行

手动分配RAM区域,新建.sct文件,定义RAM_CODE区域,并指定其正确的起始地址和大小。 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************…

高考志愿填报千万要注意这四点

在高考志愿填报过程中,确实有很多需要留心的点。我为你总结了四个关键点,希望能帮助你顺利完成志愿填报: 1、学校提供的支持 学校作为学生志愿填报咨询服务的主阵地,应提供体系化和制度化的支持。包括及时关注并传达政策动向和相…

ubuntu下运行程序时提示缺库问题的有效解决方法

目录 一、问题现象二、解决方式三、总结 一、问题现象 当我们平时在ubuntu上运行一个程序时时长会遇到如下情况,含义为本机缺少执行程序需要的库 这时候我们可能会根据缺少的库使用apt install 库名的模糊名字 进行安装,然后再去运行,此时可…

vue3+antd 实现文件夹目录右键菜单功能

原本的目录结构&#xff1a; 右键菜单&#xff1a; 点击菜单以后会触发回调&#xff1a; 完整的前端代码&#xff1a; <template><a-directory-treev-model:expandedKeys"expandedKeys"v-model:selectedKeys"selectedKeys"multipleshow-li…

C语言下结构体、共用体、枚举类型的讲解

主要内容 结构体结构体数组结构体指针包含结构体的结构链表链表相关操作共用体枚举类型 结构体 结构体的类型的概念 结构体实现步骤 结构体变量的声明 struct struct 结构体名{ 数据类型 成员名1; 数据类型 成员名2; ..…

【Unity】unity学习扫盲知识点

1、建议检查下SystemInfo的引用。这个是什么 Unity的SystemInfo类提供了一种获取关于当前硬件和操作系统的信息的方法。这包括设备类型&#xff0c;操作系统&#xff0c;处理器&#xff0c;内存&#xff0c;显卡&#xff0c;支持的Unity特性等。使用SystemInfo类非常简单。它的…

1999-2022年企业持续绿色创新水平数据

企业持续绿色创新水平数据为研究者提供了评估企业在绿色技术领域创新持续性和能力的重要视角。以下是对企业持续绿色创新水平数据的介绍&#xff1a; 数据简介 定义&#xff1a;企业持续绿色创新水平反映了企业在一定时期内绿色专利申请的持续性和创新能力。计算方法&#xf…

【Linux】进程的概念 + 查看进程

前言&#xff1a; 在前面我们学习了Liunx的基本指令和权限相关知识&#xff0c;还有基本工具的使用&#xff0c;有了以上的基础知识我们本章将正式接触Linux操作系统。 目录 1.冯诺依曼体系结构1.1 内存存在的意义1.2 程序加载到内存的含义1.3 程序的预加载&#xff1a; 2 .认识…

英国“王曼爱华”指的是哪几所高校?中英双语介绍

中文版 英国“王曼爱华”指的是伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所院校。以下是对伦敦大学国王学院、曼彻斯特大学、爱丁堡大学和华威大学这四所英国顶尖大学的详细介绍&#xff0c;包括它们的建校历史、专业优势、优秀校友和地理位置。 伦敦大学国…

图像增强 目标检测 仿射变换 图像处理 扭曲图像

1.背景 在目标检测中&#xff0c;需要进行图像增强。这里的代码模拟了旋转、扭曲图像的功能&#xff0c;并且在扭曲的时候&#xff0c;能够同时把标注的结果也进行扭曲。 这里忽略了读取xml的过程&#xff0c;假设图像IMG存在对应的标注框&#xff0c;且坐标为左上、右下两个…

前后端的学习框架

前后端的学习框架 视频链接&#xff1a;零基础AI全栈开发系列教程&#xff08;一&#xff09;_哔哩哔哩_bilibili

C++第一弹 -- C++基础语法上(命名空间 输入输出 缺省参数 函数重载 引用)

目录 前言一. C关键字(C98)二. 命名空间1.命名空间的定义2.命名空间的使用3.其它部分 三. C输入&输出四. 缺省参数1. 缺省参数的概念2.缺省参数的分类 五. 函数重载1.函数重载的概念2. 为什么C支持函数重载, 而C语言不支持重载呢? 六. 引用1.引用的概念2.引用的特性3.常引…

汽车报价资讯app小程序模板源码

蓝色实用的汽车报价&#xff0c;汽车新闻资讯&#xff0c;最新上市汽车资讯类小程序前端模板。包含&#xff1a;选车、资讯列表、榜单、我的主页、报价详情、资讯详情、询底价、登录、注册、车贷&#xff0c;油耗、意见反馈、关于我们等等。这是一款非常全的汽车报价小程序模板…

ThreadPoolExecutor - 管理线程池的核心类

下面是使用给定的初始参数创建一个新的 ThreadPoolExecutor &#xff08;构造方法&#xff09;。 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,…

缓冲器的重要性,谈谈PostgreSQL

目录 一、PostgreSQL是什么二、缓冲区管理器介绍三、缓冲区管理器的应用场景四、如何定义缓冲区管理器 一、PostgreSQL是什么 PostgreSQL是一种高级的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它以其稳定性、可靠性和高度可扩展性而闻名。它最初由加…

Static关键字的用法详解

Static关键字的用法详解 1、Static修饰内部类2、Static修饰方法3、Static修饰变量4、Static修饰代码块5、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java编程语言中&#xff0c;static是一个关键字&#xff0c;它可以用于多种上…

【Java探索之旅】初识多态_概念_实现条件

文章目录 &#x1f4d1;前言一、多态1.1 概念1.2 多态的实现条件 &#x1f324;️全篇总结 &#x1f4d1;前言 多态作为面向对象编程中的重要概念&#xff0c;为我们提供了一种灵活而强大的编程方式。通过多态&#xff0c;同一种操作可以应用于不同的对象&#xff0c;并根据对象…

数据库系统原理 | 查询作业2

整理自博主本科《数据库系统原理》专业课自己完成的实验课查询作业&#xff0c;以便各位学习数据库系统概论的小伙伴们参考、学习。 *文中若存在书写不合理的地方&#xff0c;欢迎各位斧正。 专业课本&#xff1a; ​ ​ ———— 本次实验使用到的图形化工具&#xff1a;Heidi…