单片机/MCU论坛
直播中

liangyuhc

13年用户 181经验值
擅长:EMC/EMI设计 处理器/DSP 控制/MCU
私信 关注
[讨论]

20个以上光电传感器需要用单片机监测传感器状态实现?

本项目采用了宏晶的STC系列单片机中的STC12C5A60S2单片机,在此项目中含有大量的监测传感器,需要大量的IO输入接口,在实际应用中发现,如果每一个传感器都用一个IO来监测相应传感器的输入状态,需要占用大量的IO口,以此造成的问题便是用于控制的IO端口不足,是否有办法可以扩展IO口?分析发现,所有用于传感器输入状态监测的IO口,实时性的要求不需要太高,如果采用分时复用技术,是否可以实现呢?顺着这个思路,设计了以下电路
传感器端口输入 传感器输入


将输入传感器分成两组,分两次分别读取传感器的值,具体实现方式是,74HC373作为三态输出锁存器,将锁存允许输入端LE直接接高电平,而将三态允许输入端OE接到IO口,当控制OE为低电平时,单片机读取输出端的的状态,读取完毕之后,置OE为高电平,此时锁存器为高阻态,使第二个OE端输入低电平,此时读取端口状态,以此往复则分别读取了不同传感器的状态,如果输入传感器增加,则增加一片74HC373,同时单片机的IO需要加限流电阻。

        是否有高手能给我看一下是否可以这样实现,或者有没有其他的实现方法,采用此方法,我还没有在硬件中调试,在软件已经仿真,可以达到我想要的效果,但是有一个问题,在刚上电时是否会有问题?

       同时在编写单片机程序的时候,我的流程一般要先思考软件运行流程图,通过流程图理清思路,理清思路之后,程序实现就是小菜一碟,通过流程图也可以很快的发现逻辑上得问题,而一开始就从程序中去查找逻辑问题,到后面会越来越糊涂,这时看流程图,通过流程图分析是否软件存在逻辑上的错误。无论程序的大小一定都的养成写流程图的习惯,使问题简单化。其次同时在真正进入程序编写的阶段,可以先写一个简单的主程序框架,采用注释的方式,写出主程序中需要包含哪些子程序模块,通过流程图也可以知道相应的模块执行流程,写入子程序中,然后在分别考虑个子程序模块的流程图,以及相应的程序实现方法。
    其它朋友还有更好的方法希望能不吝赐教,希望能集百家之所长,共同交流。共同学习,一起进步!


回帖(2)

chenwei6991627

2017-11-21 10:49:06
那就选用多的管脚的啊,或者用扩展
举报

liangyuhc

2017-11-21 14:40:02
引用: chenwei6991627 发表于 2017-11-21 10:49
那就选用多的管脚的啊,或者用扩展

我这样是否也算是扩展了,我想还可以采用行列式排布
举报

更多回帖

发帖
×
20
完善资料,
赚取积分