标题: 4*4*4光立方原理图及参考代码与实物制作 [打印本页]
作者: 想飞的猪1 时间: 2017-9-7 17:07
标题: 4*4*4光立方原理图及参考代码与实物制作
将4*4*4的LED光立方分层4层,分别由单片机的P2.0,P2.1,P2.2,P2.3,四个口来控制每一层,且给低电平有效,再有P0口和P1的总共16个口来控制16列,给高电平有效,P0和P1口加上位排阻,再给每一列加三极管放大,三极管的基极接单片机的P0和P1口,集电极接5V电源,发射极接每一列。这样就可以通过控制每个口的输出信号来控制每个的亮灭。
通过某种方式,是单片机内部各类寄存器的值变为出事状态的操作称为复位。单片机的复位是通过外部电路来实现的,复位引脚RET通过一个施密特触发器与复位电路相连接,施密特触发器用作噪声抑制,伟哥机器周期的S5P2时刻,复位电路采样一次施密特输出电平,获得内部复位操作所需要的信号。单片机的时钟电路正常工作后,CPU在RET/VPD引脚上连续采集到两个机器周期的高电平后就可以完成复位操作了,但实际应用时,复位电平的脉冲宽度一般大于1ms。复位电路通常采用上电复位、手动按键复位和看门狗复位三种方式,本次采用的是上电复位方式。

3.3时钟电路
单片机的各个功能部件的运行都是是时钟控制信号为基准,一拍一拍的工作。因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的可靠性和稳定性。常用的时钟电路设计为内部时钟方式,单片机内部有一个由反向放大器构成的震荡电路,芯片上的XTAL1和XTAL2分别为震荡电路的输入和输出端。只要在这两个引脚上接一个石英晶体振荡器和两个微调电容就构成内部方式的振荡器电路,有振荡器产生自激振荡,便构成一个完整的震荡信号发生器。
一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率确定。电路中两个电容C1、C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。本系统的C1、C2的值为33pf。
单片机在工作时,有内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,f表示。图2中的时钟频率为12MHz,即f=12MHz,则时钟周期为1/12us。
附注: 三极管可以不接,只是会影响光源亮度。

3.4系统的工作原理图
光立方一、二层:

