打印

74hc595 LED点阵屏 求解

[复制链接]
2364|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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--);
}

tes電路以及程序.rar

14.56 KB

相关帖子

沙发
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大哥了  罚我整好后在发言,呵..

使用特权

评论回复
5
fangfei036|  楼主 | 2012-5-30 22:39 | 只看该作者
3# Tinnal

tinnal大哥,我错了,sorry  没有改正自己,程序中我先发送了个0x00;导致移位了第一个没有显示突来,修改程序后不知道为啥仿真结果没有改变,但是我在硬件上是可以显示出八位的,这个仿真软件真不能拿它当回事....

使用特权

评论回复
6
hscyg@sina.com| | 2012-12-19 11:32 | 只看该作者
没有仿真程序,是仿真图片。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

2

主题

345

帖子

3

粉丝