07/12/2005
Posted by s
PICmicro微控制器的硬件技术
作者:Joseph Julicher Microchip科技有限公司 简介 工程师有责任让所有可用资源发挥出其最优异的性能,在这本说明手册中,我们介绍了一些有助于减少先前设计的尺寸与花费的方法。 本说明手册将着眼于以下几个方面: 储存输入引脚 驱动多发光二极管 储存输出引脚 最大化引脚用法 能量储存技巧 储存输入引脚 单输入口上的多路开关 有些设计将开关连接在单个输入口上而其它则用键区方式多路传输以使在少的输入口接入多路开关。然而,有些设计可以使一个输入口上接上多个开关。这项技术需要你改变数码转换的开关问题。一旦改变,我们便可以通过数字微控制器度量模拟信号。 模数转换器(ADC) 如果您的微控制器有额外的可用ADC输入脚,ADC便可通过使用一些小的电阻来检测一个或多个开关。如图1。 通过使用一个switched电阻网络,便可改变分压器的值。接下来ADC便可量得电压。使用简单代码时,开头值是既定的。这项设计的一个不利方面便是检测开关的联合。为检测联合,电阻必须被选定这样由开关联合得出的电压才唯一。 图1(略) 比较器与定时 比较器可被用于检测一条单线上的多路开关。如果选定了合适的电阻值那么内部电压参考可被调整以找出按下的开关。对电路做一点小改动,两种额外方法便可行了。我们可以加上足够的电路以将ADC当作比较器使用,然后再用如前提及的方法,或者我们可以稍微的修改一下电路并使电容充上电。如图2。 如图2所示,R4以被电容C1替代。我们无需再测量电压,而是测量电容器充电的时间即可。再次强调,必须注意确保电容器的充电时间为合理的。如果计时过快,微控制器便会错过计时。如果过慢,将花相当多的时间用于处理开关输入引脚。电阻值应被选中以提供足够的充电时间间隔这样每个开关或开关联合便唯一。如果设计不允许开关被同时按下,那么电阻的选择便被大大的简化了。 使用单个比较器输入脚以检测开关是否按下需要使输入引脚转换为一个输出引脚。这便允许电容可被拉到地。接下来,引脚变回单一的比较器引脚以使电容充电。当电容电压达到比较器阈值电压时,比较器的状态将改变。软件会测量电容从引脚方向改变到充电至阈值时的时间。 数字阈值与计时 数字方法与比较器方法相类似。事实上,电路是一样的。不再通过比较器阈值来检测电容器的电荷,而是使用VIH阈值。由于施密特触发器的输入引脚的VIH阈值高于TTL输入引脚,提供了更大的输入引脚检测范围。因此,最好使用施密特触发器输入引脚以检测电容器电荷。使用数字输入引脚的不利之处便是电流消耗增加。增加的电流消耗是由于CMOS门上赋予中间级模拟电压上引起的。VIH充电可能需校准。 单输入引脚键区 键区一般用于输入数字数据于许多应用程序中。因此,PICmicro微控制器上的PORTB包含特殊功能以简化键区的读取。当键区有益时,它们需要许多引脚以使其实现功能。一个典型的4×4键区需要8个I/O引脚。图3为一个电阻网络,它将4×4的键区转化为一个可转接的电阻矩阵。由此得出的电阻由ADC或电容充电计时器读出,这便决定了被按下的键。这在同时仅一个按键按下的情况下有效。 图3:4×4键区电阻网络表 驱动多发光二极管 发光二极管是接在PICmicro微控制器输出引脚上的普遍设备之一。PICmicro微控制器为LED的理想驱动器因为输出引脚提供了足够的电流使其点亮。然而,可用输出引脚的数量由于成本约束而被限制。为解决该问题,我们提出一些建议。请参考《LED驱动技术简要补充》(TB029)以得到更多信息。 单个I/O引脚上的2个LED 3个I/O引脚上的6个LED 4个I/O引脚上的12个LED LED是可使电流流向一个方向的二极管,这便是与灯管的区别。记住这些,图4示出如何驱动I/O引脚上的2只LED。 驱动一个引脚上的两只灯泡很简单。再复杂一些,驱动3只I/O引脚上的6只灯泡如图5所示。 如果该概念被拓展的更远一些,四只I/O引脚可被用于驱动12只LED如图6所示。 虽然这是一个非常有趣的概念,该方法有些潜在的问题。需要额外的软件来驱动显示器。如果显示器一次比一个LED照明更亮,那么软件的有效量可被用于使LED倍增使其好象同时点亮。如果应用程序驱动一个点矩阵图形显示,每个LED便是一个象素,显示器会随着LED的数量增加而模糊。这是由于时间消耗量同时仅可点亮一盏LED。占空比与亮度都减小。然而,如果应用程序的目的在于每次点亮一盏灯,便不会有亮度的减少,这种观念便可良好运行下去。 如之前所述,驱动显示器需要些工作。每个LED需要两个输出引脚以使其点亮,一高一低。剩余的引脚为输入引脚这样便没有电流流过它们。为同时点亮多于一盏灯,输入输出引脚必须经常被重设定以使其看起来像是两盏LED同时点亮。最好保持每盏LED点亮相同的时间并在多路未亮的LED中储备时间空档。如果多路传输活跃LED间仅仅一个周期而忽略非活跃LED,光亮度将随便其余LED亮起而减少。 用8个I/O引脚驱动多路七段显示器 七段显示器为最经常使用的数字(有时为文字数字)显示器。与键区类似,七段显示器需要许多输出引脚。每段都需要输出引脚并有可能需要输出引脚控制每位数的共阴极(阳极)。在单数位显示的情况下,引脚仅在共阴极(阳极)接地(接电源)时需要段。回避问题的实质,何以用屈指可数的引脚驱动多路数位。 如果您只需要驱动2位数位,那么可能用8位引脚使用共阴极与共阳极混合方式显示。参见图7。 一种驱动两个显示器的方法是使用七段显示器驱动芯片。这些芯片将四位数据转换为正确的段图。当然,如果您需要多于位位,那么您半需要额外的帮助。 另外一项技术便是使用8位锁存为数位选择,如74F573。参见图8。 为使用图8所示的8位锁存,锁存器必须运载正确数位。程序如下: 略…………………………………………………… 储存输出引脚 使用光隔离器为输出扩展 之前已叙述过使用一些I/O引脚驱动许多LED的方法。同样的技术可以被用于光隔离器以使用少量的I/O引脚驱动大量的输出。 当D1被激活时,Q1允许电流流过。这将减少C1上的电压并激活负载。当D1不活动时,Q1释放C1,C1的电压开始增长。C1将增长直至M1点亮同时负载退出工作。R1与R2减慢M1的接通并提供RC时间常数的有功部分。灯灭时刻取决于M1门限与RC时间常数(R1+R2)×C。R2应被选以限制M1的接通率。需要R1以限制关闭率并减少变更,这是由于不同的门电容。比如: R1=R2=1K C1=1uF Vsupply=12V Vgth=-5V 当M1点亮时,Vgate为6V。 Vc1=0V 为关闭M1,Vgate必须达到5V所以: Vc1>=2V [...]
