• <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支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      9. 一鍵多功能按鍵識別技術
      文章長度[] 加入時間[2008/5/30] 更新時間[2025/4/25 6:09:48] 級別[0] [評論] [收藏]
       
      1.實驗任務
      如圖4.9.1所示,開關SP1接在P3.7/RD管腳上,在AT89S51單片機的P1端口接有四個發光二極管,上電的時候,L1接在P1.0管腳上的發光二極管在閃爍,當每一次按下開關SP1的時候,L2接在P1.1管腳上的發光二極管在閃爍,再按下開關SP1的時候,L3接在P1.2管腳上的發光二極管在閃爍,再按下開關SP1的時候,L4接在P1.3管腳上的發光二極管在閃爍,再按下開關SP1的時候,又輪到L1在閃爍了,如此輪流下去。
      2.電路原理圖
      圖4.9.1
      3.系統板上硬件連線
      (1.       把“單片機系統”區域中的P3.7/RD端口連接到“獨立式鍵盤”區域中的SP1端口上;
      (2.       把“單片機系統”區域中的P1.0-P1.4端口用8芯排線連接到“八路發光二極管指示模塊”區域中的“L1-L8”端口上;要求,P1.0連接到L1,P1.1連接到L2,P1.2連接到L3,P1.3連接到L4上。
      4.程序設計方法
      (1.       設計思想由來
      在我們生活中,我們很容易通過這個叫張三,那個叫李四,另外一個是王五;那是因為每個人有不同的名子,我們就很快認出,同樣,對于要通過一個按鍵來識別每種不同的功能,我們給每個不同的功能模塊用不同的ID號標識,這樣,每按下一次按鍵,ID的值是不相同的,所以單片機就很容易識別不同功能的身份了。
      (2.       設計方法
      從上面的要求我們可以看出,L1到L4發光二極管在每個時刻的閃爍的時間是受開關SP1來控制,我們給L1到L4閃爍的時段定義出不同的ID號,當L1在閃爍時,ID=0;當L2在閃爍時,ID=1;當L3在閃爍時,ID=2;當L4在閃爍時,ID=3;很顯然,只要每次按下開關K1時,分別給出不同的ID號我們就能夠完成上面的任務了。下面給出有關程序設計的框圖。
      5.程序框圖
      圖4.9.2
      6.匯編源程序
      ID                                 EQU 30H
      SP1                               BIT P3.7
      L1                                 BIT P1.0
      L2                                 BIT P1.1
      L3                                 BIT P1.2
      L4                                 BIT P1.3
                                           ORG 0
                                           MOV ID,#00H
      START:                        JB K1,REL
                                           LCALL DELAY10MS
                                           JB K1,REL
                                           INC ID
                                           MOV A,ID
                                           CJNE A,#04,REL
                                           MOV ID,#00H
      REL:                    JNB K1,$
                                           MOV A,ID
                                           CJNE A,#00H,IS0
                                           CPL L1
                                           LCALL DELAY
                                           SJMP START
      IS0:                               CJNE A,#01H,IS1
                                           CPL L2
                                           LCALL DELAY
                                           SJMP START
      IS1:                               CJNE A,#02H,IS2
                                           CPL L3
                                           LCALL DELAY
                                           SJMP START
      IS2:                               CJNE A,#03H,IS3
                                           CPL L4
                                           LCALL DELAY
                                           SJMP START
      IS3:                               LJMP START
      DELAY10MS:    MOV R6,#20
      LOOP1:                        MOV R7,#248
                                           DJNZ R7,$
                                           DJNZ R6,LOOP1
                                           RET
      DELAY:                        MOV R5,#20
      LOOP2:                        LCALL DELAY10MS
                                           DJNZ R5,LOOP2
                                           RET
                                           END
      7.C語言源程序
      #include <AT89X51.H>
      unsigned char ID;
      void delay10ms(void)
      {
        unsigned char i,j;
        for(i=20;i>0;i--)
        for(j=248;j>0;j--);
      }
      void delay02s(void)
      {
        unsigned char i;
        for(i=20;i>0;i--)
          {delay10ms();
          }
      }
      void main(void)
      { while(1)
          { if(P3_7==0)
              {delay10ms();
                if(P3_7==0)
                  {
                    ID++;
                    if(ID==4)
                      {
                        ID=0;
                      }
                    while(P3_7==0);
                  }
              }
            switch(ID)
              { case 0:
                  P1_0=~P1_0;
                  delay02s();
                  break;
                case 1:
                  P1_1=~P1_1;
                  delay02s();
                  break;
                case 2:
                  P1_2=~P1_2;
                  delay02s();
                  break;
                case 3:
                  P1_3=~P1_3;
                  delay02s();
                  break;
              }
          }
      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嫩草黄片动漫版