找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1809|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

一鍵多功能按鍵識別

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:212343 發(fā)表于 2017-7-27 19:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如圖4.9.1所示,開關(guān)SP1接在P3.7/RD管腳上,在AT89S51單片機的P1端口接有四個發(fā)光二極管,上電的時候,L1接在P1.0管腳上的發(fā)光二極管在閃爍,當每一次按下開關(guān)SP1的時候,L2接在P1.1管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時候,L3接在P1.2管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時候,L4接在P1.3管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時候,又輪到L1在閃爍了,如此輪流下去。
2電路原理圖
file:///C:/Users/DELL/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg
圖4.9.1
3系統(tǒng)板上硬件連線
(1.      把“單片機系統(tǒng)”區(qū)域中的P3.7/RD端口連接到“獨立式鍵盤”區(qū)域中的SP1端口上;
(2.      把“單片機系統(tǒng)”區(qū)域中的P1.0-P1.4端口用8芯排線連接到“八路發(fā)光二極管指示模塊”區(qū)域中的“L1-L8”端口上;要求,P1.0連接到L1,P1.1連接到L2,P1.2連接到L3,P1.3連接到L4上。
4程序設(shè)計方法
(1.      設(shè)計思想由來
在我們生活中,我們很容易通過這個叫張三,那個叫李四,另外一個是王五;那是因為每個人有不同的名子,我們就很快認出,同樣,對于要通過一個按鍵來識別每種不同的功能,我們給每個不同的功能模塊用不同的ID號標識,這樣,每按下一次按鍵,ID的值是不相同的,所以單片機就很容易識別不同功能的身份了。
(2.      設(shè)計方法
從上面的要求我們可以看出,L1L4發(fā)光二極管在每個時刻的閃爍的時間是受開關(guān)SP1來控制,我們給L1L4閃爍的時段定義出不同的ID號,當L1在閃爍時,ID0;當L2在閃爍時,ID1;當L3在閃爍時,ID2;當L4在閃爍時,ID3;很顯然,只要每次按下開關(guān)K1時,分別給出不同的ID號我們就能夠完成上面的任務(wù)了。下面給出有關(guān)程序設(shè)計的框圖。
5程序框圖
file:///C:/Users/DELL/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif  
  
  
  
  
  
  
  
  
  
  
  
  
圖4.9.2
6匯編源程序
ID                        EQU30H         ; EQU ——標號賦值偽指令
SP1                      BITP3.7          ;??不知定義這干嘛,后面又沒用到….
L1                        BITP1.0
L2                        BITP1.1
L3                        BITP1.2
L4                        BITP1.3
                            ORG0            ; ORG ——地址定義偽指令
                            MOVID,#00H      
START:                 JBK1,REL        ;直接尋址位為1轉(zhuǎn)移
                            LCALLDELAY10MS
                            JBK1,REL
                            INCID
                            MOVA,ID
                            CJNEA,#04,REL    ;累加器A與立即數(shù)data比較不相等時轉(zhuǎn)rel
                            MOVID,#00H
REL:                    JNBK1,$           ;直接尋址為0轉(zhuǎn)移
                            MOVA,ID
                            CJNEA,#00H,IS0
                            CPLL1            ;閃爍
                            LCALLDELAY
                            SJMPSTART
IS0:                      CJNEA,#01H,IS1
                            CPLL2
                            LCALLDELAY
                            SJMPSTART
IS1:                      CJNEA,#02H,IS2
                            CPLL3
                            LCALLDELAY
                            SJMPSTART
IS2:                      CJNEA,#03H,IS3
                            CPLL4
                            LCALLDELAY
                            SJMPSTART        ;SJMP---相對短轉(zhuǎn)移
IS3:                      LJMPSTART         ;LJMP -- 2KB范圍內(nèi)長轉(zhuǎn)移
DELAY10MS:          MOVR6,#20
LOOP1:                MOVR7,#248
                            DJNZR7,$
                            DJNZR6,LOOP1
                            RET
DELAY:                MOVR5,#20
LOOP2:                LCALLDELAY10MS
                            DJNZR5,LOOP2
                            RET
                            END
7C語言源程序
#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;
       }
    }
}

評分

參與人數(shù) 1黑幣 +5 收起 理由
wuli韜韜 + 5 很給力!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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