74HC595级联控制程序错

2020-01-04 19:04发布

我现在连接6片74HC595,分两块板子连接,每块板子有三片74HC595,在写数据时,先写入的三片数据偏移一位数据,后三片显示正常,不知道什么愿意,哪位朋友遇到过,帮解决一下原因
void  hc595out_data1(u8 *data,u8 by)
{
        u8 i;
        u8 j=by;
//        HC595_SCK1 = 1;
//        HC595_LCK1=1;
        for(;j>0;j--)
        {
                for (i=0;i<8;i++)
    {                                       
        if(((data[j-1]<< i) & 0x80)!=0)
        {
            HC595_SER1=1;
        }
        else
        {
           HC595_SER1=0;
        }
        delay_us(5);                                         
        HC595_LCK1=1;
        delay_us(5);       
        HC595_LCK1=0;
//       delay_us(10);                               
//      DataSend <<= 1;
     }
        }
        delay_us(50);
        HC595_SCK1 = 0;
  delay_us(50);
  HC595_SCK1=1;
//  delay_us(500);
//          HC595_SCK1 = 1;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
carefree1986
1楼-- · 2020-01-05 13:29
 精彩回答 2  元偷偷看……
qinglong
2楼-- · 2020-01-05 15:06
lcw_swust 发表于 2019-6-19 21:27
首先是觉得电路有问题
再看了一下,似乎程序也有问题,百度说“在SCK 的上升沿,串行数据由SDL输入到内部 ...

那个是控制8位存储器输出的
qinglong
3楼-- · 2020-01-05 15:27
sf49ers 发表于 2019-6-19 22:46
先把C41,C42电容去掉,把软件调通,103电容太大

电路没问题,应该是程序问题,我写 0xfe ,0xfe , 0xfe  ,0xfe  0xfe  ,0xfe,74hc595输出    0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,先写的三个字节向左移动了一位,但是后三个字节正确,不知道是哪里的原因,前三个字节是连接远的一块板子,后三个是近的板子
carryonli
4楼-- · 2020-01-05 16:59
只是程序没调通,慢慢调就好。
qinglong
5楼-- · 2020-01-05 21:53
从工作原理上分析,我认为,既然程序有问题,那六个芯片输出都应该左移一位的,但是为什么三个队,三个错
huarana
6楼-- · 2020-01-05 23:10
 精彩回答 2  元偷偷看……

一周热门 更多>