8051单片机实战分析(以STC89C52RC为例) 09 - LED点阵显示数字_stc89c52rcled点阵

2 原理图

① 8* 8 LED点阵原理图:

② 74HC595原理图(JOE排针处把OE接到GND):

③ MCU原理图:

3 程序

① 点亮左上角第一个点:

#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include <intrins.h>

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit SRCLK=P3^6; //存储寄存器时钟引脚(数据输入时钟线)
sbit RCLK=P3^5; //移位寄存器时钟引脚(输出存储器锁存时钟线)
sbit SER=P3^4; //串行数据输入引脚


/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\* 函数名 : Hc595SendByte(u8 dat)
\* 函数功能 : 向74HC595发送一个字节的数据
\* 输入 : 无
\* 输出 : 无
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
void Hc595SendByte(u8 dat)
{
	u8 i;
	SRCLK=0; // 初始化数据输入时钟线
	RCLK=0;	// 初始化输出存储器锁存时钟线
	for(i=0;i<8;i++)
	{
		SER=dat>>7; //从最高位开始发送 例:1111 0000,最高为1右移7位,最后变为1,那么最高位就保存下来
		dat<<=1; //左移移位变为次高位 ,接上一例,左移移位变为次高位,在右移7位,变为次高位

		SRCLK=1; // 从0到1给,即从低电平到高电平,给移位寄存器上升沿,数据存入移位寄存器中
		\_nop\_();
		\_nop\_();
		SRCLK=0; // 复位引脚
	}

	RCLK=1; // 移位寄存器时钟引脚加上升沿,数据并行输出
	\_nop\_();
	\_nop\_();
	RCLK=0; // 复位引脚
}

/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\* 函 数 名 : main
\* 函数功能 : 主函数
\* 输 入 : 无
\* 输 出 : 无
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
void main()
{		
	Hc595SendByte(0x80); // 写入0b10000000,让D7引脚输出高电平
	P0=0x7f; // 写入0b01111111,让P07引脚输出低电平
	while(1);
}

② 在点阵上显示数字0

#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器
#include <intrins.h>

typedef unsigned int u16;	  //对数据类型进行声明定义
typedef unsigned char u8;

sbit SRCLK=P3^6; //存储寄存器时钟引脚(数据输入时钟线)
sbit RCLK=P3^5; //移位寄存器时钟引脚(输出存储器锁存时钟线)
sbit SER=P3^4; //串行数据输入引脚

// 定义数字0的显示位置
u8 LedSeg[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
u8 LedPos[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\* 函 数 名 : delay
\* 函数功能 : 延时函数,i=1时,大约延时10us
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
void delay(u16 i)
{
	while(i--);	
}

/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
\* 函数名 : Hc595SendByte(u8 dat)
\* 函数功能 : 向74HC595发送一个字节的数据
\* 输入 : 无
\* 输出 : 无
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
void Hc595SendByte(u8 dat)
{
	u8 i;
	SRCLK=0; // 初始化数据输入时钟线
	RCLK=0;	// 初始化输出存储器锁存时钟线
	for(i=0;i<8;i++)
	{
		SER=dat>>7; //从最高位开始发送 例:1111 0000,最高为1右移7位,最后变为1,那么最高位就保存下来
		dat<<=1; //左移移位变为次高位 ,接上一例,左移移位变为次高位,在右移7位,变为次高位

		SRCLK=1; // 从0到1给,即从低电平到高电平,给移位寄存器上升沿,数据存入移位寄存器中
		\_nop\_();
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/8dee307b63462f19f24bed4e36ca2005.png)

![img](https://img-blog.csdnimg.cn/img_convert/80cab9e2c0b374f4394d15fb3d2ae947.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/d5d42cc770b851bd075d79dd432ab961.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/0c6ea3f4754dc9d39ce8995be6cd7d1a.png)

![img](https://img-blog.csdnimg.cn/img_convert/2e33a0ed4077152fc630dc12656e699e.png)

![img](https://img-blog.csdnimg.cn/img_convert/8c65f559158275acb7f4da41582ced06.png)

![](https://img-blog.csdnimg.cn/img_convert/3ade3e495c4e105c4e703f75cd645989.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值