使用点阵屏显示图形,首先我们先来看一下关于点阵屏的介绍

点阵屏事实上就是八个led模块的组合,通过增加led的数量来实现更复杂的功能。

想要点阵屏进行显示,首先要了解它的显示原理。

 将点阵屏与数码管的显示原理进行对比能更好的理解点阵屏的显示原理。

 了解了点阵屏·的显示原理那接下来就开始进行功能代码的编程

首先是管脚的定义

 sbit RCK=P3^5;//RCLK
 sbit SCK=P3^6;//SRCLK
 sbit SER=P3^4;//SER

接着是进行逐列扫描时对每一列的8个led进行亮灭控制

void _74HC595_WriteByte(unsigned char Byte)
{
	unsigned char i=0;	
	for(i=0;i<8;i++)
	{
		SER=Byte&(0x80>>i);
		SCK=1;			
		SCK=0;	
	}
	RCK=1;
	RCK=0;
}

在这个函数中接收到的数据是一个十六进制的数,将其转换为二进制数后每一位上的0/1就对应一列8个led的亮灭。

下面是对列进行的编程

void MartixLED_ShowColumn(unsigned char Column,Data)
{
			P0=~(0x80>>Column);
			_74HC595_WriteByte(Data);	
			_74HC595_WriteByte(0x00);
			Delay(1);
			P0=0xFF;
}

输入的第一个数据表示列,用来决定哪一列的阴极连接,接着通过_74HC595_WriteByte(Data);函数来对对应这一列的led进行亮灭控制。_74HC595_WriteByte(0x00);这个函数的作用是消除该列数据对下一列led亮灭所产生的影响

主函数的作用就是进行数据的输入

void main()
{	
	unsigned char i=0;	
	SCK=0;
	RCK=0;
	while(1)
	{			
				MartixLED_ShowColumn(0,0x38);	
				MartixLED_ShowColumn(1,0x7C);
				MartixLED_ShowColumn(2,0x7E);
				MartixLED_ShowColumn(3,0x3F);
				MartixLED_ShowColumn(4,0x3F);
				MartixLED_ShowColumn(5,0x7E);
				MartixLED_ShowColumn(6,0x7C);
				MartixLED_ShowColumn(7,0x38);
	}		
}

运行结果如下

 


版权声明:本文为weixin_68131472原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_68131472/article/details/126467547