找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15019|回复: 18
打印 上一主题 下一主题
收起左侧

关于74hc595多片级联的问题,请大神指教

  [复制链接]
跳转到指定楼层
楼主
请大神指教怎么会出现这种问题

QQ截图20180918173109.png (3.79 KB, 下载次数: 68)

QQ截图20180918173109.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:135253 发表于 2018-9-18 22:29 | 只看该作者
几个口显示内容是一样的,应该将程序与电路图放上来,这样大家也好建议啊!

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:111634 发表于 2018-9-19 07:37 | 只看该作者
情况不明,程序与电路都有可能出问题。
回复

使用道具 举报

地板
ID:247342 发表于 2018-9-19 08:14 | 只看该作者
用proteus的仿真图,用的是留个595级联,1个74hc138选择行

QQ截图20180919081119.png (45.59 KB, 下载次数: 70)

QQ截图20180919081119.png
回复

使用道具 举报

5#
ID:247342 发表于 2018-9-19 08:15 | 只看该作者
#include <reg51.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char

sbit SH=P2^0;
sbit DS=P2^1;
sbit ST=P2^2;

uchar tab[6][8]={{0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00},
               {0x00,0x10,0x18,0x10,0x10,0x10,0x38,0x00},
               {0x00,0x18,0x24,0x20,0x10,0x08,0x3C,0x00},
                           {0x00,0x18,0x24,0x20,0x10,0x20,0x24,0x18},
                           {0x00,0x10,0x18,0x14,0x3C,0x10,0x10,0x00},
                           {0x00,0x38,0x08,0x18,0x20,0x20,0x18,0x00}};

void delay(uchar i)
{
     uchar j;
         for(j=100;j>0;j--)
            {
          for(;i>0;i--)
                  ;
             }
   }

void main()
{
           uchar n,i,j,k,t;
           //SH=0;
          while(1)
          {
           // n=0x00;
                  n=0;
           for (i=0;i<8;i++)
           {
              ST=0;
                  P0=i;       
                  
                 // for(j=0;j<8;j++)
                    {
                           for(k=0;k<5;k++)
                             {
                                   t=tab[5][n];
                                   for(j=0;j<8;j++)
                                   {
                                           SH=0;
                                       _nop_();
                                           if(t&0x80)
                                              DS=1;
                                                else
                                                  DS=0;
                                                SH=1;
                                                t<<=1;
                                                _nop_();
                                       
                                       
                                        }
                                        //n++         ;
                                   }
                           }       
                        ST=1;
                        delay(10);
                        n++;               
                  }                 
   }
  }

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:396960 发表于 2018-9-19 09:15 | 只看该作者
嗯,得看看原理图和代码才好找问题,楼主再仔细调调。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

