【STM32-学习笔记-15-】MAX7219点阵屏模块

文章目录

  • MAX7219点阵模块
    • 一、MAX7219
      • Ⅰ、 概述
      • Ⅱ、功能特点
      • Ⅲ、引脚功能
      • Ⅳ、典型应用电路
      • Ⅴ、内部组成结构
      • Ⅵ、时序图
      • Ⅶ、寄存器
    • 二、STM32控制点阵屏
      • Ⅰ、程序框图
      • Ⅱ、程序编写
        • ①、MAX7219.c
        • ②、MAX7219.h
        • ③、MAX7219_Img.h
        • ④、main.c

MAX7219点阵模块

一、MAX7219

Ⅰ、 概述

  • MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,广泛用于驱动8位数字的7段LED显示、条线图显示器或64个独立的LED点阵
  • 它内置BCD译码器、多路扫描电路、段驱动器和位驱动器,并配备8×8静态RAM用于存储显示数据

请添加图片描述

Ⅱ、功能特点

  • 低功耗关闭模式:具有150μA的低功耗关闭模式
  • 亮度控制:支持模拟和数字亮度调节
  • 动态扫描:内置动态扫描电路,可实现多位LED显示
  • 串行接口:采用三线串行接口(DIN、CLK、CS),兼容SPI协议,数据传输率高达10MHz
  • 级联支持:支持多片级联,通过级联可扩展更多显示单元
  • 显示模式:支持译码和非译码模式,用户可选择硬件译码或软件译码
  • 测试模式:提供测试模式,可点亮所有LED以进行硬件检测

Ⅲ、引脚功能

请添加图片描述

Ⅳ、典型应用电路

请添加图片描述

Ⅴ、内部组成结构

请添加图片描述

Ⅵ、时序图

请添加图片描述

  • 通过MAX7219来控制8*8点阵模块仅需DIN、CS、CLK三个引脚即可

  • 请添加图片描述

  • MAX7219:串行数据在 DIN 输入 16 位数据包,无论LOAD端处于何种状态,在时钟的上升沿数据均移入到内部 16 位移位寄存器

  • MAX7221:无论数据输入或输出CS必须为低电平。然后数据在LOAD/ CS的上升沿被载入数据寄存器或控制寄存器

  • LOAD/CS端在第 16 个时钟的上升沿之后(或同时),至下个时钟上升沿之前变为高电平,否则数据将会丢失

Ⅶ、寄存器

请添加图片描述

  • 根据时序图,向对应寄存器中写入数据,即可实现对点阵模块的控制
  • 表中列出了 14 个可寻址的数据寄存器和控制寄存器
    • 数据寄存器由一个在片上的8×8的双向 SRAM 来实现。它们可以直接寻址所以只要在 V+大于 2V的情况下每个数据都可以独立的修改或保存
    • 控制寄存器包括编码模式显示亮度扫描限制关闭模式以及显示检测五个寄存器

二、STM32控制点阵屏

Ⅰ、程序框图

请添加图片描述

Ⅱ、程序编写

