找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 131|回復(fù): 2
收起左側(cè)

有沒有大佬提供一種多線檢測短路的芯片

[復(fù)制鏈接]
ID:747872 發(fā)表于 2025-6-20 15:16 | 顯示全部樓層 |閱讀模式
現(xiàn)在有四十根線,需要檢測任意兩根線之間有沒有短路,有沒有大佬提供一下可用的芯片和大概方法
回復(fù)

使用道具 舉報

ID:688692 發(fā)表于 2025-6-21 21:29 | 顯示全部樓層
40個IO做二分法
回復(fù)

使用道具 舉報

ID:1133081 發(fā)表于 2025-6-22 08:21 | 顯示全部樓層
沒有遇到過這種用途的專用芯片,但可用單片機自制。曾經(jīng)為某產(chǎn)品專用排線制作過26芯排線檢測裝置。是利用手頭現(xiàn)成材料,薅嘉立創(chuàng)羊毛打板,編程測試滿足需求。你只要選擇有更多IO口的芯片,套用這個程序就可以了。

無標題.jpg
無標題1.jpg


  1. #include <STC15F2K60S2.H>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define ulong unsigned long

  6. sbit K1 = P5^4;
  7. sbit K2 = P5^5;
  8. sbit LED1= P4^1;
  9. sbit LED2= P4^2;
  10. sbit FM = P4^5;

  11. //全局變量聲明
  12. uchar Key_value;//鍵值
  13. uchar error;//錯誤
  14. uchar Buzzer_sign;//蜂鳴器計次數(shù)
  15. //本地函數(shù)聲明
  16. void Delay_ms(uint t);
  17. void Timer1Init();
  18. void key_scan();   //按鍵掃描函數(shù)
  19. //主函數(shù)
  20. void main()
  21. {
  22.         P0M0 = 0x00;
  23.         P0M1 = 0x00;
  24.         P1M0 = 0x00;
  25.         P1M1 = 0x00;
  26.         P2M0 = 0x00;
  27.         P2M1 = 0x00;
  28.         P3M0 = 0x00;
  29.         P3M1 = 0x00;
  30.         P4M0 = 0x20;//P4.5推挽
  31.         P4M1 = 0x00;
  32.         P5M0 = 0x00;
  33.         P5M1 = 0x00;
  34.         FM=0;//蜂鳴器初始0
  35.         Timer1Init();
  36.         while(1)
  37.         {
  38.                 key_scan();      //按鍵掃描函數(shù)
  39.         }
  40. }

  41. void key_scan()
  42. {            
  43.         uchar i;
  44.         ulong a,b,c,d;
  45.         ulong num,num1;

  46.         if(!K1)
  47.         {
  48.                 Delay_ms(10);
  49.                 if(!K1)//短路測試
  50.                 {
  51.                         num=0xfffffffe;
  52.                         for(i=25;i>0;i--)
  53.                         {
  54.                                 P3=num>>24;
  55.                                 P2=num>>16;
  56.                                 P1=num>>8;
  57.                                 P0=num;
  58.                                 a=P3;b=P2;c=P1;d=P0;
  59.                                 _nop_();_nop_();
  60.                                 num1=0xfc000000|(a<<24)|(b<<16)|(c<<8)|d;
  61.                                 if(num==num1)
  62.                                 {
  63.                                         num=num<<1|1;
  64.                                         error=1;
  65.                                 }
  66.                                 else
  67.                                 {
  68.                                         i=1;
  69.                                         error=2;
  70.                                 }
  71.                                 Delay_ms(1);
  72.                         }
  73.                         if(error==1){Buzzer_sign=1;}
  74.                         if(error==2){Buzzer_sign=3;}
  75.                         TR1 = 1;
  76.                         while(!K1);
  77.                 }
  78.         }
  79.         if(!K2)//開路測試
  80.         {
  81.                 Delay_ms(10);
  82.                 if(!K2)
  83.                 {
  84.                         P3=0x03;P2=0xff;P1=0xff;P0=0xff;
  85.                         _nop_();_nop_();
  86.                         a=P3;b=P2;c=P1;d=P0;
  87.                         num1=(a<<24)|(b<<16)|(c<<8)|d;
  88.                         if(num1 == 0x00000000)
  89.                         {
  90.                                 error=1;
  91.                         }
  92.                         else
  93.                         {
  94.                                 error=2;
  95.                         }
  96.                         if(error==1){Buzzer_sign=1;}
  97.                         if(error==2){Buzzer_sign=3;}
  98.                         TR1 = 1;
  99.                         while(!K2);
  100.                 }
  101.         }
  102. }


  103. //T1中斷服務(wù)函數(shù)
  104. void InterruptTimer1() interrupt 3
  105. {
  106.         static uint i=0;                        //中斷計數(shù)變量

  107.         if(++i>=1000)//200ms
  108.         {
  109.                 i=0;
  110.                 Buzzer_sign--;
  111.                 if(Buzzer_sign==0)
  112.                 {
  113.                         FM=1;
  114.                         LED1=1;
  115.                         LED2=1;
  116.                         error=0;
  117.                         TR1 = 0;
  118.                 }
  119.         }
  120.         if(i<500)
  121.         {
  122.                 FM=~FM;
  123.                 if(error==1)LED1=0;
  124.                 if(error==2)LED2=0;
  125.         }
  126.         else                                         //蜂鳴器端口清0         
  127.         {
  128.                 FM=0;
  129.                 LED1=1;
  130.                 LED2=1;                                        //定時器1關(guān)閉               
  131.         }


  132. }
  133. /*---------------------------------------------
  134.   定時器1初始化,時鐘1T、16位重載模式
  135. ----------------------------------------------*/
  136. void Timer1Init(void)                //200微秒@11.0592MHz
  137. {
  138.         TMOD &= 0x0F;                //設(shè)置定時器模式
  139.         TMOD |= 0x20;                //設(shè)置定時器8位自動重裝模式
  140.         TL1 = 0x48;                //設(shè)置定時初始值
  141.         TH1 = 0x48;                //設(shè)置定時重載值
  142.         TF1 = 0;                //清除TF1標志
  143. //        TR1 = 1;                //定時器1開始計時
  144.         EA  = 1;
  145.         ET1 = 1;
  146. }
  147. /*****************************
  148.         延時函數(shù)
  149. *****************************/
  150. void Delay_ms(uint t)//1T@11.0592MHz
  151. {
  152.         uint i,j;
  153.         for(i=t;i>0;i--)
  154.                 for(j=1100;j>0;j--);
  155. }
復(fù)制代碼



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表