普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4457|回复: 4

一个关于开发板74HC595输出的问题

 关闭 [复制链接]

1

主题

4

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2017-9-25 00:25:24 | 显示全部楼层 |阅读模式
新手一枚正在学习中,跟着基础课程学习74HC595过程中出现了一个问题,
代码如下,几乎照搬教程:
#include"reg51.h"
#include"intrins.h"
#define led P0

typedef unsigned int u16;
typedef char u8;

sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;

void Hc595SendByte(u8 dat)
{
        u8 a;
        SRCLK=0;
        RCLK=0;
        for(a=0;a<8;a++)
        {                                          
                SER=dat>>7;                  
                dat=dat<<1;                  
                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;               
        }
        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}

void main()
{         
        Hc595SendByte(0xef);   
        led=0x7f;
        while(1);
}
按道理说如代码运行,8X8点阵的第一列除第四排以外都应该亮,proteus 仿真结果也确实如此,但是烧入开发板之后,只有第5/6/7/8排是点亮的;
后来通过修改dat的值又进行了一些测试,发现如果dat值第一位是1,比如说0X80,那么似乎就不能将dat输入到595芯片,此时输出结果会是全部熄灭;除非遇一个0,比如上面的代码中的dat=0xef,1110 1111,0之后的结果都可以正确输出,0之前的就不可以。如果dat值第一位是0,那么结果就可以全部正确输出,这样一来第一列第一排的LED灯就一直无法点亮。总结来说就是输入的8位值,只有遇到一个0,才能正确的将值输入595芯片。不知道是什么原因。
回复

使用道具 举报

20

主题

1344

帖子

8379

积分

论坛元老

Rank: 8Rank: 8

积分
8379
发表于 2017-9-25 09:42:24 | 显示全部楼层
本帖最后由 HC6800-ES-V2.0 于 2017-9-25 09:44 编辑

我知道你的问题在哪里!!!!!
如果你搜索一下本站,就可以看到以前很多人都讨论过这个事,结果就是:没有初始化595!!!!!
将你程序主函数修改一下,就好了。
void main()
{         
                Hc595SendByte(0x00);           
                Hc595SendByte(0xef);   
        led=0x7f;
        while(1);
}已经在我的HC6800-ES-V2.0板子上通过:最左边列,除第四行不亮外,其它都亮。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2017-9-25 10:18:23 | 显示全部楼层
HC6800-ES-V2.0 发表于 2017-9-25 09:42
我知道你的问题在哪里!!!!!
如果你搜索一下本站,就可以看到以前很多人都讨论过这个事,结果就是:没 ...

噢原来如此…其实本来通过10#引脚是可以复位的吧
板子上的595,MR直接接到了vcc所以只能通过输入一个0x00才能复位,是这个意思吧?
谢谢!我去翻一下以前的帖子!
回复 支持 反对

使用道具 举报

1

主题

3

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2017-9-29 16:57:16 | 显示全部楼层
新人1 发表于 2017-9-25 10:18
噢原来如此…其实本来通过10#引脚是可以复位的吧
板子上的595,MR直接接到了vcc所以只能通过输入一个0x0 ...

请问我的板子如果运行这个程序是第一列都亮了,是什么问题?”
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-25 12:14 , Processed in 0.084723 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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