找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教为啥单片机+74hc595显示不正常?

[复制链接]
跳转到指定楼层
楼主
ID:731755 发表于 2024-4-1 20:38 来自手机 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
晚上好,各位老师,请教一下我的程序是否有问题,单片机STC8H8K64U,两个74HC595推动四位数码管,刚开始采用延时程序,hour=1234.可以正常显示1234.后来采用定时中断显示,hour改为1111.显示444.请教一下,这样写程序是否正常,如果错误,该怎么改?谢谢

IMG_20240401_203010.jpg (829.43 KB, 下载次数: 71)

IMG_20240401_203010.jpg

51hei.png (22.23 KB, 下载次数: 82)

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

使用道具 举报

沙发
ID:161164 发表于 2024-4-1 22:20 | 只看该作者
先把211行的k++移到213行之后
确保LED8[k]里k的值不会超过4

评分

参与人数 1黑币 +15 收起 理由
13872888583 + 15 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:731755 发表于 2024-4-1 22:35 | 只看该作者
lkc8210 发表于 2024-4-1 22:20
先把211行的k++移到213行之后
确保LED8[k]里k的值不会超过4

高手,正常了,现在4个1111了。以前不明白,为啥自加加要放到后面。现在知道了
回复

使用道具 举报

地板
ID:1109793 发表于 2024-4-2 08:41 | 只看该作者
放前边也没问题吧,主要是后面的if(k>=4)改成3才对啊,因为=4就是led[4]就越界了。
回复

使用道具 举报

5#
ID:731755 发表于 2024-4-2 10:13 来自手机 | 只看该作者
xiaobendan001 发表于 2024-4-2 08:41
放前边也没问题吧,主要是后面的if(k>=4)改成3才对啊,因为=4就是led[4]就越界了。

不能是3,3就少一位了。
回复

使用道具 举报

6#
ID:1109793 发表于 2024-4-2 10:43 | 只看该作者
13872888583 发表于 2024-4-2 10:13
不能是3,3就少一位了。

3的话就要放前边,4就放后边,总之就是不能让数组越界。不越界还有一个办法,把数组定义大一些。
回复

使用道具 举报

7#
ID:965189 发表于 2024-4-2 15:11 | 只看该作者
if(K>3){K=0;)这样也可以吧。
回复

使用道具 举报

8#
ID:883242 发表于 2024-4-2 17:03 | 只看该作者
214、215行应该挪到217~219的括号内部,现在显示4个一样的数字看不出来,如果是1234就有大问题了。
回复

使用道具 举报

9#
ID:731755 发表于 2024-4-2 18:58 来自手机 | 只看该作者
君工创 发表于 2024-4-2 15:11
if(K>3){K=0;)这样也可以吧。

不可以,采用二楼那位师傅的就刚刚好
回复

使用道具 举报

10#
ID:731755 发表于 2024-4-2 19:02 来自手机 | 只看该作者
xiaobendan001 发表于 2024-4-2 10:43
3的话就要放前边,4就放后边,总之就是不能让数组越界。不越界还有一个办法,把数组定义大一些。

自加加放到前面,目前hour=1234,试过k=3,4,5.其中3少一位显示,4显示错误,还是少一位,5显示和4一样,最后一位乱码。
回复

使用道具 举报

11#
ID:731755 发表于 2024-4-2 19:03 来自手机 | 只看该作者
Hephaestus 发表于 2024-4-2 17:03
214、215行应该挪到217~219的括号内部,现在显示4个一样的数字看不出来,如果是1234就有大问题了。

没事,采用二楼那位师傅刚刚好,目前就是1234.
回复

使用道具 举报

12#
ID:1109793 发表于 2024-4-2 19:18 | 只看该作者
13872888583 发表于 2024-4-2 19:02
自加加放到前面,目前hour=1234,试过k=3,4,5.其中3少一位显示,4显示错误,还是少一位,5显示和4一样, ...

是,放前边的同时,判定那部分也要放前边,否则K=0的时候就无法参与显示了
或者你把数组改成LED8[5],然后把1234放到LED8[1]~LEN8[4],就一样能显示1234了。
回复

使用道具 举报

13#
ID:731755 发表于 2024-4-3 08:16 来自手机 | 只看该作者
xiaobendan001 发表于 2024-4-2 19:18
是,放前边的同时,判定那部分也要放前边,否则K=0的时候就无法参与显示了
或者你把数组改成LED8[5],然 ...

好的,谢谢,师傅。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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