找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2509|回复: 12
打印 上一主题 下一主题
收起左侧

单片机程序功能:测试5根线是否导通。不知道什么问题,麻烦大神给分析下,谢谢

[复制链接]
跳转到指定楼层
楼主
程序功能测试:5根线是否导通。
测试放法:把5根线公头分别接到对应的5个端口P1.0 P1.1 P1.2 P1.3 P1.4 母头接对应端口P2.0 P2.1 P2.2 P2.3 P2.4全部导通对应5个LED灯亮。蜂鸣器不响,有一个不导通蜂鸣器响,
麻烦大神看下哪里有问题,使用杜邦线测试程序是可以的,5个LED灯都亮。要是使用线材测试就只有1个LED灯亮。不知道是哪里问题。线材电阻值太大还是别的什么原因?有没有更好的解决办法。

案例程序如下:
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uchar x)
{
uint y;
        for(;x>0;x--)
        for(y=50;y>0;y--);
}


sbit TXD1=P1^0;
sbit TXD2=P1^1;
sbit TXD3=P1^2;
sbit TXD4=P1^3;
sbit TXD5=P1^4;


sbit RX1=P2^0;
sbit RX2=P2^1;
sbit RX3=P2^2;
sbit RX4=P2^3;
sbit RX5=P2^4;


sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;



sbit Buzzer=P3^7;
sbit Key=P3^0;

void main()

{
         P0 = 0xff;
   P1 = 0xff;
   P2 = 0xff;
   P3 = 0xff;
        

        while(1)
               
        {
                delay(500);
   TXD1=0;
if((RX1==0)&&(RX2!=0)&&(RX3!=0)&&(RX4!=0)&&(RX5!=0))
{   
        
   LED1=0;//1#ÏßOK
}
else
{
   LED1=1;//1#ÏßNG
}

                delay(500);
  TXD2=0;
if((RX2==0)&&(RX1!=0)&&(RX3!=0)&&(RX4!=0)&&(RX5!=0))
{   
        
   LED2=0;//1#ÏßOK
}
else
{
   LED2=1;//1#ÏßNG
}

                delay(500);
   TXD3=0;
if((RX3==0)&&(RX2!=0)&&(RX1!=0)&&(RX4!=0)&&(RX5!=0))
{   
        
   LED3=0;//1#ÏßOK
}
else
{
   LED3=1;//1#ÏßNG
}


                delay(500);
   TXD4=0;
if((RX4==0)&&(RX2!=0)&&(RX3!=0)&&(RX1!=0)&&(RX5!=0))
{   
        
   LED4=0;//1#ÏßOK
}
else
{
   LED4=1;//1#ÏßNG
}

                delay(500);
  TXD5=0;
if((RX5==0)&&(RX2!=0)&&(RX3!=0)&&(RX4!=0)&&(RX1!=0))
{   
        
   LED5=0;//1#ÏßOK
}
else
{
   LED5=1;//1#ÏßNG
}
  delay(500);

if((RX5==0)&&(RX2==0)&&(RX3==0)&&(RX4==0)&&(RX1==0))
{

   Buzzer=1;

}
else
{

   Buzzer=0;


}



}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:739610 发表于 2020-7-8 22:27 | 只看该作者
用什么片子做的 估计是驱动能力太低  电流太小因而单片机检测不到有效信号
回复

使用道具 举报

板凳
ID:332444 发表于 2020-7-9 10:08 | 只看该作者
这么简单的功能用不了那么多代码,就是测试5条导线是否连通这个功能?实际做虾米用?测量的是长途的导线?
回复

使用道具 举报

地板
ID:332444 发表于 2020-7-9 10:13 | 只看该作者
用一个P口中的5个引脚接5条线的一头,5条导线的另一头都并在一起接地。
代码也简单的很,就是5个值分别去点亮LED即可。
回复

使用道具 举报

5#
ID:800217 发表于 2020-7-9 10:14 | 只看该作者
是不是驱动太低
回复

使用道具 举报

6#
ID:332444 发表于 2020-7-9 10:30 | 只看该作者
一个最简单的办法:发光管负极接P0口5个每个串连限流电阻接到电源正极,电线接5头接P1口5个另一端接地,代码写:P1=255;P0=P1;这样就可以了。
回复

使用道具 举报

7#
ID:332444 发表于 2020-7-9 10:32 | 只看该作者
画蛇添足的做法,测试导线是否导通,电池+电阻+发光管+导线+开关。
回复

使用道具 举报

8#
ID:282850 发表于 2020-7-9 10:41 | 只看该作者
给你2个程序,102btye
/*
多线对线器
功能:8(5)线以内,测试蕊线是否接通、是否一一对应
程序功能测试:5根线是否导通。
*/
#define Ls 8     //总线数
#include "msp430x41x.h"
//方法一:3组IO

void main1111111111( void )
{
unsigned char i;
      P1DIR =0xff;      //OUT
      P1OUT =0x01;
      P2DIR =0;       //in,有下拉电阻
      P3DIR =0xff;  //LED
      P3OUT =0;    //H亮
      while(1)
      { //可带电拔插,每次只亮一个LED,高速扫描,接线正确情况(接通+顺序正确)下实看到是所有LED都亮
            P1OUT=0x01;
            for(i=0;i<Ls;i++)
            {
                  if(P2IN==(1<<i)) P3OUT=(1<<i) ;
            }
      }
}   

//方法二:两组IO,LED串在测试线上,也可看LED的亮度判断是否有接触电阻大的问题
void main( void )
{
unsigned char i;
      P1DIR =0xff;      //OUT
      P1OUT =0x01;
      P2DIR =0xff;  //OUT ,LED
      P2OUT =0xff;    //P1 H时亮
      while(1)
      { //可带电拔插,每次只亮一个LED,高速扫描,接线正确情况(接通+顺序正确)下实看到是所有LED都亮
            P1OUT=0x01;
            for(i=0;i<Ls;i++)
            {
                  P2OUT &=~(1<<i)  ;
            }
      }
}   
回复

使用道具 举报

9#
ID:282850 发表于 2020-7-9 10:46 | 只看该作者



两个main分另编译都一次通过,只不过你需要修改,思路可用。

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

10#
ID:608600 发表于 2020-7-9 11:52 | 只看该作者
为什么不能用万用表
回复

使用道具 举报

11#
ID:136090 发表于 2022-2-14 22:50 | 只看该作者
f556 发表于 2020-7-9 10:46
两个main分另编译都一次通过,只不过你需要修改,思路可用。

怎么给你加分?
回复

使用道具 举报

12#
ID:491875 发表于 2022-2-15 11:33 | 只看该作者
估计是线缆长度问题,线缆比较长时,分布电容和等效电感都必须考虑
回复

使用道具 举报

13#
ID:491875 发表于 2022-2-15 11:37 | 只看该作者
楼主如果为了学习单片机,这个方法可以,如果为了实用,这个方法不可取!实用化可以考虑类似网线测试仪的办法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表