我用的是020单片机 P1口是数据口,P2.0 P2.1 P2.2是控制口分别控制RS RW EN ,直接和单机连接。

我用的是020单片机 P1口是数据口,P2.0 P2.1 P2.2是控制口分别控制RS RW EN ,直接和单机连接。,第1张

1、建议i不要做全局变量。很容易搞错哦。应当分别在函数内部声明。虽然,这个程序中i变量做延时的功能没有问题。
2、#define Dataport P10 -------->#define Dataport P1
3、建议RW恢复为1,虽然没有问题。属冗余设计。
4、建议增加busy判读。虽然没有问题。属冗余设计。
5、硬件上检查对比度调节脚,暂时接地调试。
6、仿真器设断点能否到达,Write_data(0x42);的下一句,看外部晶体是否起振(且外接晶体>67MHz)

51单片机p0p1p2p3口,都可以当准IO口使用,也就是既可以作输出口,也可以作输入口。
需要说明的是,P1口、P2口只是普通IO口,无特殊功能。P0口作输出口用时,需加上拉电阻;P0口有复用功能,当对外部存储器进行读写 *** 作时,P0口先是提供外部存储器的低8位地址,供外部存储器地址锁存器锁存,然后充当数据线,用于写出或读入数据。P3口是特殊功能口,所有管脚都有特殊功能,分别是:
P30----RXD,串行通信输入口,不使用串行通信功能时,可做普通IO口使用
P31----TXD,串行通信输出口,不使用串行通信功能时,可做普通IO口使用
P32----INT0,外部中断0输入口,不使用外部中断0功能时,可做普通IO口使用
P33----INT1,外部中断1输入口,不使用外部中断1功能时,可做普通IO口使用
P34----T0,定时器0外部计数输入口,不使用定时器0外部计数功能时,可做普通IO口使用
P35----T1,定时器1外部计数输入口,不使用定时器1外部计数功能时,可做普通IO口使用
P36----WR,外部存储器写信号,不使用外部存储器写功能时,可做普通IO口使用
P37----RD,外部存储器读信号,不使用外部存储器读功能时,可做普通IO口使用

首先,51单片机p0p1p2p3口,都可以当准IO口使用,也就是既可以作输出口,也可以作输入口。区别在于:
1、P0口作输出口用时,需加上拉电阻。
2、P0口有复用功能。当对外部存储器进行读写 *** 作时,P0口先是提供外部存储器的低8位地址,供外部存储器地址锁存器锁存,然后充当数据线,用于写出或读入数据。
3、P1口、P2口只是普通IO口。
4、P3口所有管脚运有特殊功能:
P30----RXD,串行通信输入口,不使用串行通信功能时,可做普通IO口使用
P31----TXD,串行通信输出口,不使用串行通信功能时,可做普通IO口使用
P32----INT0,外部中断0输入口,不使用外部中断0功能时,可做普通IO口使用
P33----INT1,外部中断1输入口,不使用外部中断1功能时,可做普通IO口使用
P34----T0,定时器0外部计数输入口,不使用定时器0外部计数功能时,可做普通IO口使用
P35----T1,定时器1外部计数输入口,不使用定时器1外部计数功能时,可做普通IO口使用
P36----WR,外部存储器写信号,不使用外部存储器写功能时,可做普通IO口使用
P37----RD,外部存储器读信号,不使用外部存储器读功能时,可做普通IO口使用

p0口作为数据总线:就是给外部存储器写数据时要用。
p2口和p0口组合成地址总线,p0口负责低8位地址,p2口负责高八位地址。
p3口的第二功能re
wr
作为外部存储器的读
,写使能。

P口有32根口线,用来驱动如发光二极管等小部件,大部件需要外加驱动电路,P口可以进行“双向”输入输出,输出电流进行驱动,输入电压值进行逻辑判断以进行程序分支 *** 作。P口还可以进行扩展,在P口不够用的情况下,可以考虑使用74LS164(好像是,记不太清了)移位寄存器芯片进行扩展。P0口为真正意思上的双向IO口,不过内部无上拉电阻,P1、P2、P3均为“准双向”IO口,内部含上拉电阻。P0和P2分为16地址线的低8位和高8位,P3口有中断和定时器等其他特殊功能,只有当你真正使用了单片机就会自然一清二楚了~


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13242600.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-25
下一篇 2023-06-25

发表评论

登录后才能评论

评论列表(0条)

保存