低成本多路数字量按键采集系统分析与实现
引言
本文引用地址://www.cghlg.com/article/142529.htm本系统针对对一个课堂的所有学生做选择题来采集数据,每个学生有4个按键,分别是A、B、C、D四个选项,选择模式为单选,多选会被判断为无效。本文还介绍了如何在本系统上进行扩展,能够让按键的数量翻倍的增长。本系统采用Atmel公司的AT89S52单片机实现。
多路按键采集系统例子分析
本系统设计要求是:课堂上有50位学生,每位学生手里有4个按键。AT89S52单片机一共32个I/O口,是远远不够的。笔者采用了74HC165这样一个并口转串口的芯片,以实现系统设计。
如图1所示,一片74HC165需要使用单片机的3个I/O口,而同时能够有8路I/O口可供使用。这样单片机的32个I/O口线,去除2个口线用作串口通信用,其余30算下来可以扩展80个I/O口。
这样也只能达到20个同学可以做选择题,离设计要去相去甚远。实际情况中笔者用到了74HC165的级联的功能,所谓级联就是把两片或者两片以上的74HC165通过串行的连接方式,能够组成两片或两片以上功能的组合体。
笔者使用了4片74HC165来级联完成的,同时只占用单片机的24个I/O口,剩余I/O口中的两个作为串口通信,其余留作以后扩展用。这里算下来总共扩展I/O口256个,可供64位同学同时做选择题。这样不仅满足了设计要求,而且同时说明了怎么样成倍地增长按键的个数。这样伴随着芯片的成倍增长,会带来按键个数的成倍增长,然而这个芯片在市面上是非常廉价的。其中值得关注的是,单片机静态内存大小,及其运行的速度,因为庞大的数据是十分消耗内存的;以及当芯片成倍增长的时候,速度也将会按一定斜率的曲线降低。
当按键扫描的功能完成以后,还有一点就是串口同步发送数据的处理,由于计算机运行速度极为快,而扫描数据得到的按键数据远慢于CPU的运行速度,这样会导致单片机不停地向计算机发送数据,导致计算机长时间占用串口,对电脑运行十分不利。所以,应该给予一个延时,比如延时200ms发送一次,这样减轻了计算机的处理负担。
评论