我想用两个595控制8*8点阵,让点阵沿对角线点亮 我写的程序有问题吗???求助大神

#include <reg52.h> sbit SD = P0^0; //14串行数据输入sbit ST_CK = P0^1; //11存储寄存器时钟输入sbit SH_CK = P0^2; //12移位寄存器时钟输入sbit OEH = P0^7;sbit OEL = P0^6; unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //函数声明
void Ser_IN(unsigned char Data); //串行数据输入void Par_OUT(void); //串行数据输出
void delayms(unsigned int x) //延时约x ms{ unsigned int i,j; for(i=x;i>0;i--) for(j=75;j>0;j--); }
void main(void) { unsigned char i,j=0; while(1) { for(i=0;i<8;) { OEH=0; Ser_IN(taba[i++]); delayms(500); Par_OUT(); OEH=1; OEL=0; Ser_IN(tabb[j++]); delayms(500); Par_OUT(); OEL=1; } } } void Ser_IN(unsigned char Data){ unsigned char i; for(i = 0; i < 8; i++) { SH_CK = 0; //CLOCK_MAX=100MHz SD = Data & 0x80; Data <<= 1; SH_CK = 1; }}
//并行数据输出
void Par_OUT(void){ ST_CK = 0; ST_CK = 1;}
这是我写的 ……
这么链接的电路可以吗

附件是16个8段LED数码管+16片595级联的Arduino程序,你可以把数组改成两个,循环也从16改成2个,应该与你的电路能对得上,锁存,时钟,数据端口要对应接好

温馨提示:答案为网友推荐,仅供参考
相似回答