mussBAschaffen 发表于 2013-5-29 11:10:40

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

需要根据相应输入的数据对于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};

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

mussBAschaffen 发表于 2013-5-29 16:24:17

学长 发表于 2013-5-29 11:30 static/image/common/back.gif
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 static/image/common/back.gif
嗯,我写了,只是图个方便,所以把之前的给省略掉了
我用了种偷懒的方式,没用数组,结果判断真假之后, ...

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

mussBAschaffen 发表于 2013-5-29 22:20:55

学长 发表于 2013-5-29 20:04 static/image/common/back.gif
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 static/image/common/back.gif
额,这个就略囧了,结束测试之后小灯还是亮着的,好吧。。
谢谢更正~就是说串联之后只有用 B xxxx xxxx...

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

再分别推入 595 , 顺序注意一下就行了

mussBAschaffen 发表于 2013-5-30 09:01:33

学长 发表于 2013-5-29 23:18 static/image/common/back.gif
正确应该是说两个值
val1=Bxxxxxxxx;
val2=Bxxxxxxxx;


嗯,试一发

mussBAschaffen 发表于 2013-5-30 09:57:06

学长 发表于 2013-5-29 23:18 static/image/common/back.gif
正确应该是说两个值
val1=Bxxxxxxxx;
val2=Bxxxxxxxx;


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

学长 发表于 2013-5-30 14:26:44

mussBAschaffen 发表于 2013-5-30 09:57 static/image/common/back.gif
似乎还是不行,芯片串联之后依然只能显示8位高地位额

这两个步骤
1. 接线正不正确
2. 程序正不正确

mussBAschaffen 发表于 2013-5-30 20:26:14

学长 发表于 2013-5-30 14:26 static/image/common/back.gif
这两个步骤
1. 接线正不正确
2. 程序正不正确

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

mussBAschaffen 发表于 2013-5-31 14:59:24

学长 发表于 2013-5-30 14:26 static/image/common/back.gif
这两个步骤
1. 接线正不正确
2. 程序正不正确

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

学长 发表于 2013-5-31 20:17:59

mussBAschaffen 发表于 2013-5-31 14:59 static/image/common/back.gif
的确是接线的问题,串行输入输出的那根线接触不良。。
现在好了~谢谢啦

:)
加油

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

mussBAschaffen 发表于 2013-5-31 23:29:29

学长 发表于 2013-5-31 20:17 static/image/common/back.gif
加油

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

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

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

林定祥 发表于 2013-6-1 12:55:05

片选,时钟,使能,正确了吗?
页: [1] 2
查看完整版本: 用数组对74HC595的输出进行选择