极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 33773|回复: 15

用数组对74HC595的输出进行选择

[复制链接]
发表于 2013-5-29 11:10:40 | 显示全部楼层 |阅读模式
需要根据相应输入的数据对于595扩展芯片上的小灯泡进行控制

之前在想,写一个数组,这样子的话可以根据此前的数据判断出条件

先创建一个  int lightState[]={a0,a1,a2,a3,a4,a5,a6,a7};

然后对各个位置先行进行判断,如果真则赋予相应的 aX=1或者HIGH

之后再将数据汇总起来,组成最终想要的结果,例如 lightState[]={0,0,0,0,1,1,1,1};

这种方案不知可行么?
回复

使用道具 举报

发表于 2013-5-29 11:29:23 | 显示全部楼层
可行...
但一定要用数组就多写几行

熟悉了.. 就用 Bxxxxxxx 这种方式... 比较快
回复 支持 反对

使用道具 举报

发表于 2013-5-29 11:30:29 | 显示全部楼层
int lightState[]={a0,a1,a2,a3,a4,a5,a6,a7};

不能用这种方式.. 初始值 要 真正赋值 才是好习惯哦...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 16:24:17 | 显示全部楼层
学长 发表于 2013-5-29 11:30
int lightState[]={a0,a1,a2,a3,a4,a5,a6,a7};

不能用这种方式.. 初始值 要 真正赋值 才是好习惯哦...

嗯,我写了,只是图个方便,所以把之前的给省略掉了
我用了种偷懒的方式,没用数组,结果判断真假之后,最后用了二转十的方式 A=a7*128+a6*64+a5*32。。+a0*1
不过发现两个小问题
1、有没有办法是的小灯泡在循环结束之后复位?现状是我开始接入测试之后,如果有错小灯会亮,但是在结束测试保持通电的情况下,小灯依然亮着
2、595芯片只能显示0~255的数值么,为什么用了两块之后不能显示到0~511?
回复 支持 反对

使用道具 举报

发表于 2013-5-29 20:04:33 | 显示全部楼层
mussBAschaffen 发表于 2013-5-29 16:24
嗯,我写了,只是图个方便,所以把之前的给省略掉了
我用了种偷懒的方式,没用数组,结果判断真假之后, ...

1. 没有复位.. 又或是说 0 就是复位
2. 595 是以序列推入.. 当2个 595 串联时... 会先推入第一个 595 然後再多的才推入第2个 595
其实 595 不是显示数值, 而是 二进制对应的 8 个位元的高低值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-29 22:20:55 | 显示全部楼层
学长 发表于 2013-5-29 20:04
1. 没有复位.. 又或是说 0 就是复位
2. 595 是以序列推入.. 当2个 595 串联时... 会先推入第一个 595 然 ...

额,这个就略囧了,结束测试之后小灯还是亮着的,好吧。。
谢谢更正~就是说串联之后只有用 B xxxx xxxx xxxx xxxx才能显示16个不同的高地位,从而让小灯泡达到相应的效果?
回复 支持 反对

使用道具 举报

发表于 2013-5-29 23:18:17 | 显示全部楼层
mussBAschaffen 发表于 2013-5-29 22:20
额,这个就略囧了,结束测试之后小灯还是亮着的,好吧。。
谢谢更正~就是说串联之后只有用 B xxxx xxxx  ...

正确应该是说两个值
val1=Bxxxxxxxx;
val2=Bxxxxxxxx;

再分别推入 595 , 顺序注意一下就行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-30 09:01:33 | 显示全部楼层
学长 发表于 2013-5-29 23:18
正确应该是说两个值
val1=Bxxxxxxxx;
val2=Bxxxxxxxx;

嗯,试一发
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-30 09:57:06 | 显示全部楼层
学长 发表于 2013-5-29 23:18
正确应该是说两个值
val1=Bxxxxxxxx;
val2=Bxxxxxxxx;

似乎还是不行,芯片串联之后依然只能显示8位高地位额
回复 支持 反对

使用道具 举报

发表于 2013-5-30 14:26:44 | 显示全部楼层
mussBAschaffen 发表于 2013-5-30 09:57
似乎还是不行,芯片串联之后依然只能显示8位高地位额

这两个步骤
1. 接线正不正确
2. 程序正不正确
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-30 20:26:14 | 显示全部楼层
学长 发表于 2013-5-30 14:26
这两个步骤
1. 接线正不正确
2. 程序正不正确

连线应该没问题,程序是按你之前的提示分了两个值val1/val2,,结果出现的确是2组相同的闪烁。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-31 14:59:24 | 显示全部楼层
学长 发表于 2013-5-30 14:26
这两个步骤
1. 接线正不正确
2. 程序正不正确

的确是接线的问题,串行输入输出的那根线接触不良。。
现在好了~谢谢啦
回复 支持 反对

使用道具 举报

发表于 2013-5-31 20:17:59 | 显示全部楼层
mussBAschaffen 发表于 2013-5-31 14:59
的确是接线的问题,串行输入输出的那根线接触不良。。
现在好了~谢谢啦


加油

抱歉,您的帖子小于 10 个字符的限制
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-31 23:29:29 | 显示全部楼层
学长 发表于 2013-5-31 20:17
加油

抱歉,您的帖子小于 10 个字符的限制

恩恩~
能否去这里看一眼,我还是不太会用定时器中断控制lcd定时翻页

显示屏如何实现定时翻页功能
http://www.geek-workshop.com/thread-4569-1-1.html
回复 支持 反对

使用道具 举报

发表于 2013-6-1 12:55:05 | 显示全部楼层
片选,时钟,使能,正确了吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 01:19 , Processed in 0.036455 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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