本帖最后由 fangfei036 于 2012-5-30 13:57 编辑
前辈们好,小弟想做一个led点阵显示屏,但是刚试了下595就出现了问题,查找了一上午了还不知道为啥呢,发现送数据的时候Q0居然不会输出,其他的正常,仿真图以及程序在附件里:谢谢了
#include <pic.h>
__CONFIG(XT&WDTDIS&LVPDIS);
#define uchar unsigned char
#define uint unsigned int
#define srclk RC3
#define rclk RC7
#define ser RC5
uchar date;
void sentdate(uchar date);
void INIT(void);
void delay(uchar t);
const ledtable[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//===========================================
void main()
{
uchar i;
INIT();
while(1)
{
for(i=0;i<8;i++)
{
sentdate(ledtable);
//
sentdate(0x01);
rclk=1;
NOP();
NOP();
NOP();
rclk=0;
delay(1200);
}
//
PORTC=0X00;
}
}
//===========================================
void INIT(void)
{
PIR1=0;
TRISC=0X00;
SSPIF=0;
SSPSTAT=0XC0;
SSPCON=0X30;
NOP();NOP();
}
//===========================================
void sentdate(uchar date)
{
SSPBUF=date;
while(SSPIF==0);
SSPIF=0;
NOP();NOP();
}
//===========================================
void delay(uchar t)
{
uchar x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
} |