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

好神码

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 1749|回复: 13

keilc51求助

[复制链接]

1

主题

6

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2019-3-12 08:06:01 | 显示全部楼层 |阅读模式
在51单片机实验教程中8x8的led点阵显示,想点亮第一个小灯。教程给的代码是
        HC595SendByte(0x80);
        P0=0x7f;
        while(1);
逻辑是将第一个小灯点亮之后进入死循环。我想就是将输出口进行
锁存,一直点亮第一个小灯。但实际是第一个小灯压根就不亮。我修改了一下代码,
写成这样:
while(1)
        {
        HC595SendByte(0x80);
        P0=0x7f;
         }
小灯就亮了。是将输出口一直输出。但我想这两个代码都应该能点亮。本人是这方
面小白,刚开始学。实在想不通,真诚恳求各位大神指点迷津。谢谢了!
回复

使用道具 举报

0

主题

65

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2019-3-12 09:44:32 | 显示全部楼层
楼主请传一下电路图。
回复

使用道具 举报

0

主题

33

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2019-3-12 09:56:41 | 显示全部楼层
没锁存或者电流驱动不够
回复

使用道具 举报

1

主题

6

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2019-3-12 10:17:14 | 显示全部楼层
回复

使用道具 举报

0

主题

65

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2019-3-12 10:50:42 | 显示全部楼层
应该是595时序问题,教程给的代码不对。

HC595SendByte(0x80);
P0=0x7f;
while(1);
改成
P0=0x7f;
HC595SendByte(0x80);
while(1);
再试试。
回复

使用道具 举报

1

主题

6

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2019-3-12 11:33:02 | 显示全部楼层
还是不亮,就只有
while(1)
{
HC595SendByte(0x80);
P0=0x7f;
         }这个亮,
回复

使用道具 举报

1

主题

6

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2019-3-12 11:35:39 | 显示全部楼层
我想当程序进入死循环的时候,单片机的输出口是保持原来的状态还是不会输出任何状态
回复

使用道具 举报

0

主题

65

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2019-3-12 11:58:17 | 显示全部楼层
引用 6 楼 don_number1 的回复:我想当程序进入死循环的时候,单片机的输出口是保持原来的状态还是不会输出任何状态

死循环时单片机的输出口保持原来的状态。
楼主麻烦传下子函数HC595SendByte(unsigned char),我还是认为595时序有问题。
回复

使用道具 举报

4

主题

267

帖子

548

积分

高级会员

Rank: 4

积分
548
发表于 2019-3-12 12:37:59 | 显示全部楼层
万用表/示波器量一下, 看看LED或芯片是否有损坏?
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2019-3-12 14:13:46 | 显示全部楼层
你只是做了仿真,有实物的话用示波器看下输出电平
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|好神码 ( 粤ICP备18029814号-1 )

GMT+8, 2021-12-7 16:05 , Processed in 0.102458 second(s), 4 queries , File On.

Powered by haoshenma V1.0

© 2018-2048 haoshenma

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