当前位置:
文档之家› 光立方电路原理图595 +程序代码
光立方电路原理图595 +程序代码
21 b0 22 b1 23 b2 24 b3 25 b4 26 b5 27 b6 28 b7
10 11 12 f1 13 f2 14 15 16 17
C1
30pF
C2
30pF
x3 d1
C3
10uF
x1 f1
பைடு நூலகம்
X1
R10
CRYSTAL
x2 f2 e1
NET=b0 1k
d2
PECKAGE=res300th
/*595 发送一字节*/ /***********************************************************************/ void Set595(unsigned char xie) {
unsigned char i; unsigned int temp; temp=xie; for(i=0;i<8;i++) {
sbit CLK=P1^1; //74HC595 的 SH-CP(11 脚)
sbit STB=P1^2; //74HC595 的时钟和输出锁存(12 脚)
/**********************************************************************/
/*坐标数组*/
R9
50k
PECKAGE=res300th
U2
C1 11 C2 14
SH_CP DS
C3 12 ST_CP
C410 a0 13
MR OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7'
15 1 2 3 4 5 6 7 9
74HC595 PECKAGE=SOP16
U3
C1 11 14
SH_CP DS
/**********************************************************************/
uchar code shu[8]={0,1,2,3,4,5,6,7};
//十进制数选
uchar code x1[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//595 数据
+5V
U1
d1 19 XTAL1
d2 18 XTAL2
e1
9 RST
+5V
29 30 31
PSEN ALE EA
C2 C1 C3
C4
220UF
1 2 3 4 5 6 7 +58V
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C52
P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7
if(temp&0x01) {
DS=1; } else DS=0; temp=temp>>1; CLK=0; _nop_(); _nop_(); CLK=1; //移位上升沿有效? } } /**********************************************************************/
P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD
39 38 37 36 35 34 33 32
C3 12 ST_CP
C4 10 a0 13
MR OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7'
15 1 2 3 4 5 6 7 9
74HC595 PECKAGE=SOP16
C1 11 14
C312
U4
SH_CP DS
ST_CP
C410 a0 13
MR OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7'
15 1 2 3 4 5 6 7 9
74HC595 PECKAGE=SOP16
U5
C1 11 14
SH_CP DS
C3 12 ST_CP
C4 10 a0 13
MR OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7'
15 1 2 3 4 5 6 7 9
74HC595 PECKAGE=SOP16
备注:上面的 3 个按键可以只要 1 个,另外 2 个是我设计的外部中断,你可以不用它;同时 我自己有开发板,所以我没有设计程序下载电路,全以最节省的方案为前提,你只要把单片 机在开发板上下载好程序,再插到光立方上就好了。同时画电路时每个芯片的电源引脚隐藏 了,(单片机是 20 接负,40 接正;595 是 8 接负,16 接正;7404 是 7 接负,14 接正。),还 有注意电解电容的极性。关于你接电源的问题是你自己的事,我是在板子上面安装了一个 USB 的接口供电。
MR OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7'
15 1 2 3 4 5 6 7 9
74HC595 PECKAGE=SOP16
U8
C1 11 14
SH_CP DS
C3 12 ST_CP
C4 10
a0
13
MR OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7'
15 1 2 3 4 5 6 7 9
下面我会给你一段程序,我的的时间有点忙,没有那么多时间来写花样。
#include<reg52.h>
#include <intrins.h>
//空语句调用头文件
#include"zimo.h"
#define uchar unsigned char
#define uint unsigned int
/**********************************************************************/
U6
C1 11 14
SH_CP DS
C3 12 ST_CP
C4 10 a0 13
MR OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7'
15 1 2 3 4 5 6 7 9
74HC595 PECKAGE=SOP16
C111 14
U7
SH_CP DS
C3 12 ST_CP
C4 10 a0 13
uchar code y1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//595 使能
uchar code z1[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//层扫描
/************************************************************************/
/*亮度调节延时*/
/************************************************************************/
void delay(unsigned int i)
{
unsigned int j;
for(;i>0;i--)
{
for(j=5;j>0;j--);
}
}
/**********************************************************************/
/*ms 延时*/
/**********************************************************************/
/**********************************************************************/ void Set595_1(unsigned char xie,unsigned char xie1) {
unsigned char i; for(i=0;i<8;i++) {
/**********************************************************************/
void dis595(void)
{
STB=0;
_nop_();
_nop_();
STB=1;
//串行输出上升沿有效
}
/**********************************************************************/
/*方框缩放*/ /**********************************************************************/
sbit DS=P1^0;
/**********************************************************************/
/**********************************************************************/
void delayms(uchar xms)
{
uchar i,j;
for(i=0;i<xms;i++)