電子制作天地網站歡迎您的光臨,歡迎提出寶貴意見或建議。本站信息產業部備案: 粵ICP備05114582號
多路開關狀態指示
Switch indicator

時間:2014-3-30 17:07:56 來源:互聯網 作者:不詳 編輯: 【關閉


多路開關狀態指示,Switch indicator

關鍵字:AT89S51,開關狀態指示

 
1.實驗任務
如圖所示,AT89S51單片機的P1.0-P1.3接四個發光二極管L1-L4,P1.4-P1.7接了四個開關K1-K4,編程將開關的狀態反映到發光二極管上。(開關閉合,對應的燈亮,開關斷開,對應的燈滅)。
2.電路原理圖
 
多路開關狀態指示Switch indicator
 
3.系統板上硬件連線
(1.       把“單片機系統”區域中的P1.0-P1.3用導線連接到“八路發光二極管指示模塊”區域中的L1-L4端口上;
(2.       把“單片機系統”區域中的P1.4-P1.7用導線連接到“四路撥動開關”區域中的K1-K4端口上;
4.  程序設計內容
(1.       開關狀態檢測
對于開關狀態檢測,相對單片機來說,是輸入關系,我們可輪流檢測每個開關狀態,根據每個開關的狀態讓相應的發光二極管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令來完成;也可以一次性檢測四路開關狀態,然后讓其指示,可以采用MOVA,P1指令一次把P1端口的狀態全部讀入,然后取高4位的狀態來指示。
(2.       輸出控制
根據開關的狀態,由發光二極管L1-L4來指示,我們可以用SETB P1.X和CLR P1.X指令來完成,也可以采用MOV P1,#1111XXXXB方法一次指示。
5.程序框圖 (略)
6.方法一(匯編源程序)
                                      ORG 00H
START:                        MOV A,P1
                                      ANL A,#0F0H
                                      RR A
                                      RR A
                                      RR A
                                      RR A
                                      XOR A,#0F0H
                                      MOV P1,A
                                      SJMP START
                                      END
7.方法一(C語言源程序)
#include
unsigned char temp;
 
void main(void)
{
  while(1)
    {
      temp=P1>>4;
      temp=temp | 0xf0;
      P1=temp;
    }
}
8.方法二(匯編源程序)
                                      ORG 00H
START:                         JB P1.4,NEXT1
                                      CLR P1.0
                                      SJMP NEX1
NEXT1:                       SETB P1.0
NEX1:                          JB P1.5,NEXT2
                                      CLR P1.1
                                      SJMP NEX2
NEXT2:                       SETB P1.1
NEX2:                          JB P1.6,NEXT3
                                      CLR P1.2
                                      SJMP NEX3
NEXT3:                       SETB P1.2
NEX3:                          JB P1.7,NEXT4
                                      CLR P1.3
                                      SJMP NEX4
NEXT4:                       SETB P1.3
NEX4:                          SJMP START
                                      END
9.方法二(C語言源程序)
#include
 
void main(void)
{
  while(1)
    {
      if(P1_4==0)
        {
          P1_0=0;
        }
        else
          {
            P1_0=1;
          }
      if(P1_5==0)
        {
          P1_1=0;
        }
        else
          {
            P1_1=1;
          }
      if(P1_6==0)
        {
          P1_2=0;
        }
        else
          {
            P1_2=1;
          }
      if(P1_7==0)
        {
          P1_3=0;
        }
        else
          {
            P1_3=1;
          }
    }
}


◆相關文章◆
◆ 編輯推薦 ◆
用戶:
更多評論
您要為您所發的言論的后果負責,故請各位遵紀守法并注意語言文明。60個字以內
留言:
驗證碼:

免責聲明:
●本站所有內容均來自網絡,以學習為目的,如果侵犯了您的利益,請來信告知,立即刪除,站長郵件為"diy+dzdiy.com",請將"+"變更為"@"
●電子制作存在風險,請注意人身安全,如果您在根據本站電路進行制作過程中發生傷害,本站不負任何責任。

版權所有:www.dunshaughlingaa.com ? 2001-2019 本站信息產業部備案: 粵ICP備05114582號

环球体彩