51单片机STC89C52RC——8.1 8*8 LED点阵模块(点亮一个LED)

目录

目的/效果

一,STC单片机模块

二,8*8 LED点阵模块 

2.1 电路图

2.1.1 8*8 点阵模块电路图

2.1.2 74HC595(串转并)模块 电路图

2.1.3 芯片引脚

2.2 引脚电平分析

2.3 74HC595 串转并模块

2.3.1 装弹(移位寄存器)

2.3.2 发弹(存储寄存器)

2.4 STC89C52RC 中的sfr、sbit

2.4.1 sfr(special function register):特殊功能寄存器声明   

2.4.2 sbit(special bit):特殊位声明   

2.4.3 可位寻址/不可位寻址:

三,创建Keil项目

四,代码 

五,代码编译、下载到51单片机


目的/效果

程序控制,点亮点阵LED 第1行第一列LED

一,STC单片机模块

二,8*8 LED点阵模块 

2.1 电路图

2.1.1 8*8 点阵模块电路图

2.1.2 74HC595(串转并)模块 电路图

 

2.1.3 芯片引脚

 

 

2.2 引脚电平分析

我们要点亮左下角 第一个 LED,需要将P70和DPa接通,其他引脚不管,如下图

将LED点阵左边第一列设置为0,即LED阴极为低电平,其余列为1,即高电平 

将LED点阵上边第一行设置为1,即LED阳极为高电平,其余行为0,即低电平  

对于74HC595模块的电平如下

 这里要注意跳线帽:OE 输出有效(低电平),我们直接可以拔掉或者接GND上

 

 

DP上的HEX=0x80=1000 0000(二进制)

那么对于引脚P35(RCLK)、P36(SRCLK)、P34(SER)输入怎样的数据,DPa-DPh 才会输出1000 0000 的电平呢?我们就要详细分析这个74HC595译码器。

2.3 74HC595 串转并模块

    74HC595 是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三 态输出(即高电平、低电平和高阻抗)

移位寄存器工作方式就像手枪弹夹,但是子弹的发射(移位寄存器中的数据转储到存储寄存器),又像是【散弹】(因为是并行输出嘛)。

具体的装弹和发弹如下

2.3.1 装弹(移位寄存器)

上升沿:电平从低到高的那个过程。移位寄存器时钟在上升沿这个过程中才起作用。

先把数据放到针脚P34(SER)上(SER=1低电平 或者SER=0 高电平)

然后将 将P36(SRCLK) 针脚 先置低电平(SRCLIK=1)再置高电平(SRCLK=0)。这样就是实现了由上升沿 移位寄存(装弹)的效果。不过要注意这里不能立即置0,机器也需要处理时间。这里我们需要将程序延时10微秒后再做处理。

2.3.2 发弹(存储寄存器)

 数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是P35(RCLK)脚的作用。它也是上升沿有效。

2.4 STC89C52RC 中的sfr、sbit

2.4.1 sfr(special function register):特殊功能寄存器声明   

 例:sfr P0 = 0x80;     声明P0口寄存器,物理地址为0x80

2.4.2 sbit(special bit):特殊位声明   

 例:sbit P0_1 = 0x81;    或    sbit P0_1 = P0^1;     声明P0寄存器的第1位

比如本节我们用到了下面几个,我们把针脚P34、P35、P36定义用对应申明,在使用时不在写针脚地址寄存器(当然也可以继续使用针脚,作用一样)。

//定义74HC595控制管脚
sbit _SRCLK=P3^6;	//移位寄存器时钟输入
sbit _RCLK=P3^5;	//存储寄存器时钟输入 注意:在 REGX52.H 中已经申明了RCLK
sbit _SER=P3^4; 	//串行数据输入 

2.4.3 可位寻址/不可位寻址:

在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作

三,创建Keil项目

详细参考:51单片机STC89C52RC——创建Keil项目-CSDN博客

四,代码 

main.c

