论坛首页 > 交流专区 > 技术交流 > 【转载】8x8x8光立方DIY
查看:464  |  回复:2
【转载】8x8x8光立方DIY
汇创工作室
4
主题
1
回复
发表于Wed Dec 19 12:27:55 CST 2018   |  只看该作者 1# 电梯直达

“光立方”是一种基于娱乐和学习为一体的科学制作,制作完成后你的程序多强大,你的“光立方”就有多炫酷。

系统的工作原理图

  

 

“光立方”原理图如下

 

下面是光立方的制作过程,非常详细:

 

  

 

 

  

 

 

 

  

  

 

 

   

 

 

 

     

 

光立方的单片机源程序:  

1. #include<reg51.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

2. 

3. #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换

4. sbit line_LATCH=P1^0;//定义锁存使能端口 行扫描的锁存端口

5. sbit LATCH1=P2^0;//定义锁存使能端口 第一灯板的字节锁存

6. sbit LATCH2=P2^1;//                 

7. sbit LATCH3=P2^2;//

8. sbit LATCH4=P2^3;

9. sbit LATCH5=P2^4;

10. sbit LATCH6=P2^5;

11. sbit LATCH7=P2^6;

12. sbit LATCH8=P2^7;

13.                                                                         

14. void Delay(unsigned int t)

15. {

16.         while(--t);

17. }

18. unsigned char line[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};// 显示行值01234567        

19. void display(unsigned char *Data)//显示子程序,指针数组作为形参,直接指向传过来的实参数组的地址        ,这样就可直接操纵数组传过来的数组了

20. {

21.         unsigned char i;

22.         for(i=0;i<8;i++)

23.         {

24.                 DataPort=line[i]; //先给行(灯板的公共端)输入数据

25.                line_LATCH=1;     //打开锁存,把数据line[i]放进去

26.                    line_LATCH=0;          //关闭锁存,阻止外部数据进来

27.         

28.                 DataPort=Data[i];         //把数组Data[0~7]里的值依次传给第一灯板的573锁存器中

29.                 LATCH1=1;LATCH1=0;

30.                 

31.                 DataPort=Data[8+i];  //把数组Data[8~15]里的值依次传给第二灯板的573锁存器中  

32.                 LATCH2=1;LATCH2=0;        

33.                 

34.                 DataPort=Data[16+i]; //把数组Data[16~23]里的值依次传给第三灯板的573锁存器中

35.                 LATCH3=1;LATCH3=0;     

36.                 

37.                 DataPort=Data[24+i];

38.                 LATCH4=1;LATCH4=0;

39. 

40.                 DataPort=Data[32+i];

41.                 LATCH5=1;LATCH5=0;     

42.                         

43.                 DataPort=Data[40+i];

44.                 LATCH6=1;LATCH6=0;        

45.                                                 

46.                 DataPort=Data[48+i];

47.                 LATCH7=1;LATCH7=0;     

48.                         

49.                 DataPort=Data[56+i];

50.                 LATCH8=1;LATCH8=0;

51. 

52.                 Delay(200); //扫描间隙延时,时间太长会闪烁,太短会造成重影

53.                

54.                 DataPort=0xff; // 清空行锁存器里数据,防止出现乱码

55.                line_LATCH=1;  //

56.                line_LATCH=0;

57.         }                                        /*如此一趟循环下来,每次都是8块灯板的同一行一起点亮,

58.                                                   如此组成一个灯板,8次循环下来,就全部灯都点亮了*/

59. }

60. 

61. void liang()                //点亮所有的灯

62. {

63.         unsigned int i;

64.         for(i=0;i<5000;i++)

65.         {

66.                 DataPort=0x00;    //先给行(灯板的公共端)输入数据

67.                line_LATCH=1;     //打开锁存,把数据0x00放进去

68.                    line_LATCH=0;          //关闭锁存,阻止外部数据进来

69.                 

70.                 DataPort=0xff;           //把0xff送进锁存器1~8中,使它们的输出引脚都输出高电平,与行锁存器的0x00相对,点亮所有的灯

71.                 LATCH1=1;LATCH1=0;

72.                 LATCH2=1;LATCH2=0;                

73.                 LATCH3=1;LATCH3=0;                 

74.                 LATCH4=1;LATCH4=0;

75.                 LATCH5=1;LATCH5=0;

76.                 LATCH6=1;LATCH6=0;

77.                 LATCH7=1;LATCH7=0;

78.                 LATCH8=1;LATCH8=0;

79.         }                                  

80. }

