【TB作品】智能台灯控制器,ATMEGA128单片机,Proteus仿真

news2024/11/16 8:44:15

题目 8 :智能台灯控制器
基于单片机设计智能台灯控制器,要求可以调节 LED 灯的亮度,实现定时开启与关闭,
根据光照自动开启与关闭功能。
具体要求如下:
(1)通过 PWM 功能调节 LED 灯亮度,亮度由高到低可分为 3 档,通过按键进行调节
并对当前档位进行指示。
(2)具有手动开启和关闭功能。
(3)能够显示并修改当前时间(如时分显示)
(4)可设置自动开启和关闭的时间,当到达开启时间时,LED 自动开启;当到达关闭
时间时,LED 自动关闭。
(5)通过光敏电阻感知外界光照条件,在光照模式开启的情况下,光照较低则 LED 自
动点亮,光照较高,LED 自动熄灭。(LED 开启和关闭的光照阈值尽量能够由用户定义)
可添加符合题目背景的其它功能。

智能台灯控制器

1 分为 定时开关机的自动模式、手动模式、光敏电阻控制模式,使用按键1切换模式,每个模式都有对应显示,可以方便看出当前是什么模式。三种模式平行存在,无包含关系。还有一个修改当前时间模式平行。

2 单片机采用定时器走时,有时分秒的时间显示,可以按键修改时分秒,设置当前的时间。

3 定时开关机的自动模式功能解释:按键设置开机时间点和关机时间点,当当前的时间处于时间段内小灯点亮,否则小灯熄灭。

4 手动模式功能解释:按键可以调节档位,也有相对应显示。

5 光敏电阻控制模式功能解释:光敏电阻检测到的电压来控制台灯亮度。
光照较低则 LED 自动点亮,光照较高,LED 自动熄灭

6 LED 开启和关闭的光照阈值能够由用户定义

7 按键规划

K1 切换模式:自动模式 手动模式 光敏电阻控制模式
K5 进入或者退出修改当前时间模式

定时开关机的自动模式下按键功能:
K2 切换选项
K3 加法
K4 减法

手动模式下按键功能:
K2 无作用
K3加档位
K4 减档位

光敏电阻控制模式下按键功能:
K2 无作用
K3 加光照阈值
K4 减光照阈值

修改当前时间模式下按键功能:
K2 切换选项
K3 加法
K4 减法

在这里插入图片描述

这段代码是一个基于AVR单片机的项目,用于实现LCD显示、ADC0832数据采集、PWM控制和按键输入功能。下面我将对其主要功能和实现方法进行详细介绍。

项目简介

该项目的核心功能包括:

  1. LCD显示:用于显示当前时间、模式和相关参数。
  2. ADC0832数据采集:通过ADC0832芯片采集模拟信号。
  3. PWM控制:用于调节输出PWM信号的占空比。
  4. 按键输入:实现多种模式切换和参数设置。

LCD显示功能

LCD显示模块用于显示各种信息,包括当前时间、模式状态和传感器数据。代码中通过SetCurPosition函数设置LCD光标位置,LCD_write_comLCD_write_str函数用于发送指令和字符串到LCD。LCD显示部分的代码示例如下:

void display(void) {
    // 省略部分代码...
    if (mode == 0) {
        // 显示当前时间
        // 省略部分代码...
    } else if (mode == 1) {
        // 显示手动模式
        // 省略部分代码...
    } else if (mode == 2) {
        // 显示光强模式
        // 省略部分代码...
    } else if (mode == 3) {
        // 显示时间设置模式
        // 省略部分代码...
    }
}

ADC0832数据采集

ADC0832是一个8位模数转换器,用于将模拟信号转换为数字信号。通过SPI协议与单片机进行通信。数据采集的核心函数是Get_AD_Result,其实现如下:

unsigned char Get_AD_Result(unsigned char ch) {
    // 省略部分代码...
    return dat1; // 返回转换结果
}

PWM控制

PWM控制部分用于调节输出信号的占空比,从而控制连接设备的工作状态。通过设置OCR1A寄存器来调整占空比。设置PWM占空比的函数如下:

void setPWM(unsigned int zhankongbi) {
    OCR1A = zhankongbi; // 设置占空比
}

按键输入

按键输入部分用于实现模式切换和参数设置。通过读取PINF寄存器的值来检测按键状态,并根据按键的不同执行相应操作。按键检测的核心函数如下:

