用74HC595 进行层扫描与列扫描的光立方显示。部分源码。有点看不懂求解答..
时间:10-02
整理:3721RD
点击:
d=60000;
dd=60000;
while(dd--)
{
while(d--)
{
static uchar layer=0;
for(j=0;j<8;j++) //LED正极驱动循环扫描8层
{
for (i=0;i<8;i++) //循环8次,每一次将光立方的一层动画数据装入buffer[]数组
{
buffer=display[layer]; //调用层暂存数组将用于光立方显示的二维数组里的一层显示数据装入其中
}
xiansi1(); //单片机发送数据给74HC595
cheng=0x01<<layer; //层移位,
DS2 = ~cheng&0x01; //发送层扫描数据
SH_CP2 = 1;
SH_CP2 = 0; //移位寄存器移位
ST_CP=1;
ST_CP=0; //控制显示列
ST_CP2=1;
ST_CP2=0; //控制显示层
if (layer<7)
layer++; //为扫面上一层 做准备(光立方一个静止图形是从最底层开始扫描)
else
layer=0;
delay(2);
}
}
}
layer对0x1进行位移。
按程序来看,位移8次(0~7)只有7次有效,就只能点亮7层led.
这样看话,完全可以不用层扫描。想列扫描那样实现
程序 这样写是想实现什么功能啊!? 谁帮我看看...
dd=60000;
while(dd--)
{
while(d--)
{
static uchar layer=0;
for(j=0;j<8;j++) //LED正极驱动循环扫描8层
{
for (i=0;i<8;i++) //循环8次,每一次将光立方的一层动画数据装入buffer[]数组
{
buffer=display[layer]; //调用层暂存数组将用于光立方显示的二维数组里的一层显示数据装入其中
}
xiansi1(); //单片机发送数据给74HC595
cheng=0x01<<layer; //层移位,
DS2 = ~cheng&0x01; //发送层扫描数据
SH_CP2 = 1;
SH_CP2 = 0; //移位寄存器移位
ST_CP=1;
ST_CP=0; //控制显示列
ST_CP2=1;
ST_CP2=0; //控制显示层
if (layer<7)
layer++; //为扫面上一层 做准备(光立方一个静止图形是从最底层开始扫描)
else
layer=0;
delay(2);
}
}
}
layer对0x1进行位移。
按程序来看,位移8次(0~7)只有7次有效,就只能点亮7层led.
这样看话,完全可以不用层扫描。想列扫描那样实现
程序 这样写是想实现什么功能啊!? 谁帮我看看...
0-7是8次,到了7,也就是第八次,需要回零的,这里好像同时对两个595操作,所以应该是选定了层后,输入这一层的显示数据,再移到下一层,具体的可能有电路和完整的595驱动就比较好理解
可是我感觉层扫描时,第一次写入0 余下七次写1
。是这样吗?