①、MAX7219.c
#include "stm32f10x.h"
#include "Delay.h"
#include "MAX7219_Img.h"
//驱动MAX7219 8位数码管
//输出:>CS:	PA4
//输出:>SCK:	PA5
//输出:>DIN:	PA7void HardSPI_W_CS(uint8_t BitValue) {		//封装函数控制CS的状态GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)BitValue);
}
void HardSPI_W_SCK(uint8_t BitValue) {	//控制时钟线的状态GPIO_WriteBit(GPIOA, GPIO_Pin_5, (BitAction)BitValue);
}
void HardSPI_W_DIN(uint8_t BitValue) {	//MOSI控制主机输出的信号GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)BitValue);
}//初始化GPIO,并将三个输出引脚设置为默认值
void SoftSPI_Init(void)
{//初始化GPIORCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//将SS(软件控制)配置为通用推挽输出GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_7;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStruct);HardSPI_W_CS(1);//配置默认电平HardSPI_W_SCK(0);HardSPI_W_DIN(0);
}//写一个字节*********************************************************************
void Max7219_WriteByte(uint8_t Byte)
{uint8_t i = 0;for(i = 0;i < 8;i++){HardSPI_W_DIN(Byte & (0x80 >> i));//取出高位HardSPI_W_SCK(1);//发送数据Delay_us(1);//等待发送HardSPI_W_SCK(0);}
}//写数据*********************************************************************
void Max7219_WriteData(uint8_t Addr, uint8_t Data)
{HardSPI_W_CS(0);//拉低CS片选Max7219_WriteByte(Addr);Max7219_WriteByte(Data);HardSPI_W_CS(1);
}//清除整个点阵屏**************************************************************
void MAX7219_Clear(void)
{uint8_t i;for(i = 1; i <= 8; i++){Max7219_WriteData(i, 0x00);}
}//初始化MAX7219**************************************************************
void Init_MAX7219(void)
{SoftSPI_Init();Max7219_WriteData(0x09, 0);		//译码方式:不译码Max7219_WriteData(0x0A, 5);		//亮度设置:Max7219_WriteData(0x0B, 7);		//扫描界限;8个Max7219_WriteData(0x0C, 1);		//掉电模式:0开启;1关闭Max7219_WriteData(0x0F, 0);		//显示测试:1开启;0关闭MAX7219_Clear();
}//清除一行*******************************************************************
void MAX7219_Clear_Line(uint8_t Addr)
{//清除一行,即对该行地址所在的寄存器写0x00Max7219_WriteData(Addr, 0);
}//显示数组中的数据,即显示整个点阵屏
void MAX7219_ShowImg(uint8_t *parr)
{MAX7219_Clear();uint16_t i;for(i = 1;i <= 8;i++){Max7219_WriteData(i, parr[i - 1]);}
}//显示数字*******************************************************************
void MAX7219_ShowNum(uint8_t Num)
{MAX7219_ShowImg(img_Num[Num]);
}
②、MAX7219.h
#ifndef __MAX7219_H__
#define __MAX7219_H__
#include "stdint.h"void Init_MAX7219(void);//初始化
void MAX7219_Clear(void);//全清除
void MAX7219_Clear_Line(uint8_t Addr);//清除一行
void Max7219_WriteData(uint8_t Addr, uint8_t Data);//写数据(地址+数据)
void MAX7219_ShowNum(uint8_t Num);//显示数字
void MAX7219_ShowImg(uint8_t *parr);//显示整个屏幕#endif
③、MAX7219_Img.h
  • 该头文件中存储的是需要显示的数据
  • 二维数组指针
#ifndef __MAX7219_IMG_H__
#define __MAX7219_IMG_H__
#include "stdint.h"uint8_t img_Num[10][8] = {{0x00,0x7E,0xFF,0xC3,0xC3,0xFF,0x7E,0x00},//	0{0x00,0x00,0x01,0xFF,0xFF,0x41,0x00,0x00},//	1{0x00,0xFB,0xFB,0xDB,0xDB,0xDF,0xDF,0x00},//	2{0x00,0xFF,0xFF,0xDB,0xDB,0xDB,0xC3,0x00},//	3	{0x00,0xFF,0xFF,0x18,0x18,0xF8,0xF8,0x00},//	4{0x00,0xDF,0xDF,0xDB,0xDB,0xFB,0xFB,0x00},//	5	{0x00,0xDF,0xDF,0xDB,0xDB,0xFF,0xFF,0x00},//	6{0x00,0xF0,0xF8,0xDC,0xCF,0xC7,0xC0,0x00},//	7{0x00,0xFF,0xFF,0xDB,0xDB,0xFF,0xFF,0x00},//	8{0x00,0xFF,0xFF,0xDB,0xDB,0xFB,0xFB,0x00},//	9
};#endif
④、main.c
#include "stm32f10x.h"
#include "Delay.h"
#include "MAX7219.h"int main(void)
{Init_MAX7219();uint8_t i;while(1){for(i=0;i<10;i++)	{MAX7219_ShowNum(i);Delay_ms(500);}}
}

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

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

