上传的文件为《光立方制作手册v1.0》,这个手册做的还不够完善,但已实现动画显示,只需要再丰富一下程序就可以。http://yunpan.cn/QUdULBEzkY3c3(2013、11、23日更新) 写完手册后,我又对程序进行了升级,写了void clc(void) void clc(void)//全局清屏
{
u8 i;
for(i=0;i<8;i++)
{
SER0=0;
SCK0=0;
delay_us(1);
SCK0=1;
}
RCK0=0;
delay_us(1);
RCK0=1;
}
将这函数添加在void frame(u8 *a,u8 v)中。
void frame(u8 *a,u8 v)//一帧,a是一帧编码起始地址
//一个画面,v表示一帧画面扫描的次数
// 可以看作这帧显示的时间
{
s8 i,j,num; //s8 有符号定义
while(v--)
{
for(i=0;i<8;i++) //层数层控制,选通某一层,
//使得第1层到第8层,依次点亮
{
clc(); //大家可以尝试将此代码删除,运行代码dot(5);或UtoD_scan(90);
//试着比较一下,欢迎大家多提宝贵意见,共同解决这个问题。
storey(a+i*8);//层填充函数,控制某层灯点亮方式
num=0x01;
num<<=i;
for(j=0;j<8;j++) //串行数据输入
{
if(num&0x80)
SER0=1; // SER串行输入端口
else
SER0=0;
delay_us(1);
SCK0=0; //上升沿,输入到移位寄存器
delay_us(2);
SCK0=1;
num<<=1;
}
RCK0=0;
delay_us(2);
RCK0=1;
delay_ms(2);//一层点亮时间
}
}
}
|