请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
查看: 846|回复: 3

实验9:8X8LED点阵(点亮一个点)的问题

[复制链接]

3

主题

9

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2020-3-19 17:50:41 | 显示全部楼层 |阅读模式
1金钱
我今天学到实验9:8X8LED点阵(点亮一个点),我按照教程写了程序烧录进单片机后点阵没反应。看了半天没发现问题。就把标准程序输入进去发现也不行。。。,无意把单片机断电再开电发现点阵那个灯亮了,下面就是标准程序:      (刚才突然发现把Hc595SendByte(0x80)中的80改成40  20   10  8  4   2  1 中任何一个数烧录进单片机都可以直接点亮相对应的灯,不用断电,为啥就80就非要重启电源????)
#include "reg51.h"                         //此文件中定义了单片机的一些特殊功能寄存器
#include<intrins.h>

typedef unsigned int u16;          //对数据类型进行声明定义
typedef unsigned char u8;

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


/*******************************************************************************
* 函数名         : Hc595SendByte(u8 dat)
* 函数功能                   : 向74HC595发送一个字节的数据
* 输入           : 无
* 输出                  : 无
*******************************************************************************/
void Hc595SendByte(u8 dat)
{
        u8 a;
        SRCLK=0;
        RCLK=0;
        for(a=0;a<8;a++)
        {
                SER=dat>>7;
                dat<<=1;

                SRCLK=1;
                _nop_();
                _nop_();
                SRCLK=0;       
        }

        RCLK=1;
        _nop_();
        _nop_();
        RCLK=0;
}

/*******************************************************************************
* 函 数 名       : main
* 函数功能                 : 主函数
* 输    入       : 无
* 输    出             : 无
*******************************************************************************/
void main()
{       
        P0=0x7f;
        Hc595SendByte(0x80);
        P0=0x7f;
        while(1);               
}

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有3人回答

回复

使用道具 举报

3

主题

9

帖子

57

积分

注册会员

Rank: 2

积分
57
 楼主| 发表于 2020-3-19 21:30:38 | 显示全部楼层
本帖最后由 zhx8261022 于 2020-3-19 22:14 编辑

好吧,大佬都不在。我自己说下现在的情况。研究了半晚,发现应该是74H595这个芯片的初始设置有问题,把程序烧录进单片机的时候如果给P3^4端口提供初始数据的第八位也就是最高位为1就会出错,并且你要是运气不好写的循环语句给P3^4提供数值当中的第八位老是1,恭喜你程序烧录进去不断电程序是不能正常工作的。唯一的解决办法就是在程序开头输入P3^4=0。原因不明,只能猜测是因为烧录的时候P3^4,P3^5,P3^6电平上升下降导致74H595芯片在初始化的时候出现了错误!!!!!
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2020-4-16 09:16:13 | 显示全部楼层
本帖最后由 1017223557 于 2020-4-16 09:20 编辑
zhx8261022 发表于 2020-3-19 21:30
好吧,大佬都不在。我自己说下现在的情况。研究了半晚,发现应该是74H595这个芯片的初始设置有问题,把程序 ...

兄弟,我遇到了跟你一样的问题,0x80就要从新开一下开关,除了0x80都可以直接点亮,我刚开始找了好多程序来看还一直以为是不是板子有问题,怎么都不亮,后面发现断一次电就好了。
回复

使用道具 举报

0

主题

21

帖子

90

积分

注册会员

Rank: 2

积分
90
发表于 2020-5-23 08:00:46 | 显示全部楼层
烧完直接正常是偶然现象,正确烧完要按复位键。
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2020-6-2 22:42 , Processed in 0.093750 second(s), 24 queries .

Powered by 论坛制作 X3.4

© 2001-2017 Comsenz Inc.

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