【51单片机系列】74HC595扩展实验之使用74HC595芯片在LED点阵中显示数字

news2024/12/22 19:40:07

本实验实现的功能是使用74HC595芯片实在LED点阵中显示数字字符0。

要点亮多个LED灯,需要用到动态数码管的动态扫描原理。

首先如何点亮一行上面的多个灯或一列上面的多个灯,明显就是需要某行或某列有效,同时使多列或多行有效。比如在第一行有效的情况下,有效列与这一行交点上的LED灯就会被点亮。

要实现行列不同位置亮灯,需要使用到动态显示的方法,也要结合扫描的方法。

在第一行亮灯一段时间以后灭掉,点亮第二行一段时间以后灭掉,点亮第三行一段时间后灭掉,如此点亮,直到行全部点亮一次,在第一行点亮到最后一行灭掉的总时间不能超过人肉眼可识别的时间,即24毫秒。在每一行点亮的时候,给列一个新的数据,此时对应列在该行上要点亮的灯的数据。这种方式类似数码管的动态显示一样,不同的是数码管的LED灯是段值,LED点阵是多个LED点亮。

要想在点阵上显示数字等字符,首先要获取在LED点阵上显示数字字符所需的数据,即一个数字字符在LED点阵上显示,对应的每行每列都会有一些灯点亮或者熄灭,这样就会构成一组数据,亦即数字字符的显示数据,将这些数据通过74HC595发送到点阵对应的行或列就能显示数字字符。

数字字符的获取可以使用相关软件获取。这里提供一种文字取模软件,如下:

文字取模软件

比如显示数字0,如下:

LED点阵显示数字0

取模数据为:

u8 ledduan[] = {0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00};  // 类似于数码管的段选

在proteus中,红色的LED点阵模块采用上列下行的方式,电流通过方向为列->行,所以如果要点亮的话,行设置为0,列设置为1。如下,如果要点亮第一个LED,那么需要P0=0x01,D7-D0 = ~0x01。

proteus中的LED点阵模块

显示如下数字0,软件实现如下:

proteus实现74HC595在LED点阵中显示数字0

/*
	实现功能:74HC595芯片控制LED点阵显示数字0
	[2023-12-11] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "HC595.h"

u8 ledduan = B11111110;
u8 ledwei0[] = {
B00111000, // 0x38
B01000100, // 0x44
B01000100, // 0x44
B01000100, // 0x44
B01000100, // 0x44
B01000100, // 0x44
B00111000, // 0x38  
B00000000};  // 列1

// 延时函数,i=1时延时10us
void Delay(u16 i)
{
	while(i--);
}

void main()
{
	u8 i;
	while(1)
	{
		for(i=0;i<8;i++)
		{
			HC595SendByte(ledduan);  // 发送段选数据
			P0 = ledwei0[i];
			Delay(100);
			ledduan = _crol_(ledduan,1);
		}
	}
}

其中函数HC595SendByte实现如下:

/*************************************************************************
* 函数名:		HC595SendByte
* 函数功能:	74HC595芯片将输入的一个字节的串行数据转换为并行数据输出
* 输入:			dat:74HC595要输出的一个字节的数据
* 输出:			void
**************************************************************************/
void HC595SendByte(u8 dat)
{
	u8 i;
	STCP = 1;  // 高电平时存储寄存器数据保持不变
	SHCP = 1;  // 高电平时移位寄存器数据保持不变
	for(i=0;i<8;i++)
	{
		DS = dat >> 7;  // 每次输入最高位数据
		dat <<= 1;  // 移位后将dat数据左移一位,保证下一次移入的数据在最高位
		// 实现移位寄存器的时序,需要SHCP有一个上升沿,所以先将SHCP置0,然后置1
		SHCP = 0;
		_nop_();  // 空指令,不做任何操作,当做延时使用
		_nop_();
		SHCP = 1;
	}
	
	// 数据已经在移位寄存器了,现在将移位寄存器的数据输出到存储寄存器
	// STCP上升沿时将数据从移位寄存器输出到存储寄存器
	STCP = 0;
	_nop_();
	_nop_();
	STCP = 1;
}

