熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-2-18 17:11
正文摘要: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)電 ... |
這個(gè)模塊自帶程序?qū)嶋H使用不方便,可以按照上面的改,主程序按鍵如何操作很簡(jiǎn)單了!判斷鍵值就行 |
//------------下面是讀按鍵和鍵值分離程序------------ unsigned char Read_key(void) { unsigned char c[4],i,key_value=0; STB=0; TM1638_Write(0x42); Delay10us(); for(i=0;i<4;i++) c[i]=TM1638_Read(); STB=1; //K1組合8鍵 if(c[0]==0x04) key_value=1; //KS1K1 if(c[0]==0x40) key_value=2; //KS2K1 if(c[1]==0x04) key_value=3; //KS3K1 if(c[1]==0x40) key_value=4; //KS4K1 if(c[2]==0x04) key_value=5; //KS5K1 if(c[2]==0x40) key_value=6; //KS6K1 if(c[3]==0x04) key_value=7; //KS7K1 if(c[3]==0x40) key_value=8; //KS8K1 //K2組合8鍵 if(c[0]==0x02) key_value=9; //KS1K2 if(c[0]==0x20) key_value=10; //KS2K2 if(c[1]==0x02) key_value=11; //KS3K2 if(c[1]==0x20) key_value=12; //KS4K2 if(c[2]==0x02) key_value=13; //KS5K2 if(c[2]==0x20) key_value=14; //KS6K2 if(c[3]==0x02) key_value=15; //KS7K2 if(c[3]==0x20) key_value=16; //KS8K2 //K3組合8鍵 if(c[0]==0x01) key_value=17; //KS1K3 if(c[0]==0x10) key_value=18; //KS2K3 if(c[1]==0x01) key_value=19; //KS3K3 if(c[1]==0x10) key_value=20; //KS4K3 if(c[2]==0x01) key_value=21; //KS5K3 if(c[2]==0x10) key_value=22; //KS6K3 if(c[3]==0x01) key_value=23; //KS7K3 if(c[3]==0x10) key_value=24; //KS8K3 return key_value; } |
最簡(jiǎn)單的改動(dòng),現(xiàn)在實(shí)現(xiàn)了只顯示1或0狀態(tài)。只是這樣的話理論上所有的按鍵都可以控制電機(jī)開啟了。。。。 while(Read_key()==i); //等待按鍵釋放 // if(num[i]>15) //原程序是按一下鍵,自動(dòng)計(jì)數(shù)加1.可以加到15 if(num[i]>1) //改為實(shí)現(xiàn)了只顯示1與0(加到1,就值改為0),1電機(jī)啟動(dòng),0電機(jī)斷開 num[i]=0; Write_DATA(i*2,tab[num[i]]); Write_allLED(1<<i); } if(num[i]==1) { //電機(jī)開啟程序 } |
但是這樣的顯示執(zhí)行結(jié)果不是我想要的。明天再研究改一下程序。我只需要按一個(gè)鍵做開關(guān),顯示1或0就可以了,別的鍵都不需要改變;蛘哂心膫(gè)大神幫我改一下。 |
Powered by 單片機(jī)教程網(wǎng)