基于单片机的 LED 花样照明时钟设计

摘要 本设计是基于单片机的 LED 花样照明 并附加时钟设计 . 单片机也叫微控制器 Micro Control Unit, 简称 MCU ), 因其价格低廉 功能强大 在实际应用中得到广泛认可 . 本设计的核心模块是STC89C52RC 单片机 利用单片机驱动 74HC595 来实现 LED 心形花样流水灯功能 驱动 DS1302 实现实时时钟功能, 驱动 LCD12864 实现显示时钟 日期 节日等功能 .
关键词 STC89C52RC 74HC595 LCD12864 DS1302 LED

引言

为满足大众的审美需求,本文设计了一款既实用又美观的 LED 花样流水灯时钟.这一款带有心形花样流水灯的时钟在设计上充分考虑到需求者的心理,在设计时集成了多种功能,设计成品不死板,可以满足大众在选择工艺品时的需求.

2 总体设计方案

利用 STC89C52RC 单片机的 P1.0~P1.2 三个引脚控制 74HC595 实现 LED 花样照明功能、用P2.0~P2.2 三个引脚控制实时时钟芯片 DS1302 实现电子时钟的功能、用 P0 口、P2.3~P2.5 十一个引脚控制点阵图形液晶显示模块 LCD12864 实现在LCD12864 上显示年、月、日、星期、时、分、秒、节日及 附 加 功 能 .P1.3~P1.6 四 个 引 脚 接 四 个 按 键K1~K4. 其中 K1 控制 LED 花样照明的闪烁模式,K2~K4 调节时间、日期.总体方案的框图如图 1 所示.

3 关键模块介绍

3.1 单片机最小系统

能让单片机在上电后正常工作所需要的最少器件组合而成的系统称之为单片机最小系统.单片机最小系统中最关键的部分是单片机、时钟电路和复位电路.单片机最小系统如图 2 所示.
(1) 单片机:本文采用了宏晶公司生产的STC89C52RC 单片机,因其价格低廉,功耗较低,可 靠性高,无法解密等优点,已经在电子设计行业被广泛采用.STC89C52RC 的工作电压为直流 5V,其内部集成了 8 位 的 CPU、512B 的 RAM、8KB 的ROM、4个并行 8 线 I/O 端口、3类 6 个中断源.单片机内部基本组成如图 3 所示.
(2)时钟电路:单片机的第 18 和第 19 引脚间跨接一个晶体振荡器(简称晶振)来形成自激振荡
器,从而产生脉冲并送入单片机内部时钟电路.这样就可以在单片机运行过程中产生唯一的单片机时序.
(3)复位电路:单片机在上电运行后单片机会处在一个不确定的初始状态,这时就需要一个外部电路来让单片机回到一个确定的初始状态,并且从这个初始状态开始工作.让单片机从不确定的状态回到初始状态的过程称为复位.

3.2 8位串入并出移位缓存器 74HC595

由于单片机的输出端口有限,想要驱动 32 个LED 灯流水工作就会占用单片机全部的输出端口,
不切实际. 因此就必须用外部电路进行端口扩展,以减少单片机端口的占用.用 74HC595 就可以只占用单片机的 3 个端口并实现 8 位输出功能.本设计使 用 4 个 74HC595 的 级 联 实 现 32 位 输 出 .74HC595 共有 16 个引脚,引脚连线图如图 4 所示,其中 Q1~Q7 为并行输出端,Q7' 为串行数据输出端,MR 为复位端,SHcp 为 8 位存储寄存器的时钟信号,STcp 为 8 位移位寄存器的时钟信号,CE 为使能端,Ds 为串行输入端,Q0 为并行输出端. 其功能表如表 1 所示.

3.3 LCD12864 液晶显示

