8*8点阵动态显示 I 爱 U

(1)8*8点阵原理:通过动态扫描方法,运用74HC595芯片进行操作。让74HC595的数据端输出想要的数据,通过P0口,进行点亮。
(2)原理图:
在这里插入图片描述在这里插入图片描述

(3)源代码:

#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit  RCLK=P3^5;
sbit SRCLK=P3^6;
sbit   SER=P3^4;
u8  ledduan1 []={0x00,0x00,0x41,0x7f,0x7f,0x41,0x00,0x00};
u8  ledwei1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xff,0xff};
u8  ledduan2 []={0x38,0x7c,0x7e,0x3f,0x3f,0x7e,0x7c,0x38};
u8  ledwei2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u8  ledduan3 []={0x00,0x7e,0x7f,0x01,0x01,0x7f,0x7e,0x00};
u8  ledwei3[]={0xff,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};
void delay(u16 i)
{
	while(i--);
}
void HC595SendByte(u8 dat)//可以直接调用
{
	u8 i;
	SRCLK=0;//上升沿,移位寄存器移位,保存在
	//移位寄存器里面
     RCLK=0;//
	for(i=0;i<8;i++)
	{
		SER=dat>>7;//最先传送高位
		dat<<=1;//次高位左移
		SRCLK=1;
		_nop_();
		_nop_();//一个机器周期
		SRCLK=0;//存储在存储寄存器				
	}
		RCLK=1;
		_nop_();
		_nop_();//一个机器周期
		RCLK=0;			
}
void display()
{
	u8 a;
	for(a=0;a<8;a++)
		{
			P0=ledwei1[a];
			HC595SendByte(ledduan1[a]);
			delay(100);
			HC595SendByte(0x00);
		}
}
void displayl()
{
	u8 b;
		for(b=0;b<8;b++)
		{
			P0=ledwei2[b];
			HC595SendByte(ledduan2[b]);
			delay(100);
			HC595SendByte(0x00);
		}
}
void displayp()
{
	u8 c;
	for(c=0;c<8;c++)
		{
			P0=ledwei3[c];
			HC595SendByte(ledduan3[c]);
			delay(100);
			HC595SendByte(0x00);
		}	
}
void main()
{
	u8 h;
	while(1)
	{
		for(h=0;h<3;h++)
		{
		display();
		delay(65535);
	    displayl();
		delay(65535);
		displayp();
		delay(65535);	
		}			
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值