熱門: 51單片機(jī) | 24小時必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
再頂一下,望前輩指點(diǎn) |
188610329 發(fā)表于 2023-3-9 13:22 前輩,請教一下,我的板子上上拉10K也有,101的電容也有,三條線還串聯(lián)了180電阻。顯示和按鍵都正常使用,但是在強(qiáng)電磁干擾下會讀到很多意外的按鍵,甚至亮度都會變成最低,這個怎樣解決? |
要得到TM1638按鍵返回值,需要進(jìn)行以下步驟: 初始化TM1638控制器:在程序中通過SPI接口向TM1638控制器寫入數(shù)據(jù),對其進(jìn)行初始化。具體的初始化操作可以參考TM1638的數(shù)據(jù)手冊。 讀取按鍵狀態(tài):通過讀取TM1638控制器內(nèi)部的寄存器,可以得到按鍵的狀態(tài)。具體的讀取操作可以參考TM1638的數(shù)據(jù)手冊。 解析按鍵狀態(tài):得到按鍵狀態(tài)后,需要進(jìn)行解析,以得到按鍵的返回值。TM1638控制器可以同時檢測多個按鍵的狀態(tài),因此需要對返回值進(jìn)行判斷,以確定哪個按鍵被按下。 以下是一個簡單的示例程序,用于從TM1638控制器讀取按鍵狀態(tài): #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit STB = P1^0; // TM1638控制引腳1 sbit CLK = P1^1; // TM1638控制引腳2 sbit DIO = P1^2; // TM1638控制引腳3 void tm1638_write(uint address, uchar data) { STB = 0; // 開始傳輸數(shù)據(jù) spi_write(address); // 發(fā)送地址 spi_write(data); // 發(fā)送數(shù)據(jù) STB = 1; // 停止傳輸數(shù)據(jù) } uchar tm1638_read(uint address) { uchar data; STB = 0; // 開始傳輸數(shù)據(jù) spi_write(address | 0x02); // 發(fā)送讀取命令和地址 data = spi_read(); // 讀取數(shù)據(jù) STB = 1; // 停止傳輸數(shù)據(jù) return data; } uchar get_key(void) { uchar key_code = tm1638_read(0x42); // 讀取按鍵狀態(tài) switch (key_code) { case 0x01: // 第1個按鍵被按下 return 1; case 0x02: // 第2個按鍵被按下 return 2; case 0x04: // 第3個按鍵被按下 return 3; case 0x08: // 第4個按鍵被按下 return 4; case 0x10: // 第5個按鍵被按下 return 5; case 0x20: // 第6個按鍵被按下 return 6; case 0x40: // 第7個按鍵被按下 return 7; case 0x80: // 第8個按鍵被按下 return 8; default: return } return key_code; } |
TM1638 按要求是 需要在 DIO 放置 10K 上拉 以及 100P 電容濾波的,你買的現(xiàn)成板子大概率 沒有加這個部分的,那么如果 12T 的學(xué)習(xí)板單片機(jī)操作(速度慢板載有上拉) 一般是沒有這個問題的,但是遇到 STC8 這種1T單片機(jī),你就要在 CLK =0 之后給與足夠的 延時等待,以及IO口 要設(shè)置內(nèi)部上拉開,并且不是推挽模式,才能讀到正確的鍵值。 |
![]() 我看不懂樓主的語言,我只知道匯編,我用過這個1638和樓主一樣很熟悉,思路應(yīng)該是一樣的 這個1638按鍵沒有返回概念,用它的按鍵只能一直不停讀取鍵值,好像一共三個字節(jié) ,每一個按鍵對應(yīng)一個位數(shù)據(jù),然后把固定的鍵值做比對,對上就說明按鍵按下,再去 執(zhí)行,提醒樓主,同一個讀鍵腳上的按鍵不一定在同一個字節(jié)里 |
Powered by 單片機(jī)教程網(wǎng)