精品无码国产一区二区三区麻豆,国产a毛片精品视频日日夜,国产毛片精品性无码,久欠精品国国产99国产精

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 8051單片機串行口擴展矩陣鍵盤接口與應用

8051單片機串行口擴展矩陣鍵盤接口與應用

作者:admin 來源:不詳 發(fā)布時間:2018-05-08  瀏覽:44
 由于8051的串行口在方式0工作狀態(tài)下,可以方便地通過移位寄存器74LS164擴展并行輸出口。因此,可以將這些并行口線作為列線,與P3口的行線構(gòu)成行列式鍵盤。每占用一條P3口線可增加8個按鍵,用戶根據(jù)需要可增減。
     在8051的串行口方式0工作狀態(tài)下,結(jié)合P3.4和P3.5實現(xiàn)2*8鍵盤。如圖所示。

 C51軟件設計:
     #include<stdio.h> //預處理
     #include<reg51.h>
     #include<intrins.h>
     unsigned char getkey(void); //鍵盤掃描函數(shù)
     void proc1(void); //定義按鍵處理程序1
    void proc2(void); //定義按鍵處理程序2
    void proc3(void); //定義按鍵處理程序3
    void proc4(void); //定義按鍵處理程序4
    ……
    bit0=P3.4;
    bit1=P3.5;
    void delay(void); //定義延時函數(shù)
    void main(void) //主函數(shù)
    {
    unsigned char idata key;
    SCON=0x00; //串口初始化
    ES=0;
    EA=0; //關閉中斷
    while(1)
    {
    key=getkey();
    if(key!=0xff)
    switch (key)
    {
    case 0x00:
    proc0();
    braek;
    case 0x01:
    proc1();
    braek;
    case 0x02:
    proc2();
    braek;
    case 0x03:
    proc3();
    braek;
    ……
    ……
    ……
    default:
    break;
    }
    }
    }
    unsigned char getkey(void) //鍵盤掃描函數(shù)
    {
    unsigned char idata key_code,col=0; mask=0x00;
    TI=0;
    SBUF=mask;
    while(TI==0);
    if((bit0&bit1)!= 0)
    return(0xff);
    delay();
    if((bit0&bit1)!= 0)
    return(0xff);
    mask=0xfe;
    while(col!=8)
    {
    TI=0;
    SBUF=mask;
    while(TI==0);
    if((bit0&bit1)!= 0)
    {
    mask=mask<<1;
    mask=mask|0x01;
    col=col+1;
    continue;
    }
    else break;
    }
    if(col==8)
    return(0xff);
    if(bit0==1) key_code=col;
    else key_code=8+col;
    while(bit0&bit1==0);
    return(key_code);
    }
    void delay(void) /*延時10毫秒*/
    {
    unsigned int i=10;
    while(i--);
    }

編輯:admin  最后修改時間:2018-05-08

聯(lián)系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A09

Copyright © 2014-2025 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4