#include <REGX52.H>  
#include "74HC595.h"
/*** 函    数:主函数* 参    数:无* 返 回 值:无*/
void main()
{	 	 while(1){_74HC595_Show(0,0x80);//点亮第一行,第一个LED}
} 

Delay.c

/*** 函    数:延时函数 毫秒* 参    数:ms 延时多少毫秒* 返 回 值:无*/
void Delay_ms(int ms)	//@12.000MHz
{unsigned char data i, j;while(ms--){ i = 2;j = 239;do{while (--j);} while (--i);}
}
/*** 函    数:延时函数 毫秒* 参    数:ms 延时多少毫秒* 返 回 值:无*/
void Delay_us(int ms)	//@12.000MHz
{unsigned char data i, j;while(ms--){ i = 2;j = 239;do{while (--j);} while (--i);}
}
/*** 函    数:延时函数  10微秒* 参    数:无* 返 回 值:无*/
void Delay_10us(int _10us)	//@11.0592MHz
{unsigned char data i;while(_10us--){i = 2;while (--i);}
}

 Delay.h

#ifndef __DELAY_H_
#defind __DELAY_H_ 
void Delay_ms(int ms);
void Delay_10us(int _10us);
#endif

 74HC595.c

#include <REGX52.H>
#include "Delay.h"//定义74HC595控制管脚
sbit _SRCLK=P3^6;	//移位寄存器时钟输入
sbit _RCLK=P3^5;	//存储寄存器时钟输入 注意:在 REGX52.H 中已经申明了RCLK
sbit _SER=P3^4; 	//串行数据输入 /*** 函    数:74HC595写入一个字节* 参    数:Byte 要写入的字节* 返 回 值:无*/
void _74HC595_WriteByte(unsigned int Byte)
{	unsigned char i;for(i=0;i<8;i++){_SER=Byte&(0x80>>i);		//将1000 0000 右移i位后 & Byte_SRCLK=0;				//移位寄存器置搞电平Delay_10us(1);_SRCLK=1;				//移位寄存器置低电平/*这里有需要可以延时10微秒*/Delay_10us(1);}_RCLK=1;	//存储寄存器置低电平Delay_10us(1);_RCLK=0;	//存储寄存器置搞电平 
}
/*** 函    数:LED点阵屏显示一列数据* 参    数:Column 要选择的列,范围:0~7,0在最左边,Data 选择列显示的数据,高位在上,1为亮,0为灭* 返 回 值:无*/
void _74HC595_Show(unsigned char Column,Byte)
{_74HC595_WriteByte(Byte);	//向行写入数据P0=~(0x80>>Column);			//向列写入数据Delay_10us(1);				//等待显示稳定 
}

 74HC595.h

#ifndef __74HC595_H_
#defind __74HC595_H_
void _74HC595_WriteByte(unsigned int Byte);
void _74HC595_Show(unsigned char Column,Byte);
#endif

五,代码编译、下载到51单片机

代码编译请参考

《51单片机STC89C52RC——代码编译-CSDN博客》

代码下载请参考

《51单片机STC89C52RC——STCAI-ISP代码下载-CSDN博客》

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

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

相关文章

2024最新免费版轻量级Navicat Premium Lite 下载和安装教程

2024最新免费版轻量级Navicat Premium Lite 下载和安装教程 关于猫头虎 大家好&#xff0c;我是猫头虎&#xff0c;别名猫头虎博主&#xff0c;擅长的技术领域包括云原生、前端、后端、运维和AI。我的博客主要分享技术教程、bug解决思路、开发工具教程、前沿科技资讯、产品评…

富格林:重视可信经验防止被骗

富格林悉知&#xff0c;现货黄金是一种同时具备流动性强、交易成本低、透明度高等特点的投资品种&#xff0c;因此也吸引了众多投资者的关注和参与。但不少新手投资者&#xff0c;对可信经验不那么重视甚至忽视&#xff0c;往往很容易落入圈套中而遭遇被骗。事实上&#xff0c;…

【C++】————类和对象(下)

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;C 创作时间 &#xff1a;2024年6月25日 一、日期类 首先我们先来看一下通过类实现对日期的一系列处理&#xff0c;同时给大家说一下当中存在的一些细节问题&#xff1a; 1.1 GetMonthDay函数 这个函数的作用就是…

客户有哪些封装案例,一句克服使用让PCBA工厂泪流满面

作者 | 高速先生成员--王辉东 天空下着雨&#xff0c;萧萧从窗前经过&#xff0c;看窗里。 翠萍那娇艳欲滴的脸上挂着两串泪滴。 萧萧一进去&#xff0c;问啥情况。 翠萍往电脑屏幕一指。 当萧萧看向屏幕一瞬间。 那些曾经以为早已遗忘的伤痛&#xff0c;会在某些时刻如潮…

新增题目接口开发

文章目录 1.基本设计2.生成CRUD代码1.生成五张表的代码1.subject_info2.subject_brief3.subject_judge4.subject_multiple5.subject_radio 2.将所有的dao放到mapper文件夹3.将所有实体类使用lombok简化4.删除所有mapper的Param("pageable") Pageable pageable5.删除所…

<Linux> 实现简易线程池

文章目录 ThreadPool.hppThread.hppLockGuard.hppTask.hpptest.cc ThreadPool.hpp #pragma once #include <vector> #include <queue> #include <iostream>#include "Thread.hpp" #include "LockGuard.hpp"#define g_threadPool_num 5 …

【大数据】—谁是世界上最富的人?

引言 在2024年&#xff0c;全球财富的分布再次成为公众和经济学家关注的焦点。随着经济的波动和新兴市场的崛起&#xff0c;亿万富翁的名单也在不断变化。本文将深入探讨这一现象&#xff0c;通过最新的数据可视化分析&#xff0c;揭示世界上最富有的人在2024年的财富状况和趋…

达梦数据库的系统视图v$session

达梦数据库的系统视图v$session 在达梦数据库中&#xff0c;V$SESSION 系统视图类似于Oracle中的V$SESSION视图&#xff0c;提供有关当前数据库会话的信息。以下是有关达梦数据库 V$SESSION 系统视图的详细说明&#xff1a; V$SESSION 视图 V$SESSION视图提供了关于当前活动…

leetcode02.05-链表求和

两个链表相加 给定两个用链表表示的整数&#xff0c;每个节点包含一个数位。 这些数位是反向存放的&#xff0c;也就是个位排在链表首部。 输入&#xff1a;(7 -> 1 -> 6) (5 -> 9 -> 2)&#xff0c;即617 295 输出&#xff1a;2 -> 1 -> 9&#xff0c;即…

解锁品牌推广小妙招:如何高效塑造品牌影响力

在信息化大时代&#xff0c;企业如何做好品牌传播是一个复杂而重要的课题。随着信息爆炸和新媒体的兴起&#xff0c;传统的广告投放已经无法完全满足品牌的宣传需求&#xff0c;媒体公关传播越来越为企业所重视。今天投媒网就来与您分享在信息化大时代&#xff0c;企业如何做好…

理解Java中的死锁(Deadlock)及其示例

目录 背景: 示例代码: 类定义与变量声明&#xff1a; run方法&#xff1a; main方法 &#xff1a; 死锁示例解释&#xff1a; 总结: 背景: 在Java多线程编程中&#xff0c;死锁&#xff08;Deadlock&#xff09;是一个必须警惕和避免的问题。当两个或更多的线程在相互等…

在Mandelbrot 集中“缩放”特定区域

1、问题背景 在创建一个快速生成 Mandelbrot 集图像的 Python 程序时&#xff0c;程序开发者遇到一个问题&#xff1a;他想要渲染该集合的一个特定区域&#xff0c;但他不知道如何修改代码中的数学部分来实现 “缩放”。 2、解决方案 第一种解决方案 问题根源是代码中的一行…

SVN学习(007 svn安装Tortoise工具)

尚硅谷SVN高级教程(svn操作详解) 总时长 4:53:00 共72P 此文章包含第58p-第p72的内容 介绍 安装 选择自己想要装软件的文件夹 进入工作目录&#xff0c;发现无svn的图标&#xff0c;重启电脑即可 就能看到svn的图标 settings功能 进行图标的查看 修改subversion配置文件 …

安卓直装植物大战僵尸杂交版V2.1版完美运行

在移动游戏的世界里&#xff0c;植物大战僵尸无疑是一款深受玩家喜爱的经典游戏。如今&#xff0c;随着技术的发展和玩家需求的变化&#xff0c;植物大战僵尸杂交版V2.1版应运而生&#xff0c;为安卓用户带来了全新的游戏体验。 这一全新版本在原有游戏的基础上进行了多项创新…

SAP系统中的应付账款(与MM集成,关账操作)

1. 与物料管理的集成 Plant: 工厂是后勤中的位于中心位置的组织对象&#xff0c;一个“工厂”可以是公司内的一个作业区&#xff0c;或一个分支机构。一个“工厂”可以是一个中央交付仓库&#xff0c;可以是一个区域的销售营业部&#xff0c;一个制造工厂&#xff0c;一个集团…

java 反射介绍

Java 反射机制是一种强大的工具,它允许程序在运行时动态地获取有关类、接口、方法和字段的信息,以及动态调用方法和构造函数、访问字段。反射是 Java 提供的一种功能强大的编程工具,广泛用于框架、工具库和其他需要动态处理类型信息的场景。 反射的常用操作 1. 获取类名:…

合适的智能猫砂盆到底怎么挑?开放式封闭式一次说清!

想当初我也是在网上看了各种测评&#xff0c;纠结了好久才下定决心入手了智能猫砂盆。封闭式和开放式都用过&#xff0c;各有各的利与弊&#xff0c;不过最后的我还是选择了开放式的智能猫砂盆&#xff0c;因为开放式的设计结构会更加方便我观察小猫&#xff0c;哪个铲屎官不喜…

采购OLED透明屏指南

一、引言 OLED透明屏作为一种前沿的显示技术&#xff0c;以其独特的透明度和出色的显示效果&#xff0c;受到了众多行业的青睐。在采购OLED透明屏时&#xff0c;需要综合考虑多个因素&#xff0c;以确保选择到符合需求的高质量产品。以下是一份详细的采购OLED透明屏指南&#x…

《云南化工》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《云南化工》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。 问&#xff1a;《云南化工》级别&#xff1f; 答&#xff1a;省级。主办单位&#xff1a;云天化集团有限责任公司 主管单位&#xff1a;…

让我们聊聊网络安全中会涉及到的IP地址(IP协议)、MAC地址、路由、DNS协议(域名系统)、NAT技术(协议)、以太网帧、ARP协议

网络安全中会涉及到的IP地址&#xff08;IP协议&#xff09;、MAC地址、路由、DNS协议&#xff08;域名系统&#xff09;、NAT技术&#xff08;协议&#xff09;、以太网帧、ARP协议 一.IP地址&#xff08;IP协议&#xff09;1.IP地址&#xff08;IP协议&#xff09;的作用2.IP…