81. void mie()                        //熄灭所有的灯

82. {

83.         unsigned int i;

84.         for(i=0;i<5000;i++)

85.         {

86.                 DataPort=0x00; //先给行(灯板的公共端)输入数据

87.                line_LATCH=1;     //打开锁存,把数据0x00放进去

88.                    line_LATCH=0;          //关闭锁存,阻止外部数据进来

89.                 

90.                 DataPort=0x00;                 //把0x00送进锁存器1~8中,使它们的输出引脚都输出高电平,与行锁存器的0x00相对,熄灭所有的灯

91.                 LATCH1=1;LATCH1=0;

92.                 LATCH2=1;LATCH2=0;                

93.                 LATCH3=1;LATCH3=0;                 

94.                 LATCH4=1;LATCH4=0;

95.                 LATCH5=1;LATCH5=0;

96.                 LATCH6=1;LATCH6=0;

97.                 LATCH7=1;LATCH7=0;

98.                 LATCH8=1;LATCH8=0;

99.         }

100. }                        

101. void Laihui()                //来回灯板显示效果

102. {

103.         unsigned char i;

104.         unsigned char code laihui0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//定义空间为64的数组并赋值,用以传递给显示子程序

105.                                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

106.                                                                      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

107.                                                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

108.                                                                      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

109.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

110.                                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

111.                                                                       0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff

112.                                                                    };

113.         unsigned char code laihui1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

114.                                                                      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

115.                                                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

116.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

117.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

118.                                                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

119.                                                               0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

120.                                                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

121.                                                              };                

122.         unsigned char code laihui2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

123.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

124.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

125.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

126.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

127.                                                           0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

128.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

129.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

130.                                                          };

131.         unsigned char code laihui3[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

132.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

133.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

134.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

135.                                                                0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

136.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

137.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

138.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

139.                                                          };        

140.         unsigned char code laihui4[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

141.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

142.                                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

143.                                                                 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

144.                                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

145.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

146.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

147.                                                   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

148.                                                              };        

149.         unsigned char code laihui5[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

150.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

151.                                                            0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

152.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

153.                                                                 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

154.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

155.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

156.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

157.                                                          };        

158.         unsigned char code laihui6[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

159.                                                                0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

160.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

161.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

162.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

163.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

164.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

165.                                                       0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

166.                                                              };        

167.         unsigned char code laihui7[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

168.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

169.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

170.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

171.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

172.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

173.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

174.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

175.                                                          };

176.         for(i=0;i<10;i++)         display(laihui0);//调用显示子程序display,并把数组laihui0的数组名作为实参传给指针式形参

177.         for(i=0;i<10;i++)    display(laihui1);

178.         for(i=0;i<10;i++)    display(laihui2);

179.         for(i=0;i<10;i++)    display(laihui3);

180.         for(i=0;i<10;i++)    display(laihui4);

181.         for(i=0;i<10;i++)    display(laihui5);

182.         for(i=0;i<10;i++)    display(laihui6);

183.         for(i=0;i<10;i++)    display(laihui7);

184.         for(i=0;i<10;i++)    display(laihui7);

185.         for(i=0;i<10;i++)    display(laihui6);

186.         for(i=0;i<10;i++)    display(laihui5);

187.         for(i=0;i<10;i++)    display(laihui4);

188.         for(i=0;i<10;i++)    display(laihui3);

189.         for(i=0;i<10;i++)    display(laihui2);

190.         for(i=0;i<10;i++)    display(laihui1);

191.         for(i=0;i<10;i++)    display(laihui0);

192. }

193. 

194. void Zhengfang()  //显示正方形方框

