首页 > 其他分享 >13_LED点阵屏

13_LED点阵屏

时间:2023-11-19 13:57:12浏览次数:26  
标签:13 LED 0x00 unsigned MatrixLED sbit ShowColumn 点阵

LED点阵屏

介绍

image-20231110180748784

显示原理

image-20231111134434728

原理图

image-20231111140548379

image-20231111140703039

74HC595

image-20231111141228385

C51的sfr,sbit

image-20231111143052072

选择列来显示矩阵LED

main.c

#include <REGX52.H>
#inlcude "Delay.h"

sbit mRCLK=P3^5; //RCLK
sbit mSRCLK=P3^6; //SRCLK
sbit mSER=P3^4; //SER


void _74HC595_WriteByte(unsigned char Byte)
{
	unsigned char i;
	mSRCLK=0;
	mRCLK=0;
	for(i=0;i<8;i++)
	{
		mSER=Byte&(0x80>>i); //sbit非0置1
		mSRCLK=1;
		mSRCLK=0;
	}
	mRCLK=1;
}

void MatrixLED_ShowColumn(unsigned char Column, Data)
{
	_74HC595_WriteByte(Data);
	P0=~(0x80>>Column);
}

void main()
{
	MatrixLED_ShowColumn(7,0xF0);
	while(1)
	{
		
	}
}

运行效果

image-20231111165828006

矩阵LED显示笑脸

main.c

#include <REGX52.H>
#include "Delay.h"

sbit mRCLK=P3^5; //RCLK
sbit mSRCLK=P3^6; //SRCLK
sbit mSER=P3^4; //SER

#define MATRIX_LED_PORT P0

/**
  * @brief 74HC595写入一个字节
  * @param 要写入的字节
  * @retval 无
  */
void _74HC595_WriteByte(unsigned char Byte)
{
	unsigned char i;
	mSRCLK=0;
	mRCLK=0;
	for(i=0;i<8;i++)
	{
		mSER=Byte&(0x80>>i); //sbit非0置1
		mSRCLK=1;
		mSRCLK=0;
	}
	mRCLK=1;
}

/**
  * @brief LED点阵屏显示一列数据
  * @param Column 要选择的列, 范围: 0~7, 0在最左边
* @param Data 选择列显示的数据, 高位在上, 1为亮,0为灭
  * @retval 无
  */
void MatrixLED_ShowColumn(unsigned char Column, Data)
{
	_74HC595_WriteByte(Data);
	MATRIX_LED_PORT=~(0x80>>Column);
	Delay(1);
	MATRIX_LED_PORT=0xFF;
}

void main()
{
	while(1)
	{
		MatrixLED_ShowColumn(0,0x3C);
		MatrixLED_ShowColumn(1,0x42);
		MatrixLED_ShowColumn(2,0xA9);
		MatrixLED_ShowColumn(3,0x85);
		MatrixLED_ShowColumn(4,0x85);
		MatrixLED_ShowColumn(5,0xA9);
		MatrixLED_ShowColumn(6,0x42);
		MatrixLED_ShowColumn(7,0x3C);
	}
}

运行效果

image-20231111184211362

矩阵LED显示流动字幕

MatrixLED.c

#include <REGX52.H>
#include "Delay.h"

sbit mRCLK=P3^5; //RCLK
sbit mSRCLK=P3^6; //SRCLK
sbit mSER=P3^4; //SER

#define MATRIX_LED_PORT P0

/**
  * @brief 74HC595写入一个字节
  * @param 要写入的字节
  * @retval 无
  */
void _74HC595_WriteByte(unsigned char Byte)
{
	unsigned char i;
	mSRCLK=0;
	mRCLK=0;
	for(i=0;i<8;i++)
	{
		mSER=Byte&(0x80>>i); //sbit非0置1
		mSRCLK=1;
		mSRCLK=0;
	}
	mRCLK=1;
}

/**
  * @brief LED点阵屏显示一列数据
  * @param Column 要选择的列, 范围: 0~7, 0在最左边
* @param Data 选择列显示的数据, 高位在上, 1为亮,0为灭
  * @retval 无
  */
void MatrixLED_ShowColumn(unsigned char Column, Data)
{
	_74HC595_WriteByte(Data);
	MATRIX_LED_PORT=~(0x80>>Column);
	Delay(1);
	MATRIX_LED_PORT=0xFF;
}

MatrixLED.h

#ifndef __MATRIX_LED_H__
#define __MATRIX_LED_H__

void _74HC595_WriteByte(unsigned char Byte);
void MatrixLED_ShowColumn(unsigned char Column, Data);

#endif

