标题: 51单片机io口怎么检测电平变化 [打印本页]

作者: cornelio    时间: 2020-4-16 17:52
标题: 51单片机io口怎么检测电平变化
信号从一个io口(比如P0^0)输入单片机,从另一个io口输出(比如P1^0),怎么实现呢
作者: 我未曾来过    时间: 2020-4-16 23:22
首先,对于你的题目,检测电平变化可以用电表,如果时间短了可能检测不出来,但是示波器一定可以但是比较贵。其次,对于你这个问题,你需要输入的是什么信号?数电还是模电?那是不一样的。输出很简单的。但是输入的话你需要写一个读io口的函数,如果输入是模电的话你还要进行AD转换。
作者: finezwl    时间: 2020-4-16 23:45
最简单的高低电平识别
#include  <STC15F2K60S2.H>


sbit   in = P0^0;
sbit   out = P1^0;

void main()
{
    while(1)
   {
       if (in==0)
           {
                    out=0;
           }
           else if (in==1)
           {
                    out=1;
           }
   }
}
作者: TTQ001    时间: 2020-4-17 08:26
你需要编写一段代码来实现该任务。
作者: wulin    时间: 2020-4-17 11:28
#include "reg52.h"  
sbit IN =P0^0;
sbit OUT=P1^0;  

void main()
{
        while(1)
        {
                OUT=IN;
        }
}
作者: Mr丶朋    时间: 2020-4-17 13:25
直接if判断就行吧
作者: heliuro    时间: 2020-4-17 15:31
#include "reg52.h"sbit IN =P0^0; sbit OUT=P1^0;    void main() {         while(1)         {                 OUT=IN;         } }
作者: heliuro    时间: 2020-4-17 15:40
51单片机对于数字电路信号的输入输出很简单,判断对应引脚电平就行,以下以点触型输入型号为例
#include "reg52.h"  
sbit P0_0 = P0^0;
sbit P1_0 = P1^0;  

void main()
{
        int k = 0;
        while(1)
        {
            if (P0_0 == 0)
           {
                for(k=0;k<30;k++);
                if(P0_0 == 0)
                    P1_0 = 0;
           }
           else if (P1_0 ==1)
           {
                for(k=0;k<30;k++);
                if(P0_0 == 1)
                 P1_0 = 1;
           }
        }
}
而模拟信号需进行AD/DA转换,这些都是相关教材上必备的知识,需要自己用心去看
作者: hangsy    时间: 2020-4-17 16:09
直接让P1的输出等于P0的输入,有硬件的话可以用万用表测试检测一下,没有硬件的话可以用proteus仿真一下,用里面的探针测试
作者: ONLY_pc    时间: 2020-4-17 20:17
定义一个中间参数呗
作者: zhai1995    时间: 2020-4-18 14:08
一直检测输入IO电平,   根据输入IO状态,在另一个输出IO做对应的输出高低就可以了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1