国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

單片機(jī)(二):3個(gè)IO擴(kuò)展n*8個(gè)IO,基于74hc595與74hc165的8x8矩陣鍵盤(pán)

這篇具有很好參考價(jià)值的文章主要介紹了單片機(jī)(二):3個(gè)IO擴(kuò)展n*8個(gè)IO,基于74hc595與74hc165的8x8矩陣鍵盤(pán)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

3個(gè)IO通過(guò)一片74hc595擴(kuò)展8個(gè)輸出IO,3個(gè)IO通過(guò)一片74hc1655擴(kuò)展8個(gè)輸入IO,最終成為8X8的矩陣鍵盤(pán)。對(duì)于普通的矩陣鍵盤(pán),再加入防止鬼鍵、消抖和按下與松開(kāi)識(shí)別。

一、74hc595介紹

74HC595是一個(gè)8位串行輸入、并行輸出的移位緩存器。通俗的來(lái)講就是在輸入時(shí)鐘的上升沿?cái)?shù)據(jù)輸入端的數(shù)據(jù)可以位移進(jìn)入芯片內(nèi)部的位移緩存器,多位數(shù)據(jù)移位輸入完成后,在輸出鎖存時(shí)鐘的上升沿時(shí)將數(shù)據(jù)存入并行輸出緩存器,在輸出使能時(shí)數(shù)據(jù)輸出到并行輸出端。相當(dāng)于可以通過(guò)3個(gè)IO口控制輸出并行的8個(gè)IO口,甚至通過(guò)74hc595的級(jí)聯(lián)擴(kuò)展更多的IO,相比于74HC138更加的靈活和可擴(kuò)展。這里介紹怎么使用,具體的性能參數(shù)靠參考技術(shù)手冊(cè)。

符號(hào)

引腳

描述

Q0--Q7

第15腳,

第1-7腳

8位并行數(shù)據(jù)輸出

GND

第8腳

電源地

Q7’

第9腳

串行數(shù)據(jù)輸出

SCLK#(MR)

第10腳

主復(fù)位(低電平有效),可接VCC

SCK(SH_CP)

第11腳

數(shù)據(jù)輸入時(shí)鐘線

RCK(ST_CP)

第12腳

輸出存儲(chǔ)器鎖存時(shí)鐘線

G#(OE)

第13腳

輸出有效(低電平有效),可接地

SER(DS)

第14腳

串行數(shù)據(jù)輸入

VCC

第16腳

電源正級(jí)

表x 引腳定義

單片機(jī)(二):3個(gè)IO擴(kuò)展n*8個(gè)IO,基于74hc595與74hc165的8x8矩陣鍵盤(pán)

圖x 74hc595操作示意圖

74HC595可以進(jìn)行級(jí)聯(lián),級(jí)聯(lián)時(shí)共用數(shù)據(jù)輸入時(shí)鐘、數(shù)據(jù)鎖存時(shí)鐘和輸出數(shù)據(jù)使能口。不同的是Q7’接下一片74HC595的串行數(shù)據(jù)輸入口,相當(dāng)于上一片595的數(shù)據(jù)移位溢出之后,數(shù)據(jù)就進(jìn)入了下片595。

二、74HC165介紹

74HC165是一款高速CMOS八位并入串出移位寄存器,功能與74HC595相反。這里介紹怎么使用,具體的性能參數(shù)靠參考技術(shù)手冊(cè)。

符號(hào)

引腳

描述

SH/LD(PL)

第1腳

數(shù)據(jù)加載控制,

低電平時(shí)讀取并行輸入端口數(shù)據(jù)存儲(chǔ)在移位寄存器中

高電平時(shí)串行數(shù)據(jù)從DS進(jìn)入移位寄存器中,用于級(jí)聯(lián)

CLK(CP)

第2腳

時(shí)鐘輸入,上升沿觸發(fā)。CE使能時(shí),移位輸出。

A-F

第11-14

3-6腳

并行數(shù)據(jù)輸入引腳

QH’

第7腳

串行數(shù)據(jù)互補(bǔ)輸出