195. {

196.         unsigned char i;

197.         unsigned char code zhengfang1[]={0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff,

198.                                                                            0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,

199.                                                                             0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,

200.                                                                            0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,

201.                                                                              0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,

202.                                                                              0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,

203.                                                                               0x81,0x00,0x00,0x00,0x00,0x00,0x00,0x81,

204.                                                                             0xff,0x81,0x81,0x81,0x81,0x81,0x81,0xff

205.                                                                 };

206.         unsigned char code zhengfang2[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

207.                                                                           0x00,0x7e,0x42,0x42,0x42,0x42,0x7e,0x00,

208.                                                                            0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

209.                                                                           0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

210.                                                                             0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

211.                                                                             0x00,0x42,0x00,0x00,0x00,0x00,0x42,0x00,

212.                                                                            0x00,0x7e,0x42,0x42,0x42,0x42,0x7e,0x00,

213.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

214.                                                                };

215.         unsigned char code zhengfang3[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

216.                                                                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

217.                                                                            0x00,0x00,0x3c,0x00,0x00,0x3c,0x00,0x00,

218.                                                                           0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,

219.                                                                             0x00,0x00,0x24,0x00,0x00,0x24,0x00,0x00,

220.                                                                             0x00,0x00,0x3c,0x00,0x00,0x3c,0x00,0x00,

221.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

222.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

223.                                                                };

224.         unsigned char code zhengfang4[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

225.                                                                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

226.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

227.                                                                           0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,

228.                                                                             0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,

229.                                                                             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

230.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

231.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

232.                                                                };  

233. 

234.         for(i=0;i<20;i++)display(zhengfang1);

235.         for(i=0;i<14;i++)display(zhengfang2);

236.         for(i=0;i<14;i++)display(zhengfang3);

237.         for(i=0;i<14;i++)display(zhengfang4);

238.         for(i=0;i<14;i++)display(zhengfang4);

239.         for(i=0;i<14;i++)display(zhengfang3);

240.         for(i=0;i<14;i++)display(zhengfang2);

241.         for(i=0;i<14;i++)display(zhengfang1);

242.         

243.         

244.         for(i=0;i<4;i++)

245.         {

246.         for(i=0;i<3;i++)display(zhengfang1);

247.         for(i=0;i<3;i++)display(zhengfang2);

248.         for(i=0;i<3;i++)display(zhengfang3);

249.         for(i=0;i<3;i++)display(zhengfang4);

250.         for(i=0;i<3;i++)display(zhengfang4);

251.         for(i=0;i<3;i++)display(zhengfang3);

252.         for(i=0;i<3;i++)display(zhengfang2);

253.         for(i=0;i<3;i++)display(zhengfang1);

254.         }

255. }

256. void Xin()           //显示心形图案

257. {

258.         unsigned char code xin[]={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

259.                                                             0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

260.                                                             0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

261.                                                            0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

262.                                                             0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

263.                                                             0x92,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

264.                                                    0x6c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

265.                                                    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

266.                                                           };

267.         display(xin);        

268. 

269. 

270. 

271. void Zhahua()         //显示炸花式效果

272. {

273.         unsigned char i;

274.         unsigned char code zhahua1[64]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

275.                                                                           0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

276.                                                                            0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

277.                                                                           0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

278.                                                                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

279.                                                                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

280.                                                                            0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,

281.                                                                            0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff

282.                                                                };

283.         unsigned char code zhahua2[64]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

284.                                                                           0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,

285.                                                                            0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,

286.                                                                           0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,

287.                                                                             0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,

288.                                                                             0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,

289.                                                                            0x00,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x00,

290.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

291.                                                                };

292.         unsigned char code zhahua3[64]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

293.                                                                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

294.                                                                            0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,

295.                                                                           0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,

296.                                                                             0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,

297.                                                                             0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,

298.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

299.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

300.                                                                };

301.         unsigned char code zhahua4[64]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

302.                                                                           0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

303.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

304.                                                                           0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,

305.                                                                             0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,

306.                                                                             0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

307.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

308.                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

309.                                                                };

310.         for(i=0;i<6;i++)        

311.         {

312.         for(i=0;i<18;i++)display(zhahua1);//用for循环多调用几次,可增加显示的时间,可省去延时的调用

313.         for(i=0;i<18;i++)display(zhahua2);

314.         for(i=0;i<18;i++)display(zhahua3);

315.         for(i=0;i<21;i++)display(zhahua4);

316.         for(i=0;i<18;i++)display(zhahua3);

317.         for(i=0;i<18;i++)display(zhahua2);

318.         for(i=0;i<18;i++)display(zhahua1);

319.         }

320.         for(i=0;i<6;i++)

321.         {

322.         for(i=0;i<5;i++)display(zhahua1);

323.         for(i=0;i<5;i++)display(zhahua2);

324.         for(i=0;i<5;i++)display(zhahua3);

325.         for(i=0;i<6;i++)display(zhahua4);

326.         for(i=0;i<5;i++)display(zhahua3);

327.         for(i=0;i<5;i++)display(zhahua2);

328.         for(i=0;i<5;i++)display(zhahua1);

329.         } 