unsigned char getkey(void) {
    // 省略部分代码...
    return 0; // 返回按键值
}

主控制逻辑

主控制逻辑位于main函数中,通过无限循环不断检测按键输入,更新显示和控制输出。其主要逻辑如下:

void main(void) {
    system_init(); // 系统初始化
    while (1) {
        unsigned char key = getkey();
        // 根据按键值更新模式和参数
        if (key) {
            // 省略部分代码...
        }
        display(); // 更新显示
        contorl(); // 控制输出
    }
}

具体功能实现

  1. 时间显示和设置:通过定时器中断更新当前时间,并通过按键设置定时时间。
  2. 自动模式:根据预设时间范围控制输出状态。
  3. 手动模式:用户通过按键手动设置输出状态。
  4. 光强模式:通过ADC0832采集光强信号,根据设定阈值控制输出状态。

通过这种模块化的设计,该项目能够实现多种模式下的灵活控制和显示功能,适用于需要多种输入输出控制的嵌入式系统应用。

资源:

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

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

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

相关文章

Jenkins 使用 Publish over SSH进行远程访问

Publish over SSH 是 Jenkins 的一个插件,可以让你通过 SSH 将构建产物分发到远程服务器。以下是如何开启 Publish over SSH 的步骤: 一、安装 Publish over SSH 插件 在 Jenkins 中,进入 "Manage Jenkins" > "Manage Plugins"。选择 "Availab…

储能锂电池出货量持续增长 国家政策推动行业发展速度加快

储能锂电池出货量持续增长 国家政策推动行业发展速度加快 储能锂电池又称锂离子储能电池,指专为储存电能而设计的锂离子电池。储能锂电池具有转换效率高、能量密度高、维护成本低、环境适应性强、响应速度快等优势,在数据中心、通信基站以及电力系统等领…

香橙派AIpro如何赋能AI+边缘流媒体设备

文章目录 (一)前言(二)AI边缘流媒体设备展示(三)赋能AI边缘流媒体设备1、准备开发环境2、在板子中下载编译安装SRS3、基本推拉流测试4、多路推流性能测试 (四)一些注意事项1、开发板…

webSocket网页通信---使用js模拟多页面实时通信

webSocket是什么 WebSocket是一种先进的网络技术,它提供了一种在单个TCP连接上进行全双工通信的能力。传统的基于HTTP的通信是单向的,即客户端发起请求,服务器响应请求,然后连接关闭。但是,WebSocket允许服务器和客户端…

Nginx系列(二)---Mac上的快速使用

一、安装 前置软件&#xff1a;Homebrew 安装方法&#xff1a;终端输入/bin/bash -c "$(curl -fsSL <https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh>)"更新&#xff1a; brew update 设置中科大镜像源&#xff1a;git -C "$(brew --r…

【串口通信】之TTL电平

1. 什么是串口 串口,全称为串行通信端口,是一种计算机硬件接口,用于实现数据的串行传输。与并行通信不同,串口通信一次只传输一个比特,数据通过串行线按顺序传输。串口通信在嵌入式系统、工业控制、计算机与外围设备通信等领域非常常见 2. 什么是串口通信 串口通信是指通过…

和闺蜜的泰国之旅

每当我回想起那次和闺蜜丽丽&#xff08;全名罗莉&#xff09;的泰国之旅&#xff0c;心中总是涌起复杂的情绪。那段经历仿佛一场噩梦&#xff0c;至今仍无法从脑海中挥去。 我们满怀期待地抵达曼谷&#xff0c;热带的阳光、繁忙的街道、美味的街头小吃&#xff0c;都让我们兴…

Redis 管道(Pipeline)是什么?有什么用?

目录 1. redis 客户端-服务端模型的不足之处 2. redis 管道是什么&#xff1f;有什么好处&#xff1f; 3. 管道的使用场景 4. 管道使用的注意事项 1. redis 客户端-服务端模型的不足之处 众所周知&#xff0c;redis 是一个客户端-服务端的模型设计&#xff0c;客户端向服务…

树莓派0 2W重启后突然没有声音

树莓派0 2W重启后突然没有声音。 最近在使用该板卡。重启后突然出现了显示器不能显示界面的情况&#xff0c;接着用putty的ssh方式连接该板卡&#xff0c;能连上。使用vnc方式连接该板卡&#xff0c;也能连上。后来通过修改/boot/config.txt文件&#xff0c;能在显示器上显示界…

