【51单片机只有一个8*8点阵数据如何滚动起来一片595+一组IO+花样】2022-1-15

 缘由单片机点阵程序怎样让移动后的箭头后面灯熄灭呢? - 24小时必答区 代码简洁源于精妙严谨推敲,看电路写代码,看代码连接电路,看电路改代码,看代码改电路都是基础,初学单片机时,虽然自己有想法能写出来,也希望能多看看别人是如何写的,于是周游论坛,遍览群书,访师寻友只是看看,自己历练才能达到想要的结果。

#include "REG52.h"
sbit ds=P1^0;//数据线  595的14脚
sbit shcp=P1^1;//数据输入时钟线 595的11脚
sbit stcp=P1^2;//输出存储器锁存时钟线 595的12脚
sbit mr=P1^3;//数据清零
unsigned char code shuju[]={0x00,0x38,0x38,0x38,0xfe,0x7c,0x38,0x10};//LED点阵高电平端口数据
unsigned char code dzwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//LED点阵低电平端口位
void QuDong595(unsigned char sj)
{
	unsigned char aa=8;
	mr=0;mr=1;
	while(aa--)
	{
		ds=sj>>7;
		sj<<=1;//十六进制数据发送
        shcp=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。
        shcp=0;
	}
	stcp=0;      
    stcp=1;//上升沿将数据送到输出锁存器   
    stcp=0;
}
void main()
{
	unsigned char Xd=0,ss=1,cs=0,d=0,y=0;
	unsigned int ys=0;
//	ZhongDuanSheZhi();
	while(1)
	{
		P0=dzwei[cs];//控制图形方向
//		QuDong595(((cs+d)<8?shuju[7-cs-d]:0x00));//数据消失cs+d倒退(7-cs)-d前进
		QuDong595(((cs+8-d)<8?shuju[cs+8-d]:0x00));//数据出现cs+d倒退(7-cs)-d前进
//		P0=~((cs+d)<8?shuju[(7-cs)-d]:0x00);QuDong595(~dzwei[7-cs]);//90°转向
		while(++Xd);mr=0;mr=1;QuDong595(0x00);
		if(++cs>7)cs=0;
		if(++y==0){if(++d>8*1)d=0;}
	}
}

 级联595演示只有一个8*8数据,数组不再添加任何值,实现数据出现数据消失,90度转向,实现4个方向花样。

void main()         //主函数
{
  unsigned char b=0, j=0, xd=0, h=0, aa=0, sj=0, ls=1;
	unsigned int ys=0;
//	zdsz();
	oe=0;//锁存使能
	while(1)
	{
		if(aa==0||aa==9){QuDong595(b+8-j<8?shuju[(b)+8-(j)]:0x00);QuDong595(sjwei[7-b]);}
		else if(aa==1||aa==8){QuDong595(b+j<8?shuju[(7-b)-(j)]:0x00);QuDong595(sjwei[b]);}
		else if(aa==4||aa==13){QuDong595(b+8-j<8?shuju[(b)+8-(j)]:0x00);QuDong595(sjwei[b]);}
		else if(aa==5||aa==12){QuDong595(b+j<8?shuju[(7-b)-(j)]:0x00);QuDong595(sjwei[7-b]);}
		else if(aa==2||aa==11){QuDong595(~sjwei[7-b]);QuDong595(~(b+8-j<8?shuju[(b)+8-(j)]:0x00));}
		else if(aa==3||aa==10){QuDong595(~sjwei[b]);QuDong595(~(b+j<8?shuju[(7-b)-(j)]:0x00));}
		else if(aa==6||aa==15){QuDong595(~sjwei[b]);QuDong595(~(b+8-j<8?shuju[(b)+8-(j)]:0x00));}
		else if(aa==7||aa==14){QuDong595(~sjwei[7-b]);QuDong595(~(b+j<8?shuju[(7-b)-(j)]:0x00));}
		while(++xd);//显示延时
		mr=0;mr=1; QuDong595(0x00);
		if(++b>7)b=0;
		if(++h==0){//ls*=2;if(!ls)++ls;切换数据延时+显示延时
		if(++j>8*1){j=0;if(++aa>15)aa=0;}}
	}
}

 早上刚想写这方面的内容巧了就看到有些类似的提问,回复要硬消隐+软消隐,可是有些人就是爱钻牛角尖说已经有消隐了或不需要延时和消隐,有些人看了回复就去试看结果就解决了,就有这样人的区别,对于爱钻牛角尖的不撞南墙不回头的怎么办,佛门有个典故说佛菩萨教众生长富财宝十善法有人信行果长富财宝,有人不信认为只有损人利己有财宝结果是众人厌之财宝耗散甚至破家亡身,佛菩萨对于不听的众生只好暂时远离,因为知道缘分未到多说无益,已为说明了只能暂时做个远缘分,待缘分到了成熟了才能明白才能回头是岸才能知错投路径反远知回头才能达目的地。
今天得闲就做个荔枝演示取消硬消隐和取消软消隐会造成什么现象,稍后发动画。
首先取消软消隐看现象,次取消硬消隐看现象,硬消隐放到软消隐之后现象同取消硬消隐。

  位取反数据不取反演示 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值