330. }

331. 

332. 

333. 

334. void Budai()                //布带抖动效果

335. {

336.         unsigned char i;

337.         unsigned char code budai0[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

338.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

339.                                                              0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

340.                                                          0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

341.                                                              0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

342.                                                      0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

343.                                                               0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

344.                                                               0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00

345.                                                             };

346.         unsigned char code budai1[]={0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

347.                                                              0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,

348.                                                          0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

349.                                                      0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

350.                                                              0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

351.                                                          0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

352.                                                              0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

353.                                                          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

354.                                                             };                

355.         unsigned char code budai2[]={0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

356.                                                              0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00,

357.                                                              0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,

358.                                                              0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

359.                                                              0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

360.                                                          0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

361.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

362.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

363.                                                         };

364.         unsigned char code budai3[]={0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

365.                                                      0x00,0x00,0x00,0xff,0x00,0xff,0x00,0x00,

366.                                                      0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,

367.                                                      0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xff,

368.                                                               0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

369.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

370.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

371.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

372.                                                         };        

373.         unsigned char code budai4[]={0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

374.                                                              0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,

375.                                                                0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,

376.                                                                0xff,0x00,0x00,0x00,0x00f,0x00,0xff,0x00,

377.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

378.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

379.                                                      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

380.                                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

381.                                                             };        

382.         unsigned char code budai5[]={0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

383.                                                               0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,

384.                                                           0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

385.                                                              0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

386.                                                                0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

387.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

388.                                                      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

389.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

390.                                                         };        

391.         unsigned char code budai6[]={0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

392.                                                               0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

393.                                                               0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

394.                                                              0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

395.                                                               0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

396.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

397.                                                      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

398.                                                      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

399.                                                             };        

400.         unsigned char code budai7[]={0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

401.                                                              0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

402.                                                               0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

403.                                                              0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

404.                                                               0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

405.                                                               0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

406.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

407.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff

408.                                                         };

409.         unsigned char code budai8[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

410.                                                              0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

411.                                                               0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

412.                                                              0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

413.                                                               0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

414.                                                               0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

415.                                                              0x00,0x00,0x00,0x00,0x00,0xff,0x00,0xff,

416.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00

417.                                                         };

418.         unsigned char code budai9[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

419.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

420.                                                               0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

421.                                                              0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

422.                                                               0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

423.                                                               0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,

424.                                                              0x00,0x00,0x00,0x00,0xff,0x00,0xff,0x00,

425.                                                              0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00

426.                                                         };

427.         unsigned char code budai10[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

428.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

429.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

430.                                                              0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

431.                                                               0x00,0xff,0x00,0x00,0x00,0x00,0x00,0xff,

432.                                                               0x00,0x00,0xff,0x00,0x00,0xff,0xff,0x00,

433.                                                              0x00,0x00,0x00,0xff,0x00,0xff,0x00,0x00,

434.                                                              0x00,0x00,0x00,0x00,0xff,0x00,0x00,0xff

435.                                                         };

436.         unsigned char code budai11[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

437.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

438.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

439.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

440.                                                               0xff,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

441.                                                               0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,

442.                                                              0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,

443.                                                              0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00

444.                                                         };

445.         unsigned char code budai12[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

446.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

447.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

448.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

449.                                                               0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

450.                                                               0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

451.                                                              0x00,0xff,0x00,0xff,0x00,0x00,0x00,0x00,

452.                                                              0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00

453.                                                         };

454.         unsigned char code budai13[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

455.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

456.                                                               0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

457.                                                              0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

458.                                                               0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

459.                                                               0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

460.                                                              0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

461.                                                              0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00

462.                                                         };

463.         unsigned char code budai14[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,

464.                                                              0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,

465.                                                               0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,

466.                                                              0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,

467.                                                               0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,

468.                                                               0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,

469.                                                              0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,

470.                                                              0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00

471.                                                         };

472.         for(i=0;i<8;i++)         display(budai0);

473.         for(i=0;i<8;i++)    display(budai1);

474.         for(i=0;i<8;i++)    display(budai2);

475.         for(i=0;i<8;i++)    display(budai3);

476.         for(i=0;i<8;i++)    display(budai4);

477.         for(i=0;i<8;i++)    display(budai5);

478.         for(i=0;i<8;i++)    display(budai6);

479.         for(i=0;i<8;i++)    display(budai7);

480.         for(i=0;i<8;i++)        display(budai8);

481.         for(i=0;i<8;i++)    display(budai9);

482.         for(i=0;i<8;i++)    display(budai10);

483.         for(i=0;i<8;i++)    display(budai11);

484.         for(i=0;i<8;i++)    display(budai12);

485.         for(i=0;i<8;i++)    display(budai13);

486.         for(i=0;i<8;i++)    display(budai14);

487. 

488. }