GND

第8腳

電源地

QH

第9腳

串行數(shù)據(jù)輸出引腳

SER(DS)

第10腳

串行數(shù)據(jù)輸入引腳

CLK_INH(CE)

第15腳

時(shí)鐘輸入使能引腳,低電平觸發(fā),可接地

VCC

第16腳

電源正極

表x 引腳定義

單片機(jī)(二):3個(gè)IO擴(kuò)展n*8個(gè)IO,基于74hc595與74hc165的8x8矩陣鍵盤(pán)

圖x 74hc165操作示意圖

74HC165可以進(jìn)行級(jí)聯(lián),級(jí)聯(lián)時(shí)共用數(shù)據(jù)輸入時(shí)鐘、數(shù)據(jù)鎖存時(shí)鐘和輸出數(shù)據(jù)使能口。不同的是DS接下一片74HC165的QH/QH’,相當(dāng)于把多片165的移位寄存器串聯(lián)起來(lái),在時(shí)鐘信號(hào)下數(shù)據(jù)逐步輸出。

三、8x8矩陣鍵盤(pán)

8x8采用一片74hc595、一片74hc165、64個(gè)按鍵和64個(gè)二極管組成。其中595負(fù)責(zé)行掃描按鍵,165負(fù)責(zé)掃描選中的這一行的按鍵。如圖595掃描第一行,即輸出b01111111,165檢測(cè)到第3列的電平為0,即1行3列的按鍵被按下,依次循環(huán)掃描檢測(cè)。這樣就是矩陣鍵盤(pán)的設(shè)計(jì)原理,但是在多個(gè)按鍵被按下的時(shí)候,會(huì)出現(xiàn)幽靈按鍵或者鬼鍵的問(wèn)題。

單片機(jī)(二):3個(gè)IO擴(kuò)展n*8個(gè)IO,基于74hc595與74hc165的8x8矩陣鍵盤(pán)

圖x 矩陣鍵盤(pán)示意圖

幽靈按鍵或者鬼鍵出現(xiàn)在一個(gè)矩形的三個(gè)角的按鍵被按下后,會(huì)檢測(cè)為剩余一個(gè)角上的按鍵被按下,就好像出現(xiàn)了一個(gè)幽靈按鍵。如下圖,1行3,4列,2行3列被按下,但是會(huì)檢測(cè)到按下的是2行4列的按鍵。解決的辦法就是在按鍵的左邊或者右邊加入一個(gè)二極管,使得電流只能單方向的流動(dòng)。

單片機(jī)(二):3個(gè)IO擴(kuò)展n*8個(gè)IO,基于74hc595與74hc165的8x8矩陣鍵盤(pán)

圖x 鬼鍵示意圖

四、軟件設(shè)計(jì)

軟件中包含了行掃描和列檢測(cè),其中還增加了按鍵的消抖檢測(cè)。當(dāng)按鍵按下時(shí),電平會(huì)有一段信號(hào)不穩(wěn)定的時(shí)間,要等到電平穩(wěn)定之后才能判斷按鍵確實(shí)按下。為了消抖,創(chuàng)建了兩個(gè)二維數(shù)組,一個(gè)記錄檢測(cè)到一次按下信號(hào)后掃描的次數(shù),一個(gè)記錄按下信號(hào)的次數(shù),比較這兩個(gè)數(shù),相差較大則不穩(wěn)定,記錄的數(shù)據(jù)多并且兩個(gè)數(shù)據(jù)相差較小時(shí)則穩(wěn)定。

