找回密码
 立即注册
查看: 735|回复: 3

学习

[复制链接]

3

主题

16

回帖

77

积分

注册会员

积分
77
发表于 2023-9-25 20:45:45 | 显示全部楼层 |阅读模式
大家好,我在工作中看到一个按键接法,不知如何识别其按下,请冲老师给与指导




回复

使用道具 举报 送花

1

主题

1

回帖

29

积分

新手上路

积分
29
发表于 2023-9-28 21:14:27 | 显示全部楼层
感觉是P0口在驱动D1和D4的区间,将P0设置为输入模式并扫描P0状态,哪个端口为高则代表对应的按键被按下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:495
  • 最近打卡:2025-05-03 07:45:19

30

主题

347

回帖

3484

积分

荣誉版主

积分
3484
发表于 2023-10-21 20:52:42 | 显示全部楼层

根据楼主给出的部分电路图看, 估计是在剖析一个成品电路板, 测绘电路时重新绘制电原理图.可能存在一点遗漏(错误)使人误解(看不懂)了.

我的判断是从数码管开始推测...
首先是二组共阳极的三位数码管模块,组成6位数码管显示. 6个9012三级管(PNP),分别控制对每位数码管阳极供电.
这6个三级管的集电极是连在一起的, 估计是测绘时漏掉了, 应该是还要接VCC电源正极的.

现以第一位数码管Q11和第一个发光二极管D1为例来分析...
当P1.0为高电平时Q11三极管导通,可给第一位数码管供电,(如果此时P1.6为低电平,那么D1发光管也可点亮的)
如果此时P0口数据数据输出8个bit中有0电平的话,那么第一个数码管就有笔划(段)显示点亮了...
其它三级管和发光管依次类推, 道理是一样的...

如果P1.0到P1.6的输出都是低电平0, 那么6个三级管都是不导通的, 由此可控制数码管和发光管都不会亮.
由于CPU与数码管之间没有其它电路芯片存在,那么可以确定,这6位数码管的显示只能是动态扫描显示方式了.

再看7个键输入是如何形成的... 很显然,CPU是读引脚P1.7电平来判断键输入的. 无论哪个键按下, 都是从读这个脚的电平来判断. 可能是开关量,也可能是模拟量...
当没有键按下时, 由于R28电阻上拉, 读回高电平1. 这是无疑的.当P0口轮流给各位(bit)输出0电平,(一次输出只能有1个位输出是0,其余都必须是1)
此时从P1.7读回是低电平的话,就可判断是对应是哪个键被按下了...

这里要插叙一下P1.7端口的电压问题了. 这是要看P0口输出电阻和R28上拉电阻(图中没标出阻值),以及二极管D7等等是如何配置了.
大致算算,如果R28上拉电阻是10K以上,P0口每路输出接200Ω,D7等若是普通二极管,当有按键按下时,二极管导通后存在压降0.7V,
从P1.7读入电压在1V以下是有可能的.
(如果电压较高难以判断高低电平的话,那就用ADC的方法用模拟电压来判断,因为按键与不按键,返回电压是不同的)



综上所述, 这个电路, 仅用两个8位的IO口, 实现6位数码管显示、6颗发光二极管亮灭、7个按键输入的功能, 确实是有创意、有一定巧妙之处的.


(关于如何判别键值的思路, 见另外帖子有回答)

回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:494
  • 最近打卡:2025-05-02 00:23:56

1

主题

114

回帖

1699

积分

金牌会员

积分
1699
发表于 2023-11-10 13:02:13 | 显示全部楼层
看懵了,学习了
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 22:09 , Processed in 0.147385 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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