查看:
3656
|
回复:
3
|
【转载】8x8x8光立方DIY
|
汇创工作室
4
主题
1
回复 |
发表于2018-12-19 12:27:55
|
显示全部楼层
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
回复 |
发表于2019-01-13 15:55:39
|
显示全部楼层
2#
666,当时自己做了个没成功
|
|