|
發布時間: 2020-2-18 17:11
正文摘要:TM1638是帶鍵盤掃描接口的LED(發光二極管顯示器)驅動控制專用電路,內部集成有MCU 數字接口、數據鎖存器、LED 高壓驅動、鍵盤掃描等電路。主要應用于冰箱、空調 、家庭影院等產品的高段位顯示屏驅動。 因為步進電 ... |
| 這個模塊自帶程序實際使用不方便,可以按照上面的改,主程序按鍵如何操作很簡單了!判斷鍵值就行 |
|
//------------下面是讀按鍵和鍵值分離程序------------ 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; } |
|
最簡單的改動,現在實現了只顯示1或0狀態。只是這樣的話理論上所有的按鍵都可以控制電機開啟了。。。。 while(Read_key()==i); //等待按鍵釋放 // if(num[i]>15) //原程序是按一下鍵,自動計數加1.可以加到15 if(num[i]>1) //改為實現了只顯示1與0(加到1,就值改為0),1電機啟動,0電機斷開 num[i]=0; Write_DATA(i*2,tab[num[i]]); Write_allLED(1<<i); } if(num[i]==1) { //電機開啟程序 } |
| 但是這樣的顯示執行結果不是我想要的。明天再研究改一下程序。我只需要按一個鍵做開關,顯示1或0就可以了,別的鍵都不需要改變。或者有哪個大神幫我改一下。 |