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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1535|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

模塊化的單片機(jī)矩陣按鍵掃描及顯示程序與Proteus仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <reg51.h>
  2. #include "delay.h"
  3. #include "seg.h"
  4. #include "key.h"

  5. main()
  6. {
  7.     while(1)
  8.     {
  9.         seg(1, (key() % 10));
  10.         seg(2, (key() / 10));
  11.     }
  12. }
復(fù)制代碼
  1. #include <reg51.h>
  2. #include "delay.h"
  3. unsigned char SEG[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90};
  4. void seg(unsigned char i,unsigned char z)
  5. {
  6. switch (i)
  7. {
  8.         case 1:P3=0x01;break;
  9.         case 2:P3=0x02;break;
  10. }
  11. P1=SEG[z];
  12. //delay(2);
  13. //P1=0xff;
  14. }
復(fù)制代碼
  1. #include <reg51.h>
  2. #include "delay.h"
  3. sbit key1=P2^4;
  4. sbit key2=P2^5;
  5. sbit key3=P2^6;
  6. sbit key4=P2^7;

  7. int key()
  8. {
  9. unsigned char kk,i;
  10. for(i=0;i<4;i++)
  11. {
  12. P2=~(0x01<<i);
  13. delay(2);
  14. if(key1==0){delay(2);while(key1==0);delay(2);kk=1+i*4;}
  15. if(key2==0){delay(2);while(key2==0);delay(2);kk=2+i*4;}
  16. if(key3==0){delay(2);while(key3==0);delay(2);kk=3+i*4;}
  17. if(key4==0){delay(2);while(key4==0);delay(2);kk=4+i*4;}
  18. }
  19. return kk;
  20. }
復(fù)制代碼

Keil代碼與Proteus8.13仿真下載:
8x8按鍵掃描.zip (72.07 KB, 下載次數(shù): 15)

評(píng)分

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

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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