模/数转换器的第4脚(CLK-IN)需要一个时钟信号。其频率范围为lOOkHz—800kHz。用户可以有两种选择:可以在CLK-IN脚上接入一个外部时钟;也可以通过在(19)脚和④脚上外接电阻和电容来使用片内时钟。这里我们使用第2种方法向ADC提供时钟,时钟频率按下式计算。
f=l/l.1RC(Hz)ADC0801的3个信号(CS,WR和RD)用于控制与微控制器接口。当片选信号CS变低电平时,芯片有效。当写信号线WR变低时,内部逐次逼近型电阻复位,同时输出线变为高阻状态。当WR的电平由低变高时,A/D转换开始。转换完成后,中断请求线INTR保持为低电平,并且数据被放到输出线上。INTR信号用于表示A/D转换已经完成。在将读出线RD变低而读出数据之后,INTR线复位。
vCC为5V时,ADC的输入电压可以在0~5V范围内,对应的数字输出值为OOH~FFH之间。但是,通过使用Vref/2脚,可以将满量程时的输出限制于较低的范围内。Vref/2上的电平决定了转换步长的大小。例如,一种可选的步长是25mV(6.4/256),就是说:Vin(+)上的6.4V模拟电压可以转换为输出端数据FFH(11111111b)。
ADC的时钟频率约为600kHz.从而得到约100ms的转换周期。
ADC可以连续地将模拟输入转换为数字输出。这减少了当两个或更多的呼叫开关同时按下时出现错误的可能性。
下表给出了不同呼叫点产生的模拟电压Vo和转换后得到的数字值。
当没有呼叫时,对应的数据值从10D~200D(参考下表)。转换后的数据需经微控制器的进一步的识别和处理,产生呼叫信号。
锁存和显示部分:显示设备是用户和呼叫指示器之间的接口。呼叫点的位置以号码形式显示在以时分扫描技术驱动的3个7段码显示器(DIS1~DIS3)上。DIS1显示楼层号,同时DIS2和DIS3显示呼叫点号。所有7段码显示器共享一组公共的输入线,当第1组要显示的数字输入时,仅有第1个7段码显示器使能(工作),在几个毫秒之后,当第一组数据被后面的数字数据替代时,恰好第2个7段码显示器使能。所有数字都以这种方式显示出来后,继续这一循环。由于这一过程每秒重复100次,产生的效果是:所有的数字显示都一直在亮着。74LS47(lC7)是BCD-7段码的译码/驱动器;晶体管2N2907(T1~T3)用于共阳极7段码显示器的驱动。
微控制器(ICl)的端口A用于读取ADC的输出,即要显示的数据。8位锁存器74LS373(lC3)用于避免总线的竞争和冲突。在显示器刷新时锁存器变为可以穿透,数据按显示要求由微控制器提供,通过IC3送到显示器。在此期间,ADC0801的数据线由于RD和WR电平为高而处于高阻态。一旦全部数字刷新完毕,微控制器从ADC读取数据时,锁存器变为不可穿透,这样即使数据线上有某些变化,也不会影响到显示的数据。
假定要显示的数据是BCD码‘126’。首先,‘1’的BCD码(0001)被放在74LS47(lC7)的输入端,IC7的输出端产生相应的7段码,经晶体管T1的选择,数字‘1’显示在显示器DIS1上,间隔大约2ms。以类似的方式,数字‘2’和‘6’,借助晶体管T2、T3的控制,分别显示在DIS2和DIS3上,所有数字每10ms刷新一次,定时器每lOms产生一次中断,显示器的刷新由定时中断服务程序来完成。
微控制器部分:MOTOROLA公司的MC68HCJIC微控制器(ICl)编程为实现下述功能:
●扫描各呼叫点是否有按键按下。
●从ADC0801读取数据。
●识别按下的键所在位置。
●显示呼叫点的号码并且自动给出指示。
●检查应答键是否按下,如按下,终止蜂鸣音。
下图显示了如何将各个部件连接到微控制器上。端口A用于读出来自ADC的数据,经识别后送出去显示。当控制器读ADC时,端口为输入模式,而在数据显示期间,同一端口被定义为输出模式。端口B则用于控制ADC和锁存器的操作功能。