按下矩陣鍵盤中數字鍵,讓點陣顯示相應數字,按下字符F鍵,則把點陣清屏,再按數字鍵,點陣又顯示相應數字。
單片機仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (13.98 KB, 下載次數: 48)
下載附件
2018-10-19 19:47 上傳
0.png (55.02 KB, 下載次數: 44)
下載附件
2018-10-19 19:47 上傳
單片機源程序:
- #include<reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
- uchar code KEY_TABLE[]={ 0xee,0xde,0xbe,0x7e,
- 0xed,0xdd,0xbd,0x7d,
- 0xeb,0xdb,0xbb,0x7b,
- 0xe7,0xd7,0xb7,0x77};//鍵盤表
- uchar code M[16][8]=
- {
- {0x0,0x3C,0x24,0x24,0x24,0x24,0x24,0x3C,},
- {0x0,0x8,0x8,0x8,0x8,0x8,0x8,0x8,},
- {0x0,0x3C,0x4,0x4,0x3C,0x20,0x20,0x3C,},
- {0x0,0x3C,0x4,0x4,0x3C,0x4,0x4,0x3C,},
- {0x0,0x24,0x24,0x34,0x3C,0x4,0x4,0x4,},
- {0x0,0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,},
- {0x0,0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,},
- {0x0,0x3C,0x4,0x4,0x4,0x4,0x4,0x4,},
- {0x0,0x3C,0x24,0x24,0x3C,0x24,0x24,0x3C,},
- {0x0,0x3C,0x24,0x24,0x3C,0x4,0x4,0x3C,},
- {0x0,0x3C,0x4,0x4,0x3C,0x24,0x24,0x3C,},
- {0x0,0x20,0x20,0x20,0x3C,0x24,0x24,0x3C,},
- {0x0,0x0,0x0,0x3C,0x20,0x20,0x20,0x3C,},
- {0x0,0x4,0x4,0x4,0x3C,0x24,0x24,0x3C,},
- {0x0,0x3C,0x24,0x24,0x3C,0x20,0x20,0x3C,},
- {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}
- };
- //延時函數
- void delayms(unsigned int xms)
- {
- unsigned int i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
- unsigned char cnta,num;
- main()
- {
- uchar temp,key,i;
- while(1)
- {
- P3=0xf0;//置行為0,列為1,讀列值。
- if(P3!=0xf0)//判斷有,無鍵盤按下
- {
- delayms(150);//消振
- if(P3!=0xf0)//如果if的值為真,這時可以確定有鍵盤按下
- {
-
- temp=P3;//存儲列讀入的值
- P3=0x0f;//置列為0,行為1,讀行值。
- key=temp|P3;//將行,列值綜合,賦給key。
- for(i=0;i<16;i++)
- if(key==KEY_TABLE[i])//讀鍵盤表,確定讀入的按鍵值
- {num=i;break;}
- {
- TMOD=0x01;
- TH0=(65536-4000)/256;
- TL0=(65536-4000)%256;
- TR0=1;
- ET0=1;
- EA=1;
- while(i!=num);
- }
- }
- }
- }
- }
- void t0(void) interrupt 1 using 0
- {
- TH0=(65536-4000)/256;
- TL0=(65536-4000)%256;
- P1=tab[cnta];
- P0=M[num][cnta];
- cnta++;
- if(cnta==8)
- {
- cnta=0;
- }
- //delayms(1000);
- }
復制代碼
全部資料51hei下載地址:
矩陣鍵盤顯示.zip
(64.05 KB, 下載次數: 52)
2018-10-19 16:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|