搜索
bottom↓
回复: 14

74hc595如何输入数据,脉冲如何设置

[复制链接]

出0入0汤圆

发表于 2015-10-28 18:59:22 | 显示全部楼层 |阅读模式
74hc595如何输入数据,脉冲如何设置,简单的举个例子就行;;谢谢各位大神了

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2015-10-28 19:33:14 | 显示全部楼层
楼主改行吧,不是基础问题,而是学习能力问题!

出0入0汤圆

发表于 2015-10-28 19:33:22 | 显示全部楼层
问题很有深度,这六十块钱花的挺值。

出0入0汤圆

发表于 2015-10-28 20:27:01 | 显示全部楼层
脉冲就是上山和下山。

出0入0汤圆

发表于 2015-10-28 20:31:02 | 显示全部楼层
按照595的时序图做即可~~~~~~~~~~~~~

出0入0汤圆

发表于 2015-10-28 20:43:42 | 显示全部楼层
我这个是16*64点阵里的8个595送数据的程序片段,不一定完全符合楼主的要求。但里面包含有单个595的驱动部分。楼主可参考一下。
void HC595_Send(void)
{
        uint8 i;
        uint8 dat;
        uint8 mask;
        static uint8 index = 0;

        for (i = 0; i < 8; i++)
        {
                dat = Tab[i + index * 8];
               
                for (mask = 0x80; mask != 0; mask >>= 1)
                {
                        if (dat & mask)
                        {
                                DAT = 1;
                        }
                        else
                        {
                                DAT = 0;
                        }

                        SCK = 1;
                        SCK = 0;
                }               
        }

        P4 = (P4 & 0xF0) | index;
        RCK = 0;
        RCK = 1;

        if (index < 15)
        {
                index++;
        }
        else
        {
                index = 0;
        }
}

出0入0汤圆

发表于 2015-10-28 20:46:03 | 显示全部楼层
               for (mask = 0x80; mask != 0; mask >>= 1)
                 {
                         if (dat & mask)
                         {
                                 DAT = 1;
                         }
                         else
                         {
                                 DAT = 0;
                         }

                         SCK = 1;
                         SCK = 0;
                 }


        RCK = 0;
        RCK = 1;  

提取出来单个595就是这个部份了。

出0入0汤圆

发表于 2015-10-28 21:01:08 | 显示全部楼层
刚学,大家嘴巴上照顾点!给你个详细一点的,这是如何发送一个byte(8位)的函数,希望能帮到你:

void sendbyte(unsigned char byte)
{   
   unsigned char i;
   unsigned char tem;  
     
   for(i=0;i<8;i++)    //以下循环8次   ,将一个字节的数据送出到595
        {
         clk=0;//595的11脚
         tem=(byte&0x80);  //byte & 1000 0000,取数据byte的最高一位,
                 if(tem==0)//相与结果为0则这一位为0
                   {
                   dat=0;//595的14脚
                   }
                   else  //相与结果为1则这一位为1
                   {
                  dat=1; //595的14脚
                   }
         byte=byte<<1;//byte左移一位,如此重复8次,将段码逐位送入595,
         clk=1;//595的11脚
         }
         rclk=0;//595的12脚  将寄存器数据打出。
         rclk=1; //595的12脚
}

出0入0汤圆

发表于 2015-10-28 21:39:02 来自手机 | 显示全部楼层
例子不是网上一大把吗?我也觉得有点那个啥

出0入0汤圆

发表于 2015-10-29 07:30:26 | 显示全部楼层
欢迎新手加入哦

出0入0汤圆

 楼主| 发表于 2015-10-29 13:37:22 来自手机 | 显示全部楼层
本人是菜鸟,请多多关照

出0入0汤圆

发表于 2015-10-29 17:48:03 来自手机 | 显示全部楼层
A=dat;for(i=0;i<8;i++){A<<=1;DO=CY;CLK=0;CLK=1;}

出0入0汤圆

发表于 2015-10-29 18:30:45 | 显示全部楼层
天堂之泪 发表于 2015-10-28 20:43
我这个是16*64点阵里的8个595送数据的程序片段,不一定完全符合楼主的要求。但里面包含有单个595的驱动部分 ...


请教一下,驱动LED矩阵,XY方向都用74HC595可以吗?
有网友说,要用74HC138什么的,为什么啊?

出0入0汤圆

发表于 2015-10-29 18:32:15 | 显示全部楼层
输入,好像就是SPI的时序吧,然后,通过,给Update上一个脉冲,来更新输出引脚状态。

出0入0汤圆

发表于 2015-11-5 13:37:31 | 显示全部楼层
dog 发表于 2015-10-29 18:30
请教一下,驱动LED矩阵,XY方向都用74HC595可以吗?
有网友说,要用74HC138什么的,为什么啊? ...

我买的是标准的08接口的,列线是用595,行线是用138,你说的是对的,16行,就用两个138。64列,用8个595
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-5 22:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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