標(biāo)題: 模塊化的單片機(jī)矩陣按鍵掃描及顯示程序與Proteus仿真圖 [打印本頁]

作者: 147258147    時(shí)間: 2023-4-24 20:01
標(biāo)題: 模塊化的單片機(jī)矩陣按鍵掃描及顯示程序與Proteus仿真圖
仿真原理圖如下(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)





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1