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

news2025/1/8 3:13:37

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;
        }
    }

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

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

相关文章

FastDeploy部署paddlecls分类模型(windows)

目录 写在前面 总体步骤 C SDK编译库 方式1&#xff1a;编译安装 方式2&#xff1a;下载预编译库 准备模型、文件、代码和数据 模型文件类型 samples代码 待预测图像 使用 FastDeploy C SDK 将cpp源码编译为exe 编写cpp代码 cpp代码编译exe 运行可执行程序exe 将…

电脑如何无线控制手机?

想在电脑上无线控制手机&#xff0c;需要用到Total Control控制软件&#xff0c;具体步骤如下&#xff1a; 1、首先我们在电脑上安装上控制软件Total Control并打开。 2、开启手机USB调试和ADB仅充电模式。 3、手机电脑均连接上相同局域网。 4、连接(首次使用需要用手机U…

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…

QT c++ 样式 设置 标签(QLabel)的渐变色美化

上一篇文章中描述了按钮的纯色&#xff0c;本文描述标签的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QLabel…

【C++面向对象——输入输出流】处理二进制文件(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 一、流类库中常用的类及其成员函数 二、标准输入输出及格式控制 三、文件的应用方法&#xff08;二进制文件、文本文件&#xff09; 编程要求 实验步骤 通关代码 测试结果 任务描述 本关任务&#xff1a; 用二进制方式打开指定的…

基于大数据爬虫+Python+数据可视化大屏的慧游数据爬虫与推荐分析系统(源码+论文+PPT+部署文档教程等)

博主介绍&#xff1a;**CSDN毕设辅导第一人、**全网粉丝50W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流 **技术范围&#xff1a;**S…

Linux Shell 脚本编程基础知识篇—awk的条件判断(3)

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周五了&#xff0c;又是一周过去了&#x1f606; 本文是有关Linux shell脚本编程的awk命令的条件语句&#xff0c;后续我会不断增加相关内容 ~~ 回顾:【awk字符串函数和内置变量】 更多Linux 相关内容请点击&#x1f449;【Li…

MITRE ATTCK 简介:初学者指南

网络安全已成为当今数字世界的一个关键问题。随着网络威胁日益复杂&#xff0c;组织需要一种结构化的方法来理解和应对这些风险。这就是 MITRE ATT&CK 框架发挥作用的地方。如果您是网络安全新手或刚刚开始探索威胁分析和缓解&#xff0c;本指南将为 MITRE ATT&CK 提供…

生物医学信号处理--绪论

前言 参考书籍&#xff1a;刘海龙&#xff0c;生物医学信号处理&#xff0c;化学工业出版社 生物医学信号分类 1、由生理过程自发或者诱发产生的电生理信号和非电生理信号 • 电生理信号&#xff1a;ECG/心电、EEG/脑电、EMG/肌电、 EGG/胃电、 EOG/眼电 • 非电生理信号&am…

理解 Tomcat 架构与自定义实现

前言 Tomcat 是一个轻量级的 Web 容器&#xff0c;被广泛应用于 Java Web 开发中。通过它&#xff0c;我们可以轻松地部署和运行 Web 应用。在本文中&#xff0c;我们将深入分析 Tomcat 的核心架构&#xff0c;同时结合一段代码&#xff0c;手动实现一个简化的 Tomcat 服务&am…

怎样修改el-table主题样式

起因&#xff1a;el-table有主题样式&#xff0c;部分需要单独设置 环境&#xff1a;ideanodejs插件谷歌浏览器 第一步&#xff1a;找到scss文件&#xff1a; 谷歌浏览器打开表格页面&#xff0c;ctrlshifti打开开发者工具&#xff0c;点击后鼠标移动到表格单元格上单击一下…

模型 九屏幕分析法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。九屏幕法&#xff1a;全方位分析问题的系统工具。 1 九屏幕分析法的应用 1.1 新产品研发的市场分析 一家科技公司计划开发一款新型智能手机&#xff0c;为了全面评估市场潜力和风险&#xff0c;他们…

CSS 学习之 padding 与图形绘制

padding 属性和 background-clip 属性配合&#xff0c;可以在有限的标签下实现一些 CSS 图形绘制效果&#xff0c;我这里举两个小例子&#xff0c;重在展示可行性。 例 1:不使用伪元素&#xff0c;仅一层标签实现大队长的“三道杠”分类图标效果。此效果在移动端比较常见&…

AI在电子制造中的应用:预测质量控制

一、 电子制造中存在的质量问题 电子制造过程中&#xff0c;由于生产工艺复杂、材料种类繁多、生产环境要求高等因素&#xff0c;可能会出现各种质量问题。 常见质量问题如下&#xff1a; 1. 空焊 原因&#xff1a;锡膏活性较弱、钢网开孔不佳、铜铂间距过大或大铜贴小元件、…

(已开源-AAAI25) RCTrans:雷达相机融合3D目标检测模型

在雷达相机融合三维目标检测中&#xff0c;雷达点云稀疏、噪声较大&#xff0c;在相机雷达融合过程中提出了很多挑战。为了解决这个问题&#xff0c;我们引入了一种新的基于query的检测方法 Radar-Camera Transformer (RCTrans)。具体来说&#xff1a; 首先设计了一个雷达稠密…

WPS计算机二级•数据查找分析

听说这里是目录哦 通配符&#x1f30c;问号&#xff08;?&#xff09;星号&#xff08;*&#xff09;波形符&#xff08;~&#xff09; 排序&#x1f320;数字按大小排序以当前选定区域排序以扩展选定区域排序 文字按首字母排序 快速筛选分类数据☄️文字筛选数字筛选颜色筛选…

(leetcode算法题)191. 位1的个数 和 338. 比特位计数

对于一个正整数 n&#xff0c;如果对这个正整数执行 n & (n - 1); 的代码&#xff0c;将会得到一个整数m n 和 m的关系&#xff1a;n 的二进制表示 与 m的二进制表示中除了n最右边的1取值不同&#xff0c;其他都相同 比如114514 和 114512 的二进制表示中第2位&#xff0…

mongodb==安装prisma连接

官网下载mongodb,解压安装 Download MongoDB Community Server | MongoDB 修改bin/mongod.cfg # mongod.conf# for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/# Where and how to store data. storage:dbPat…

安装Cockpit服务,使用Web页面管理你的Linux服务器

说起管理 Linux 服务器&#xff0c;大家首先想到的使用 SecureCRT、Xshell、MobaXterm 等工具远程到服务器&#xff0c;然后使用命令行管理服务器。今天给大家介绍一个好玩的工具&#xff0c;名字叫Cockpit&#xff0c; Cockpit 是一个免费开源的基于 web 的 Linux 服务器管理…

Excel | 空格分隔的行怎么导入excel?

准备工作&#xff1a;windows&#xff0c;一个记事本程序和微软的Excel软件。 打开记事本&#xff0c;选中所有内容&#xff0c;按CtrlA全选&#xff0c;然后复制(CtrlC)。 在Excel中&#xff0c;定位到你想粘贴的单元格&#xff0c;按CtrlV进行粘贴。粘贴后&#xff0c;你会在…