|
TM1638是帶鍵盤掃描接口的LED(發光二極管顯示器)驅動控制專用電路,內部集成有MCU 數字接口、數據鎖存器、LED 高壓驅動、鍵盤掃描等電路。主要應用于冰箱、空調 、家庭影院等產品的高段位顯示屏驅動。
因為步進電機實驗需要用到按鍵,但家有嬰兒,沒用松香鉻鐵之類的(技術早就還給老師了,也沒有條件 ),只好在網上找,找到一個由TM1638做成的成品,感覺做工還不錯,就買了一個,但其帶的程序一時沒看懂,花了些時間進行學習,覺得好精妙,就想分享一下。
絕不是給別人打廣告,這程序確實我理解了很久。
附件是它完整的程序。
TM1638.JPG (69.39 KB, 下載次數: 78)
下載附件
2020-2-18 16:52 上傳
調用實現程序主要是顯示與按鍵值獲取。
1.顯示:
為什么是0xc0|add呢?
因為芯片說明有:高位都是11, 就是C了。
dispalyaddress_tm1638.JPG (125.03 KB, 下載次數: 66)
下載附件
2020-2-18 16:55 上傳
void Write_DATA(unsigned char add,unsigned char DATA) //指定地址寫入數據
{
Write_COM(0x44);
STB=0;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB=1;
}
2.按鍵獲取:
注意這兒是從低位開始讀的, 理解 的時候把B0~B7反過來理解就更好理解下面這個按鍵程序。在這兒花了很多時間來想這個。得到的 i 值就是按的第幾個鍵。這兒真的這個程序寫得太妙了,這個大神絕對的高手。
getkey.JPG (156.59 KB, 下載次數: 78)
下載附件
2020-2-18 17:02 上傳
單片機程序
- unsigned char Read_key(void)
- {
- unsigned char c[4],i,key_value=0;
- STB=0;
- TM1638_Write(0x42); //讀鍵掃數據 命令
- for(i=0;i<4;i++)
- c[i][i]=TM1638_Read();
- STB=1; //4個字節數據合成一個字節
- for(i=0;i<4;i++)
- key_value|=c[i][i]<<i;
- for(i=0;i<8;i++)
- if((0x01<<i)==key_value)
- break;
- return i;
- }
復制代碼 |
-
-
TM1638測試程序C51.rar
2020-2-18 17:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
27.17 KB, 下載次數: 113, 下載積分: 黑幣 -5
-
-
tm1638芯片數據手冊.pdf
2020-2-18 17:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
873.68 KB, 下載次數: 42, 下載積分: 黑幣 -5
|