489. 

490. unsigned char Data0[8]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};// 显示

491. unsigned char Data1[8]={0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02};// 显示

492. unsigned char Data2[8]={0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04};// 显示

493. unsigned char Data3[8]={0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08};// 显示

494. unsigned char Data4[8]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};// 显示

495. unsigned char Data5[8]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};// 显示

496. unsigned char Data6[8]={0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40};// 显示

497. unsigned char Data7[8]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,};

498. void display1(unsigned char *Data)//显示功能模块

499. {

500.         unsigned char i,j,k,num=0;

501.         for(k=0;k<10;k++)

502.         {

503.                 DataPort=0x00; // 清空行锁存器里数据,防止出现乱码

504.                line_LATCH=1;  //

505.                line_LATCH=0;

506.                 LATCH1=1;LATCH1=0;

507.                 LATCH2=1;LATCH2=0;                

508.                 LATCH3=1;LATCH3=0;                 

509.                 LATCH4=1;LATCH4=0;

510.                 LATCH5=1;LATCH5=0;

511.                 LATCH6=1;LATCH6=0;

512.                 LATCH7=1;LATCH7=0;

513.                 LATCH8=1;LATCH8=0;

514.                 

515.                 for(j=0;j<45&&num<=8&&num>=1;j++)

516.                 {

517.                         DataPort=0xff; // 清空行锁存器里数据,防止出现乱码

518.                        line_LATCH=1;  //

519.                        line_LATCH=0;

520.                 

521.                         for(i=0;i<8;i++)

522.                         {

523.                                 DataPort=line[i]; //先给行(灯板的公共端)输入数据

524.                                line_LATCH=1;     //打开锁存,把数据line[i]放进去

525.                                    line_LATCH=0;          //关闭锁存,阻止外部数据进来

526. 

527.                                 DataPort=Data[i];         //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中

528.                                 if(num==1){LATCH1=1;LATCH1=0;}

529.                                 else if(num==2){LATCH2=1;LATCH2=0;}

530.                                 else if(num==3){LATCH3=1;LATCH3=0;}

531.                                 else if(num==4){LATCH4=1;LATCH4=0;}

532.                                 else if(num==5){LATCH5=1;LATCH5=0;}

533.                                 else if(num==6){LATCH6=1;LATCH6=0;}

534.                                 else if(num==7){LATCH7=1;LATCH7=0;}

535.                                 else if(num==8){LATCH8=1;LATCH8=0;}

536.                                 

537.                                 Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影

538.                         }     

539.                 }

540.                 num++;

541.                 if(num==9)num=0;

542.         }         

543. }

544. 

545. void display2(unsigned char *Data)//显示功能模块

546. {

547.         unsigned char i,j,k,num=9;

548.         for(k=0;k<10;k++)

549.         {

550.                 DataPort=0x00; // 清空行锁存器里数据,防止出现乱码

551.                line_LATCH=1;  //

552.                line_LATCH=0;

553.                 LATCH1=1;LATCH1=0;

554.                 LATCH2=1;LATCH2=0;                

555.                 LATCH3=1;LATCH3=0;                 

556.                 LATCH4=1;LATCH4=0;

557.                 LATCH5=1;LATCH5=0;

558.                 LATCH6=1;LATCH6=0;

559.                 LATCH7=1;LATCH7=0;

560.                 LATCH8=1;LATCH8=0;

561.         

562.                 for(j=0;j<45&&num<=8&&num>=1;j++)

563.                 {

564.                         DataPort=0xff; // 清空行锁存器里数据,防止出现乱码

565.                        line_LATCH=1;  //

566.                        line_LATCH=0;

567.                 

568.                         for(i=0;i<8;i++)

569.                         {

570.                                 DataPort=line[i]; //先给行(灯板的公共端)输入数据

571.                                line_LATCH=1;     //打开锁存,把数据line[i]放进去

572.                                    line_LATCH=0;          //关闭锁存,阻止外部数据进来

573. 

574.                                 DataPort=Data[i];         //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中

575.                                 if(num==1){LATCH1=1;LATCH1=0;}

576.                                 else if(num==2){LATCH2=1;LATCH2=0;}

577.                                 else if(num==3){LATCH3=1;LATCH3=0;}

578.                                 else if(num==4){LATCH4=1;LATCH4=0;}

579.                                 else if(num==5){LATCH5=1;LATCH5=0;}

580.                                 else if(num==6){LATCH6=1;LATCH6=0;}

581.                                 else if(num==7){LATCH7=1;LATCH7=0;}

582.                                 else if(num==8){LATCH8=1;LATCH8=0;}

583.                                 Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影

584.                          }      

585.                 }

586.                 num--;

587.                 if(num==0)num=9;

588.         }        

589. }

