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

题目 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.mzph.cn/web/37364.shtml

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

相关文章

【本地调试】使用 Nginx 和 Hosts 文件实现本地开发调试请求转发

可以按照以下 nginx 配置来设置,通过 nginx 和 host 将网页的请求转发到本地的后端服务器,以方便本地开发调试 一、nginx 配置 worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/js…

【Python】 数据分析中的常见统计量:中位数

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 🎵 王心凌《那年夏天宁静的海》 中位数(Median)是统计学…

深入浅出3D感知中的优化与基于学习的技术1(原创系列)

近期几乎看了所有有关NERF技术论文,本身我研究的领域不在深度学习技术方向,是传统的机器人控制和感知。所以总结了下这部分基于学习的感知技术,会写一个新的系列教程讲解这部分三维感知技术的发展到最新的技术细节,并支持自己最近…

娱乐圈发生震动,AI大模型技术已经取代了SNH48的小偶像?

自2023年以来,全球都被包裹在AI的惊天大潮之中,所有行业都在主动或被动地迎接改变。目前,各行业已经有大量公司正在把AI作为自身发展的最佳路径。其中,娱乐行业作为最被人们熟知的行业也在面对AI的发展时,发生着巨大变…

解析Java中1000个常用类:Currency类,你学会了吗?

在线工具站 推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站 推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程…

解析connectionReset异常的原因与解决方案

解析connectionReset异常的原因与解决方案 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中connectionReset异常的原因及其解决方案。这…

遥远星辰中的觉醒:超大质量黑洞的苏醒与人类的未来

遥远星辰中的觉醒:超大质量黑洞的苏醒与人类的未来 在浩渺无垠的宇宙中,星辰的闪烁仿佛是时间的涟漪,穿越亿万年的距离,抵达我们的眼眸。而在这片星辰大海的深处,一个惊人的现象正在悄然上演——距离地球3.6亿光年之遥…

Unity获取剪切板内容粘贴板图片文件文字

最近做了一个发送消息的unity项目,需要访问剪切板里面的图片文字文件等,翻遍了网上的东西,看了不是需要导入System.Windows.Forms(关键导入了unity还不好用,只能用在纯c#项目中),所以我看了下py…

GMSB文章九:微生物的相关关系组间波动

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2 介绍 计算配对微生物在组间的相关关系波动情况进而评估不同分组的微生物状态。secom_linear 函数…

线性表与顺序存储结构(下)

前言 接上文(线性表与顺序存储结构(上))。 这些顺序存储结构的方法在顺序表上下卷中已经提到过,但是有些许不同,可以为理解顺序表提供更丰富的视角。(不过最主要的区别在于顺序表上下卷中的顺…

机器人关节 viscous friction与结构阻尼

Viscous Friction(粘性摩擦) 定义:Viscous friction,也被称为粘性摩擦或粘滞摩擦,是机器人关节在运动过程中由于接触面之间的相互作用而产生的摩擦力。这种摩擦力与关节的运动速度有关,通常表现为速度越大&…

HarmonyOS开发实战:分布式文件系统-hmdfs

分布式文件系统提供跨设备的文件访问能力,适用于如下场景: 两台设备组网,A 设备可以无感读取和修改 B 设备的文件。 边缘服务器可以自动同步组网中多个嵌入式设备中的文件数据。 hmdfs 在分布式软总线动态组网的基础上,为网络上…

Ubuntu添加系统字体

(2024.6.30) 系统字体保存路径在/usr/share/fonts下,如果此目录下缺少字体,则使用其他可视化api(如Python的pygame库)的默认配置时可能会出现乱码问题。 往Ubuntu中添加字体的方法 方法一:手…

Ant Design Vue:如何提升你的前端开发效率?

目录 1. Ant Design Vue 简介 1.1 特性概览 1.2 安装与配置 2. 常用组件及使用示例 2.1 Button 按钮 2.2 Form 表单 2.3 Table 表格 2.4 Modal 对话框 3. 常见问题及解决方案 3.1 组件无法渲染 问题描述 解决方案 3.2 表单验证失效 问题描述 解决方案 3.3 表格…

Python | 计算位涡平流项

写在前面 最近忙着复习、考试…都没怎么空敲代码,还得再准备一周考试。。。等考完试再慢慢更新了,今天先来浅更一个简单但是使用的python code 在做动力机制分析时,我们常常需要借助收支方程来诊断不同过程的贡献,其中最常见的一…

51单片机-点亮LED灯

目录 新建项目选择型号添加新文件到该项目设置字体和utf-8编码二极管如何区分正负极原理:CPU通过寄存器来控制硬件电路 用P2寄存器的值控制第一个灯亮进制转换编译查看P2寄存器的地址生成HEX文件把代码下载到单片机中 新建项目 选择型号 stc是中国生产的、这个里面…

token登录比密码登录有什么优势吗

token登录比密码登录有什么优势吗 使用令牌(Token)登录相比于密码登录具有一些优势,包括: 安全性:令牌通常采用加密技术,使得它们更难以被盗取或猜测。相比之下,密码存在被猜测、破解或被暴力攻…

解决浏览器兼容性问题的方法

解决浏览器兼容性问题的方法 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何解决网页开发中常见的浏览器兼容性问题。随着互联网技术的发展&…

java中输入输出流的继承关系

在 Java 中,输入输出流的继承关系主要围绕两个抽象基类展开:字节流基类 InputStream 和 OutputStream,以及字符流基类 Reader 和 Writer。这些类形成了 Java I/O 系统的基础,提供了丰富的子类以适应不同的输入输出需求。 字节流 字节流用于处理原始的二进制数据。 Input…

利用Linked SQL Server提权

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 扫描二维码五折购书 利用Linked SQL Server提权 Linked SQL server是一个SQL Server数据库中的对象,它可以连接到另一个SQL Server或非SQL Server数据源(如Oracle&a…