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 点阵的行则为发光二极管的阳极,LED 点阵的列则为发光二极管的阴极 根据 LED 发光二极管导通原理,当阳极为高电平,阴极为低电平则点亮,否则熄灭。 因此通过单片机P0口可控制点阵列,74HC595可控制点阵行 11 脚 SR…...
力扣第136题:只出现一次的数字 巧用异或
力扣第136题:只出现一次的数字 C语言解法 题目描述 给定一个非空的整数数组 nums ,其中除一个元素只出现一次外,其他每个元素均出现两次。找出那个只出现一次的元素。 示例 示例 1: 输入: nums [2,2,1] 输出: 1示例 2: 输入: nums [4…...
TCP 如何获取端口信息
注:本文为 “TCP 如何获取端口信息” 相关讨论摘录。 机翻,未校。 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是一个开源的消息代理软件,实现了高级消息队列协议(AMQP),主要用于在分布式系统中进行消息传递。RabbitMQ由Erlang语言编写,具有高性能、健壮…...
福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标内容测评
【标题解析】 标题"最新福建省乡镇界面数据arcgis格式shp乡镇名称和编码无偏移坐标"揭示了几个关键信息。这是关于福建省乡镇级别的地理数据,它包含乡镇的边界信息。这些数据是以ArcGIS兼容的SHP(Shapefile)格式存储的,…...
Kafka 消费者
Kafka消费者主要负责消费(读取和处理)由生产者发布的消息。 1 消费者入门 消费组将具有相同group.id的消费者实例组织成组。它们共同读取一个或多个主题的消息。每个消费者都有一个对应的消费组。 消息发布到主题后,只会被投递给订阅它的每…...
人形机器人当前现状与挑战:从技术突破到未来发展
近年来,人形机器人(Humanoid Robots)作为人工智能和机器人领域的一大热门话题,吸引了全球科技公司和研究机构的广泛关注。尤其是在日本、美国、欧洲等技术领先的地区,人形机器人的研究与发展日益繁荣,从早期…...
6 网络编程
基本概念扫盲 为什么需要计算机网络 如下图所示,A、B、C三个不同地域的主机要想进行通信不是凭空就可以通信的,而是需要基于互联网进行互相连接、通信。 为什么需要协议 如下图所示,红和蓝是联合攻打绿,它们以烽火为信号出动攻打绿,那么这时候就需要一个约定,比如红先…...
智能边缘计算:开启智能新时代
什么是智能边缘计算? 在当今数字化浪潮中,边缘计算已成为一个热门词汇。简单来说,边缘计算是一种分布式计算架构,它将数据处理和存储更靠近数据源的位置,而不是集中于远程数据中心。通过这种方式,边缘计算…...
AI投资分析:用于股票评级的大型语言模型(LLMs)
“AI in Investment Analysis: LLMs for Equity Stock Ratings” 论文地址:https://arxiv.org/pdf/2411.00856 摘要 投资分析作为金融服务领域的重要组成部分,LLMs(大型语言模型)为股票评级带来了改进的潜力。传统的股票评级方式…...
初始SpringBoot:详解特性和结构
??JAVA码农探花: ?? 推荐专栏:《SSM笔记》《SpringBoot笔记》 ??学无止境,不骄不躁,知行合一 目录 前言 一、SpringBoot项目结构 1.启动类的位置 2.pom文件 start parent 打包 二、依赖管理特性 三、自动配置特性…...
【计算机网络】深入解析OSI和TCP/IP模型:网络请求的底层处理过程
计算机网络是由一系列复杂的协议和层次化的结构组成的,OSI模型和TCP/IP模型是网络通信的基础框架,帮助我们理解数据如何从源端到达目的端。在这篇文章中,我将通过深入分析每一层的功能和具体处理流程,帮助你更加详细地理解网络请求…...
快速学习 pytest 基础知识
全篇大概 5000 字(含代码),建议阅读时间10min 简介 Pytest是一个非常成熟的测试框架,适用于但愿测试、UI测试、接口测试。 简单灵活、上手快支持参数化具有多个第三方插件可以直接使用 assert 进行断言 一、Pytest安装 pip inst…...
Ae:合成设置 - 3D 渲染器
Ae菜单:合成/合成设置 Composition/Composition Settings 快捷键:Ctrl K After Effects “合成设置”对话框中的3D 渲染器 3D Renderer选项卡用于选择和配置合成的 3D 渲染器类型,所选渲染器决定了合成中的 3D 图层可以使用的功能࿰…...
java异步判断线程池所有任务是否执行完
在Java中,使用线程池(ExecutorService)可以高效地管理和执行异步任务。对于某些应用场景,可能需要异步地判断线程池中所有任务是否执行完毕。以下是一个高度专业的指南,讲解如何在Java中实现这一功能。 步骤概述 创建…...
25.1.3 UART串口通信
1.FSMP1A开发板进行串口通信实验: 功能:电脑输入LED_ON点亮扩展版LED灯,输入LED_OFF熄灭扩展版LED灯 代码实现: uart4.c #include "uart4.h" //串口初始化 void uart4_init(){//使能UART4外设时钟RCC->MP_APB1ENSE…...
如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构
前言 将从如何使用脚手架工具开始,快速搭建一个 Express 项目的基础架构。接着,文章将详细讲解 Express 中间件的概念、分类以及如何有效地使用中间件来增强应用的功能和性能。最后,我们将讨论如何制定合理的接口规范,以确保 API …...
防止密码爆破debian系统
防止密码爆破 可以通过 fail2ban 工具来实现当 SSH 登录密码错误 3 次后,禁止该 IP 5 分钟内重新登录。以下是具体步骤: 注意此脚本针对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(上篇)
概述: 我们开发微信小程序,从后台获取图片现实的时候,通常采用http get的方式,例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…...
Qwen3-14B私有部署镜像:大模型时代下的操作系统学习助手
Qwen3-14B私有部署镜像:大模型时代下的操作系统学习助手 1. 当操作系统教学遇上AI大模型 计算机专业的学生们常常面临一个困境:操作系统这门课概念抽象、原理复杂,仅靠课本和课堂讲解很难真正理解。进程调度、内存管理这些核心概念…...
基于Lyapunov稳定性的主从机械臂随机时延补偿控制:从MATLAB仿真到ROS实体验证
基于Lyapunov稳定性的主从机械臂随机时延补偿控制:从MATLAB仿真到ROS实体验证 摘要 针对遥操作系统中0-2s随机时延导致的主从不同步与稳定性下降问题,本文提出了一套完整的“MATLAB仿真+ROS实体”双平台解决方案。首先,采用拉格朗日方程建立二自由度主从机械臂的动力学模型…...
KV260 视觉 AI 套件实战--从零部署到网络互联(Ubuntu+SSH)
1. KV260视觉AI套件开箱初体验 第一次拿到KV260视觉AI套件时,给我的感觉就像收到了一台迷你工作站。这个巴掌大的开发板搭载了Xilinx的Zynq UltraScale MPSoC芯片,集成了四核ARM Cortex-A53处理器和可编程逻辑单元,专为边缘AI视觉应用设计。套…...
媒力无限:坚守初心,做有温度的品牌同行者
在流量喧嚣的时代,总有一群人坚守媒体初心,用专业与温度,做有价值的传播、有意义的事。北京媒力无限品牌文化传播有限公司,由一群深耕中央级媒体十余年的资深媒体人创立,始终以「发现潜力企业,让更多好企业…...
Flink CDC 3.0.0 同步Oracle 19c数据,我踩过的那些坑(时区、字符集、权限)
Flink CDC 3.0.0同步Oracle 19c实战避坑指南 最近在金融级数据中台项目中实施Flink CDC 3.0.0对接Oracle 19c时,遇到了不少官方文档未提及的"深坑"。这些坑轻则导致数据不一致,重则引发生产事故。本文将分享五个典型问题的完整解决方案&#x…...
Gemma-3 Pixel Studio实操教程:添加自定义水印与审计日志,满足企业合规性要求
Gemma-3 Pixel Studio实操教程:添加自定义水印与审计日志,满足企业合规性要求 1. 教程概述 在企业环境中使用AI工具时,合规性和审计追踪是至关重要的考虑因素。本教程将指导您如何在Gemma-3 Pixel Studio中实现两个关键企业级功能ÿ…...
WCH CMSIS-DAP驱动黄色感叹号?别慌,一个轻量级驱动包5分钟搞定
WCH CMSIS-DAP驱动黄色感叹号?5分钟极简解决方案 当你兴冲冲地连接新买的WCH CMSIS-DAP调试器,准备开始嵌入式开发之旅时,设备管理器里那个刺眼的黄色感叹号就像一盆冷水浇下来。别急着下载几个G的IDE,更不用翻遍论坛求助——这个…...
主流边缘AI嵌入式平台实战选型指南
1. 边缘AI嵌入式平台选型核心指标 当你准备为智能摄像头或者工业质检设备选配边缘AI计算平台时,最先遇到的灵魂拷问往往是:到底该看哪些参数?我经手过二十多个边缘计算项目后,发现开发者最容易陷入"唯算力论"的误区。实…...
SAP CO模块实战:成本控制范围配置全流程解析(OKKP-Maintain Controlling Area)
1. 成本控制范围配置的核心价值 刚接触SAP CO模块时,我对"成本控制范围"这个概念也是一头雾水。直到参与了一个制造业项目,才真正理解它的重要性。简单来说,成本控制范围就像是你家客厅的智能电表,能精确统计每个区域的…...
利用node.forge.js实现前端数据加密传输的最佳实践
1. 为什么前端需要数据加密传输? 在Web开发中,前端与后端的数据交互往往涉及敏感信息,比如用户密码、身份证号、银行卡信息等。这些数据如果以明文形式传输,很容易被中间人攻击(MITM)截获。想象一下&#x…...