仿真结果:

74HC595在LED点阵上显示数字0

如果要显示1,如下

74HC595控制LED点阵显示数字1

软件设计如下:

/*
	实现功能:74HC595芯片控制LED点阵显示数字1
	[2023-12-11] zoya
*/
#include "reg52.h"
#include "intrins.h"
#include "HC595.h"

u8 ledduan = B11111110;
u8 ledwei[] = {0x10,0x18,0x10,0x10,0x10,0x10,0x7C,0x00};

// 延时函数,i=1时延时10us
void Delay(u16 i)
{
	while(i--);
}

void main()
{
	u8 i;
	while(1)
	{
		for(i=0;i<8;i++)
		{
			HC595SendByte(ledduan);  // 发送段选数据
			P0 = ledwei[i];
			Delay(200);
			ledduan = _crol_(ledduan,1);
		}
	}
}

仿真结果:

74HC595在LED点阵上显示数字1

文字取模软件链接:
链接:https://pan.baidu.com/s/1k-ND9vJReW_KHMWx8uwpcQ?pwd=gz8w
提取码:gz8w

软件使用链接:【C51单片机系列】文字取模软件使用。

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

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

相关文章

记录 | xftp远程连接两台windows

1、打开openssh 设置 -> 应用 -> 可选功能 -> 添加功能 -> OpenSSH 客户端&#xff0c;将 ssh 客户端安装将两台电脑的 ssh 开启&#xff0c;cmd 中输入 net start sshd2、配置 win10 账号密码 3、进行 xftp 连接

【Spring】@SpringBootApplication注解解析

前言&#xff1a; 当我们第一次创建一个springboot工程时&#xff0c;我们会对启动类&#xff08;xxxApplication&#xff09;有许多困惑&#xff0c;为什么只要运行启动类我们在项目中自定义的bean无需配置类配置&#xff0c;扫描就能自动注入到IOC容器中&#xff1f;为什么我…

java--LinkedList集合的底层原理

1.什么是链表&#xff1f;有啥特点&#xff1f; ①链表中的结点是独立的对象&#xff0c;在内存中是不连续的&#xff0c;每个结点包含数据值和下一个结点的地址。 ②链表的特点1&#xff1a;查询慢&#xff0c;无论查询那个数据都要从头开始找。 ③链表的特点2&#xff1a;链…

day3_qt

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#xf…

进程、容器与虚拟机的区别

进程、容器与虚拟机 参考&#xff1a;关于进程、容器与虚拟机的区别&#xff0c;你想知道的都在这&#xff01; 进程、容器与虚拟机的结构图 进程 介绍 进程是一个正在运行的程序&#xff0c;它是一个个可执行文件的实例。当一个可执行文件从硬盘加载到内存中的时候&#xf…

安装Anconda时出现Failed to extract packages的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 在win7安装Anconda的时候&#xff0c;出现Failed to extract packages 截图如下所示&#xff1a; 2. 原理分析 该版本过于新&#xff0c;无法兼容win7系统&#xff0c;要么更换系统 要么将anconda版本降低即可 3. 解决…

基于SSM超市订单管理系统(Java毕业设计)

大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的方法。无论你是…

计算机二级Python基本操作题-序号46

Python 函数查询 1. 《卖火柴的小女孩》是丹麦童话故事作家安徒生的一篇童话故事&#xff0c;发表于1846年。主要讲了一个卖火柴的小女孩在富人阖家欢乐、举杯共庆的大年夜冻死在街头的故事。这里给出《卖火柴的小女孩》的一个网络版本文件&#xff0c;文件名为“小女孩.txt”…

IOday8作业

使用消息队列完成两个进程之间相互通信(多进程) #include<myhead.h>//定义结构体 struct buf {long mtype;char mtest[1024]; };#define SIZE (sizeof(struct buf)-sizeof(long))//进程 int main(int argc, const char *argv[]) {//创建keykey_t key1 ftok("/&quo…

