找回密码
 立即注册
楼主: 朱***

单片机按键

[复制链接]
  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 122 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2044

    积分

    荣誉版主

    积分
    2044
    发表于 2023-9-26 16:35:07 | 显示全部楼层
    本帖最后由 王昱顺 于 2023-9-26 16:40 编辑
    朱家臣 发表于 2023-9-26 15:19
    STC90C52RC,三极管是数码管驱动,其他电路看懂了,也调试好了,主要是按键电路,不知是矩阵还是独立,还是 ...

    这么老的单片机是没有ADC功能的,所以必须要用矩阵或者独立按键。
    矩阵按键代码写着稍微麻烦一点,独立按键写代码较为容易。
    如果用独立按键的话,可以使用
    1. if(P01==0)
    2. {
    3.     //此处写按键处理程序
    4. }
    复制代码

    判断引脚低电平进行实现,老的单片机最好外部加入上拉电阻
    具体电路如图所示,KEY1连接单片机引脚
    (当然了,这是在改动你的原理图的情况下实现的)

    截图202309261634353058.jpg



    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 122 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2044

    积分

    荣誉版主

    积分
    2044
    发表于 2023-9-26 16:55:05 | 显示全部楼层
    朱家臣 发表于 2023-9-26 15:19
    STC90C52RC,三极管是数码管驱动,其他电路看懂了,也调试好了,主要是按键电路,不知是矩阵还是独立,还是 ...

    我仔细看了一下,如果用你这个电路原理图的话。

    按键的这个接法应该是用来在扫描数码管的间隙实现读取按键状态。
    我简化了一下你的单路状态原理图
    截图202309261651561548.jpg

    那么程序流程应该是:
    首先P01控制数码管单段动态刷新,在P01为0的时候如果按键SW2按下,则D17的负极为0,正极因为按键按下导通而得到1。

    所以D17导通,此时因为D17正极的1是通过10K上拉电阻实现的,不如P01的0驱动能力强,所以P17被拉到0。
    所以此时读到P17为0就可以判断是SW2按下。
    以此类推,只要保证动态扫描的时候P00到P06同时只有一个端口为0,就可以通过为零的端口判断是哪一个按键按下了。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    16

    回帖

    77

    积分

    注册会员

    积分
    77
     楼主| 发表于 2023-9-26 18:52:16 | 显示全部楼层
    王昱顺 发表于 2023-9-26 16:55
    我仔细看了一下,如果用你这个电路原理图的话。

    按键的这个接法应该是用来在扫描数码管的间隙实现读取按 ...

    void main ()
    {
      
    if( P17==0)
            {
              P0=0x82;
              P1=0xfb;
            }
            else
            {
              P0=0x92;
              P1=0xf7;

            }
             
    }按你的理解,我主程序中写了这个代码结果我安下按键显示没有变化一直显示5

    点评

    用静态显示的方案肯定是不能兼顾同时扫描按键和显示的 如果你单纯想要测试按键的话,可以试一下这段代码 这个需要使用万用表量一下P01是否在按下S1后从高电平变化为低电平  详情 回复 发表于 2023-9-26 19:18
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    16

    回帖

    77

    积分

    注册会员

    积分
    77
     楼主| 发表于 2023-9-26 18:54:41 | 显示全部楼层
    我认为按下P17是0的话应显示6,不按显示5,结果不论按不按都 显示是5
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 122 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2044

    积分

    荣誉版主

    积分
    2044
    发表于 2023-9-26 19:18:57 | 显示全部楼层

    用静态显示的方案肯定是不能兼顾同时扫描按键和显示的
    如果你单纯想要测试按键的话,可以试一下这段代码
    1. if(P17==0)
    2.     {
    3.         P0 = 0xfd;//P01口拉低
    4.     }else
    5.     {
    6.         P0 = 0xfe;//P00口拉低
    7.     }
    复制代码

    这个需要使用万用表量一下P01是否在按下S1后从高电平变化为低电平
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    16

    回帖

    77

    积分

    注册会员

    积分
    77
     楼主| 发表于 2023-9-27 11:09:38 | 显示全部楼层
    王昱顺 发表于 2023-9-26 19:18
    用静态显示的方案肯定是不能兼顾同时扫描按键和显示的
    如果你单纯想要测试按键的话,可以试一下这段代码
    ...

    P01就是低电平,控不控下都是低电平,只是P17控下S1P17电平从5V变为3.6V

    点评

    "P17电平从5V变为3.6V" 那证明你这个端口上用的上拉电阻有点小了,上拉效果太强,导致电平无法被识别为0,3.6V的话肯定会被识别成高电平1的  详情 回复 发表于 2023-9-27 14:53
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 122 天

    [LV.7]常住居民III

    33

    主题

    397

    回帖

    2044

    积分

    荣誉版主

    积分
    2044
    发表于 2023-9-27 14:53:52 | 显示全部楼层
    本帖最后由 王昱顺 于 2023-9-27 14:55 编辑
    朱家臣 发表于 2023-9-27 11:09
    P01就是低电平,控不控下都是低电平,只是P17控下S1P17电平从5V变为3.6V

    "P17电平从5V变为3.6V"
    ==那证明你这个端口上用的上拉电阻有点小了,上拉效果太强,导致电平无法被识别为0,3.6V的话肯定会被识别成高电平1的

    ”P01就是低电平,控不控下都是低电平“
    ==不能控制那么就没办法分辨出来到底是哪个按键按下了,只能识别按下这个操作
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    16

    回帖

    77

    积分

    注册会员

    积分
    77
     楼主| 发表于 2023-9-27 18:36:10 | 显示全部楼层
    是的这样的王工.但想不通原设计者是如何达到的,这个是别人成熟的产品用别人编译的代码是可以的
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    16

    回帖

    77

    积分

    注册会员

    积分
    77
     楼主| 发表于 2023-9-27 18:37:03 | 显示全部楼层
    论如何也要谢谢王工这几天解答

    点评

    不客气,我也学习了到新的电路设计  详情 回复 发表于 2023-9-28 10:23
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    16

    回帖

    77

    积分

    注册会员

    积分
    77
     楼主| 发表于 2023-9-27 18:38:12 | 显示全部楼层
    王工现在哪个城市,我在宁波有机会来宁来找我玩
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-18 20:17 , Processed in 0.092426 second(s), 71 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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