51——8*8LED点阵屏

8*8LED点阵屏

电路图

在这里插入图片描述
16个引脚进行控制

74HC595

串行;并行 概念
74HC595是串入并出

在这里插入图片描述

在这里插入图片描述
14:串行数据输入端,级联连接上一级的9;
9:级联输出端,连接下一级的14;
11:cp信号,上升沿时数据从14串行输入,移位寄存器的数据移位,首先送进去的是第一位,放在寄存器的最高位,再送下一位时,第一位数据往下沉,每次都需要一个脉冲信号;
12:上升沿时数据从QA~QH并行输出,一次脉冲就好;
10:低电平清零,通常接Vcc;
13:高电平时为高阻态,使与点阵屏的16个连接线断路通常接地。

点阵屏显示一个点代码

#include <reg52.h>
sbit DIO  = P3^4; //串行数据口
sbit S_CLK = P3^5;//移位寄存器时钟
sbit R_CLK = P3^6;//输出锁存器时钟
void main()
{
	//ROW 0x80 , COL 0xfe
	unsigned char i, dat;//i循环次数  dat需要发送的数据
	dat = 0xfe;//发送列值
	for(i=0; i<8; i++)//循环8次
	{
		S_CLK = 0;//拉低移位寄存器时钟
		R_CLK = 0;//拉低输出锁存器时钟
		if(dat & 0x01)//发送1
			DIO = 1;
		else		  //发送0
			DIO = 0;
		S_CLK = 1;//拉高移位寄存器时钟,数据移位
		dat >>= 1;//数据右移
	}
	dat = 0x80;//发送行值
	for(i=0; i<8; i++)//循环8次
	{
		S_CLK = 0;//拉低移位寄存器时钟
		R_CLK = 0;//拉低输出锁存器时钟
		if(dat & 0x01)//发送1
			DIO = 1;
		else		  //发送0
			DIO = 0;
		S_CLK = 1;//拉高移位寄存器时钟,数据移位
		dat >>= 1;//数据右移
	}
	R_CLK = 1;//拉高输出锁存器时钟,并行输出数据
	while(1);
}

点阵屏显示中文字电代码

#include <reg52.h>
#include <intrins.h>
sbit DIO = P3^4;//串行数据口
sbit S_CLK = P3^5;//移位寄存器时钟
sbit R_CLK = P3^6;//输出锁存器时钟
unsigned char code tabel[8]={0xE0,0xEE,0x01,0x6D,0x01,0x6D,0x01,0xEF};
//0xEF,0x01,0x6D,0x01,0x6D,0x01,0xEE,0xE0//电
void  Send_Byte(unsigned char dat)
{	
	unsigned char i;
	S_CLK = 0;
	R_CLK = 0;
	for(i=0;i<8;i++)
	{
		if(dat & 0x01) 
			DIO = 1;
		else 
			DIO = 0;
		S_CLK = 1;
		dat >>= 1;
		S_CLK = 0;
	}	
}
void main()
{
	unsigned char j,row;
	while(1)
	{
		row = 0x80;//选中第一行
		for(j = 0;j<8;j++)
		{
			Send_Byte(tabel[j]);
			Send_Byte(row);
			R_CLK = 1;
			R_CLK = 0;
			row = _cror_(row,1);		
		}

	}

}

俩汉字

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

sbit DIO = P3^4;//串行数据口
sbit S_CLK = P3^5;//移位寄存器时钟
sbit R_CLK = P3^6;//输出锁存器时钟
unsigned char code tabel[2][8]={0xF9,0xF5,0x81,0xFD,0xC1,0xD7,0xD7,0x87,0x99,0xE7,0x00,0xA5,0x81,0xDB,0x81,0xDB};
//0xEF,0x01,0x6D,0x01,0x6D,0x01,0xEE,0xE0//电
void  Send_Byte(unsigned char dat)
{	
	unsigned char i;
	S_CLK = 0;
	R_CLK = 0;
	for(i=0;i<8;i++)
	{
		if(dat & 0x01) 
			DIO = 1;
		else 
			DIO = 0;
		S_CLK = 1;
		dat >>= 1;
		S_CLK = 0;
	}	
}

void main()
{
	unsigned char j,row,k;
	unsigned int z;
	while(1)
	{
		for(k = 0;k<2;k++)
		{	
			for(z=0;z<1000;z++)
			{
				row = 0x80;//选中第一行
				for(j = 0;j<8;j++)
				{
					Send_Byte(tabel[k][j]);
					Send_Byte(row);
					R_CLK = 1;
					R_CLK = 0;
					row = _cror_(row,1);
				}		
			}
		
		}
	}

}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值