实在没招了,简单的74HC165弄疯了,各位帮忙看看吧。

2020-01-25 15:15发布

本帖最后由 lswhome 于 2014-1-7 01:19 编辑

51单片机,只有一片,典型的应用线路图:
QQ图片20140107010357.jpg (301.37 KB, 下载次数: 0) 下载附件 2014-1-7 01:15 上传

程序:


sbit        _74HC165_nPL=P0^3;
sbit        _74HC165_SDA=P0^4;
sbit        _74HC165_CLK=P0^5;


UINT8 _74HC165_GetData(void)//读取数据
{
        UINT8 i,Data=0;
       
       
        _74HC165_nPL=0;
        _74HC165_nPL=1;
       
        for(i=0;i<8;i++)
        {       
               
                _74HC165_CLK=0;
                Data<<=1;
                Data|=_74HC165_SDA;
                _74HC165_CLK=1;
        }
        return(Data);
}

程序改了无数次了,现在改成这样了,但还是不对,读到的数据完全不对,上拉电阻我改成10K不行,现在又改成4.7K,问题就是除了D7接地读到的数据是正确的(0111 1111),其他的D0~D6任何一个接地,读出的数据都是1111 1110,我就纳闷了,IC换了4个了,都是这样。。。除了D7,其他任意两个接地,读到的数据,就这几种,0xfe,0xee,0xfc,这是啥毛病?程序里我也加过延时,但结果都一样,主频试过11.05926M 12M 24M,结果都相同,实在搞不明白了。。。电压是5V供电的,用万能表测试对应的引脚,接地的时候,D0~D7引脚的对应的电压都是正确的。。但就是无法得到正确的数据,无语了,IC是SOP16封装的74HC165D。。各位帮忙看看是哪里的问题?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
lswhome
1楼-- · 2020-01-26 04:10
感谢楼上的几位,你们提到的方法我都试过了,都不行,结果都是一样,就这么简单的一个程序,我都弄了一天了,几乎所有的可能都试过了。。。。就是不对,现在开始怀疑这个芯片是假的了。。。。
68336016
2楼-- · 2020-01-26 07:35
自己一步步代码试下,移位1次,Q7输出变化没有
divineliu
3楼-- · 2020-01-26 08:32
 精彩回答 2  元偷偷看……
lswhome
4楼-- · 2020-01-26 11:15
我让我朋友试了下,程序没问题,电路也没问题,同样的东西,他那里就没问题,我这里就不行,IC表面刻的字也都是一样的,NXP 74HC165D,所以不是程序的问题,也不是硬件的问题,只能是我买的这个165肯定是假货,我擦,这东西竟然都作假。。。。我再买几块别的牌子的试试吧,某宝上的东西没保证啊!!!5555555555555555
xiaobendan
5楼-- · 2020-01-26 14:07
刚才测试了楼主开始的那个代码,结果是正确的,只是我比较习惯数据右移,这种方式就不好使了。
抱歉,是我说错了。
那么只有怀疑芯片有问题了,或者接线有问题。
xiaobendan
6楼-- · 2020-01-26 18:23
我们也某宝买的,没有问题啊
你多少钱买的?

一周热门 更多>