光立方三、四层:
单片机口点连接:
三极管放大电路:
总原理图:
元器件清单:
单片机源程序如下:
- #include<reg51.h>
- #define uchar unsigned char
- unsigned char code smg[] = {0x50,0x61};
- void delay100ms(uchar data1ms)
- {uchar i,j,m;
- for(i=0;i<data1ms;i++)
- for(j=0;j<110;j++)
- for(m=0;m<100;m++);
- }
- void disp(uchar ceng,uchar lie1,uchar lie2 )
- {
- delay100ms(7);
- P1=ceng;
- P2=lie1;
- P0=lie2;
-
- }
- void main(void)
- {unsigned char hang,shu1;
- unsigned char code C1[][16]={
- {0x07,0x0B,0x0D,0x0E,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00},
- {0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00,0x08,0x0C},
- {0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E},
- {0x0C,0x08,0x00,0x00,0x08,0x0C,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x0E,0x0F,0x0E,0x0C,0x08,0x00},
- {0x00,0x00,0x00,0x00,0x00,0x0D,0x0D,0x0D,0x05,0x09,0x09,0x09,0x0D,0x0D,0x0D,0x05},
- {0x09,0x09,0x09,0x00,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09},
- {0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09}
- };
- unsigned char code L1[][16]={
- {0xFF,0xFF,0xFF,0xFF,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x96,0x96,0x96,0x96,0x96},
- {0x96,0x96,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC},
- {0x01,0x03,0x07,0x0F,0x8E,0x8C,0x88,0x80,0x00,0x00,0x00,0x10,0x30,0x70,0x70,0x60},
- {0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xCC,0x0F,0x33,0x66,0xCC,0xF0,0x33,0x66,0xCC},
- {0x66,0x33,0xF0,0xCC,0x66,0x33,0xF0,0xCC,0xCC,0xCC,0xCC,0xCC,0x60,0x60,0x60,0x60},
- {0xE8,0x74,0x32,0x11,0x00,0x06,0x66,0x60,0x60,0x60,0x00,0x00,0x06,0x66,0x60,0x60},
- {0x60,0x00,0x00,0x00,0x80,0x40,0x20,0x20,0x20,0x60,0x62,0x60,0x30,0x10,0x80,0xC0},
- {0x60,0x60,0x60,0x60,0x64,0x60,0x30,0x10}
- // {0x01,0x02,0x04,0x08,0x80,0x40,0x20,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//列扫描
- };
-
- unsigned char code L2[][16]={
- {0xFF,0xFF,0xFF,0xFF,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x69,0x69,0x69,0x69,0x69},
- {0x69,0x69,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0x33,0x33,0x33,0x33,0x33,0x33,0x33},
- {0x00,0x00,0x00,0x00,0x00,0x08,0x88,0xC8,0xE8,0xF0,0x71,0x31,0x11,0x10,0x04,0x06},
- {0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x33,0xF0,0xCC,0x66,0x33,0x0F,0xCC,0x66,0x33},
- {0x66,0xCC,0x0F,0x33,0x66,0xCC,0x0F,0x33,0x33,0x33,0x33,0x33,0x06,0x06,0x06,0x06},
- {0x8E,0x47,0x23,0x11,0x00,0x00,0x00,0x06,0x06,0x06,0x66,0x60,0x00,0x00,0x06,0x06},
- {0x06,0x66,0x60,0x00,0x08,0x0C,0x06,0x66,0x06,0x06,0x06,0x06,0x03,0x01,0x00,0x08},
- {0x04,0x64,0x06,0x06,0x06,0x06,0x03,0x01}
- // {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x80,0x40,0x20,0x10}
- };
- while(1)
- {
- for(hang=0;hang<8;hang++)
- {for(shu1=0;shu1<16;shu1++)
- disp(C1[hang][shu1],L1[hang][shu1],L2[hang][shu1]);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
444光立方.zip
(1.08 MB, 下载次数: 351)
作者: 弓长张 时间: 2018-6-3 21:15
如果实物图不接三极管会有什么影响?
作者: 弓长张 时间: 2018-6-7 17:18
admin大佬 这个 4*4*4的光立方 实物接线 如果不接三极管会有什么影响啊 ?
作者: 51学习 时间: 2018-6-8 19:51
灯的亮度会很底
作者: 风游兮 时间: 2018-6-15 20:59
三极管起放大电路的作用
作者: LINKEEE 时间: 2018-7-13 14:53
学习了
作者: leleluo123 时间: 2018-7-13 16:17
厉害的小伙子
作者: Starway 时间: 2018-8-23 12:33
1. 文章中写的是P2控制层 但是代码和图片中是P1控制 是文章错了吗?
2. 另外 为什么只有P0 口有排阻呢?
3. 楼主在焊接灯的时候是水平方向是层 还是垂直方向是层呢?
最后 问一下 那个设计图加入hex程序之后能直接运行出结果吗?
谢谢楼主分享
作者: 小小斑鸠 时间: 2018-8-23 13:47
在51芯片的内部是没有加上拉电阻的,所以外部需要接排阻,
作者: Starway 时间: 2018-8-23 16:15
但是为什么只有P0口有排阻呢?P2口没有啊
在需求原件里面是写了两个102排阻的 但是电路图里面没有

作者: lxy999 时间: 2018-8-23 18:27
不错,值得学习
作者: Starway 时间: 2018-8-26 00:37
1. 文章错了,以电路图为准
2. 你看过P0口的结构你就知道了,开漏形式输出没有输出高的能力(只能实现灌电流,不能实现拉电流)。简单的说就是没有上拉电阻,没有办法输出“1”,
流水灯的那个排阻是限流!如果只是为了点共阳极连接方式的LED的话,上拉电阻是可以省掉的(个人认为)。
3. 水平方向层叠
4. 电路图抄到ISIS里面可以直接运行
作者: mayday555 时间: 2018-9-11 16:38
P0口作为I/O口输出的时候时,输出低电平为0 输出高电平为高阻态。P0 口不能真正的输出高电平。由于单片机P0口内部没有上拉电阻,是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的。
作者: Starway 时间: 2018-9-24 22:36
谢谢 明白了
作者: sweet小开开 时间: 2018-12-19 10:41
要怎么才能下载?
作者: sweet小开开 时间: 2018-12-19 11:16
leleluo123 发表于 2018-7-13 16:17
厉害的小伙子
想知道是怎么下载的,我也想下载,谢谢
作者: liuyanghe 时间: 2018-12-20 20:48
三极管起放大电路的作用。如果实物图不接三极管会有什么影响?
作者: 冰冰洁洁 时间: 2019-1-8 19:31
liuyanghe 发表于 2018-12-20 20:48
三极管起放大电路的作用。如果实物图不接三极管会有什么影响?
这里也是放大电流,不接电流太小,轻的说不很亮,重的说就很不亮。
作者: s396869499 时间: 2019-1-10 12:55
nice啊兄弟
作者: Arvin0011 时间: 2019-1-11 09:33
不错学到了
作者: Youens 时间: 2019-1-25 11:34
很强!赞赞赞!
作者: dodge666 时间: 2019-5-29 18:24
谢谢楼主分享
作者: 斯蒂芬1215 时间: 2019-6-6 12:54
不错
作者: 机电光束 时间: 2019-8-19 15:55
谢谢分享,学到了。
作者: meilidianzhi 时间: 2019-8-20 19:24
楼主太牛了学习一下
作者: 白给少年 时间: 2019-12-18 10:16
楼主,一开始没用程序时很亮,用了程序之后就不怎么亮了
作者: WKKD 时间: 2020-10-26 18:34
怎么没有proteus 工程文件
作者: yufen 时间: 2021-10-14 17:21
想问问代码中的数组里面的0xXX代表什么?起什么作用?需要涉及哪些知识?
作者: sxy4609 时间: 2021-12-5 19:57
是一个16进制数,需要转换成2进制,控制P口输出
作者: Apen~ 时间: 2021-12-5 20:04
强啊 楼主
作者: mick32 时间: 2022-6-3 03:50
buzz about P0
Schematic has RP1 as pullup ...
作者: QQQQ987 时间: 2022-9-11 22:34
灯光效果怎取模?
作者: 271399390 时间: 2022-11-6 11:49
三极管起放大电路的作用
作者: kkkkkasd 时间: 2023-12-26 21:46
电流过大,可能会烧坏单片机
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |