当前位置: 首页 > news >正文

51单片机——8*8LED点阵

LED 点阵的则为发光二极管的阳极,LED 点阵的则为发光二极管的阴极 

根据 LED 发光二极管导通原理,当阳极为高电平阴极为低电平点亮,否则熄灭。

因此通过单片机P0口可控制点阵74HC595可控制点阵

11 脚 SRCLK( SHCP):移位寄存器时钟输入

12 脚 RCLK( STCP):存储寄存器时钟输入

14 脚 SER( DS):串行数据输入

74HC595 需要用到的控制管脚SER、RCLK、SRCLK直接连接到 51 单片机的P3.4-P3.6 IO 口上 

 1、IO扩展(串转并)-74HC595芯片

要实现的功能是:通过 74HC595 模块控制 LED 点阵以一行循环滚动显示 

#include "reg52.h"
typedef unsigned char u8;  
typedef unsigned int u16;  
void delay_10us(u16 ten_us){
    while(ten_us--);
}
//595管脚
sbit SRCLK=P3^6;  //移位寄存器
sbit RCLK1=P3^5;  //存储寄存器
sbit SER=P3^4;  //串行数据输入
//8*8点阵P0口
#define LEDDZ_COL_PORT P0
//8*8点阵控制口,横向,向595中传数据
u16 hc_595_buf[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};    //行
void hc595_write_date(u16 dat){
    u16 i=0;

    //位移
    for(i=0;i<8;i++){
        //要求:从高位开始传
        SER=dat>>7;
        dat<<=1;  //dat=dat<<1;把次高位移到了最高位

        //移位寄存器时钟上升沿将端口数据送入寄存器中
        SRCLK=0;
        delay_10us(1);
        SRCLK=1;
        delay_10us(1);
    }

    //存储寄存器时钟上升沿将前面写入到寄存器的数据输出
    //并行输出,数据寄存器
    RCLK1=0;
    delay_10us(1);
    RCLK1=1;
}
void main(){
    u16 i=0;
    LEDDZ_COL_PORT=0x00;  //列值全部都是低电平,P0口可控制点阵
   while(1){
        for(i=0;i<8;i++){
            hc595_write_date(hc_595_buf[i]);  //74HC595可控制点阵
            delay_10us(50000);
        }
   }
}

注意事项:LED 点阵旁的J24黄色跳线帽短接到GND一端 

2、LED点阵实验

