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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytest测试用例管理框架特点及常见语法和用法分享

一、pytest及其特点 1. 什么是pytest pytest 是一个功能强大且灵活的 Python 测试框架&#xff0c;也是目前最流行的测试框架&#xff0c;可以让我们很方便的编写和管理自动化测试用例&#xff0c;并提供丰富的插件来满足单元测试、集成测试、性能测试等各种测试需求。 2. p…

现代密码学期末重点(备考ing)

现代密码学期末重点&#xff0c;个人备考笔记哦 密码学概念四种密码学攻击方法什么是公钥密码&#xff1f;什么是对称密码&#xff1f;什么是无条件密码&#xff1f; 中国剩余定理&#xff08;必考&#xff09;什么是原根什么是阶 经典密码学密码体制什么是列置换&#xff1f; …

HarmonyOS:@Builder装饰器:自定义构建函数

一、前言 ArkUI提供了一种轻量的UI元素复用机制Builder&#xff0c;其内部UI结构固定&#xff0c;仅与使用方进行数据传递&#xff0c;开发者可以将重复使用的UI元素抽象成一个方法&#xff0c;在build方法里调用。 为了简化语言&#xff0c;我们将Builder装饰的函数也称为“自…

VISRAG论文介绍:一种直接的视觉RAG

今天给大家介绍一篇论文&#xff0c;VISRAG: VISION-BASED RETRIEVAL-AUGMENTED GENERATION ON MULTI-MODALITY DOCUMENTS [pdf]&#xff0c;一种直接的视觉RAG。 Source&#xff08;来源&#xff09;:ICLR2025 Summary: &#xff08;文献方向归纳 &#xff09;多模态RAG Mot…

在 .Net 8.0 中使用 AJAX 在 ASP.NET Core MVC 中上传文件

上传文件是现代 Web 应用程序中的常见要求。在 ASP.NET Core MVC 中&#xff0c;高效处理文件上传可以提高应用程序的可用性和性能。在本文中&#xff0c;我们将探讨如何使用 AJAX 在 ASP.NET Core MVC 应用程序中实现文件上传&#xff0c;通过允许文件上传而无需刷新整个页面&…

简单的spring boot tomcat版本升级

简单的spring boot tomcat版本升级 1. 需求 我们使用的springboot版本为2.3.8.RELEASE&#xff0c;对应的tomcat版本为9.0.41&#xff0c;公司tomcat对应版本发现攻击者可发送不完整的POST请求触发错误响应&#xff0c;从而可能导致获取其他用户先前请求的数据&#xff0c;造…

linux系统(ubuntu,uos等)连接鸿蒙next(mate60)设备

以前在linux上是用adb连接&#xff0c;现在升级 到了鸿蒙next&#xff0c;adb就不好用了。得用Hdc来了&#xff0c;在windows上安装了hisuit用的好好的&#xff0c;但是到了linux(ubuntu2204)下载安装了 下载中心 | 华为开发者联盟-HarmonyOS开发者官网&#xff0c;共建鸿蒙生…

C++:位与运算符

& 一&#xff0c;位与运算符的运算规则 有0则0。 二&#xff0c;判断奇偶性 %&#xff1a;优先级高&#xff0c;效率低 &&#xff1a;优先级低&#xff0c;效率高 数与1的位与运算结果为1则为奇数&#xff0c;结果为0则为偶数 三&#xff0c;获取一个数二进制的后…

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

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

如何利用PHP爬虫按关键字搜索淘宝商品

在当今的电商时代&#xff0c;获取淘宝商品信息对于市场研究、价格监控和竞争分析等方面具有重要意义。手动搜索和整理大量商品信息不仅耗时耗力&#xff0c;而且容易出错。幸运的是&#xff0c;PHP爬虫技术为我们提供了一种高效、自动化的方式来按关键字搜索淘宝商品。本文将详…

【数据可视化-11】全国大学数据可视化分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

ceph集群配置

4台机器 高度可扩展&#xff0c;分布式的存储文件系统&#xff0c;旨在提供高性能&#xff0c;高可靠性和高可用的对象存储&#xff0c;块存储&#xff0c;文件系统的存储。 使用分布式的算法保证数据的高可用和一致性。 ceph的架构&#xff1a; 1、ceph minitor MON&…

winform中使用panuon开源UI库的问题

在 WinForms 中使用 Panuon UI 是一种提高应用程序用户界面美观和交互性的方式。Panuon UI 是一个用于 .NET 应用程序的现代化 UI 库&#xff0c;它提供了一些非常好看的控件&#xff0c;能够让 WinForms 应用程序看起来更现代。 But------------------------------------&…

【Uniapp-Vue3】swiper滑块视图容器的用法

我们使用swiper标签就可以实现轮播图的效果。 一、swiper组件的结构 整体的轮播图使用swiper标签&#xff0c;轮播的每一页使用swiper-item标签。 <template><swiper class"swiper"><swiper-item><view class"swiper-item">111…

Which CAM is Better for Extracting Geographic Objects? A Perspective From参考文献

参考文献列表 [1] E. Shelhamer, J. Long, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in Proc. Comput. Vis. Pattern Recognit., Jun. 2015, pp. 3431–3440. 中文翻译&#xff1a;[1] 谢尔哈默, E., 龙, J., & 达雷尔, T. (2015).…

【C++项目实战】类和对象入门实践:日期类实现万字详解

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C项目实战》 期待您的关注 ​ 目录 引言 介绍 一、类的设计 二、成员函数的实现 &#x1f343;构造函数、析构函数、拷贝构造…

基于32单片机的智能语音家居

一、主要功能介绍 以STM32F103C8T6单片机为控制核心&#xff0c;设计一款智能远程家电控制系统&#xff0c;该系统能实现如下功能&#xff1a; 1、可通过语音命令控制照明灯、空调、加热器、窗户及窗帘的开关&#xff1b; 2、可通过手机显示和控制照明灯、空调、窗户及窗帘的开…

hot100_54. 螺旋矩阵

hot100_54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输入&am…

HTML5实现好看的博客网站、通用大作业网页模板源码

HTML5实现好看的博客网站、通用大作业网页模板源码 前言一、设计来源1.1 主界面1.2 列表界面1.3 文章界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的博客网站、通用大作业网页模板源码&#xff0c;博客网站源码&#xff0c;HTML模板源码&#xff0…

移动硬盘无法访问:全面解析、恢复方案与预防策略

描述移动硬盘无法访问现象 在日常的数据存储和传输过程中&#xff0c;移动硬盘无疑扮演着举足轻重的角色。然而&#xff0c;当移动硬盘突然无法访问时&#xff0c;这无疑给用户带来了巨大的困扰。想象一下&#xff0c;你急需从移动硬盘中调取一份重要文件&#xff0c;但系统却…