- 打卡等级:以坛为家II
- 打卡总天数:495
- 最近打卡:2025-05-03 07:45:19
荣誉版主
- 积分
- 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个按键输入的功能, 确实是有创意、有一定巧妙之处的.
(关于如何判别键值的思路, 见另外帖子有回答)
|
|