• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      3. 多路開關狀態指示
      文章長度[] 加入時間[2008/5/30] 更新時間[2025/6/2 19:05:22] 級別[0] [評論] [收藏]

       
      1. 實驗任務
      如圖4.3.1所示,AT89S51單片機的P1.0-P1.3接四個發光二極管L1-L4,P1.4-P1.7接了四個開關K1-K4,編程將開關的狀態反映到發光二極管上。(開關閉合,對應的燈亮,開關斷開,對應的燈滅)。
      2. 電路原理圖
      圖4.3.1
      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指令來完成;也可以一次性檢測四路開關狀態,然后讓其指示,可以采用MOV A,P1指令一次把P1端口的狀態全部讀入,然后取高4位的狀態來指示。
      (2.       輸出控制
      根據開關的狀態,由發光二極管L1-L4來指示,我們可以用SETB P1.X和CLR P1.X指令來完成,也可以采用MOV P1,#1111XXXXB方法一次指示。
      5. 程序框圖

      開始
      讀P1口數據到ACC
      ACC內容右移4次
      ACC內容與F0H相或
      ACC內容送入P1口

      圖4.3.2
      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 <AT89X51.H>
      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 <AT89X51.H>
      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;
                }
          }
      }

      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版