【Proteus仿真】| 51单片机——MAX7219 驱动数码管

news2024/11/19 2:42:28

系列文章
todo:

文章目录

  • 前言
  • 1. 简单了解MAX7219
    • 1.1 引脚说明
    • 1.2 寄存器说明
      • 1.2.1 选位寄存器
      • 1.2.2 BCD译码器设置寄存器
      • 1.2.3 亮度寄存器
      • 1.2.4 扫描限制寄存器
      • 1.2.5 显示测试寄存器
      • 1.2.6 关停寄存器
    • 1.3 spi总线通信时序
    • 1.4 数据格式
  • 2. 使用MAX7219驱动数码管
    • 2.1 驱动数码管的原理图
    • 2.2 MAX7219驱动程序
      • 2.2.1 定义spi信号引脚和寄存器地址
      • 2.2.2 根据时序图实现写字节
      • 2.2.3 根据通信数据格式需要实现写数据(16bit)
      • 2.2.4 初始化MAX7219
  • 3. 仿真效果

前言

该文章目的:让大家快速上手——知道如何使用MAX7219。故MAX7219就不做详细介绍了(需要了解的话可以看其他博文及数据手册)。

1. 简单了解MAX7219

max7219是一个串行输入/输出共阴极数码管(点阵)驱动芯片。1个MAX7219最多可以驱动8位数码管。它具有自动扫描(切换位),BCD译码器(即 不用管数码管段码值 需要让其显示几直接填几就好)、内部8X8的静态RAM(可以存放显示数据 用作驱动8x8点阵)、亮度控制等功能。我们需要通过SPI总线驱动它。
注意:只能驱动共阴极的哦

1.1 引脚说明

在这里插入图片描述
可以看到 spi总线的3条控制线 DIN、LOAD(CS)、CLK

1.2 寄存器说明

主要有以下几个寄存器
在这里插入图片描述

1.2.1 选位寄存器

在这里插入图片描述
后面对应的地址 比如我要给 让第一位数码管显示1 那么 我先发 第一位选位寄存器地址 然后发内容

1.2.2 BCD译码器设置寄存器

在这里插入图片描述
配置是否使用 译码器 可按位设置

1.2.3 亮度寄存器

在这里插入图片描述
可以看到亮度设置范围 0x00-0x0F

1.2.4 扫描限制寄存器

在这里插入图片描述
配置要显示的位数

1.2.5 显示测试寄存器

在这里插入图片描述
测试模式 配置该寄存器为0X01 效果:所有都亮
即显示8.8.8.8.8.8.8.8.

1.2.6 关停寄存器

配置关闭显示/正常显示
在这里插入图片描述

1.3 spi总线通信时序

在这里插入图片描述

1.4 数据格式

如图 一共16位 其中 8-11 4位地址 0-7 8位数据内容
所以每次传16位的数据
在这里插入图片描述
后面驱动程序都是根据 时序图完成的 一个简单的spi写时序

2. 使用MAX7219驱动数码管

2.1 驱动数码管的原理图

在这里插入图片描述
级联时
在这里插入图片描述

2.2 MAX7219驱动程序

2.2.1 定义spi信号引脚和寄存器地址

根据原理图 接线定义
在这里插入图片描述
定义寄存器地址
在这里插入图片描述

在这里插入图片描述

2.2.2 根据时序图实现写字节

在这里插入图片描述

2.2.3 根据通信数据格式需要实现写数据(16bit)

在这里插入图片描述

2.2.4 初始化MAX7219

在这里插入图片描述

3. 仿真效果

在这里插入图片描述

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

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

相关文章

【2023/05/18】TPU

Hello!大家好,我是霜淮子,2023倒计时第13天。 Share The waterfall sings,"I find my song,when I find my freedom." 译文: 瀑布歌唱到:“我得到自由时便有了歌声。” I cannot tell why this heart la…

精彩直击 | 迅镭激光参展CIBF2023年电池技术盛会

5月16日,全球规模最大的电池、能源行业盛会——CIBF2023第十五届中国国际电池技术展览会(以下简称2023CIBF电池展),在深圳国际会展中心(宝安新馆)隆重开幕! 迅镭激光携一系列新能源自动化解决方案亮相9T263展位,与客户分享创新技术及自动化产…

【Jmeter第四章】Jmeter添加断言(捕捉自定义错误信息)

文章目录 1、断言介绍2、Jmeter使用断言3、效果展示 1、断言介绍 前言:关于Jmeter中的断言,其实可以理解为对返回信息,返回代码的一种处理, 因为对应HTTP状态200而言,但我们会定义不同的返回值,例如 code…

【数据结构<顺序表>】C语言

前言 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的一条…

linux swap交换区满了怎么办(已解决)

swap交换区满了怎么办 一、不增加交换区的方法 free -m 或free -h查看占用情况 使用如下指令来查看占用swap的前十进程 for i in $( cd /proc;ls |grep "^[0-9]"|awk $0 >100) ;do awk /Swap:/{aa$2}END{print "$i",a/1024"M"} /proc/$i…

