2)因为工艺原因,I/O焊点会引起0.75V的电压误差
3)你要抛开这些误差.在噪声允许一情况下,你给ADC的最大值不能超过这个值:
即: Vcc- 0.75V
抛开这个误差后,你得到的编码空间是:0~255* ( Vcc - 0.75V )/Vcc
在区域上,你所拥有的区域(area) 是: 0~ ( Vcc - 0.75V )/Vcc
4)现将这个区域分成n份.考虑误差原因, 选择每个区域的中间
第一份, 在0那个位置,因为没有负值,所以,占半份, 这是你看到的在S0下半是空白
第n份,多留半份,这是在s6上方有一个红色的1/2块
所以,加起来是n块.
每份是是面积百分数: A = ( Vcc - 0.75V )/Vcc/n
每块的分压为: ( Vcc - 0.75V )/n
电压( Vcc - 0.75V )/n在ADC的输出为:D=255*( Vcc - 0.75V )/n/Vcc
每块范围是:
BLOCK RANGE ADC读数
0 0~A/2 0~D/2
1 A/2~3A/2 D/2~3D/2
...
每块的中间是:
BLOCK MIDDLE ADC读数
0 0 0
1 A D
2 2A 2D
...
4) 验算:
n=7,VCC=3.3得D=27,A=10.6%
ADC的读数应该是:
key0: 0~13 0~D/2
key1: 14~27 2/D~3D/2
....
以下是引用blueled在2004-3-20 12:02:37的发言: philps 的说明很详细philps 的说明很详细,好好看看. 1. 存在0.75V的死区, 最大分压比 1-0.2525=0.7475 2. 六个键 六等分 0.7475/6 见右下表蓝字栏, 可得分压电阻 3.实际分压电阻有偏差, 实际分压比见红字栏, centen 是分压比,Hi-limit是临界比, 所以S0 :0-E S1:F-29; S2:2A-44 ,键值在CENTEN附近,最大不超过HI-LIMIT!!!! |
我帖了好多遍.原来是一个旧帖.....
0x4FF --> 0x3.3V
0x260 --> 0x1.96V --> key6
0x1B7 --> 0x1.59V --> key5
0x18A --> 0x1.27V --> key4
0x127 --> 0x0.95V --> key3
0x0C4 --> 0x0.63V --> key2
0x064 --> 0x0.32V --> key1
0x000 --> 0x0.00V --> key0
设定的电压除参考电压乘精度值(1024)就是输出的ADC转换后的值(为16进制),