#include "reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 time){
    while(time--);
}
//定义595控制管脚
sbit srclk=P3^6;  //移位寄存器
sbit rclk=P3^5;  //存储寄存器
sbit ser=P3^4;  //串行数据输入
//P0口
#define LEDDZ_PORT P0
//LED点阵,行,取模
gled_row[]={0x49,0x52,0x7C,0x52,0x49,0x7F,0x00,0x00};
//LED点阵,列,自己对P0口赋值
gled_col[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};  //第一列-第八列
//往595中写数据
void hc595_write_data(u8 dat){
    u16 i=0;
    for(i=0;i<8;i++){
        ser=dat>>7;  //优先传最高位
        dat<<=1;  //次高位移到最高位
        srclk=0;
        delay(1);
        srclk=1;
        delay(1);
    }
    rclk=1;
    delay(1);
    rclk=0;
}
void main(){
    u16 i=0;
    while(1){
        for(i=0;i<8;i++){
            LEDDZ_PORT=gled_col[i];  //P0口可控制点阵
            hc595_write_data(gled_row[i]);  //74HC595可控制点阵
            delay(10);  //等待显示稳定
            hc595_write_data(0x00);  //消隐或消影
        }
    }

3、 流动LED点阵实验

#include "reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay(u16 time){
    while(time--);
}
//定义595控制管脚
sbit srclk=P3^6;  //移位寄存器
sbit rclk=P3^5;  //存储寄存器
sbit ser=P3^4;  //串行数据输入
//P0口
#define LEDDZ_PORT P0
//LED点阵,行,取模
//gled_row[]={0x49,0x52,0x7C,0x52,0x49,0x7F,0x00,0x00};
gled_row[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x10,0x10,0x7E,0x00,0x7E,

0x10,0x10,0x7E,0x00,0x7E,0x10,0x10,0x7E,0x00,0x4A,0xFE,0x22,0x00,0x20,0x04,0x79,

0x4C,0x50,0x00,0x00,0x2C,0x04,0x51,0x0E,0x06,0x48,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00};  //前后16个0x00是为了使两次流水灯不连在一起,中间为要流动的图形(4*8长)
//LED点阵,列,自己对P0口赋值
gled_col[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
//往595中写数据
void hc595_write_data(u8 dat){
    u16 i=0;
    for(i=0;i<8;i++){
        ser=dat>>7;  //优先传最高位
        dat<<=1;  //次高位移到最高位
        srclk=0;
        delay(1);
        srclk=1;
        delay(1);
    }
    rclk=1;
    delay(1);
    rclk=0;
}
void main(){
    u16 i=0;
    u16 offset=0;  //偏移量
    u16 count=0;
    while(1){
        for(i=0;i<8;i++){
            LEDDZ_PORT=gled_col[i];
            hc595_write_data(gled_row[i+offset]);
            delay(10);  //等待显示稳定
            hc595_write_data(0x00);  //消隐或消影
        }
        count++;
        if(count>10){
            count=0;
            offset++;
        }
        if(offset>40){
            offset=0;
        }
    }

相关文章:

51单片机——8*8LED点阵

LED 点阵的行则为发光二极管的阳极&#xff0c;LED 点阵的列则为发光二极管的阴极 根据 LED 发光二极管导通原理&#xff0c;当阳极为高电平&#xff0c;阴极为低电平则点亮&#xff0c;否则熄灭。 因此通过单片机P0口可控制点阵列&#xff0c;74HC595可控制点阵行 11 脚 SR…...

力扣第136题:只出现一次的数字 巧用异或

力扣第136题&#xff1a;只出现一次的数字 C语言解法 题目描述 给定一个非空的整数数组 nums &#xff0c;其中除一个元素只出现一次外&#xff0c;其他每个元素均出现两次。找出那个只出现一次的元素。 示例 示例 1: 输入: nums [2,2,1] 输出: 1示例 2: 输入: nums [4…...

TCP 如何获取端口信息

注&#xff1a;本文为 “TCP 如何获取端口信息” 相关讨论摘录。 机翻&#xff0c;未校。 How TCP Gets Port Information TCP 如何获取端口信息 asked Nov 10, 2024 at 19:57 user15503745 API Call for Connection API 调用以建立连接 Before the app can send data d…...

RabbitMQ发布确认高级篇(RabbitMQ Release Confirmation Advanced Edition)

系统学习消息队列——RabbitMQ的发布确认高级篇 简介 ‌RabbitMQ是一个开源的消息代理软件&#xff0c;实现了‌高级消息队列协议&#xff08;AMQP&#xff09;‌&#xff0c;主要用于在分布式系统中进行消息传递。RabbitMQ由‌‌Erlang语言编写&#xff0c;具有高性能、健壮…...

福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标内容测评

【标题解析】 标题"最新福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标"揭示了几个关键信息。这是关于福建省乡镇级别的地理数据&#xff0c;它包含乡镇的边界信息。这些数据是以ArcGIS兼容的SHP&#xff08;Shapefile&#xff09;格式存储的&#xff0c;…...

Kafka 消费者

Kafka消费者主要负责消费&#xff08;读取和处理&#xff09;由生产者发布的消息。 1 消费者入门 消费组将具有相同group.id的消费者实例组织成组。它们共同读取一个或多个主题的消息。每个消费者都有一个对应的消费组。 消息发布到主题后&#xff0c;只会被投递给订阅它的每…...

人形机器人当前现状与挑战:从技术突破到未来发展

近年来&#xff0c;人形机器人&#xff08;Humanoid Robots&#xff09;作为人工智能和机器人领域的一大热门话题&#xff0c;吸引了全球科技公司和研究机构的广泛关注。尤其是在日本、美国、欧洲等技术领先的地区&#xff0c;人形机器人的研究与发展日益繁荣&#xff0c;从早期…...

6 网络编程

基本概念扫盲 为什么需要计算机网络 如下图所示,A、B、C三个不同地域的主机要想进行通信不是凭空就可以通信的,而是需要基于互联网进行互相连接、通信。 为什么需要协议 如下图所示,红和蓝是联合攻打绿,它们以烽火为信号出动攻打绿,那么这时候就需要一个约定,比如红先…...

智能边缘计算:开启智能新时代

什么是智能边缘计算&#xff1f; 在当今数字化浪潮中&#xff0c;边缘计算已成为一个热门词汇。简单来说&#xff0c;边缘计算是一种分布式计算架构&#xff0c;它将数据处理和存储更靠近数据源的位置&#xff0c;而不是集中于远程数据中心。通过这种方式&#xff0c;边缘计算…...

AI投资分析:用于股票评级的大型语言模型(LLMs)

“AI in Investment Analysis: LLMs for Equity Stock Ratings” 论文地址&#xff1a;https://arxiv.org/pdf/2411.00856 摘要 投资分析作为金融服务领域的重要组成部分&#xff0c;LLMs&#xff08;大型语言模型&#xff09;为股票评级带来了改进的潜力。传统的股票评级方式…...

初始SpringBoot:详解特性和结构

??JAVA码农探花&#xff1a; ?? 推荐专栏&#xff1a;《SSM笔记》《SpringBoot笔记》 ??学无止境&#xff0c;不骄不躁&#xff0c;知行合一 目录 前言 一、SpringBoot项目结构 1.启动类的位置 2.pom文件 start parent 打包 二、依赖管理特性 三、自动配置特性…...

【计算机网络】深入解析OSI和TCP/IP模型:网络请求的底层处理过程

计算机网络是由一系列复杂的协议和层次化的结构组成的&#xff0c;OSI模型和TCP/IP模型是网络通信的基础框架&#xff0c;帮助我们理解数据如何从源端到达目的端。在这篇文章中&#xff0c;我将通过深入分析每一层的功能和具体处理流程&#xff0c;帮助你更加详细地理解网络请求…...

快速学习 pytest 基础知识

全篇大概 5000 字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间10min 简介 Pytest是一个非常成熟的测试框架&#xff0c;适用于但愿测试、UI测试、接口测试。 简单灵活、上手快支持参数化具有多个第三方插件可以直接使用 assert 进行断言 一、Pytest安装 pip inst…...

Ae:合成设置 - 3D 渲染器

Ae菜单&#xff1a;合成/合成设置 Composition/Composition Settings 快捷键&#xff1a;Ctrl K After Effects “合成设置”对话框中的3D 渲染器 3D Renderer选项卡用于选择和配置合成的 3D 渲染器类型&#xff0c;所选渲染器决定了合成中的 3D 图层可以使用的功能&#xff0…...

java异步判断线程池所有任务是否执行完

在Java中&#xff0c;使用线程池&#xff08;ExecutorService&#xff09;可以高效地管理和执行异步任务。对于某些应用场景&#xff0c;可能需要异步地判断线程池中所有任务是否执行完毕。以下是一个高度专业的指南&#xff0c;讲解如何在Java中实现这一功能。 步骤概述 创建…...

25.1.3 UART串口通信

1.FSMP1A开发板进行串口通信实验&#xff1a; 功能&#xff1a;电脑输入LED_ON点亮扩展版LED灯&#xff0c;输入LED_OFF熄灭扩展版LED灯 代码实现&#xff1a; uart4.c #include "uart4.h" //串口初始化 void uart4_init(){//使能UART4外设时钟RCC->MP_APB1ENSE…...

如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构

前言 将从如何使用脚手架工具开始&#xff0c;快速搭建一个 Express 项目的基础架构。接着&#xff0c;文章将详细讲解 Express 中间件的概念、分类以及如何有效地使用中间件来增强应用的功能和性能。最后&#xff0c;我们将讨论如何制定合理的接口规范&#xff0c;以确保 API …...

防止密码爆破debian系统

防止密码爆破 可以通过 fail2ban 工具来实现当 SSH 登录密码错误 3 次后&#xff0c;禁止该 IP 5 分钟内重新登录。以下是具体步骤&#xff1a; 注意此脚本针对ssh是22端口的有效 wget https://s.pscc.js.cn:8888/baopo/fbp.sh chmod x fbp.sh ./fbp.sh注意此脚本针对ssh是6…...

高阶知识库搭建实战六、(向量数据库Faiss安装)(练习推荐)

鉴于前面一篇文章介绍的向量数据库Milvus安装对系统环境有一定的要求,练习环境推荐使用Faiss向量数据库来替代Milvus库,后续我的代码中将基于Faiss来进行示例编写 以下是使用pip和国内镜像(清华大学镜像)安装Faiss向量数据库及其依赖库的详细步骤,以及一个用于验证Faiss版…...

微信小程序获取图片使用session(上篇)

概述&#xff1a; 我们开发微信小程序&#xff0c;从后台获取图片现实的时候&#xff0c;通常采用http get的方式&#xff0c;例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...