相关文章

《知识图谱:鸿蒙NEXT中人工智能的智慧基石》

在鸿蒙NEXT系统的人工智能应用中&#xff0c;知识图谱技术犹如一座智慧基石&#xff0c;为系统的智能化提供了强大的知识支撑&#xff0c;开启了更智能、更高效、更个性化的交互新时代。 提升语义理解能力 知识图谱以其结构化的知识表示方式&#xff0c;将各种实体和它们之间…

AIP-122 资源名字

编号122原文链接AIP-122: Resource names状态批准创建日期2019-01-26更新日期2019-01-26 大多数API会发布 资源/&#xff08;主要是名词&#xff09;&#xff0c;用户可以创建、检索和操作这些资源。此外&#xff0c;资源是 /具命的 &#xff1a;每个资源都有唯一的标识符&…

1.6 从 GPT-1 到 GPT-3.5:一路的风云变幻

从 GPT-1 到 GPT-3.5:一路的风云变幻 人工智能的进步一直是科技领域的一个重要话题,而在自然语言处理(NLP)领域,GPT(Generative Pre-trained Transformer)系列模型的发布,标志着一个又一个技术突破。从2018年发布的 GPT-1 到2022年推出的 GPT-3.5,OpenAI 的每一次更新…

Redis数据库笔记——持久化机制

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍Redis的持久化机制&#xff0c;目标是将内存中的数据持久化到磁盘&#xff0c;以保证数据的可靠性和在重启后的恢复能力。 文章目录 持久化机制A…

K8S 集群搭建和访问 Kubernetes 仪表板(Dashboard)

一、环境准备 服务器要求&#xff1a; 最小硬件配置&#xff1a;2核CPU、4G内存、30G硬盘。 服务器可以访问外网。 软件环境&#xff1a; 操作系统&#xff1a;Anolis OS 7.9 Docker&#xff1a;19.03.9版本 Kubernetes&#xff1a;v1.18.0版本 内核版本&#xff1a;5.4.203-…

vue中echarts-中国地图,世界地图显示(echarts5.6版本本地导入)

地图去掉南海诸岛右下角的框显示&#xff08;因为显示的不是现在的10段线&#xff09; 资源里面主要是有个改好的中国地图json其他的无所谓&#xff0c;用现有的json也行&#xff0c;主要是为了解决10段线的问题 引入需要注意 import * as echarts from “./echarts”; 目录…

数据结构(三) 排序/并查集/图

目录 1. 排序 2.并查集 3.图 1.排序: 1.1 概念: 排序就是将数据按照某种规则进行排列, 具有某种顺序. 分为内排序和外排序. 内排序就是: 将数据放在内存中的排序; 外排序是: 数据太多无法在内存中排序的. 1.2 插入排序: 插入排序包含: 直接插入排序和希尔排序. (1) 直接插入…

算法随笔_13: 有效三角形的个数

上一篇:算法随笔_12:最短无序子数组-CSDN博客 题目描述如下: 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 算法…

CSS 网络安全字体

适用于 HTML 和 CSS 的最佳 Web 安全字体 下面列出了适用于 HTM L和 CSS 的最佳 Web 安全字体&#xff1a; Arial (sans-serif)Verdana (sans-serif)Helvetica (sans-serif)Tahoma (sans-serif)Trebuchet MS (sans-serif)Times New Roman (serif)Georgia (serif)Garamond (se…

线程池的数据结构是什么 为什么会占用堆内存 线程池是一个对象吗

线程池是一种用于管理和复用线程以执行多个任务的设计模式&#xff0c;它通过预先创建一组线程&#xff0c;并将这些线程重复用于执行提交给线程池的任务&#xff0c;从而减少因频繁创建和销毁线程带来的开销。在Java中&#xff0c;线程池通常通过java.util.concurrent包下的Th…

