单片机I/O口

来源:百度知道 编辑:UC知道 时间:2024/06/19 14:48:39
C51同一只引脚既要做数码管位选(共阳),又要用来检测另一个脚的信号(低电平),怎么能实现啊,请大家帮助一下

完全可以,分时工作。
这种用法,早有先例。
都不用说专用的显示、键盘驱动芯片8279,和通用的8155,
就是引脚较少的AT89C2051,都有这种用法成功的案例。

这个问题应该看要实现怎么样的效果来设计,你都没有将你的具体电路摆上来,这个问题回答不了的

如果您只剩下这一个IO口了,那就比较困难了。建议重新把IO资源整体规划一下。

这样定义引脚功能是有问题的,主要原因是不论你如何处理,当用于信号检测时,很会在数码管上显示不必要的数据,例如多显示一位。最后是全部引脚重新定义,避免这种复用引脚的办法。若实在没有办法,可以采取如下措施:

一个简单的解决办法是:硬件设计指定该IO口输出高电平才能驱动数码管,这时需要外接一个NPN三极管8050 + 一个PNP三极管8550(都需要配套限流电阻)来驱动数码管的位选。这样只有当该位显示时才会为高电平。同时,该引脚通过一个低压降二极管2AP9后接到一个单稳态电路的输出(例如一个结成单稳电路的NE555或者74系列其它单稳芯片),单稳态电路的输入接你需要检测的低电平信号。单稳态电路的时间常数取你的数码管一个循环显示时间的1.5倍,若你是静态显示,则取2~4ms即可;若是4位动态显示,则需要将每位显示时间固定为4ms,4位循环时间为16ms,单稳态电路的时间常数取24ms。这样,即使元件参数有误差,至少能够保证你能够稳定地检测到输入变化同时不明显影响显示(数码管某一位少显示一次的视觉影响较小,最多表现为该位稍暗一点)。