|
| 也可以 |
|
3个IO口这样能接6个按键,是查理复用接法的上限,并不是51单片机能力的上限。 用电阻电压法理论上可以单口无限,实际单口接三五个也很常见。 |
太阳雨ZW 发表于 2025-1-17 11:01 也是哈,就DIY乐呵乐呵,真做项目不要再考虑用它了。 |
xiaobendan001 发表于 2025-1-17 09:54 我要这东西做什么哎。。。 手里还的几十个8G1K08A的,当时刚出来没多久就买了,放在手里吃灰呢。。 |
devcang 发表于 2025-1-14 15:38 也可以接10个按键,7个加B1-B2,B2-B3,B1-B3三个。 |
单片机学习习 发表于 2025-1-16 20:55 3个口带ADC,没有搞懂 |
zhuls 发表于 2025-1-17 09:16 手中还有过去买的几十个,放着浪费了,现在用来做些小制做利用下。 |
zhuls 发表于 2025-1-17 09:16 我手里还有一点库存呢,你要不? ![]() |
太阳雨ZW 发表于 2025-1-15 13:31 AT89C2051,可以说是史前文物了! 现在哪家上新项目还用这料? 现在新出的20脚MCU,哪个性能配置比不过它?除了固有的库存,全新货还贵的要人命。。 |
| 可以,但是那3个I/O必须带ADC功能 |
太阳雨ZW 发表于 2025-1-14 00:49 3个IO不需要节任何别的零件,可以节6个按键: IO1、IO2、IO3分别对地接一个按键。 IO1-IO2、IO1-IO3、IO2-IO3接3个按键。 |
zhuls 发表于 2025-1-14 15:49 用的是AT89C2051,不带ADC |
太阳雨ZW 发表于 2025-1-14 16:48 5楼提醒了我,代码可以简化为
|
| 这是都对地接,如果接两个IO之间,是不是还能更多? |
|
这样就很完善了,学习了。 |
| 注意按键不要同时按下多个就行 |
|
逻辑上没啥问题。 但对于现在的MCU来说,意义不大, 6个4148不是钱? 为什么不用AD口来测按键?还能少两个IO。 要知道硬件成本远大于软件成本。 |
| 再加3只二极管,可以7个按钮 |
|
逻辑像是 3 排列,取2个、和取1个。 这硬件电路没有问题,测试过。 程序中,可以使用扫描,也可以用3个中断、再判断哪个按钮 |
| 不知道什么原理 ,为何不用ADC口 |
|
|
可以,也可以再接第7个开关同时拉低三个I/O口。 也可以只用3个开关组合使用。 二进制的 000-111 。 |
| 判断B1、B2、B3的电平高低 b1低且b2、b3高对应sw1,b2低且b1、b3高对应sw3,b3低且b1、b2高对应sw5,b1、b2低且b3高对应sw2...... |
|
这样写可以实用吧,消抖用按键并电容, char key() { B1=1; B2=1; B3=1; if(B1==0)return 1; else if(B1==0&&B2==0)return 2; else if(B2==0)return 3; else if(B2==0&&B3==0)return 4; else if(B3==0)return 5; else if(B3==0&&B1==0)return 6; else return 0; } |
太阳雨ZW 发表于 2025-1-14 00:49 什么乱七八糟的,来搞笑的吧 |