关于北京医学sci论文翻译

在医学领域&#xff0c;翻译论文是一项非常重要的工作。医学论文的翻译需要准确、专业、严谨&#xff0c;同时也需要考虑到医学领域的特殊性和复杂性。那么&#xff0c;如何翻译医学论文呢&#xff1f;北京医学SCI论文翻译哪家好呢&#xff1f; 首先&#xff0c;需要具备专业的…

5.鸿蒙hap可以直接点击包安装吗?

5.鸿蒙hap可以直接点击包安装吗&#xff1f; hap与apk不同&#xff0c;获取的hap不能直接安装 安装方法1&#xff1a; DevEco studio打开项目源文件&#xff0c;打开手机USB调试&#xff0c;DevEco识别到手机后&#xff0c;点击播放按钮安装到手机 https://txwtech.blog.cs…

多线程案例-阻塞队列

阻塞队列是什么 阻塞队列是一种特殊的队列.也遵循"先进先出"的原则 阻塞队列能是一种线程安全的数据结构,并且具有以下特性: 当队列满的时候,继续入队列就会阻塞,直到有其他线程从队列中取走元素. 当队列空的时候,继续出队列也会阻塞,直到有其他线程往队列中插入元素…

小电流MOSFET 选型分析数据,可应用于电子烟,电动工具,智能穿戴等产品上

小电流双N&#xff0c;D-N通道MOSFET&#xff0c;电压60V-100V左右 电流300mA-500MA&#xff0c;采用封装形式多样。具有低导通电阻&#xff0c;可快速切换速度&#xff0c;易于设计的驱动电路也易于并联&#xff0c;ESD保护&#xff0c;低电压驱动使该器件非常适合便携式设备…

相控与斩控交交调压(THD的计算)

相控与斩控交交调压&#xff08;THD的计算&#xff09;

ML81N服务条目表创建审批

ML81N服务条目表创建 ME23N创建服务类采购订单 ML81N根据采购订单明细创建服务条目表 保存后采购订单会生成物料凭证 删除 创建 参考ESLL表&#xff0c;需要区分父包&#xff0c;子包&#xff1b;其中ls_esll-pln_pckg需要根据EKPO关联ESSR关联ESLL获取到原始包装编号 …

WampServer本地部署结合内网穿透实现公网访问本地服务

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

认识lambda架构(架构师考试复习)

Lambda架构主要分为三层&#xff0c;批处理层、加速层和服务层。 如下图所示&#xff1a; &#xff08;1&#xff09;批处理层&#xff08;Batch Layer&#xff09;&#xff1a;存储数据集&#xff0c;在数据集上预先计算查询函数&#xff0c;并构建查询对应的view。Batch Lay…

perl处理json的序列化和反序列化

perl可以使用JSON模块很方便的处理json的序列化和反序列化。先来一段简单的例子&#xff1a; #! /usr/bin/perl use v5.14; use JSON; use IO::File;my $info {id > 1024,desc > hello world,arry > [1, 2, 3, 4, 5],obj > {char > [ A, B, C ]} };say to_jso…

企业网站运营不稳定有什么影响

如果一个公司的网站打开都有困难&#xff0c;那么用户会对这个企业的实力产生怀疑&#xff0c;企业网站除了作为企业的名片外&#xff0c;更多的是承担增加企业交易订单的任务。因此很多网站会做有关的网络广告或者搜索引擎优化的工作。如果网站无法正常打开&#xff0c;那么用…

从零开发短视频电商 AWS OpenSearch Service开发环境申请以及Java客户端介绍

文章目录 创建域1.创建域2.输入配置部署选项数据节点网络精细访问控制访问策略 获取域端点数据如何插入到OpenSearch ServiceJava连接OpenSearch Servicespring-data-opensearchelasticsearch-rest-high-level-clientopensearch-rest-clientopensearch-java 因为是开发测试使用…