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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

一鍵多功能按鍵識(shí)別

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:212343 發(fā)表于 2017-7-27 19:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如圖4.9.1所示,開關(guān)SP1接在P3.7/RD管腳上,在AT89S51單片機(jī)的P1端口接有四個(gè)發(fā)光二極管,上電的時(shí)候,L1接在P1.0管腳上的發(fā)光二極管在閃爍,當(dāng)每一次按下開關(guān)SP1的時(shí)候,L2接在P1.1管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時(shí)候,L3接在P1.2管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時(shí)候,L4接在P1.3管腳上的發(fā)光二極管在閃爍,再按下開關(guān)SP1的時(shí)候,又輪到L1在閃爍了,如此輪流下去。
2電路原理圖
file:///C:/Users/DELL/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg
圖4.9.1
3系統(tǒng)板上硬件連線
(1.      把“單片機(jī)系統(tǒng)”區(qū)域中的P3.7/RD端口連接到“獨(dú)立式鍵盤”區(qū)域中的SP1端口上;
(2.      把“單片機(jī)系統(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è)計(jì)方法
(1.      設(shè)計(jì)思想由來
在我們生活中,我們很容易通過這個(gè)叫張三,那個(gè)叫李四,另外一個(gè)是王五;那是因?yàn)槊總(gè)人有不同的名子,我們就很快認(rèn)出,同樣,對(duì)于要通過一個(gè)按鍵來識(shí)別每種不同的功能,我們給每個(gè)不同的功能模塊用不同的ID號(hào)標(biāo)識(shí),這樣,每按下一次按鍵,ID的值是不相同的,所以單片機(jī)就很容易識(shí)別不同功能的身份了。
(2.      設(shè)計(jì)方法
從上面的要求我們可以看出,L1L4發(fā)光二極管在每個(gè)時(shí)刻的閃爍的時(shí)間是受開關(guān)SP1來控制,我們給L1L4閃爍的時(shí)段定義出不同的ID號(hào),當(dāng)L1在閃爍時(shí),ID0;當(dāng)L2在閃爍時(shí),ID1;當(dāng)L3在閃爍時(shí),ID2;當(dāng)L4在閃爍時(shí),ID3;很顯然,只要每次按下開關(guān)K1時(shí),分別給出不同的ID號(hào)我們就能夠完成上面的任務(wù)了。下面給出有關(guān)程序設(shè)計(jì)的框圖。
5程序框圖
file:///C:/Users/DELL/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif  
  
  
  
  
  
  
  
  
  
  
  
  
圖4.9.2
6匯編源程序
ID                        EQU30H         ; EQU ——標(biāo)號(hào)賦值偽指令
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比較不相等時(shí)轉(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---相對(duì)短轉(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;
       }
    }
}

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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