在单片机应用系统中,有时需要采集大量的开关信号,由于信号多且接入方式不同,使得电路较复杂,占用了单片机大量资源,数据采集软件的开发量也较大。笔者用纯数字电路设计了一个特别适合于远程大数据量采集的电路(最大可采集1024个开关量,附图所示电路可采集192个开关量)。
电路由双二进制加法计数器CD4520、译码器74LS138、缓冲驱动器74LS244等组成。NE555产生的脉冲加到计数器D1的CP1端,由于D1的Q4同时也接D1的EN2,所以D1的双计数器构成级联计数电路,其输出Q2~Q7作为开关输入量的地址送D5的输入端。Q1作为片选信号接D5,Q5~Q7接D2输入端,为D3、D4等译码器提供片选信号,而Q2~Q4接D3、D4等译码器的输入端,译码器的输出作为D7、D8等的片选信号。D7、D8等的输入接采样的开关信号(图中开关接通表示输入为低位),其输出接D6输入端。当D6片选有效时(Q1为低电位),输出的数据地址线上为开关量信号。当D5片选有效时(Q1为高电位)输出的数据地址线上为开关量信号的地址。8条数据地址线可直接接单片机P1口或通过74LS245接单片机总线,1条数据地址选择线也可直接接单片机P2或P3口。
电路工作原理 由于D1计数器清零端(cr1、cr2)在通电的瞬间为高电位,计数器被清零,其输出Q7~Q1为0000000,使D2(Y0为高位)选中D3,D3(Y0为高位)选中D7,同时使数据地址选择线为高电位而选中D6。这样第1组8路开关量信号通过D7、D6加到数据地址线上。当第一个脉冲加到计数器D1时,其输出Q7~Q1为0000001,D2、D3、D7状态不变,而由于Q1为高位使数据地址选择线为低位,同时Q1为高位选中D5,Q7~Q2使D5的A1~A6为000000,而D5由于其A7、A8接地,此时数据地址线上为第1组8路开关量输入信号的地址00000000。同理第二个脉冲使第2组8路开关量输入信号通过D8、D6加到数据地址线上。第三个脉冲使数据地址线上的信号变为第2组8路开关量输入信号的地址00000001。当Q7~Q1为0110000时,D2使D1清零,又从头开始循环采样。因此单片机的采集程序较简单,判断数据地址选择线为高时,读入的为开关状态,数据地址选择线为低时,读入的为对应开关的地址(编号)。
图中还有1片138译码器和22片244缓冲驱动器没有画出,如果要进行远程数据传输还需在数据地址线上加驱动。该电路也可作为可编程序控制器或工控计算机的开关数据采集电路用。