74hc595 LED点阵屏 求解

[复制链接]
 楼主| fangfei036 发表于 2012-5-30 13:49 | 显示全部楼层 |阅读模式
本帖最后由 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--);
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
Tinnal 发表于 2012-5-30 14:57 | 显示全部楼层
sorry,  fangfei036,不想看程序了,D0不行,唯一的原因就是时钟信号你多打了一个,D0的输出推到D1了。你查查是不是这个问题。不行再回贴吧。
Tinnal 发表于 2012-5-30 15:04 | 显示全部楼层
说不看,还是看了一眼,呵呵。srclk 和 ser   你都没用到麻,你程序里却用到SSPBUF,你是用PIC 的SPI硬件吧?
你可以用示波器抓一下字节的传送过程出来吗?
呵呵,这种小电路我都是用IO直接驱动的。赖得看SPI的寄存器。
 楼主| fangfei036 发表于 2012-5-30 15:14 | 显示全部楼层
3# Tinnal
tinnal大哥,谢谢

这个是用硬件的SPI来发送的,我试试用示波器看看,又劳烦了tinnal大哥了  罚我整好后在发言,呵..
 楼主| fangfei036 发表于 2012-5-30 22:39 | 显示全部楼层
3# Tinnal

tinnal大哥,我错了,sorry  没有改正自己,程序中我先发送了个0x00;导致移位了第一个没有显示突来,修改程序后不知道为啥仿真结果没有改变,但是我在硬件上是可以显示出八位的,这个仿真软件真不能拿它当回事....
hscyg@sina.com 发表于 2012-12-19 11:32 | 显示全部楼层
没有仿真程序,是仿真图片。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:技术力量,决定上层建筑

2

主题

345

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:技术力量,决定上层建筑

2

主题

345

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部