找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9993|回復(fù): 6
收起左側(cè)

單片機(jī)矩陣鍵盤控制16個(gè)led燈(仿真+代碼)

[復(fù)制鏈接]
ID:452210 發(fā)表于 2018-12-22 19:38 | 顯示全部樓層 |閱讀模式
矩陣鍵盤控制16 個(gè)led燈。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)

仿真圖

仿真圖
0.png

單片機(jī)源程序如下:
  1. #include<reg52.h>
  2. sbit LED1 = P1^0;
  3. sbit LED2 = P1^1;
  4. sbit LED3 = P1^2;
  5. sbit LED4 = P1^3;
  6. sbit LED5 = P1^4;
  7. sbit LED6 = P1^5;
  8. sbit LED7 = P1^6;
  9. sbit LED8 = P1^7;
  10. sbit LED9 = P3^0;
  11. sbit LED10 = P3^1;
  12. sbit LED11 = P3^2;
  13. sbit LED12 = P3^3;
  14. sbit LED13 = P3^4;
  15. sbit LED14 = P3^5;
  16. sbit LED15 = P3^6;
  17. sbit LED16 = P3^7;
  18. sbit P24 = P2^4;
  19. sbit P25 = P2^5;
  20. sbit P26 = P2^6;
  21. sbit P27 = P2^7;
  22. void delay_ms(unsigned int);
  23. void main(void)
  24. {
  25. while(1)
  26.   {
  27.    P2 = 0xfe;
  28.    if(P24 == 0){LED1 = !LED1;delay_ms(500);}
  29.       else if(P25 == 0){LED2 = !LED2;delay_ms(500);}
  30.       else if(P26 == 0){LED3 = !LED3;delay_ms(500);}
  31.       else if(P27 == 0){LED4 = !LED4;delay_ms(500);}
  32.    P2 = 0xfd;
  33.    if(P24 == 0){LED5 = !LED5;delay_ms(500);}
  34.       else if(P25 == 0){LED6 = !LED6;delay_ms(500);}
  35.       else if(P26 == 0){LED7 = !LED7;delay_ms(500);}
  36.       else if(P27 == 0){LED8 = !LED8;delay_ms(500);}
  37.    P2 = 0xfb;
  38.    if(P24 == 0){LED9 = !LED9;delay_ms(500);}
  39.       else if(P25 == 0){LED10 = !LED10;delay_ms(500);}
  40.       else if(P26 == 0){LED11 = !LED11;delay_ms(500);}
  41.       else if(P27 == 0){LED12 = !LED12;delay_ms(500);}
  42.    P2 = 0xf7;
  43.    if(P24 == 0){LED13 = !LED13;delay_ms(500);}
  44.       else if(P25 == 0){LED14 = !LED14;delay_ms(500);}
  45.       else if(P26 == 0){LED15 = !LED15;delay_ms(500);}
  46.       else if(P27 == 0){LED16 = !LED16;delay_ms(500);}
  47.   }

  48. }

  49. void delay_ms(unsigned int dt)
  50. {
  51. register unsigned char bt,ct;
  52. for (;dt;dt--)
  53.    for(ct=2;ct;ct--)
  54.       for(bt=250;--bt;);
  55. }
復(fù)制代碼

所有資料51hei提供下載:
矩陣鍵盤控制led燈.rar (36.5 KB, 下載次數(shù): 106)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:887405 發(fā)表于 2021-3-1 18:21 | 顯示全部樓層
謝謝分享!正在學(xué)習(xí)這個(gè)
回復(fù)

使用道具 舉報(bào)

ID:887405 發(fā)表于 2021-3-1 18:22 | 顯示全部樓層
謝謝分享!正在學(xué)習(xí)這個(gè)!就是還不理解,學(xué)習(xí)中……
回復(fù)

使用道具 舉報(bào)

ID:839835 發(fā)表于 2021-3-2 16:46 | 顯示全部樓層
建議題主把sbit led=p0;改為uint16_t,用一個(gè)16位數(shù)據(jù)保存16個(gè)led口。比如
    uint16_t led=P0;
    led=P3|(led<<8);
    然后led就可以保存所有16個(gè)口的數(shù)據(jù)狀態(tài)了,代碼直觀簡(jiǎn)潔
回復(fù)

使用道具 舉報(bào)

ID:883031 發(fā)表于 2021-3-4 14:51 | 顯示全部樓層
xunzhaod 發(fā)表于 2021-3-2 16:46
建議題主把sbit led=p0;改為uint16_t,用一個(gè)16位數(shù)據(jù)保存16個(gè)led口。比如
    uint16_t led=P0;
    led ...

好建議,
回復(fù)

使用道具 舉報(bào)

ID:500175 發(fā)表于 2021-5-4 23:08 | 顯示全部樓層
感謝感謝 確實(shí)很厲害 學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

ID:74649 發(fā)表于 2024-4-3 14:58 | 顯示全部樓層
果斷收藏,謝謝你的分享。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表