仓库信息管理系统设计与实现

一、数据库设计 1.数据库模型设计概览 2.数据库表设计 ①depository 描述: 该表存储仓库的信息,比如仓库名称,仓库地址和仓库介绍 表结构: 序号 字段名 数据类型 主键 非空 默认值 描述 1 id INT(10) 是 是 2…

LlamaIndex 联合创始人下场揭秘:如何使用私有数据提升 LLM 的能力?

ChatGPT 的爆火证明了大型语言模型(LLM)在生成知识和推理方面的能力。不过,ChatGPT 是使用公共数据集进行预训练的模型,因此可能无法提供与用户业务相关的特定答案或结果。 那么,如何使用私有数据最大化发挥 LLM 的能力…

SpringMVC第三阶段:源码解析SpringMVC如何调用Controller目标方法

源码解析SpringMVC如何调用Controller目标方法: 浏览器如何访问到Controller目标方法. 1、所有请求进入时候,会先进入org.springframework.web.servlet.DispatcherServlet前端控制器的doDispatch() 方法 2 、在 1016 行 getHandler() 方法中,会通过请求的资源路径…

【51单片机】万年历功能的数字时钟+倒计时 Proteus仿真 普中板子可用

// 硬件:DS1302、按键、LCD1602、无源蜂鸣器 // 1、具有万年历功能的数字时钟 (本世纪100年通用),能够正确的显示年、月、日、时、分、秒 // 2、按键设置时间(校时) // 3、24小时内至少可设置3个闹钟,并具有不同的闹钟铃声。每个闹钟可以选择…

[链表OJ题 7] 环形链表

目录 题目来源: 代码实现: 思路分析: 实现过程: 题目来源: 力扣 141. 环形链表 题目描述 代码实现: bool hasCycle(struct ListNode* head) {struct ListNode* fast head, * slow head;while (fas…

为什么更新了 DNS 记录不生效?

我们在上网时如果想要访问到另一台机器上的内容,通常只需要直接输入一串地址,例如:www.upyun.com,就能够准确访问到自己想要访问的网站。但是实际上这只是方便我们记忆的字符形式网络标识,真正让我们的机器和另一台机器…

C语言深度解析--函数

函数 函数的定义: 函数,又称为子程序,是一个大型程序中的某部分代码,由一个或多个语句块组成。它负责完成某项特定任务,而且相较于其他代码,具备相对独立性。 一般会有输入参数并有返回值,提供…

关于江苏专转本的十大真相,值得一看

【真相1】专转本考试题主要是大学相关科目的骨干老师出的。他们较长时间从事相应课程教学,专业领域较宽,学术造诣较高。具有副高及以上职称,年龄—般在55周岁以下。VX:hhkb5200【真相2】专转本考试题"紧扣《考试大纲》,大家要…

C++11 新特性

文章目录 🍪统一列表初始化🍪左值引用,右值引用🥛概念和作用🥛使用场景 🍪完美转发🍪可变参数模板 C11是C的一次大更新,出现了很多实用的语法和特性,所以我们很有必要学习…

[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集

[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集 XSS(Stored)-low level源代码姿势基于Message板块基于Name板块 XSS(Stored)-medium level源代码姿势双写绕过大小写绕过Xss标签绕过 XSS(Stored)-high level源代码姿势:Xss标签绕过 XSS(S…

汇编学习教程:灵活寻址(四)

引言 在上篇博文中,我们学习了 [bxsi] 的灵活寻址形式,由此讲解了汇编中的多重循环实现。那么本篇博文中,我们将继续学习灵活寻址其他实现形式。 本次学习从一道编程案例开始学起。 编程示例如下: assume cs:code,ds:datadata…

【Jmeter第二章】将Jmeter界面切换为中文显示

1、Jmeter临时切换为中文显示 注意:上面的配置只能保证本次运行是中文,如果要永久中文,需要修改Jmeter的配置文件 2、通过修改Jmeter配置文件设置为中文显示 1、在 Jmeter/bin目录下,找到:jmeter.properties 文件 2…

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口+OLED0.96显示

K_A39_012 基于STM32驱动W25Q32 模块读写数据 串口OLED0.96显示 所有资源导航一、资源说明二、基本参数参数引脚说明 三、驱动说明时序对应程序: 四、部分代码说明1、接线引脚定义1.2、STM32F103C8T6W25Q32 模块 五、基础知识学习与相关资料下载六、视频效果展示与程序资料获取…

LeetCode 429. N 叉树的层序遍历

429. N 叉树的层序遍历 描述 给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。 示例 示例1 输入&…

货拉拉Java开发实习

目录 1.Java的重载和重写有什么区别2.什么情况下需要用到重载3.有很多个字符串和变量,需要把它们加起来,这时候用String会有什么问题4.有没有其它的替代方案5.StringBuffer和StringBuilder有什么区别6.一个自定义对象,分别创建了两个实例&…