/*
reg:
    KeyScane -> 檢測(cè)到按下就加1
    KeyCount -> 當(dāng)檢測(cè)到一次按鍵按下后,每掃描一次就加1
    KeyStatus -> 0未按下的檢測(cè)按下?tīng)顟B(tài),1按下的穩(wěn)定狀態(tài),2未按下或者處于松開(kāi)狀態(tài)
    size -> shape of matrix
*/
void ScanKey(unsigned char* KeyScane, unsigned char* KeyCount, unsigned char* KeyStatus,  unsigned char size){
    unsigned char ScanData = 0;
    unsigned char index_scan, index_move;
    // 行掃描
    for(index_scan=0; index_scan<8; index_scan++){
        ScanData = ~(0x01 << index_scan);
        // 595寫(xiě)入數(shù)據(jù),從高位開(kāi)始,也就是先掃描QA,SCK上升沿將數(shù)據(jù)移入,RCK上升沿?cái)?shù)據(jù)輸出
        KRCK = 0;
        for(index_move=0; index_move<8; index_move++){
            DATA_OUT = (ScanData << index_move) & 0x80;
            KSCK = 0;
            mDelayuS(10);
            KSCK = 1;
        }
        KRCK = 1;
        //列掃描
        // 165檢查輸入,當(dāng)PL拉高時(shí),CP給一個(gè)上升沿,8位寄存器中的值就通過(guò)Q7輸出一位
        PL = 0;
        mDelayuS(10);
        PL = 1;
        for(index_move=0; index_move<8; index_move++){
            // 未按下的檢測(cè)按下?tīng)顟B(tài)
            if(KeyStatus[index_scan*size+index_move] == 0){
                if(KeyScane[index_scan*size+index_move] >= 1){
                    KeyCount[index_scan*size+index_move] += 1;
                }
                if(DATA_IN == 0){
                    KeyScane[index_scan*size+index_move] += 1;
                }
            }
            // 不處于檢測(cè)按下?tīng)顟B(tài)
            else{
                if(DATA_IN == 1){
                    KeyStatus[index_scan*size+index_move] = 2;
                }
            }
 
            CP = 0;
            mDelayuS(10);
            CP = 1;
            mDelayuS(10);
        }
    }
}

在app應(yīng)用中做如下操作:

UINT8X AT(0x00c8) KeyScane[8][8];
UINT8X AT(0x0108) KeyCount[8][8]; 
UINT8X AT(0x0148) KeyStatus[8][8];
                                                             
memset(KeyScane, 0, sizeof(KeyScane));
memset(KeyCount, 0, sizeof(KeyCount));
memset(KeyStatus, 0, sizeof(KeyStatus));    
 
while(1){
    ScanKey((unsigned char*)KeyScane, (unsigned char*)KeyCount, (unsigned char*)KeyStatus, 8);
    // 當(dāng)keycount比keyscane大n時(shí)都置位0,說(shuō)明是誤觸;
    // 當(dāng)keyscane的值大于n,都置位0,說(shuō)明按下去了
    for(h=0; h<8; h++){
        for(l=0; l<8; l++){
            // 處于檢測(cè)按下?tīng)顟B(tài)
            if(KeyStatus[h][l]==0){
                // 誤觸,計(jì)數(shù)清零,狀態(tài)不變
                if(KeyCount[h][l]-KeyScane[h][l] >= n){
                    KeyCount[h][l] = 0;
                    KeyScane[h][l] = 0;
                }
                // 檢測(cè)到穩(wěn)定按下,計(jì)數(shù)清零,置位按鍵處于穩(wěn)定按下?tīng)顟B(tài),將檢測(cè)松開(kāi),處理按下業(yè)務(wù)
                if(KeyScane[h][l] >= n){
                    KeyStatus[h][l] = 1;
                    KeyCount[h][l] = 0;
                    KeyScane[h][l] = 0;
 
                }
            }
            // 檢測(cè)到松開(kāi),計(jì)數(shù)清零,置位按鍵處于檢測(cè)按下?tīng)顟B(tài),處理松開(kāi)業(yè)務(wù)
            else if (KeyStatus[h][l]==2)
            {
                KeyStatus[h][l] = 0;
                KeyCount[h][l] = 0;
                KeyScane[h][l] = 0;
 
            }
        }
    }
}

CH552的GPIO配置:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-497760.html

// 595 通用數(shù)據(jù)輸出
#define DATA_OUT  P1_1
// 按鍵 595
#define KRCK P3_1
#define KSCK P3_0
// 按鍵 165
#define CP P1_6
#define PL P1_7
#define DATA_IN P1_5