590. void display3(unsigned char *Data)//显示功能模块

591. {

592.         unsigned char i,j,k;

593.         for(k=0;k<9;k++)

594.         {

595.                 DataPort=0x00; // 清空行锁存器里数据,防止出现乱码

596.                line_LATCH=1;  //

597.                line_LATCH=0;

598.                 LATCH1=1;LATCH1=0;

599.                 LATCH2=1;LATCH2=0;                

600.                 LATCH3=1;LATCH3=0;                 

601.                 LATCH4=1;LATCH4=0;

602.                 LATCH5=1;LATCH5=0;

603.                 LATCH6=1;LATCH6=0;

604.                 LATCH7=1;LATCH7=0;

605.                 LATCH8=1;LATCH8=0;

606.                 for(j=0;j<8;j++)

607.                 {

608.                         DataPort=0xff; // 清空行锁存器里数据,防止出现乱码

609.                        line_LATCH=1;  //

610.                        line_LATCH=0;

611.                 

612.                         for(i=0;i<8;i++)

613.                         {

614.                                 DataPort=line[i]; //先给行(灯板的公共端)输入数据

615.                                line_LATCH=1;     //打开锁存,把数据line[i]放进去

616.                                    line_LATCH=0;          //关闭锁存,阻止外部数据进来

617. 

618.                                 DataPort=Data[i];         //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中

619.                                 LATCH8=1;LATCH8=0;

620.                                 Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影

621.                          }      

622.                 }        

623.         }        

624. }

625. 

626. void display4(unsigned char *Data)//显示功能模块

627. {

628.         unsigned char i,j,k;

629.         for(k=0;k<9;k++)

630.         {

631.                 DataPort=0x00; // 清空行锁存器里数据,防止出现乱码

632.                line_LATCH=1;  //

633.                line_LATCH=0;

634.                 LATCH1=1;LATCH1=0;

635.                 LATCH2=1;LATCH2=0;                

636.                 LATCH3=1;LATCH3=0;                 

637.                 LATCH4=1;LATCH4=0;

638.                 LATCH5=1;LATCH5=0;

639.                 LATCH6=1;LATCH6=0;

640.                 LATCH7=1;LATCH7=0;

641.                 LATCH8=1;LATCH8=0;

642.                 for(j=0;j<8;j++)

643.                 {

644.                         DataPort=0xff; // 清空行锁存器里数据,防止出现乱码

645.                        line_LATCH=1;  //

646.                     line_LATCH=0;

647.                         for(i=0;i<8;i++)

648.                         {

649.                                 DataPort=line[i]; //先给行(灯板的公共端)输入数据

650.                                line_LATCH=1;     //打开锁存,把数据line[i]放进去

651.                                    line_LATCH=0;          //关闭锁存,阻止外部数据进来

652.                                 DataPort=Data[i];         //把数值Data[0~7]里的值依次传给第一灯板的573锁存器中

653.                                 LATCH1=1;LATCH1=0;

654.                                 Delay(100); //扫描间隙延时,时间太长会闪烁,太短会造成重影

655.                          }

656.                 }      

657.         }        

658. }

659. void zhuzi()        //柱子移动效果

660. {

661.         display1(Data0)};

好到这就完成了,自己享受自己的成果吧

 

 
回复 收藏
  举报
风继续吹
0
主题
1
回复
发表于Sun Jan 13 15:55:39 CST 2019   |  只看该作者 2#
666,当时自己做了个没成功
武阳电子
0
主题
1
回复
发表于Sat Feb 16 16:23:23 CST 2019   |  只看该作者 3#
漂亮
  • 温馨提示:标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考:社区发帖规则
  • 您当前输入了 0个文字。还可以输入8000个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

顶部