51单片机p0口为什么需要上拉电阻(51单片机p0口有多少个引脚)

51单片机p0口为什么需要上拉电阻?

早期51单片机的p0口是高阻输入或开漏输出结构,不接上拉电阻会导致无法输入/输出正确的电平。

现在生产的51单片机对此做了一些改动,P0口内部增加了弱上拉电路,可以通过寄存器配置是否启用弱上拉,如果启用,端口外面就可以不加上拉电阻了。

由于这个结构的上拉电流是微安级的,所以还是建议在P0口外面接上拉电阻,以保证逻辑稳定。

51单片机p0口用作输出时应外接什么?

因为P0口没有内部上拉电阻,所以要接上拉电阻,其他P口就不需要了

1、P0的8位皆为漏极开路输出(Open Drain,OD),千万不要误解为图腾式输出,每个引脚可驱动8个LS型TTL负载;

2、P0内部无上拉电阻,执行输出功能时,外部必须接上拉电阻(10kΩ即可);

3、若有执行输入功能,必须先输出高电平(1)才能读取该口所连接的外部数据;

4、若连接外部存储器,则P0可作为地址总线(A0~A7)及数据总线(D0~D7)的复用引脚,此时内部具有上拉电阻,不用外接。

对于现在的51单片机来说,这个P0口还要不要做数据与地址口?P2还要不要做地址口?

  • 据说现在的51单片机功能很强大了,资源也丰富了,那么P0口就广泛用来做IO口了吧?
  • 有像lcd1602的器件的话还是p0接数据口的

为什么说51单片机的P0口的驱动能力比P2口驱动能力要强?

  • 有人甚至说这个P0的驱动能力比P2口要强两倍?
  • 因为p0口,没有上拉电阻。

51单片机的P0口为什么只有开漏输出

  • 我看P0口的内部电路,即可以做成推挽输出,也可以做成开漏输出,为什么却只有开漏输出呢
  • 那不是更灵活嘛,上位你想加多大,是你的自由 ……

怎么知道modbus RTU数据给51单片机哪个端口,是P0还是P1还是P2还是P3

  • 现在我正使用51单片机通过MODBUS RTU与威纶通信,例子是威纶公司提供的,现在没触摸屏,酣订丰寡莶干奉吮斧经我用MODBUS 模拟串口写入数据,现在我要LED0灯亮(即P1^0=0),怎么写进去?还有就是:怎么知道modbus RTU数据给51单片机哪个端口,是P0还是P1还是P2还是P3
  • 要建立硬件条件,就是你的单片机要设计232或485通讯口,一般232就可以了,如果需要远距离传输就要485口。当然酣订丰寡莶干奉吮斧经如果水平高可以走dp,can总线。 就是通讯协议,wincc软件有modbus RTU驱动,单片机程序写个标准modbus协议就可以通讯。假如数据量不大可以简单的发你需要的报文,单片机回你定义的报文格式,然后软件解析,就可以得到你要的数据了

你好,我想问一下。如何在51单片机的P0口接24L01?

  • 我用的是AT89C51由于接了ADC0808做模数转换所以只剩P0口了。
  • 24L01是个无线发射器吧,SPI口的,模拟一下就可以了

C51单片机P0口怎么用啊

  • 你P0上灯的接法是外部上拉电阻高电平触发。P2是内部弱上拉,不接通悬空的时候是上拉高电平,因为你语句是P0=P2,这时P尝禒佰溉脂防拌狮饱饯0也是高电平,所以灯不亮。P2按键接通是低电平,因为P0=P2,这时P0也就成了低电平,所以灯不亮。

会用c8051f060单片机的朋友帮忙看一下这个程序(P0^1输出端无法置为高阻状态)

  • 先给出程序:include c8051f060.hinclude stdio.hinclude INTRINS.Htypedef unsigned int u16;数据类型u16定义sbit LEDPIN=P3^6; LED对应单片机引脚sbit KEY_INT = P0^0;外部中断输入KEY_INT管脚定义sbit KEY_H3 = P0^1;KEY_H3管脚定义,经下拉电阻接到致地端void Init_Device(void);单片机初始化void Delay(u16 i);void Delay(u16 i) while (i&8211;) _nop_();_nop_();_nop_(); void Init_Device(void)SFRPAGE = CONFIG_PAGE;WDTCN = 0xDE; 关看门狗 WDTCN = 0xAD; 关看门狗OSCICN = 0x83; 选择内部24.5m振荡器P3MDOUT = 0x7F;P0MDOUT = 0X02; XBR1 = 0x04; XBR2 = 0x40;KEY_INT=1; KEY_INT置为高电平KEY_H3 =1;LEDPIN=0; 点亮LED灯IT0=1; 选择边沿触发方式 EX0=1; 开放外部1中断 EA =1; 开放总中断void main(void)主程序 Init_Device();while(1);void Int1int (void) interrupt 0 Delay(200);P0MDOUT = 0x00;设置p0^1口为漏极开路方式KEY_H3=1;将p0^1口置1变高阻状态,下拉置低电平LEDPIN=~LEDPIN;LED状态反转IE0=0;说明:LEDIN是为了监控外部中断状态而设的LED发光二极管,接在P3^6端口,P0^0为触发外部中断0的端口,p0^1初始状态设为推挽方式,输出高电平,当P0^0被触发进入中断后LEDIN状态反转,p0^1设为漏极开路方式,设1置为高阻状态。 现在我的问题是:程序可以进入中断,可以观察到LEDIN状态有反转,可是我用万用表测量p0^1(经下拉电阻接地端)电平为高电平,并没有测量到低电平,是不是就是说进入中断程序后p0^1并没有被设为漏极开路方式,设1置为高阻状态?而理论上这时候p0^1引脚应该为低电平的啊!到低是为什么呢?谁能给我解释一下,本人非常感谢!
  • 你只把端口置1了,并没有改变端口模式。再加一句吧。

51单片机串行口接CD4014扩展8位并行输入口,输入一组开关状态并在P0口显示。

  • 程序如图,为什么将RI=0那一句放到P0=i的后面仿真的时候是乱的?二者的区别是什么 ? 在这种情况下,在P1_0=1后面多添加几个_nop_()又能正常运行,为什么
  • RI是什麼参数,电路图上,没看到P1的端口电路
版权声明