PyTorch 神经协同过滤 (NCF) 推荐系统教程

目录 教程概述1. 神经协同过滤模型概述NCF 模型的主要组成部分&#xff1a; 2. 数据加载与预处理3. 定义神经协同过滤模型4. 训练模型5. 模型评估6. 推荐物品7. 完整示例8. 总结 在本教程中&#xff0c;我们将使用 PyTorch 实现一个神经协同过滤&#xff08;Neural Collaborat…

03.选择排序

一、题目思路 选择排序是一种简单直观的排序算法。它的工作原理是&#xff1a;首先在未排序序列中找到最小&#xff08;或最大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;或最大&#xff…

大模型学习笔记 - 第一期 - Milvus向量数据库

大模型学习笔记 - 向量数据库 目录 大模型学习笔记 - 向量数据库传统文字检索(无嵌入)面临的困境1. 用户和商户表述差异2. 不同语种的表述差异3. 不同背景下的音译表述差异 向量检索向量化服务 参考 传统文字检索(无嵌入)面临的困境 1. 用户和商户表述差异 ​ 如果商户维护了…

详细图文解读Transformer模型:《Attention is All You Need》完整版

目录 前言1、Transformer模型《Attention is All You Need》总结2、Transformer整体结构2.1、工作流程 3、Transformer的输入4、Self-Attention&#xff08;自注意力机制&#xff09;4.1、Self-Attention 结构4.2、Q, K, V计算4.3、Self-Attention 的输出4.4、Multi-Head Atten…

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态&#x1f407;一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计&#x1f9a9;1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…

vue编写一个可拖动的模块,并可以和任何其他组件组合使用

实现思路&#xff1a; 使用 Vue 的自定义指令&#xff08;directive&#xff09;来处理拖动逻辑。在 mounted 钩子中添加鼠标事件监听器&#xff0c;以实现拖动功能。在 unmounted 钩子中移除鼠标事件监听器&#xff0c;防止内存泄漏。 代码示例&#xff1a; <template&g…

Ubuntu、Windows系统网络设置(ping通内外网)

一、 虚拟机VMware和Ubuntu系统的网络配置说明 1、虚拟机的网络适配器的模式有三种&#xff1a; 桥接模式NAT模式主机模式 2、虚拟机VMware的网卡配置(如何进行配置界面(虚拟机->设置)) 注意&#xff1a; 1、以上桥接模式(ubuntu有独立IP)、NAT模式(没有独立IP)都可以联…

将IDLE里面python环境pyqt5配置的vscode

首先安装pyqt5全套&#xff1a;pip install pyqt5-tools 打开Vscode&#xff1a; 安装第三方扩展&#xff1a;PYQT Integration 成功配置designer.exe的路径【个人安装pyqt5的执行路径】&#xff0c;便可直接打开UI文件&#xff0c;进行编辑。 配置pyuic,如果下图填写方法使用…

大模型之三十三- 开源Melo 语音合成

大模型之三十三- 开源Melo 语音合成 文本到语音(TTS)系统从基于基础音素的模型演变成复杂的端到端神经方法,这种方法可以直接将文本转换为语音。这一变革得益于深度学习的进步和计算能力的提升,已经在语音的自然度、韵律控制和跨语言能力方面取得了重大进展 。现代TTS系统…

C# OpenCV机器视觉:特征匹配 “灵魂伴侣”

在一个阳光仿佛被施了魔法&#xff0c;欢快得直蹦跶的早晨&#xff0c;阿强像个即将踏上神秘寻宝之旅的探险家&#xff0c;一屁股墩在实验室那张堆满各种奇奇怪怪小玩意儿的桌前。桌上&#xff0c;零件、线路、半成品设备乱成一团&#xff0c;唯有他那宝贝电脑屏幕散发着清冷又…