51单片机输入输出共用一个端口怎么实现?希望得到帮助

因为考虑到51单片机端口不够用,我想把P2口作为ADC0809的输入和1602液晶的输出的复用口。也就是将ADC0809转换过来的数通过P2口读入MCU,再通过P2口在液晶上显示(将P2口作为液晶的数据口)。但在实际测试时发现单片机读不了ADC输出的数,似乎是受了液晶的干扰。请问怎样解决这种问题?怎么屏蔽液晶口的干扰?
后来我用显示设备测试了P2端口在可能情况下的值。发现不是液晶和ADC对端口造成干扰。是单片机本身端口复用的问题。比如说,我给P2.1赋值‘1’之后,就不能通过P2.1来检测外设的状态了(P2.1的值一直是‘1’)!有没有一种或程序可以在给MCU的端口赋值后,还能检测挂在端口上的外设的状态呢???

液晶 和 adc 都有使能端 暂时不用adc 就把使能关了 反之亦然追问

我用显示设备测试了P2端口在可能情况下的值。发现不是液晶和ADC对端口造成干扰。是单片机本身端口的问题。比如说,我给P2.1赋值‘1’之后,就不能通过P2.1来检测外设的状态了。有没有一种或程序可以在给MCU的端口赋值后,还能检测挂在端口上的外设的状态呢???

追答

你输出高电平 外部也可以拉低啊

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-28
加数据锁存器,像加8255用单片机读写脚控制8255方向,
第2个回答  2011-08-28
对一个操作另外一个肯定需要关闭的,否则肯定有干扰的,首先你硬件设计就没有考虑全面
第3个回答  2011-08-28
输出用573,输出用245追问

可不可以不用芯片,用程序来实现呢? 而且我用显示设备测试了P2端口在可能情况下的值。发现不是液晶和ADC对端口造成干扰。是单片机本身端口复用的问题。比如说,我给P2.1赋值‘1’之后,就不能通过P2.1来检测外设的状态了。有没有一种或程序可以在给MCU的端口赋值后,还能检测挂在端口上的外设的状态呢???

追答

换MCU就可以,AVR ,430

第4个回答  2011-08-31
复用好像是要通过使能端分频输出的 比较麻烦 若换其他型号单片机 还得从头弄起 更费劲
所以建议 研究下8255吧 那个好像还不错

关于单片机的引脚和输入输出问题
51 单片机,所有IO口都可以作为输入和输出,但不是"同时" 作为输入时,要先向其端口写1 然后再读取 如程序中设定P0=0xF0,然后在外部将P0^7接地,也就是置为零,此时读取P0的话,得到P0=0x70 即最高位确实是0 但P0口内部没有上拉电阻的, 如果IO口外部不经电阻接电源的话,虽然你置1了...

关于单片机IO口输入输出复用问题
首先电阻应该接电源正极,按键一端接地,但还不行,按键检测时 ,IO口先输出高电平,若有按键按下则检测到低电平,所以在你检测按键之前,LED已经处于亮态了,这和你检测到按键按下再亮是矛盾的 当按键不被按下时,IO口是高是低由程序决定的,复位时IO口黙认是作为输入用的,输出是高电平 但负载...

51单片机中怎么样将输入输出端口设置成输入功能
普通单片机io设置成1就是输入了 因为1能被拉成0 但是0不能被拉成1 (电流高的话也可以的,一般不会有那么高的电流)

请问各位大神,用51系列单片机怎样才能构成单稳态延时触发电路呢?
方案2,使用外部中断INT0或INT1,用片内定时\/计数器作25S延时。当有输入信号时程序中断,在外部中断函数中翻转输出,关闭外部中断(防止外部中断再次被输入信号触发),启动定时\/计数器计时,开放定时器中断,用定时器\/计数器对25S作精确延时,达到25S后输出翻转。基本思路就是这样,具体的程序要根据单片...

51单片机的P0口作输出用途之前必须
必须接上拉电阻保证高电平值。传统51单片机的P0口是双向口,做输入端口使用时,P0口处于高阻输入状态,如果所接外部器件恰好是开漏输出,那么就必须接上拉电阻保证高电平值。当她作为输出口使用时,其结构是开漏输出,此时也需要加上拉电阻才能保证能输出准确的高电平。

关于51单片机的输入输出,以及高、低电平的问题~
第二:单片机区分引脚作为什么引脚功能的话可以通过你的软件语句来判断,比如,你主动让单片机引脚输出高电平,那么对于我们操作者来说引脚为输出。当你写语句不断检测单片机引脚状态的时候,那么对于操作者来说引脚就是用其输入功能。第三:对引脚赋值的话,普通I\/o就是输出的高地电平。希望对你有帮助!

51单片机输入置1问题
1:准双向一般只能用于数字输入输出,输入时为弱上拉状态(约50K上拉),端口只有两种状态:高或低。2:双向除用于数字输入输出外还可用于模拟输入输出,模拟输入时端口通过方向控制设置成为高阻输入状态。双向端口有三种状态:高、低或高阻。3:初始状态和复位状态下准双向口为1,双向口为高阻状态.有带些...

51单片机端口冲突问题
如果一定要采用同一个端口的话可以分时来操作,比如一段时间检测红外,之后一段时间再检测超声波,之后另一段时间再开中断,如果这些每一个的时间都设置得比较短的话影响不是很大的。我认为分时控制也是单片机的精髓~不过我还是推荐分开端口使用~

使用51单片机的i\/o口时要注意哪些问题
作为输入端口时,读取前要向该IO端口写1 外电路可将高电平拉低,但不能强行将低电平拉高 IO端口高电平输出电流只有300UA左右,低电平输出电流(灌电流)可达10ma以上 现今的增强型51单片机有IO端口配置寄存器,可以配置为弱上拉 推挽 浮空 开漏四种模式,P0口也是这样 另外,单个管脚 高低电平输出能力...

51单片机 我要检查IO外接输入的电平状态,
方法:把引脚设置为输入状态,输出一个1就行。这是单片机的设计者、生产厂家所规定的。在这个前提下,外界,只有输入低电平,才会改变引脚的状态;输入高电平,是没有反应的。如果,外设一定要送来高电平,那就必须加上一个反相器,再连接到单片机的引脚即可。其中的 P0口 为总线式设计 电路形式 为 ...

相似回答