/*******************************************************************************
* Function Name  : PortCfg()
* Description    : 端口配置
* Input          : PortN 1,3
                   Mode  0 = 浮空輸入,無(wú)上拉
                         1 = 推挽輸入輸出
                         2 = 開(kāi)漏輸入輸出,無(wú)上拉
                         3 = 類(lèi)51模式,開(kāi)漏輸入輸出,有上拉,內(nèi)部電路可以加速由低到高的電平爬升
                   ,UINT8 Pin    (0-7)
* Output         : None
* Return         : None
*******************************************************************************/
void PortCfg(unsigned char PortN, unsigned char Mode, unsigned char Pin){
    if(PortN==1){
        switch(Mode){
            case 0:
                P1_MOD_OC = P1_MOD_OC & ~(1<<Pin);
                P1_DIR_PU = P1_DIR_PU &    ~(1<<Pin);
                break;
            case 1:
                P1_MOD_OC = P1_MOD_OC & ~(1<<Pin);
                P1_DIR_PU = P1_DIR_PU |    (1<<Pin);
                break;
            case 2:
                P1_MOD_OC = P1_MOD_OC | (1<<Pin);
                P1_DIR_PU = P1_DIR_PU &    ~(1<<Pin);
                break;
            case 3:
                P1_MOD_OC = P1_MOD_OC | (1<<Pin);
                P1_DIR_PU = P1_DIR_PU |    (1<<Pin);
                break;
            default:
                break;
        }
    }
    else if(PortN==3){
        switch(Mode){
            case 0:
                P3_MOD_OC = P3_MOD_OC & ~(1<<Pin);
                P3_DIR_PU = P3_DIR_PU &    ~(1<<Pin);
                break;
            case 1:
                P3_MOD_OC = P3_MOD_OC & ~(1<<Pin);
                P3_DIR_PU = P3_DIR_PU |    (1<<Pin);
                break;
            case 2:
                P3_MOD_OC = P3_MOD_OC | (1<<Pin);
                P3_DIR_PU = P3_DIR_PU &    ~(1<<Pin);
                break;
            case 3:
                P3_MOD_OC = P3_MOD_OC | (1<<Pin);
                P3_DIR_PU = P3_DIR_PU |    (1<<Pin);
                break;
            default:
                break;
        }
    }
}


void Init_GPIO_HC(void){
    PortCfg(1, 3, 1);
    PortCfg(1, 3, 6);
    PortCfg(1, 3, 7);
    PortCfg(1, 3, 5);

    PortCfg(3, 3, 0);
    PortCfg(3, 3, 1);
    PortCfg(3, 3, 4);
    PortCfg(3, 3, 3);
}

