|
TM1638是帶鍵盤掃描接口的LED(發(fā)光二極管顯示器)驅(qū)動(dòng)控制專用電路,內(nèi)部集成有MCU 數(shù)字接口、數(shù)據(jù)鎖存器、LED 高壓驅(qū)動(dòng)、鍵盤掃描等電路。主要應(yīng)用于冰箱、空調(diào) 、家庭影院等產(chǎn)品的高段位顯示屏驅(qū)動(dòng)。
因?yàn)椴竭M(jìn)電機(jī)實(shí)驗(yàn)需要用到按鍵,但家有嬰兒,沒用松香鉻鐵之類的(技術(shù)早就還給老師了,也沒有條件 ),只好在網(wǎng)上找,找到一個(gè)由TM1638做成的成品,感覺做工還不錯(cuò),就買了一個(gè),但其帶的程序一時(shí)沒看懂,花了些時(shí)間進(jìn)行學(xué)習(xí),覺得好精妙,就想分享一下。
絕不是給別人打廣告,這程序確實(shí)我理解了很久。
附件是它完整的程序。
TM1638.JPG (69.39 KB, 下載次數(shù): 78)
下載附件
2020-2-18 16:52 上傳
調(diào)用實(shí)現(xiàn)程序主要是顯示與按鍵值獲取。
1.顯示:
為什么是0xc0|add呢?
因?yàn)樾酒f明有:高位都是11, 就是C了。
dispalyaddress_tm1638.JPG (125.03 KB, 下載次數(shù): 66)
下載附件
2020-2-18 16:55 上傳
void Write_DATA(unsigned char add,unsigned char DATA) //指定地址寫入數(shù)據(jù)
{
Write_COM(0x44);
STB=0;
TM1638_Write(0xc0|add);
TM1638_Write(DATA);
STB=1;
}
2.按鍵獲�。�
注意這兒是從低位開始讀的, 理解 的時(shí)候把B0~B7反過來理解就更好理解下面這個(gè)按鍵程序。在這兒花了很多時(shí)間來想這個(gè)。得到的 i 值就是按的第幾個(gè)鍵。這兒真的這個(gè)程序?qū)懙锰盍�,這個(gè)大神絕對(duì)的高手。
getkey.JPG (156.59 KB, 下載次數(shù): 78)
下載附件
2020-2-18 17:02 上傳
單片機(jī)程序
- unsigned char Read_key(void)
- {
- unsigned char c[4],i,key_value=0;
- STB=0;
- TM1638_Write(0x42); //讀鍵掃數(shù)據(jù) 命令
- for(i=0;i<4;i++)
- c[i][i]=TM1638_Read();
- STB=1; //4個(gè)字節(jié)數(shù)據(jù)合成一個(gè)字節(jié)
- 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;
- }
復(fù)制代碼 |
|