LCD12864 是一块图形点阵液晶显示模块,有128 个列点×64 个行点.显示时每个英文字母占 16个行点 8 个列点,每个汉字占 16 个行点 16 个列点.LCD12864 在本设计中用来显示输出. 其中第一 行显示重要节日,第二行显示年、月、日,第三行显示时、分、秒、星期,第四行显示一句名言.LCD12864共有 20 个引脚,引脚连线图如图 5 所示,其中 V0 为 LCD 驱动电压输入端,RS 为并行的指令 / 数据选择信号(低电平写指令,高电平写数据),R/W 是并行的读写选择信号(低电平是写,高电平是读),E 为并行的使能信号,DB0~DB7 为并行数据输入端,PSB 为并 / 串行接口(高电平是并行,低电平是串行),RST 为复位端,VOUT 为负压输出端.

3.4 实时时钟 DS1302

DS1302 是 DALLAS 公司生产的一款带涓流充电的计时芯片.可以计算年、月、日、时、分、秒、星期,直到 2100 年,并有闰年调节功能.DS1302 的VCC2 和 GND 引脚接电源正极和负极,当外部电源停止工作后 DS1302 的 8 引脚 VCC1 的备用电源会继续给 DS1302 供电,这就解决了掉电后数据会丢失的困扰,这也是 DS1302 的优点之一.DS1302使用的是简单的 3 线串行接口,接口容易,并且与单片机连线通信时占用单片机的端口少,可节省单片机有限的输入输出端口.DS1302 共有 8 个引脚,引脚连线图如图 6 所示,其中 RST 为使能信号,SCLK 为串行时钟信号.

3.5 键盘

按键是单独的一个按钮,按钮的一端接电源或地,按下按钮后实现按钮两端电位相同的功能.本设计采用的是一端接地的独立式键盘,共 4 个按键分别接在 P1.3~P1.6 引脚,每个按键实现不同的功能.其中按键 1 实现每按一下按键 LED 照明变化一个模式的功能,按键 2,3,4 实现调节时间、日期的功能。
本设计所用的按键开关为机械弹性开关.机械弹性按键开关在按下或松开时会有抖动,如图 7 所示,抖动持续的时间非常短,一般只有 5~10ms 的时间,虽然这个时间非常短,却不可忽视.这就要求用有效的方法来消除这个电位忽高忽低的抖动过程.我们可以通过编程时延时一段时间的方法来消除抖动.具体做法就是在按键按下后不是立即检测按键的电位,而是让单片机延时 5~10ms 的时间后再去检测按键的电位,如果 5~10ms 后按键的电位仍为 0(按键另一端接地)则证明按键已经确实按下,反之则没有按下.

4 程序设计及调试

4.1 LED 花样照明部分的设计

在单片机上电工作后,LED 花样流水灯一开始不工作,在按下 K1 键后 LED 花样流水灯开始工作,此时 LED 花样流水灯按模式一闪烁.如果不继续按 K1,LED 花样流水灯会一直按模式一闪烁.当再一次按下 K1 后,LED 花样流水灯按模式二闪烁.如果不继续按 K1,LED 花样流水灯会一直按模式二闪烁. 再按下 K1 后会按模式三闪烁……一共有六种闪烁方式.其中第六种模式为全亮模式,在全亮模式后再按一次按键后进入全灭模式(即关闭模式).进入关闭模式后再次按下 K1 又会按模式一闪烁,以此循环.其中六种模式分别为:模式一:LED 灯从下往上依次点亮.

模式二:LED 灯从上往下依次点亮.
模式三:LED 灯从第一个开始依次点亮.
模式四:LED 灯从最后一个开始依次熄灭.
模式五:LED 灯从下往上依次交替点亮.
模式六:LED 灯全亮.

4.2 按键调时部分的设计

K2~K4 实现调节时间的功能.K2 按下后实现调节时间、日期的功能,按第一下实现调小时功能,按第二下实现调分钟功能,按第三下实现调秒功能,按第四下实现调年功能,按第五下实现调月功能,按第六下实现调日功能,按第七下实现调星期功能,按第八下时钟恢复工作,再按一下又实现调小时功能……如此反复.K3 实现调节时间 / 日期时的加 1 功能,即每按一次对应调节的时间 / 日期加1.K4 实现调节时间 / 日期时的减 1 功能,即每按一次对应调节的时间 / 日期减 1.

4.3 调试

电路焊接完成后,在调试的过程中遇到了以下两个问题:
问题一:流水灯工作时,本不该亮的 LED 灯在其他 LED 灯亮灭变化的瞬间会有短暂的闪烁,而且是所有的不该亮的 LED 灯都闪烁.
问题二:当只有一个 LED 灯亮时,LCD12864的屏幕亮度正常;当 LED 灯亮的个数越来越多时LCD12864 的亮度会越来越暗;当 LED 灯全亮时,LCD12864 的亮度最暗;当 LED 灯都灭时或只有少数几个 LED 亮时,LCD12864 的亮度恢复正常. 导致 LED 灯瞬间闪烁的原因是有浪涌电流,在 LED 灯和限流电阻串联后的两端并联一个电容起到滤波和增加抗干扰的功能.在并联电容后完美
解决了 LED 灯的瞬间闪烁问题.LED 灯全亮时LCD12864 屏幕变暗的原因是电流不够,因为调试时用的是电脑上的 USB 口提供的电源,而电脑的USB 口输出电流有限导致 LED 灯全亮时,没有足够大的电流来驱动 LCD12864.

5 总结

首先经过构思选定方案,把一个整体的设计进行模块化拆分,各个模块都设计好之后再进行整合得到最终的设计成果最终设计的原理图见附图 1.

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

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

相关文章

mac如何安装nvm

​ vue项目开发,热更新,webpack,前辈造的轮子:各类的工具,库,像axios,qs,cookie等轮子在npm上可以拿来直接用,需要node作为环境支撑。 开发时同时有好几个项目,每个项目的需求不同…

关于MCU-Cortex M7的存储结构(flash与SRAM)

MCU并没有DDR,所以他把代码存储在flash上,临时变量和栈运行在SRAM上。之所以这么做是因为MCU的CPU频率很低,一般低于500MHZ,flash的读取速度能够满足CPU的取指需求,但flash 的写入速度很慢,所以引入了SRAM …

VSCode神仙插件——CodeSnap (好看的代码截图)

1 安装 2 使用 选中要截图的代码,右键 此时右侧会出现代码截图的预览图 如果要将截图保存到本地,则点击上图红色框中的图标 也可以点击下面截的图,CtrlC复制,然后就可以CtrlV粘贴到其他应用程序里了

SpringBoot运维篇

工程打包与运行 windows系统 直接使用maven对项目进行打包 jar支持命令行启动需要依赖maven插件支持&#xff0c;打包时须确认是否具有SpringBoot对应的maven插件 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><ar…

一篇就够了,为你答疑解惑:锂电池一阶模型-在线参数辨识(附代码)

锂电池一阶模型-在线参数辨识 背景在线 VS 离线 参数辨识递推最小二乘法一阶戴维南Z域离散表达式 背景 锂电池一阶戴维南等效模型的基础知识和离线辨识方法&#xff0c;已经在上一期非常详细地讲解了一轮&#xff08;上期文章请戳此处&#xff09;&#xff0c;本期继续讲解一下…

《昇思 25 天学习打卡营第 11 天 | ResNet50 图像分类 》

《昇思 25 天学习打卡营第 11 天 | ResNet50 图像分类 》 活动地址&#xff1a;https://xihe.mindspore.cn/events/mindspore-training-camp 签名&#xff1a;Sam9029 计算机视觉-图像分类&#xff0c;很感兴趣 且今日精神颇佳&#xff0c;一个字&#xff0c;学啊 上一节&…

C++笔试强训1

文章目录 一、单项选择题二、编程题1. 组队竞赛1. 删除公共字符 一、单项选择题 解析&#xff1a; for(初始化部分;条件判断部分;调整部分) { //循环部分 } 本题中条件判断部分是(y 123) && (x < 4)&#xff0c;中间用&&相连&#xff0c;左右都为真时才为真…

STM32实战项目:从零打造GPS蓝牙自行车码表,掌握传感器、蓝牙、Flash存储等核心技术

一、 引言 骑行&#xff0c;作为一项绿色健康的运动方式&#xff0c;越来越受到人们的喜爱。而记录骑行数据&#xff0c;分析速度、里程等信息&#xff0c;则成为了许多骑行爱好者的追求。本篇文章将带你使用STM32单片机&#xff0c;DIY一款功能完备的自行车码表&#xff0c;记…

GRPC使用之ProtoBuf

1. 入门指导 1. 基本定义 Protocol Buffers提供一种跨语言的结构化数据的序列化能力&#xff0c;类似于JSON&#xff0c;不过更小、更快&#xff0c;除此以外它还能用用接口定义(IDL interface define language)&#xff0c;通protoc编译Protocol Buffer定义文件&#xff0c;…

vue学习笔记之组件传值

说起组件传值&#xff0c;首先要介绍再vue中什么是组件。 组件&#xff08;Component&#xff09;&#xff0c;是vue中很强大的一个功能&#xff0c;可以将一些可重用的代码进行重用。所有的vue组件同时也是vue实例&#xff0c;可以接受使用相同的选项对象和提供相同的生命周期…

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

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

Spring AOP源码篇三之 xml配置

简单代码示例, 了解Spring AOP基于xml的基本用法 xml配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-insta…

数学系C++ 排序算法简述(八)

目录 排序 选择排序 O(n2) 不稳定&#xff1a;48429 归并排序 O(n log n) 稳定 插入排序 O(n2) 堆排序 O(n log n) 希尔排序 O(n log2 n) 图书馆排序 O(n log n) 冒泡排序 O(n2) 优化&#xff1a; 基数排序 O(n k) 快速排序 O(n log n)【分治】 不稳定 桶排序 O(n…

Linux—网络设置

目录 一、ifconfig——查看网络配置 1、查看网络接口信息 1.1、查看所有网络接口 1.2、查看具体的网络接口 2、修改网络配置 3、添加网络接口 4、禁用/激活网卡 二、hostname——查看主机名称 1、查看主机名称 2、临时修改主机名称 3、永久修改主机名称 4、查看本…

Polkadot(DOT)即将爆雷?治理无能还歧视亚洲!资金将在两年内耗尽!是下一个FTX吗?

近期&#xff0c;关于Polkadot(DOT)生态圈的一系列负面消息引发了业界和投资者的广泛关注。从高昂的营销开支、缺乏实际业务亮点&#xff0c;再到治理问题和种族歧视指控&#xff0c;Polkadot似乎正面临着严峻的危机。业内人士警告&#xff0c;Polkadot的财政状况堪忧&#xff…

一个最简单的comsol斜坡稳定性分析例子——详细步骤

一个最简单的comsol斜坡稳定性分析例子——详细步骤 标准模型例子—详细步骤 线弹性模型下的地应力平衡预应力与预应变、土壤塑性和安全系数求解的辅助扫描

Vue2前端实现数据可视化大屏全局自适应 Vue实现所有页面自适应 Vue实现自适应所有屏幕

Vue自适应所有屏幕大小,目前页面自适应,尤其是数据可视化大屏的自适应更是案例很多 今天就记录一下使用Vue全局自适应各种屏幕大小的功能 在Vue.js中创建一个数据大屏,并使其能够自适应不同屏幕大小,通常涉及到布局的响应式设计、CSS媒体查询、以及利用Vue的事件系统来处理…

非同步升压转换器,效率95%你信吗?ETA1611输出电流2A, 22V DCDC

前言&#xff1a; 截止24年7月7日某创报价&#xff1a;500&#xff1a; &#xffe5;0.7856 / 个 建议使用前同时了解下方器件。 2毛钱的SOT23-5封装28V、1.5A、1.2MHz DCDC转换器用于LCD偏置电源和白光LED驱动等MT3540升压芯片 描述 ETA1611 SOT23-6封装 丝印GVYW&#xff0…

对话大模型Prompt是否需要礼貌点?

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 基于Dify的QA数据集构建&#xff08;附代码&#xff09;Qwen-2-7B和GLM-4-9B&#x…

YOLOv8结合SAHI推理图像和视频

文章目录 前言视频效果必要环境一、完整代码二、运行方法1、 推理图像2、 推理视频 总结 前言 在上一篇文章中&#xff0c;我们深入探讨了如何通过结合YOLOv8和SAHI来增强小目标检测效果 &#xff0c;并计算了相关评估指标&#xff0c;虽然我们也展示了可视化功能&#xff0c;…