单片机/MCUwilliam hill官网
直播中

h1654155133.8321

11年用户 11经验值
擅长:控制/MCU RF/无线
私信 关注
[问答]

关于51单片机的输入输出,高、低电平的问题【问题补充】

` 本帖最后由 水雷 于 2013-6-14 17:50 编辑

【最新补充】需要用51单片机的端口实现这样一个功能:
67-1.jpg
1.先将P1.0、P1.1、P1.2都设为低电平输出,使C1放电至放完。
2.将P1.1、P1.2设置为输入状态,P1.0设为高电平输出,通过RK电阻对C1充电,单片机内部计时器清零并开始计时,检测P1.2口状态,当P1.2口检测为高电平时,即C1上的电压达到单片机高电平输入的门嵌电压时,单片机计时器记录下从开始充电到P1.2口转变为高电平的时间T1。
3.将P1.0、P1.1、P1.2都设为低电平输出,使C1放电至放完。
4.再将P1.0、P1.2设置为输入状态,P1.1设为高电平输出,通过RT电阻对C1充电,单片机内部计时器清零并开始计时,检测P1.2口状态,当P1.2口检测为高电平时,单片机计时器记录下从开始充电到P1.2口转变为高电平的时间T2。。


赋值的话
理论上作为输出的时候只要将对应的管脚写1或者是写0,对应着51输出高电平或者是低电平;

而作为输入的时候,要先将对应的管脚写1,然后接收输入的的信号!
那么如何实现”检测P1.2为高电平”呢?之前想要让他做输入状态的话就已经要赋予1值了!(之前很多资料都是先拉高然后检测是否变低,这个好理解)

而且,还有一个问题就是,一旦 ”把某脚设置为输入状态“,以及”另某脚高电平输出“ 这两个都需要赋1值的话,第二步和第四步就突然变成一样的程序了=-=太囧了=-=

小弟初学,觉得这个程序应该挺好做的,但是一开始就晕了,求指教啊!!!谢谢!!!



`

回帖(20)

毛坦

2013-6-5 20:44:44
作为输入是  先拉高  然后检测那一脚是低电平,  就输入了    你是检测出的  
  你可以参考矩阵键盘的程序设计中 检测是否有按键按下那部分代码  
举报

29495230216191

2013-6-5 22:21:07
没什么区别,只是作输入时是以检测低电平为有效输入信号,当管脚没接负载而直接接到地0V或者低电平的时候就会将管脚的高电平拉低,不管你是作输入还是输出。
举报

dongyumin

2013-6-6 18:40:49
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报
  • QQ图片20130606183815.jpg

张文攀

2013-6-7 09:11:08
板凳说的比较清楚,学习了。。
举报

赵楠楠

2013-6-7 11:59:21
一楼说的很清楚,补充一点,为什么我们在键盘检测中不写1,是因为复位上电后,P0-P3寄存器默认为0xff,所以可以直接作为输入口使用
举报

jstzhxyy

2013-6-10 00:36:16
51单片机没有输入输出方向控制的,不像PIC单片机要设置TRIS
举报

胡鹏

2013-6-10 09:37:02
对于开漏结构的IO口,
1=高阻态
0=对地
赋值为1 是为了保证此时的IO口是高阻态。
这么假设一下:如果你给端口写了0后,再读端口值,那么不管外部电平理论上是什么电平,最后都是接地为0了,此时读端口就一直是0.
所以要正确读端口数据就必须先端口置1,保证是端口是高阻态能正确读取数据。
举报

905377346

2013-6-11 10:49:47
51单片机是双向的,没有必要设置输入输出状态。如果是在msp430或者PIC里面的话,要设置输入输出寄存器的状态。比如在msp430里面,输入的话设置PXDIR=0XFF;就是输入状态。
在51里面  比如  ***it  p3_0=P3^0; p3_0=0;你现在就让p3_0输出低电平了。记住,51是双向的!
举报

h1654155133.8321

2013-6-14 17:51:17
又新补充了一个问题,求解答==谢谢
举报

朱奥林

2013-6-15 20:11:07
51单片机 貌似复位之后都是输入状态  不用设置的吧  我好像从哪看过  没你说的那么复杂  复制就能正常使用了
举报

288081

2013-6-15 20:25:58
举报

爱转角

2013-6-15 21:47:03
充电                                                
举报

彬彬

2013-6-15 23:32:52
版主回答很专业,学习了
举报

皓立糊涂

2013-6-16 21:40:47
学习了
举报

杨鸿斌

2013-6-17 04:59:32
很好的帖子 领教了!!!!!!!!!!!!!!!
举报

h1654155133.8321

2013-6-17 09:26:55
引用: 三毛流浪记 发表于 2013-6-15 20:11
51单片机 貌似复位之后都是输入状态  不用设置的吧  我好像从哪看过  没你说的那么复杂  复制就能正常使用 ...

是吗?
我记得是要用于检测外部电平的话就必须要先拉高?(楼上几位也是这样说的==)

所以51单片机真的不能检测高电平么?
举报

h1654155133.8321

2013-6-17 09:35:27
还是不懂啊=-=希望各位能帮忙解答=-=
举报

302352381

2013-6-17 10:18:58
举报

王飞

2013-7-6 13:28:53
不错的帖子,学习了!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分