WordPress付费进群V2主题,多种引流方法,引私域二次变现

全新前端UI界面&#xff0c;多种前端交互特效让页面不再单调&#xff0c;进群页面群成员数&#xff0c;群成员头像名称&#xff0c;每次刷新页面随机更新不重复&#xff0c;最下面评论和点赞也是如此随机刷新不重复 进群页面简介&#xff0c;群聊名称&#xff0c;群内展示&…

2024年小米SU7维修手册和电路图线路图接线图资料更新

此次更新了2024年小米SU7维修手册和电路图资料&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等等&#xff01; 汽修帮…

ctfshow-web入门-命令执行(web119、web120、web121、web122)

目录 1、web119 2、web120 3、web121 4、web122 1、web119 采用 118 的 payload&#xff0c;回显 evil input&#xff0c;说明新增了过滤 单独测试一下&#xff0c;是 PATH 、BASH 被过滤了 在上一题的基础上&#xff0c;我们再介绍一个内置变量&#xff1a;$RANDOM 它会…

用Python轻松转换Markdown文件为PDF文档

Markdown&#xff0c;以其简洁的语法和易于阅读的特性&#xff0c;成为了许多作家、开发者和学生记录思想、编写教程或撰写报告的首选格式。然而&#xff0c;在分享或打印这些文档时&#xff0c;Markdown的纯文本形式可能无法满足对版式和布局的专业需求。而将Markdown转换为PD…

mac 上 Docker Desktop的免费开源的替代工具Colima

当谈到在macOS上运行容器时&#xff0c;Docker长期以来一直是首选。但是&#xff0c;必须解决使用适用于macOS的Docker Desktop时出现的一些限制&#xff0c;特别是对于大中型公司&#xff0c;最大的问题是需要购买许可证。另外&#xff0c;macOS 版Docker Desktop的性能问题也…

Go语言实现钉钉机器人接入Dify工作流

go语言实现实现钉钉机器人接入dify工作流&#xff0c;完成ai 流式问答 代码地址 有用的话点个star github地址 效果 配置使用 修改.env_template文件 为.env 设置.env文件内的环境变量 API_KEY: dify的api_keyAPI_URL: dify 的api接口CLIENT_ID : 钉钉机器人应用的idCLIENT…

护眼指南之适合学生写作业的台灯:看看学生护眼台灯哪个品牌好

随着人们健康意识的提高&#xff0c;越来越多的人开始关注眼睛的健康问题&#xff0c;照明技术的进步也为缓解眼疲劳提供了可能&#xff0c;现在的照明产品可以通过调整光线亮度、色温、频闪等参数&#xff0c;使光线更加柔和、均匀&#xff0c;减少眼睛的不适感。人们都希望通…

孕产妇健康管理信息平台,多家医院产科广泛运用,系统稳定,功能齐全 产科管理系统源码,三甲医院产科电子病历系统成品源代码

孕产妇健康管理信息平台&#xff0c;多家医院产科广泛运用&#xff0c;系统稳定&#xff0c;功能齐全 产科管理系统源码&#xff0c;三甲医院产科电子病历系统成品源代码 女性生育过程会面临许多的困难和问题&#xff0c;需要经常性地前往医院做详细的身心检查&#xff0c;在…

【python】Data Augmentation

参考学习来自&#xff1a;使用PythonOpenCV进行数据增广方法综述&#xff08;附代码演练&#xff09; 文章目录 Random CutCutoutColor JitterAdd Noisy Random Cut 随机裁剪图片中的长款缩放为 scale 倍的区域&#xff0c;resize 到原图大小&#xff0c;bounding box 的坐标也…

6域名系统DNS

《计算机网络》第7版&#xff0c;谢希仁 每次记不清楚的知识点&#xff0c;通过上网查找&#xff0c;总是只能看到很零碎的答案。最后还是最喜欢看这个版本的书&#xff0c;一看就回忆起来了&#xff0c;逻辑严谨&#xff0c;循循善诱&#xff0c;知识讲解的全面又清晰&#xf…

Elasticsearch:结合稀疏、密集和地理字段

作者&#xff1a;来自 Elastic Madhusudhan Konda 如何以自定义方式组合多个稀疏、密集和地理字段 Elasticsearch 是一款强大的工具&#xff0c;可用于近乎实时地搜索和分析数据。作为开发人员&#xff0c;我们经常会遇到包含各种不同字段的数据集。有些字段是必填字段&#x…