邪门了,用PIC的SPI控制TM1616没有反应!求助

2020-02-06 10:08发布

用SPI驱动没反应,把SPI禁了,用IO口直接模拟SPI的时序又能显示了。。。SPI驱动ADXL345又是可以的,奇怪了,哪的问题?
有没有用SPI驱动过TM系列芯片的,有什么坑么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
liqiinhit2
1楼-- · 2020-02-06 11:54
//向SSP写一个字节,同时读一个字节
unsigned char SSP_Send(unsigned char sByte)
{
        SSPBUF = sByte;
        while(BF==0);
        sByte = SSPBUF;
        return sByte;
}

//用IO模拟SPI
void indate(unsigned char p)
{  
        unsigned int i;
        TM1616STB=0;   //保证“STB”为低电平,程序不依赖于之前端口的状态  //保证程序在实际运行中不会出现“端口迷失”
        for(i=0;i<8;i++)
        {
                RB4=0; //先将“CLK”清零
                if((p& 0x01)!=0)   
                {
                        RB2=1; //需要传送的数据的低位为“1”,则把“DIO”清零
                }
                else
                {
                        RB2=0;  //需要传送的数据的低位为“0”,则把“DIO”置高
                }
                RB4=1;  //送时钟的上升沿
                p=p>>1; //准备送下一个BIT
        } //送完一个字节后退出循环
}

这是两段代码
AHTY
2楼-- · 2020-02-06 12:02
 精彩回答 2  元偷偷看……
liqiinhit2
3楼-- · 2020-02-06 12:19
AHTY 发表于 2015-12-1 16:44
用逻辑分析仪试试,说不定就能查到问题,反正以前我写的8563的程序挑芯片,后来查出是时序问题了。 ...

谢谢了,不准备搞了。才发现这片子是5V的,3V不工作。。。。

非常奇怪的是前面三个命令都能通过,就最后一个点亮的命令用SPI不行!!!

一周热门 更多>