51单片机的自学之路(7)——LED点阵实验,在16*16的LED屏幕上,分别显示点,字,图形。

这篇博客详细介绍了如何使用51单片机进行16x16 LED点阵实验,包括显示点、字和图形。通过理解8x8点阵的工作原理,结合74HC595芯片进行IO扩展,实现对点阵的控制。博主分享了点亮第一行第一列LED的程序,并解释了如何获取和存储字模数据以显示特定字符和图形,最后展示了一个显示心形图形的例子。
摘要由CSDN通过智能技术生成
LED点阵实验,显示点。

在了解1616的LED点阵之前,先了解下88的点阵。
在这里插入图片描述
8*8 点阵共由 64 个发光二极管组成,且每个发光二极管是放置在行线和列线 的交叉点上,当对应的某一行置 1 电平,某一列置 0 电平,则相应的二极管就亮; 如要将第一个点点亮,则 1 脚接高电平 a 脚接低电平,则第一个点就亮了;如果 要将第一行点亮,则第 1 脚要接高电平,而(a、b、c、d、e、f、g、h )这些 引脚接低电平,那么第一行就会点亮;如要将第一列点亮,则第 a 脚接低电平, 而(1、2、3、4、5、6、7、8)接高电平,那么第一列就会点亮。由此可见,LED 点阵的使用也是非常简单的。

总结:行列要想点亮,需要接低电平。列线要想点亮,需要接高电平。

而1616的点阵实验是由4个88的点阵组成的。在本次实验当中,如果要用单片机来控制点阵的输出的话,那IO口是肯定不够的。所以这里用了之前学到的74HC595芯片,并且是级联的4个74HC595芯片。

实验程序,点亮第一行第一列的发光二极管:

#include<reg52.h>
#include<intrins.h>

sbit RCK=P1^0;	  //移位寄存器
sbit SCK=P1^1;	  //数据寄存器,
sbit SER=P1^2;
typedef unsigned char  u8;
typedef unsigned char  u9;
void  Hc595SendByte(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{
   
	u8 i;
	RCK=1;
	SCK=1;			  //把串行数据放入寄存器当中
	
	for(i=0;i<8;i++)	 //发送八位数
	{
   
		SER=dat1>>7;			//从最高位开始发送
		dat1<<=1;
		SCK=0;
		_nop_();
		_nop_();
		SCK=1;		  //标准的上升沿信号
	}
		for(i=0;i<8;i++)
		{
   
		SER=dat2>>7;			//从最高位开始发送
		dat2<<=1;
		SCK=0;
		_nop_();
		_nop_();
		SCK=1;
		}	
		for(i=0;i<8;i++)
		{
   
		SER=dat3>>7;			//从最高位开始发送
		dat3<<=1;
		SCK=0;
		_nop_();
		_nop_();
		SCK=1;
		}
		for(i=0;i<8;i++)
		{
   
		SER=dat4>>7;			//从最高位开始发送
		dat4<<=1;
		SCK=0;
		_nop_();
		_nop_();
		SCK=1;	
		}	
	
	RCK=0;
	_nop_();
	_nop_();
	RCK=
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值