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