独闷闷网

 找回密码
 立即注册
搜索
查看: 6131|回复: 5
收起左侧

[求助] LED和按键复用

[复制链接]
发表于 2014-9-22 00:51:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 jianhong_wu 于 2014-9-23 22:52 编辑

  我这个图我按下 S1第一次是1号灯亮,按下第二次是2号灯亮,第三次是3号灯亮,1号灯灭,2号灯亮,3号灯也是灭,就是反复按下S1反复3个灯分别只有一个点亮,那么第三次按下怎样控制那个按键的?这个是我用51单片机控制的,是怎样写C编程啊?
按键与LED复用.png

Schematic Prints.pdf

44.93 KB, 下载次数: 1770

乐于分享,勇于质疑!
发表于 2014-9-22 09:24:35 | 显示全部楼层
LZ可以修改原理图莫?
乐于分享,勇于质疑!
发表于 2014-9-23 22:35:09 | 显示全部楼层
本帖最后由 jianhong_wu 于 2014-9-23 23:01 编辑

鸿哥解答:
如果单片机IO口是准双向IO口,分两步来做:
(1)第一步:你先当那4个按键不存在,先把LED的动态扫描程序做出来。
(2)第二步: 当你完成第一步之后,由于你的电路上只有两个片选
LCOM1(P2.6)和LCOM2(1.2),所以你的动态扫描切换只要2步,
为了检测按键,你在动态扫描程序里均匀地多插入2步专门用来动态扫描按键的。比如:
(1)LCOM1=0;
   LCOM2=1;
   ...
   delay();
   动态扫描LED,片选1有效
(2)LCOM1=1;
   LCOM2=1;
   ...
   按键检测,两个片选无效
(3)LCOM1=1;
   LCOM2=0;
   ...
   delay();
   动态扫描LED,片选2有效
(4)LCOM1=1;
   LCOM2=1;
   ...
   按键检测,两个片选无效

继续跳回第一步循环扫描下去...

比如每到那个检测按键的时间段,你就检测这个按键的电平状态,如果发现它是低的,而且连续在N个时间段内发现都是低电平的,那么就是被按下了。你把设置一下某个标志位自锁起来,这些具体基本的独立按键功能你可以参考我的连载技术贴《从业将近十年...》第6,7,8节http://www.dumenmen.com/forum.php?mod=viewthread&tid=8



乐于分享,勇于质疑!
发表于 2014-9-24 09:23:45 | 显示全部楼层
jianhong_wu 发表于 2014-9-23 22:35
鸿哥解答:
如果单片机IO口是准双向IO口,分两步来做:
(1)第一步:你先当那4个按键不存在,先把LED的 ...

鸿哥说的是,如果是有方向控制寄存器,KEY,和LED是两种状态可以切换。但是鸿哥,我有个疑问,如果IC没有 双向控制口,这个电路应该是复用不了吧?
乐于分享,勇于质疑!
发表于 2014-9-24 10:29:46 | 显示全部楼层
fyt578896817 发表于 2014-9-24 09:23
鸿哥说的是,如果是有方向控制寄存器,KEY,和LED是两种状态可以切换。但是鸿哥,我有个疑问,如果IC没有 ...

所有的单片机的IO口都有双向性的。如果不是准双向口,比如像PIC的单片机,那么在切换的时候要注意配置方向寄存器,该配置输出的时候就配置输出,该配置输入的时候就配置输入。
乐于分享,勇于质疑!
发表于 2014-9-26 12:06:42 | 显示全部楼层
你可以这样,一直检测按键是否有按下,没按下一次用一个计数暂存器累加,当然首先清零暂存器。然后判断寄存器 =1时,执行你想要的城固。=2时。=3时。

乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2021-10-26 11:16 , Processed in 0.149712 second(s), 20 queries .

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