根据74hc595n的光立方.docx
《根据74hc595n的光立方.docx》由会员分享,可在线阅读,更多相关《根据74hc595n的光立方.docx(15页珍藏版)》请在冰豆网上搜索。
根据74hc595n的光立方
首先上595光立方的原理图:
1.单片机部分:
2.按键和ULN2803部分:
3.74hc595n部分:
8个的样子:
4.灯座部分:
64个的样子:
与灯座相连的电阻,可根据自己的LED来选。
只要不超过LED的耐压值即可。
然后是参考的PCB图:
芯片连接部分:
先来讲解一下原理图:
首先是51单片机的由晶振电路和复位电路组成的单片机的最小系统。
74hc595的8个输出脚与灯座相连,8个595的Ds、STcp、SHcp接到一起,分别接到单片机的IO口。
8个595的MR直接接到VCC。
595的控制引脚OE分别与单片机IO口相连,控制595是否被选中,低电平有效。
然后介绍一下,如何焊接LED等的问题。
一种是长方体雾状的LED灯:
焊接参考:
另一种是圆形灯:
焊接参考:
两种方式焊接都注意把灯的正极焊接到灯座上,灯座可以用圆形的排母或者普通的排针。
示例程序:
#include"reg52.h"
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitstcp1=P3^6;
sbitds1=P3^5;
sbitshcp1=P3^7;
voiddelay()
{
inti,j;
for(i=0;i<50;i++)
for(j=0;j<1000;j++);
}
voidQR0_5951(ucharnum1)
{
ucharj;
for(j=0;j<8;j++)
{
num1=num1<<1;
ds1=CY;
shcp1=1;//上升沿发生移位
shcp1=0;
}
}
voidOUT_5951()//将移位寄存器内的数据锁存到输出寄存器并显示
{
stcp1=0;
stcp1=1;//上升沿将数据送到输出锁存器
stcp1=0;
}
voidtuan1()
{
P1=0x00;//x全部选中
P2=0xff;//z全部选中
QR0_5951(0xfe);//y高电平亮
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0xfd);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0xfb);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0xf7);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0xef);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0xdf);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0xbf);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x7f);//y
OUT_5951();
delay();
P2=0x00;
}
voidtuan2()
{
P1=0x00;//x全部选中
P2=0xff;//z全部选中
QR0_5951(0x01);//y高电平亮
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x02);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x04);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x08);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x10);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x20);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x40);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x80);//y
OUT_5951();
//delay();
P2=0x00;
}
voidtuan3()
{
P1=0x00;//x全部选中
P2=0xff;//z全部选中
QR0_5951(0x80);//y高电平亮
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x40);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x20);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x10);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x08);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x04);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x02);//y
OUT_5951();
delay();
P2=0x00;
P2=0xff;//z全部选中
QR0_5951(0x01);//y
OUT_5951();
delay();
P2=0x00;
}
voidtuan4()
{
P1=0x00;//x全部选中
QR0_5951(0xff);//y全部选中
OUT_5951();
P2=0x01;//z
delay();
P2=0x00;
P2=0x02;//z
delay();
//P2=0x00;
P2=0x04;//z
delay();
//P2=0x00;
P2=0x08;//z
delay();
///P2=0x00;
P2=0x10;//z
delay();
//P2=0x00;
P2=0x20;//z
delay();
//P2=0x00;
P2=0x40;//z
delay();
//P2=0x00;
P2=0x80;//z
//delay();
//P2=0x00;
}
voidtuan5()
{
P1=0x00;//x全部选中
QR0_5951(0xff);//y全部选中
OUT_5951();
P2=0x80;//z
delay();
//P2=0x00;
P2=0x40;//z
delay();
//P2=0x00;
P2=0x20;//z
delay();
//P2=0x00;
P2=0x10;//z
delay();
///P2=0x00;
P2=0x08;//z
delay();
//P2=0x00;
P2=0x04;//z
delay();
//P2=0x00;
P2=0x02;//z
delay();
//P2=0x00;
P2=0x01;//z
delay();
//P2=0x00;
}
voidmain()
{
P1=0x00;//x
while
(1)
{
//tuan1();
tuan2();
tuan3();
tuan4();
tuan5();
}
}