基于51单片机的八位流水灯(三种形式)

基于51单片机的八位流水灯(三种形式)写一下寒假做的51小项目。基于AT89C51的流水灯:流水灯共八个,可以实现交替闪烁,一起闪烁,左右流水灯等效果。模式一:按动key1,实现1,3,5,7和2,4,6,8交替闪烁;模式二:按动key2,实现D1→D8流水灯效果;模式三:按动key3,实现全部闪烁效果,时间间隔为0.5秒;模式四:按动key4,实现D8→D1流水灯效果;模式1:使用P1的取反和delay延时实现模式2…

大家好,又见面了,我是你们的朋友全栈君。

写一下寒假做的51小项目。

基本项目

基于AT89C51的流水灯:流水灯共八个,可以实现交替闪烁,一起闪烁,左右流水灯等效果。
模式一:按动key1,实现1,3,5,7和2,4,6,8交替闪烁;
模式二:按动key2,实现D1→D8流水灯效果;
模式三:按动key3,实现全部闪烁效果,时间间隔为0.5秒;
模式四:按动key4,实现D8→D1流水灯效果;

原理图

模式1:使用P1的取反和delay延时实现
模式2:使用左移函数实现,crol
模式3:使用P1的取反和delay延迟实现
模式4:使用右移函数实现,cror

最后加上了AD画的PCB,姑且算是基础的练手,没啥意思。
PCB-3D
资源包含:proteus仿真+原理图;keil编写的C语言程序;ad原理图+PCB;产品说明书。

升级项目—中断控制按键和延迟

 升级后的项目采用了中断来控制按键和延迟,更加精确,满足了课设级别的常见要求,相关中断知识的讲解可以参考文章:51中断
 其他的效果有:共有三个模式,分别为:向右流水灯效果、闪烁效果、向左流水效果。其中,模式切换使用按键控制,按键使用外部中断来处理,每按动一次切换一次模式。流水灯的时间采用定时器中断控制,每一秒中断一次,在change注释中可以修改时长。
 项目原理图如下:
在这里插入图片描述
 本原理图并没有使用74HC573芯片,这就和其作用有关;该芯片为8位锁存器,锁存器的最主要作用是缓存,其次完成高速的控制其与慢速的外设的不同步问题,再其次是解决驱动的问题,最后是解决一个 I/O 口既能输出也能输入的问题。本项目中P1端口始终都是输出信号,而且不受其他干扰,所以可以省去这块芯片。
 除了无用处外,该芯片的存在也会增大采购器件种类和成本,所以也有理由省去。
 最后绘制了PCB版图,相对以前来说,更加简洁。

在这里插入图片描述

资源包含:proteus仿真+原理图;keil编写的C语言程序;ad原理图+PCB;产品说明书。

升级项目—中断控制延迟时间长短+更多花色

 新项目加入了更多的花色,分别有:单次闪烁效果、单次流水效果、单次中间到两侧流水效果、单次两侧到中间流水效果,并且加入了更改延迟时间(灯变化快慢)的功能。模式切换使用四个按键控制,每一个按键对应一个模式。项目还具有加减延迟时间功能,使用外部中断来处理按键,初始时间为500ms,每次加减500ms。时间最长为5000ms,最短为500ms,超过范围后都会变成500ms。
项目原理图如下,依旧是省略了74HC573芯片。
在这里插入图片描述

最后绘制了PCB板。在这里插入图片描述
资源包含:proteus仿真+原理图;keil编写的C语言程序;ad原理图+PCB;产品说明书。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132840.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机最强 Python 编程神器,在手机上运行 Python 不再是梦[通俗易懂]

    手机最强 Python 编程神器,在手机上运行 Python 不再是梦[通俗易懂]手机编程软件有很多,大部分都很难使用,操作不灵活,甚至不能安装第三方库。尝试安装了很多Python移动编程软件,发现了很多问题,不是编码效率低就是各种bug。今天,来自一位python编程小哥指导,向大家推荐两款精心挑选的手机编程软件,它们也是非常成熟的手机编程工具。QPythonOHQpython是一个轻量级的、成熟的python编程工具。它配有终端和简单的代码编辑器。它支持安装第三方库。目前,它支持Python3.6.6,这还不算太老。代码编辑区域代码比其他手机编程软件更灵活,底

    2022年8月12日
    6
  • 基于.Net开源框架

    基于.Net开源框架转 https://www.cnblogs.com/hgmyz/p/5313983.html自从学习.NET以来,优雅的编程风格,极度简单的可扩展性,足够强大开发工具,极小的学习曲线,让我对这个平台产生了浓厚的兴趣,在工作和学习中也积累了一些开源的组件,就目前想到的先整理于此,如果再想到,就继续补充这篇日志,日积月累,就能形成一个自己的组件经验库。分布式缓存框架:MicrosoftV…

    2022年7月15日
    22
  • C++使用CreateMutex

    C++使用CreateMutex一 定义 HANDLECreate LPSECURITY ATTRIBUTESlp 指向安全属性的指针 BOOLbInitial 初始化互斥对象的所有者 LPCTSTRlpNam 指向互斥对象名的指针 第一个参数是一个指向 SECURITY ATTRIBUTES 结构体的指针 一般的情况下 可以是 nullptr 第二个参数类型为 BOOL 表示互斥锁创建出来后是否被当前线程持有 第三个参数类型为字符串 con

    2025年9月14日
    3
  • filter builder_苹果数据分析代码怎么看

    filter builder_苹果数据分析代码怎么看在FilterDispatcher中首先关注的方法是init()和doFilter(),两个有用的局部变量(或者状态)[code="java"]privateFilterConfigfilterConfig;protectedDispatcherdispatcher;[/code]filterConfig用来向filter传递信息,提供了四个方法:[code="java"]…

    2022年8月16日
    5
  • asp.net core中使用log4net

    asp.net core中使用log4net和之前的ASP.NETMVC中的使用LOG4NET的方法有些不同,这里先记录一下,使用步骤如下:1.建立ASP.NETCORE项目中,NUGET中搜索log4net后下载安装2.根目录建立log4net.config文件,内容如下:<?xmlversion="1.0"encoding="utf-8"?><configuration> <!–T…

    2022年7月11日
    25
  • 【Java 8 新特性】Java LocalDate 转 Date

    【Java 8 新特性】Java LocalDate 转 DateJavaLocalDate转Date1.使用LocalDate.atTime2.使用LocalDate.atStartOfDay3.使用LocalDateTime.of4.使用Timestamp.valueOf完整示例参考文献在这一页,我们将提供如何将java.time.LocalDate转换成java.util.Date。LocalDate表示一个格式为yyyy-MM-dd的日期,如2019-05-08。我们可以使用以下方法和构造函数来创建一个Date对象。1.Date.f

    2022年10月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号