7#
ID:155507 发表于 2018-9-19 18:14 | 只看该作者
  1. for(k=0;k<5;k++)
  2.                              {
  3.                                    t=tab[5][n];
  4.                                    for(j=0;j<8;j++)
  5.                                    {
复制代码

应该是这样
  1. for(k=0;k<5;k++)
  2.                              {
  3.                                    t=tab[k][n];  // 改成这样
  4.                                    for(j=0;j<8;j++)
  5.                                    {
复制代码

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

8#
ID:96072 发表于 2018-9-20 17:18 | 只看该作者
这个很简单的。。。。
回复

使用道具 举报

9#
ID:388197 发表于 2018-9-20 20:48 | 只看该作者
stcp引脚不能串一起,需要单独分开
回复

使用道具 举报

10#
ID:247342 发表于 2018-9-21 10:22 | 只看该作者
现在情况是显示两个‘5’两个交错了一行,stcp好多 资料里都是并在一起的,
回复

使用道具 举报

11#
ID:111634 发表于 2018-9-21 10:43 | 只看该作者
cjm82 发表于 2018-9-20 20:48
stcp引脚不能串一起,需要单独分开

错!不要瞎指导。
回复

使用道具 举报

12#
ID:111634 发表于 2018-9-21 10:58 | 只看该作者
本帖最后由 zl2168 于 2018-9-21 15:30 编辑

给你几个595应用案例,自己对照琢磨查错吧!

74LS595为串行移位寄存器,功能表如表3-21所示,引脚图如图3-46所示。DS为串行输入端,QS为串行输出端,Q0~Q7为并行输出端,CLK移位脉冲输入端,CLR为并行输出清0端。
74HC595与74HC164功能相仿,区别是595串入并出分二步操作,第一步在CLK信号有效条件下移入595片内缓冲寄存器,第二步由595 RCK端(#12)输入一个触发正脉冲,片内缓冲寄存器中的数据进入输出寄存器。而74HC164是直接串入输出寄存器,串入中间过程有可能在并行输出端产生误动作。
另外,74HC595有禁止输出(高阻态)控制端OE,OE=0时,输出熄灭。若用一个引脚控制它,可以方便地产生闪烁效果。
实例44  74HC595串入并出控制8/16循环灯
实例44 74HC595串行输出控制8-16循环灯.rar (72.58 KB, 下载次数: 153)

实例56 74LS595串行扩展3LED数码管静态显示
实例56 74LS595串行扩展3位LED静态显示.rar (39.7 KB, 下载次数: 96)

实例77  74HC595+165扩展8×8键盘
实例77 74LS595 165扩展8×8键盘.rar (65.99 KB, 下载次数: 34)

Proteus仿真一下,确认有效。以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

13#
ID:388197 发表于 2018-9-21 13:00 | 只看该作者
zl2168 发表于 2018-9-21 10:43
错!不要瞎指导。

DS SHCP接一起,Q7'悬空,用STCP当选通也是可以的,只要以SHCP位时钟,在DS上发一个8位的数据,用STCP当选通,可以指定哪片595更新,而没被选通的则保持,这样灵活性更高,当然缺点是IO口占多点.
回复

使用道具 举报

14#
ID:135253 发表于 2018-9-21 17:49 | 只看该作者
会飞的大象 发表于 2018-9-21 10:22
现在情况是显示两个‘5’两个交错了一行,stcp好多 资料里都是并在一起的,

最后加上for(n==8)n=0;效果如图

1.png (20.36 KB, 下载次数: 35)

1.png
回复

使用道具 举报

15#
ID:135253 发表于 2018-9-21 17:53 | 只看该作者

#include <reg51.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char

sbit SH=P2^0;
sbit DS=P2^1;
sbit ST=P2^2;

uchar tab[6][8]={
        {0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00},
        {0x00,0x10,0x18,0x10,0x10,0x10,0x38,0x00},
        {0x00,0x18,0x24,0x20,0x10,0x08,0x3C,0x00},
        {0x00,0x18,0x24,0x20,0x10,0x20,0x24,0x18},
        {0x00,0x10,0x18,0x14,0x3C,0x10,0x10,0x00},
        {0x00,0x38,0x08,0x18,0x20,0x20,0x18,0x00}
};

void delay(uchar i)
{
        uchar j;
        for(j=100;j>0;j--)
        {
                for(;i>0;i--)
                ;
        }
}

void main()
{
        uchar n,i,j,k,t;
        //SH=0;
        while(1)
        {
                // n=0x00;
                n=0;
                for (i=0;i<8;i++)
                {
                        ST=0;
                        P0=i;        

                        // for(j=0;j<8;j++)
                        {
                                for(k=0;k<5;k++)
                                {
                                        t=tab[k][n];
                                        for(j=0;j<8;j++)
                                        {
                                                SH=0;
                                                _nop_();
                                                if(t&0x80)
                                                        DS=1;
                                                else
                                                        DS=0;
                                                SH=1;
                                                t<<=1;
                                                _nop_();
                                        }
                                        //n++         ;
                                }
                        }        
                        ST=1;
                        delay(10);
                        n++;
                        if(n==8)
                        n=0;
                }                 
        }
}

1.png (5.49 KB, 下载次数: 32)

1.png
回复

使用道具 举报

16#
ID:247342 发表于 2018-9-28 08:16 | 只看该作者
谢谢大家
回复

使用道具 举报

17#
ID:163140 发表于 2019-6-11 17:36 | 只看该作者
zl2168 发表于 2018-9-21 10:58
给你几个595应用案例,自己对照琢磨查错吧!

74LS595为串行移位寄存器,功能表如表3-21所示,引脚图如图 ...

兄弟,没有程序。。。。。。怎么参考
回复

使用道具 举报

18#
ID:508257 发表于 2020-4-3 09:42 | 只看该作者

有没有动态显示的啊
回复

使用道具 举报

19#
ID:508257 发表于 2020-4-3 09:43 | 只看该作者

有没有动态显示的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表