到了這里,關(guān)于單片機(jī)(二):3個(gè)IO擴(kuò)展n*8個(gè)IO,基于74hc595與74hc165的8x8矩陣鍵盤(pán)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【74HC595】51單片機(jī)(普中A2開(kāi)發(fā)板)LED點(diǎn)陣屏點(diǎn)亮以及74HC595芯片的使用筆記

    【74HC595】51單片機(jī)(普中A2開(kāi)發(fā)板)LED點(diǎn)陣屏點(diǎn)亮以及74HC595芯片的使用筆記

    純小白寫(xiě)的文章,如有問(wèn)題,歡迎評(píng)論區(qū)討論,反駁,指正。 如果你只想了解74HC595如何使用,建議只看2.3。 通過(guò)查看普中A2開(kāi)發(fā)板的原理圖(圖1)可以知道,通過(guò)P0(P0_0、P0_1…P0_7)口和DPa、DPb…DPh來(lái)控制哪一顆LED點(diǎn)亮。我這個(gè)開(kāi)發(fā)板上的點(diǎn)陣模塊沒(méi)有按照他給的原理圖上

    2024年02月05日
    瀏覽(111)
  • 三、51單片機(jī)用74HC595控制LED點(diǎn)陣

    三、51單片機(jī)用74HC595控制LED點(diǎn)陣

    (1)外觀 (2)作用 LED點(diǎn)陣通過(guò)LED(發(fā)光二極管)組成,以燈珠亮滅來(lái)顯示文字、圖片等,LED點(diǎn)陣顯示被廣泛應(yīng)用于各種公共場(chǎng)合,如汽車(chē)報(bào)站器、廣告屏以及公告牌等。 以8*8LED點(diǎn)陣為例。 (1)單片機(jī)端口直接驅(qū)動(dòng)。驅(qū)動(dòng)8*8的點(diǎn)陣需要2個(gè)IO端口(16個(gè)IO口)。 (2)使用串轉(zhuǎn)并移位鎖存器驅(qū)

    2024年02月03日
    瀏覽(21)
  • 51單片機(jī)開(kāi)發(fā):通過(guò)74HC595控制LED點(diǎn)陣

    51單片機(jī)開(kāi)發(fā):通過(guò)74HC595控制LED點(diǎn)陣

    (1)LED點(diǎn)陣就是多個(gè)LED發(fā)光二極管的集合,在單個(gè)LED的發(fā)光原理上沒(méi)有任何區(qū)別; (2)上面是16x16的LED點(diǎn)陣,總共有16x16=256個(gè)LED燈,由32個(gè)引腳來(lái)控制,其中16個(gè)引腳是正極(posn,n=1、2······、16),16個(gè)引腳是負(fù)極(NEGn,n=1、2······、16); (3)LED點(diǎn)陣可以用坐標(biāo)系的思想來(lái)理解,

    2024年02月12日
    瀏覽(23)
  • 51單片機(jī)驅(qū)動(dòng)8位數(shù)碼管(74HC595驅(qū)動(dòng))滾動(dòng)顯示

    51單片機(jī)驅(qū)動(dòng)8位數(shù)碼管(74HC595驅(qū)動(dòng))滾動(dòng)顯示

    原文鏈接:https://www.yourcee.com/newsinfo/2929591.html 點(diǎn)擊圖片購(gòu)買(mǎi) 主要關(guān)注下供電電壓是3.0-5.0v(建議5V),請(qǐng)?jiān)谝?guī)定范圍內(nèi)供電。 模塊上芯片引出5個(gè)引腳,芯片引腳與模塊引腳對(duì)應(yīng)關(guān)系是:VCC-VCC SCK-SCLK, RCK-RCLK,SER-DIO,GND-GND 可以對(duì)比程序?qū)W習(xí)時(shí)序圖,便于理解。 1.顯示異??膳懦?/p>

    2024年02月15日
    瀏覽(41)
  • 使用74HC595完成16*16led矩陣廣告牌(51單片機(jī)軟件仿真)

    使用74HC595完成16*16led矩陣廣告牌(51單片機(jī)軟件仿真)

    目錄 74HC595簡(jiǎn)介(個(gè)人理解)與模塊代碼 軟件仿真和代碼? SHCP是寫(xiě)入595芯片數(shù)據(jù)的配置 STCP是發(fā)送595芯片內(nèi)信息的配置 DS是數(shù)據(jù)配置的區(qū)域 595芯片有9個(gè)輸出引腳,最后一個(gè)是供給下一塊串聯(lián)的595使用的,下一塊串聯(lián)的595stcp和shcp與上一塊連接的引腳一致,下一塊的DS與上一塊

    2024年02月06日
    瀏覽(23)
  • 51單片機(jī)LED點(diǎn)陣控制原理、74HC595工作原理和字母和滾動(dòng)顯示實(shí)驗(yàn)代碼

    51單片機(jī)LED點(diǎn)陣控制原理、74HC595工作原理和字母和滾動(dòng)顯示實(shí)驗(yàn)代碼

    目錄 1. 74HC595工作原理圖解 ?2.LED點(diǎn)陣控制原理 3.點(diǎn)陣LED實(shí)驗(yàn) 3.1 配置74HC595代碼 3.2 D點(diǎn)陣LED顯示H? ?3.3 滾動(dòng)LED? (1) 滾動(dòng)掃描圖示 ?(2)程序代碼 4.遇到奇怪的bug ? ?:? ? ? ? 輸出使能,輸入低電平允許輸出,因此需要用接線帽j24讓oe和地短接。 (但是我普中A2的板子,不

    2024年02月04日
    瀏覽(31)
  • 51單片機(jī)通過(guò)兩片74HC595級(jí)聯(lián),用8位LED數(shù)碼管,分別顯示當(dāng)前日期,如:“2”、“0”、“-”、“0”、“5”、“-”、“2”、“6”,用Proteus仿真實(shí)現(xiàn)。

    51單片機(jī)通過(guò)兩片74HC595級(jí)聯(lián),用8位LED數(shù)碼管,分別顯示當(dāng)前日期,如:“2”、“0”、“-”、“0”、“5”、“-”、“2”、“6”,用Proteus仿真實(shí)現(xiàn)。

    1.先上仿真圖,但這么連仿真圖是不太正確的,要注意。展示的話(huà)能用就行。 2.從上到下依次放上數(shù)據(jù)手冊(cè)上的引腳解釋和邏輯功能和時(shí)序圖 ? ?3.貼上代碼:寫(xiě)了發(fā)送一字節(jié)數(shù)據(jù)函數(shù),發(fā)送全部字節(jié)函數(shù),加上一些寫(xiě)了很久的解釋?zhuān)ㄇ筚潱?/p>

    2024年02月08日
    瀏覽(31)
  • 基于51單片機(jī)hc-05,hc-06藍(lán)牙傳送數(shù)據(jù)到手機(jī)APP

    基于51單片機(jī)hc-05,hc-06藍(lán)牙傳送數(shù)據(jù)到手機(jī)APP

    ? ? ? ?通過(guò)藍(lán)牙芯片(HC-05)與手機(jī) APP 通信,每隔 1s (自己可設(shè)定)傳輸一批傳感器數(shù)據(jù) ? ? ?最近在封裝一些傳感器的程序,在通過(guò)藍(lán)牙連接手機(jī)調(diào)試數(shù)據(jù)的時(shí)候遇到的一點(diǎn)小問(wèn)題。藍(lán)牙的介紹網(wǎng)上有很多,這里就不說(shuō)。把51代碼丟出來(lái)供大家移植。 通過(guò)藍(lán)牙發(fā)送浮點(diǎn)型、

    2024年02月11日
    瀏覽(112)
  • 51單片機(jī)---編程實(shí)現(xiàn)流水燈----鍵盤(pán)控制數(shù)碼管顯示--利用74LS164擴(kuò)展并行輸出口---定時(shí)中斷方式驅(qū)動(dòng)一個(gè)數(shù)碼管

    目錄 基于51單片機(jī),用c語(yǔ)言編程實(shí)現(xiàn)流水燈 代碼: 使用C語(yǔ)言編寫(xiě)的基于51單片機(jī)的鍵盤(pán)控制數(shù)碼管顯示 代碼: 基于51單片機(jī),用c語(yǔ)言編程實(shí)現(xiàn)利用74LS164擴(kuò)展并行輸出口 代碼: 基于51單片機(jī),用c語(yǔ)言編程實(shí)現(xiàn)定時(shí)中斷方式驅(qū)動(dòng)一個(gè)數(shù)碼管? 代碼:? 1- 2- 上述代碼中,使用

    2024年02月16日
    瀏覽(19)
  • 超聲波測(cè)距模塊HC-SR04詳解(基于51單片機(jī))

    超聲波測(cè)距模塊HC-SR04詳解(基于51單片機(jī))

    本篇文章是個(gè)人整理的包含超聲波測(cè)距模塊HC-SR04的基本介紹與基本工作原理以及分別通過(guò)LCD1602、數(shù)碼管和串口顯示距離的實(shí)例講解與代碼的筆記,部分內(nèi)容來(lái)自《HC-SR04超聲波測(cè)距模塊說(shuō)明書(shū)》,代碼使用模塊化編輯,部分模塊來(lái)自江科大自化協(xié)的51單片機(jī)教學(xué)視頻。 希望大

    2023年04月16日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包