如何用3个I/O控制,8个LED.
如何用3个I/O控制8个LED.可以另外加三极管.
全部回复(41)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
6个的话,较容易实现些.
1个LED有两种状态,亮和灭.8个一共有16种状态.
1个I/O口静态只有三种状态,高、低和高阻态.3个I/O静态只有9个状态,无法控制16个状态.因此要想简单控制,是无法做到的,特殊方法下,可以做到,但电路会复杂.
下图是3个控制6灯,低,上灯亮,高下灯亮,高阻灯灭.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1141955661.jpg');}" onmousewheel="return imgzoom(this);">
1个LED有两种状态,亮和灭.8个一共有16种状态.
1个I/O口静态只有三种状态,高、低和高阻态.3个I/O静态只有9个状态,无法控制16个状态.因此要想简单控制,是无法做到的,特殊方法下,可以做到,但电路会复杂.
下图是3个控制6灯,低,上灯亮,高下灯亮,高阻灯灭.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1141955661.jpg');}" onmousewheel="return imgzoom(this);">
0
回复
提示
@azhu
6个的话,较容易实现些.1个LED有两种状态,亮和灭.8个一共有16种状态.1个I/O口静态只有三种状态,高、低和高阻态.3个I/O静态只有9个状态,无法控制16个状态.因此要想简单控制,是无法做到的,特殊方法下,可以做到,但电路会复杂.下图是3个控制6灯,低,上灯亮,高下灯亮,高阻灯灭.[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1141955661.jpg');}"onmousewheel="returnimgzoom(this);">
佩服佩服!强人,顶!!!!
0
回复
提示
@ma3722
发一个12LED的,更多LED的以后再发.1141986012.doc
这是你的图片:
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1141988873.png');}" onmousewheel="return imgzoom(this);">
我很赞同你对技术问题的认真态度.
但我也提出我的看法,楼主的八个指示灯要求是互不相关的,也就是互相独立的.要测试是否能够独立,最简单的办法就是让每一个灯单独的点亮,而让其他所有的灯都不亮,看能否实现.D1-6是可以的,但是7-12这六个,至少有三个是亮的,1-6改变状态时,7-12将伴随着乱亮,对不对?
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1141988873.png');}" onmousewheel="return imgzoom(this);">
我很赞同你对技术问题的认真态度.
但我也提出我的看法,楼主的八个指示灯要求是互不相关的,也就是互相独立的.要测试是否能够独立,最简单的办法就是让每一个灯单独的点亮,而让其他所有的灯都不亮,看能否实现.D1-6是可以的,但是7-12这六个,至少有三个是亮的,1-6改变状态时,7-12将伴随着乱亮,对不对?
0
回复
提示
@azhu
6个的话,较容易实现些.1个LED有两种状态,亮和灭.8个一共有16种状态.1个I/O口静态只有三种状态,高、低和高阻态.3个I/O静态只有9个状态,无法控制16个状态.因此要想简单控制,是无法做到的,特殊方法下,可以做到,但电路会复杂.下图是3个控制6灯,低,上灯亮,高下灯亮,高阻灯灭.[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1141955661.jpg');}"onmousewheel="returnimgzoom(this);">
你的分析思路是对的,但是方法不妥,因为任何一只管子点亮,它自身不能取高阻的状态,另一个端子也不能取高阻状态,实际上高阻不能作为一种有效的状态,这样,总状态数就是2的三次方等于8.
另外,你的这个图,如果想让六个指示灯都不亮或者都亮,该怎么办呢?因为上下两个灯至少有一个是亮的.
像上面那个朋友的那个图,如果只用两种电平,也不能实现任何一支管子的随意点亮,必须让第三条引脚处于高阻状态.看来不用译码器的方式的确很受局限性,这个成本节省的不值.
另外,你的这个图,如果想让六个指示灯都不亮或者都亮,该怎么办呢?因为上下两个灯至少有一个是亮的.
像上面那个朋友的那个图,如果只用两种电平,也不能实现任何一支管子的随意点亮,必须让第三条引脚处于高阻状态.看来不用译码器的方式的确很受局限性,这个成本节省的不值.
0
回复
提示
@sdjufeng
你的分析思路是对的,但是方法不妥,因为任何一只管子点亮,它自身不能取高阻的状态,另一个端子也不能取高阻状态,实际上高阻不能作为一种有效的状态,这样,总状态数就是2的三次方等于8.另外,你的这个图,如果想让六个指示灯都不亮或者都亮,该怎么办呢?因为上下两个灯至少有一个是亮的.像上面那个朋友的那个图,如果只用两种电平,也不能实现任何一支管子的随意点亮,必须让第三条引脚处于高阻状态.看来不用译码器的方式的确很受局限性,这个成本节省的不值.
:)
你可能还是没明白我的电路.这个电路是用1个I/O口控制2个LED.当I/O口处于高阻态时,两个LED都是不亮的.因为2个LED上的压降只有0V7,因此是不会亮的.高的时候,下灯亮,低的时候上灯亮,以高低电平作变化时,两个灯一起亮.我曾在一个充电器电路中实际使用过该电路.
你可能还是没明白我的电路.这个电路是用1个I/O口控制2个LED.当I/O口处于高阻态时,两个LED都是不亮的.因为2个LED上的压降只有0V7,因此是不会亮的.高的时候,下灯亮,低的时候上灯亮,以高低电平作变化时,两个灯一起亮.我曾在一个充电器电路中实际使用过该电路.
0
回复
提示
@sdjufeng
这是你的图片:[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1141988873.png');}"onmousewheel="returnimgzoom(this);">我很赞同你对技术问题的认真态度.但我也提出我的看法,楼主的八个指示灯要求是互不相关的,也就是互相独立的.要测试是否能够独立,最简单的办法就是让每一个灯单独的点亮,而让其他所有的灯都不亮,看能否实现.D1-6是可以的,但是7-12这六个,至少有三个是亮的,1-6改变状态时,7-12将伴随着乱亮,对不对?
即使是单独控制,D1-D6也是不可以的.
假如我要D1,D2,D4,三灯都亮,它就无法做到了.
假如我要D1,D2,D4,三灯都亮,它就无法做到了.
0
回复
提示
@sdjufeng
这是你的图片:[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1141988873.png');}"onmousewheel="returnimgzoom(this);">我很赞同你对技术问题的认真态度.但我也提出我的看法,楼主的八个指示灯要求是互不相关的,也就是互相独立的.要测试是否能够独立,最简单的办法就是让每一个灯单独的点亮,而让其他所有的灯都不亮,看能否实现.D1-6是可以的,但是7-12这六个,至少有三个是亮的,1-6改变状态时,7-12将伴随着乱亮,对不对?
你讲的对,这个方法不行.
但我总是认为有其他办法.
让我再想想吧.
大家也一起想想吧!!!
但我总是认为有其他办法.
让我再想想吧.
大家也一起想想吧!!!
0
回复
提示
@sujianli
完全没有实际应用价值用个595之类的多简单方便,0.5元不到就解决问题.关键是也可靠
此话错矣,我曾经开发一款多功能的充电器,其中要用到13个LED,正好用此办法解决了I/O口不够的问题.就是下面这款充电器,它的单片机是用只有12个I/O口的.其中A/D就用了3个,按键用了1个,LED用了7个,PWM用了1个.共12个.
而每个LED都是可以单独控制的.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1142211234.jpg');}" onmousewheel="return imgzoom(this);">
而每个LED都是可以单独控制的.
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1142211234.jpg');}" onmousewheel="return imgzoom(this);">
0
回复
提示
@sdjufeng
这是你的图片:[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1141988873.png');}"onmousewheel="returnimgzoom(this);">我很赞同你对技术问题的认真态度.但我也提出我的看法,楼主的八个指示灯要求是互不相关的,也就是互相独立的.要测试是否能够独立,最简单的办法就是让每一个灯单独的点亮,而让其他所有的灯都不亮,看能否实现.D1-6是可以的,但是7-12这六个,至少有三个是亮的,1-6改变状态时,7-12将伴随着乱亮,对不对?
这个电路不能用,不能单独控制.D1,D2,D3/D5,D4,D6.会出现同时亮的时候.
0
回复
提示
@azhu
6个的话,较容易实现些.1个LED有两种状态,亮和灭.8个一共有16种状态.1个I/O口静态只有三种状态,高、低和高阻态.3个I/O静态只有9个状态,无法控制16个状态.因此要想简单控制,是无法做到的,特殊方法下,可以做到,但电路会复杂.下图是3个控制6灯,低,上灯亮,高下灯亮,高阻灯灭.[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1141955661.jpg');}"onmousewheel="returnimgzoom(this);">
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/39/1142325560.jpg');}" onmousewheel="return imgzoom(this);">
这个3控6个LED ,这个4控8个LED.这个电路会好些.
这个3控6个LED ,这个4控8个LED.这个电路会好些.
0
回复
提示
@azhu
6个的话,较容易实现些.1个LED有两种状态,亮和灭.8个一共有16种状态.1个I/O口静态只有三种状态,高、低和高阻态.3个I/O静态只有9个状态,无法控制16个状态.因此要想简单控制,是无法做到的,特殊方法下,可以做到,但电路会复杂.下图是3个控制6灯,低,上灯亮,高下灯亮,高阻灯灭.[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1141955661.jpg');}"onmousewheel="returnimgzoom(this);">
你这个损耗太大了.
0
回复
提示
@mielum
[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/39/1142325560.jpg');}"onmousewheel="returnimgzoom(this);">这个3控6个LED,这个4控8个LED.这个电路会好些.
在实际应用上,你贴出的这个电路是存在问题的.
比如,如果我只要D1亮,其它灯不亮,那么电路中就必须R2连接的I/O为高,R1连接的I/O脚为低,R3连接的为高阻.
在这个情况下,R2的I/O高会通过R2,D4,D5,R1,到R1的低,D4和D5会有微微的亮.你不信的话,可以一试.
这个电路已经有失败的经验了.
比如,如果我只要D1亮,其它灯不亮,那么电路中就必须R2连接的I/O为高,R1连接的I/O脚为低,R3连接的为高阻.
在这个情况下,R2的I/O高会通过R2,D4,D5,R1,到R1的低,D4和D5会有微微的亮.你不信的话,可以一试.
这个电路已经有失败的经验了.
0
回复
提示