首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

真正DIY勇士,打造超复杂LED立方光升级版

真正DIY勇士,打造超复杂LED立方光升级版

本帖最后由 yumuzi 于 2015-3-20 15:13 编辑

[导读] 本文把原有的立方光硬件升级,让电路更简单,程序更简洁,以前的设计是由16个IC驱动的,好处是有可切换的坐标系,但16个IC和128根连接线的工作量实在不小,虽然控制程序只有60多行,但硬件的复杂让很多初学者望而却步。


  本文把原有的立方光硬件升级,让电路更简单,程序更简洁,以前的设计是由16个IC驱动的,好处是有可切换的坐标系,但16个IC和128根连接线的工作量实在不小,虽然控制程序只有60多行,但硬件的复杂让很多初学者望而却步。
  一直以来,我都在思考做什么样的设计给大家,就拿立方光来说,为了程序的简洁、易于理解,我的硬件电路不同于美国的原版设计,也因为8位单片机的局限性,这也是当时我能想到最好的解决方案。程序的简化是硬件的复杂弥补的。可是工作室的这种设计行吗?
  就效果而言是可行的,后来很多网友都仿做了出来,可我觉得不行。美国原版的设计电路要比我的简单,那么有没有硬件更简单且程序更短的?抱着这种想法,我在11月初开始了设计,一周的时间,竟然完成了。
  现在的立方光,硬件更简单,只有5个IC控制,不想用245的可以去掉,改为4个IC控制。这样硬件电路焊接比起之前的设计,大为简化,连接线也由以前的128根改为72根(和美国原作一样)。控制端口也有以前的三组改为2组16个。程序不但没有加长,反而更加简短。也不需要外接电源,USB供电即可。我实物用的是手机充电器供电,5V500ma,效果很好。这次的改进,唯一的缺点就是失去了可切换的坐标系,程序虽然简单,但需要一段时间理解。接下来就是秉承工作室传统,开始图文解说。
  因为改了硬件,动画代码应该也做修改的,以为工作繁忙,就没时间做这部分了,所以大家看到的图案是与之前比,是上下颠倒的,有耐心的同学自己可以修改动画字符,每行的动画字符左右对称调换位置即可。这次的视频里,我特意修改的动画切换时间,而且这次也用的是非增强型单片机,就是想证明下,8位非增强型单片机,一样可以有这种效果,之前有网友评论说速度不够快,估计是没看程序就这么说了。
  先是原理图:

  


  左边的64个电阻其实是底面板的64个共阳点,我用的是2P弯排针固定,所以就用电阻来表示了,之前的原理图是用二极管表示的,其实都一样,反正就两个点。最后出来8跟总线,我在做的时候,是加了245做驱动的,其实后来想想,也可以不加,改为其他端口控制,加上限流电阻就可以了,这样可以再节省一个IC。当然,如果想保留P1、P3端口的,还是用P0做输出吧,加个245而已。

  右边的64个电阻是侧面板的共阴极节点,点的一端接就是接线了,一共64根,接到4个154的输出端口即可。

实物焊接图
  侧面板图

  

  

  这是我焊接的64根连接线,这64根还是必不可少的,材料用的是8P插座,一头是8P的座子,一头是镀锡导线,很便宜,用起来非常方便。
  底面板图

  

  

  底面板与之前的设计比起来,没有了64根线,改为8根总线输出。
驱动板图

  

  就是4个154顺序排列,布局是就看你的心情了。
  驱动板背面

  

  觉得自己的焊接还凑合吧
  完工图

  

  最后就是上程序了,有文本文档和HEX下载文件。中文注释暂时没时间编写,发布消息请留意工作室qq空间或工作室微博。
控制代码如下:
  LED_Y EQU P2
  LED_X EQU P0
  ORG 00H
  sjmp start ;开始程序
  org 000bh ;定时中断0地址
  sjmp count
  START:
  MOV SP,#60H
  MOV DPTR,#TAB
  MOV R0,#79H
  MOV R1,#00H
  mov r4,#10
  MOV TMOD,#01H
  mov ie,#82h
  MOV TH0,#0d8H
  MOV TL0,#0f0H
  SETB TR0
  MAIN:
  MOV DPL,R0
  MOV DPH,R1
  MOV R2,#11100000B
  cjne r1,#5ah,LED1
  sjmp start
  LED1:
  lcall play
  CJNE R2,#11110000B,LED1
  MOV R2,#11010000B
  LED2:
  lcall play
  CJNE R2,#11100000B,LED2
  MOV R2,#10110000B
  LED3:
  lcall play
  CJNE R2,#11000000B,LED3
  MOV R2,#01110000B
  LED4:
  lcall play
  CJNE R2,#10000000B,LED4
  SJMP MAIN
  play:
  MOV LED_Y,R2
  CLR A
  MOVC A,@A+DPTR
  MOV LED_X,A
  mov r7,#80
  DJNZ R7,$
  MOV LED_X,#00H
  INC DPTR
  INC R2
  ret
  count:
  DJNZ R4,NEXT
  MOV R4,#10
  mov r6,a
  mov a,r0
  add a,#64
  mov r0,a
  mov a,r1
  addc a,#0
  mov r1,a
  clr cy
  mov a,r6
  NEXT:
  MOV TH0,#0d8H
  MOV TL0,#0f0H
  RETI
  完整程序请下载ASM文件。
返回列表