main.c

#include <REGX52.H>
#include "MatrixLED.h"

unsigned char code Animation[]={ //放入Flash不占用内存,但是只读
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xFF,0x08,0x08,0xFF,0x00,0x0E,0x15,0x15,0x0D,0x00,0xFE,0x01,0x02,0x00,0xFE,0x01,
0x02,0x00,0x0E,0x11,0x11,0x0E,0x00,0x7D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

void main()
{
	unsigned char i,Offset=0,Count=0;
	while(1)
	{
		for(i=0;i<8;i++)
		{
			MatrixLED_ShowColumn(i,Animation[i+Offset]);
		}
		Count++;
		if(Count>10)
		{
			Count=0;
			Offset++;
			if(Offset>32)
			{
				Offset=0;
			}
		}
	}
}

运行效果

VID_20231112_131850

标签:13,LED,0x00,unsigned,MatrixLED,sbit,ShowColumn,点阵
From: https://www.cnblogs.com/mzx233/p/17841971.html

相关文章

  • 14_DS1302实时时钟
    DS1302实时时钟介绍引脚定义和应用电路内部结构框图寄存器定义时序定义BCD码LCD1602显示年月日时分秒星期信息DS1302.c#include<REGX52.H>#include"DS1302.h"sbitDS1302_SCLK=P3^6;sbitDS1302_IO=P3^4;sbitDS1302_CE=P3^5;#defineDS1302_SECOND0x80......
  • 2023-2024-20231317《计算机程序与设计》第八周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第八周作业)这个作业的目标<《计算机程序概论九张》《C语言程序设计第七章》>作业正文https://www.cnblog......
  • qemu-kvm: error: failed to set MSR x38d to x0x 【问题解决】
    问题解决创建报错在下面的issues找到解决办法https://github.com/GNS3/gns3-server/issues/1774可以尝试在VM上禁用MSR,然后检查是否可以启动qemu计算机添加内核模块参数临时修改echoY>/sys/module/kvm/parameters/ignore_msrs或者永久修改cat>/etc/modp......
  • 2023-2024-1 20231307《计算机基础与程序设计》第8周学习总结
    作业信息作业属于的课程<班级链接>(2022-2023-1-计算机基础与程序设计)作业要求<作业要求>(2022-2023-1计算机基础与程序设计第一周作业)作业目标《计算机科学概论》第9章和《C语言程序设计》第7章作业正文https://www.cnblogs.com/lzt-/p/17841598.html教材学......
  • misc 2023.11.13-11.19
    1.a.将其拖入010中,发现有一串二进制b.我们考虑是不是什么解密,将二进制转换为16进制再转为asciic.得到flag{koekj3s} 2.a.暴力破解,解压文件b.解密之后发现一个奇怪的玩意,经过资料搜索,这是brainfuck代码c.使用解密工具: 3.a.用wireshark打开文件,过滤出HTTP数据包......
  • crypto 2023.11.13-11.19
    1.a.直接用python跑。b.得到flag,此flag为16进制,需要转换为字符串。c.得到flag 2.a.直接爆破猜解:b.得到flag 3.a.直接暴力猜解b.得到flag 4.a.直接使用工具解码b.得到flag 5.a.用python工具解密b.得到10进制的flag,将其转换为16进制,再转换为字符串......
  • 51时钟实验——DS1302芯片
    关于DS1302芯片:1、引脚说明: Vcc1:主电源;Vcc2:备份电源。当Vcc2>Vcc1+0.2VVcc2>Vcc1+0.2VVcc2>Vcc1+0.2VVcc2>Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2<Vcc1时,由Vcc1向DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期......
  • 2023-2024-1 20231327《计算机基础与程序设计》第8周学习总结
    学期(2023-2024-1)学号(20231327)《计算机基础与程序设计》第8周学习总结作业信息课程<班级的链接>(2023-2024-1-计算机基础与程序设计)要求<作业要求的链接>(2023-2024-1计算机基础与程序设计第7周作业)目标<了解并使用循环结构>作业正文https://i.cnblogs.com/p......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第十周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第十周学习笔记一、任务要求自学教材第12章,提交学习笔记(10分),评分标准如下1.知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)“我在学***X知......
  • 囚徒4.0_13_梯度
    囚徒4.0_13_梯度这是是关于求取梯度的#coding:utf-8importnumpyasnpimportmatplotlib.pylabaspltfrommpl_toolkits.mplot3dimportAxes3D#非批处理梯度求取(1,2)(x1,x2)def_numerical_gradient_no_batch(f,x):h=1e-4#0.0001grad=np.zeros_like(x)#对x进......