欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2052|回復: 8
收起左側

麻煩大神看下程序有什么問題沒。實際電路LED不能全部點亮,線材沒問題。

[復制鏈接]
ID:799497 發表于 2020-7-8 08:58 | 顯示全部樓層 |閱讀模式
功能測試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燈亮。有一個不到通蜂鳴器響,
麻煩大神看下程序有什么問題沒。實際電路LED不能全部點亮,線材沒問題。


#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
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=P2^5; //蜂鳴器

void delay(uchar x)


void main()

{

uint y;
        for(;x>0;x--)
        for(y=50;y>0;y--);
}

         P0 = 0xff;

   P1 = 0xff;

   P2 = 0xff;

   P3 = 0xff;
       
        while(1)
               
        {
   TXD1=0;TXD2=1;TXD3=1;TXD4=1;TXD5=1
if(RX1==0&RX2!=0&RX3!=0&RX4!=0&RX5!=0
{

   LED1=0;

}
else
{

   LED1=1;

}
delay(50000);
   TXD1=1;TXD2=0;TXD3=1;TXD4=1;TXD5=1;
if(RX2==0&RX1!=0&RX3!=0&RX4!=0&RX5!=0)
{

   LED2=0;

}
else
{

   LED2=1;

}
delay(50000);
   TXD1=1;TXD2=1;TXD3=0;TXD4=1;TXD5=1;
if(RX3==0&RX1!=0&RX2!=0&RX4!=0&RX5!=0)
{

   LED3=0;

}
else
{

   LED3=1;

}
delay(50000);
   TXD1=1;TXD2=1;TXD3=1;TXD4=0;TXD5=1;
if(RX4==0&RX1!=0&RX2!=0&RX3!=0&RX5!=0)
{

   LED4=0;

}
else
{

   LED4=1;

}
delay(50000);
   TXD1=1;TXD2=1;TXD3=1;TXD4=1;TXD5=0;
if(RX5==0&RX1!=0&RX2!=0&RX3!=0&RX4!=0)
{

   LED5=0;
       

}
else
{

   LED5=1;

}
delay(50000);

if((LED1&LED2&LED3&LED4&LED5)==0)
{   Buzzer=1;}
else
{

   Buzzer=0;

}
}
}


回復

使用道具 舉報

ID:267719 發表于 2020-7-8 09:25 | 顯示全部樓層
if(RX1==0&RX2!=0&RX3!=0&RX4!=0&RX5!=0)
這個判斷有問題;這個執行結果先執行0&RX2   判斷的邏輯與應該用&&,單個&是算術與。
應該如下
if((RX1==0)&&(RX2!=0)&&(RX3!=0)&&(RX4!=0)&&(RX5!=0))
回復

使用道具 舉報

ID:282850 發表于 2020-7-8 09:34 | 顯示全部樓層
先測試一下全部LED是否會亮,也叫自檢
P1=0xe0; delayms(2000);
故障可能:
1、delay(50000),是延時50秒嗎?太長了
2、整個思路感覺不好,又復雜、浪費時間。
TXD1=1;TXD2=1;TXD3=0;TXD4=1;TXD5=1;
if(RX3==0&RX1!=0&RX2!=0&RX4!=0&RX5!=0)
類似的全改成并行:
P1=0xff;
TXD1=1;TXD2=1;TXD3=1;TXD4=1;TXD5=1;  //僅一次,永遠高
if(RX1==0) LED1=0;
if(RX2==0) LED2=0;
if(RX3==0) LED3=0;
...

回復

使用道具 舉報

ID:799497 發表于 2020-7-8 14:16 | 顯示全部樓層
carpcarey 發表于 2020-7-8 09:25
if(RX1==0&RX2!=0&RX3!=0&RX4!=0&RX5!=0)
這個判斷有問題;這個執行結果先執行0&RX2   判斷的邏輯與應該用 ...

你好:我現在測試使用杜邦線把P1.0 P1.1 P1.2 P1.3 P1.4 對應端口P2.0 P2.1 P2.2 P2.3 P2.4接通5個LED燈都亮。可是我換成線材LED等只亮1個。難道這樣連接有問題,線材內阻對電路有什么影響嗎?應該怎么解決?
回復

使用道具 舉報

ID:799497 發表于 2020-7-8 14:48 | 顯示全部樓層
f556 發表于 2020-7-8 09:34
先測試一下全部LED是否會亮,也叫自檢
P1=0xe0; delayms(2000);
故障可能:

你好:我現在使用杜邦線把P1.0 P1.1 P1.2 P1.3 P1.4 對應端口P2.0 P2.1 P2.2 P2.3 P2.4全部連接起來,LED燈5個都亮。要是使用線材連接起來,只有1個燈亮。難道線材電阻值太大。這個問題怎么解決?測試線材是否開路還有什么方法。一根一根測試。
回復

使用道具 舉報

6#
無效樓層,該帖已經被刪除
ID:267719 發表于 2020-7-8 16:47 | 顯示全部樓層
leibo45 發表于 2020-7-8 14:16
你好:我現在測試使用杜邦線把P1.0 P1.1 P1.2 P1.3 P1.4 對應端口P2.0 P2.1 P2.2 P2.3 P2.4接通5個LED燈 ...

什么線材?怎么連的?有圖片么?
回復

使用道具 舉報

ID:799497 發表于 2020-7-8 16:49 | 顯示全部樓層
carpcarey 發表于 2020-7-8 16:47
什么線材?怎么連的?有圖片么?

就是測試伺服編碼器線。5根線,公頭連接P1端口,母頭連接P2端口。
回復

使用道具 舉報

ID:267719 發表于 2020-7-9 15:23 | 顯示全部樓層
leibo45 發表于 2020-7-8 16:49
就是測試伺服編碼器線。5根線,公頭連接P1端口,母頭連接P2端口。

如果線很長,線與線之間很近,那么會有等效電容,建議在置了電平之后,在判斷之前延時100ms。這段延時時間相當于給這個等效電容充電時間。這個時間根據實際情況去調整。

#define DefDelayTime 100
TXD1=0;TXD2=1;TXD3=1;TXD4=1;TXD5=1;
delay(DefDelayTime);
if((RX1==0)&&(RX2!=0)&&(RX3!=0)&&(RX4!=0)&&(RX5!=0))
{
.
.
}
回復

使用道具 舉報

ID:800832 發表于 2020-7-10 09:28 | 顯示全部樓層
頻率問題
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表