Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
仿真.png (116.79 KB, 下載次數(shù): 104)
下載附件
2017-5-31 13:10 上傳
文件夾.png (115.27 KB, 下載次數(shù): 68)
下載附件
2017-5-31 13:10 上傳
單片機代碼:
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define SCANPORT P1
- sbit spk=P3^0;
- uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f,
- 0x77,0x7c,0x39,0x5e,0x79,
- 0x71};
- uchar uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};
- uchar ucKeyScan()
- {
- uchar Temp=0;
- uchar ucRow=0,ucLine=0;
- for(ucLine=0;ucLine<4;ucLine++)
- {
- SCANPORT=uca_LineScan[ucLine];
- Temp=SCANPORT & 0x0F;
- if(Temp!=0x0F)
- {
- switch(Temp)
- {
- case 0x0E: ucRow=10;break;
- case 0x0D: ucRow=20;break;
- case 0x0B: ucRow=30;break;
- case 0x07: ucRow=40;break;
- default: ucRow=50;break;
- }
- break;
- }
- }
- SCANPORT=0x0F;
- return ucRow+ucLine+1;
- }
- void vKeyProcess(unsigned char ucKeyCode)
- {
-
- switch(ucKeyCode)
- {
- case 11:P0=table[0];spk=1;break; //'7'
- case 12:P0=table[1];spk=1;break; //'8'
- case 13:P0=table[2];spk=1;break;
- case 14:P0=table[3];spk=1;break;
-
- case 21:P0=table[4];spk=1;break; //'4'
- case 22:P0=table[5];spk=1;break; //'5'
- case 23:P0=table[6];spk=1;break;
- case 24:P0=table[7];spk=1;break;
-
- case 31:P0=table[8];spk=1;break; //'1'
- case 32:P0=table[9];spk=1;break; //'2'
- case 33:P0=table[10];spk=1;break;
- case 34:P0=table[11];spk=1;break;
- case 41:P0=table[12];spk=1;break; //'3'
- case 42:P0=table[13];spk=1;break;
- case 43:P0=table[14];spk=1;break; //'0'
- case 44:P0=table[15];spk=1;break; //'+'
- default:break;
- }
- }
- void main()
- {
- spk=0;
- P0=0;
-
- while(1)
- {
- vKeyProcess(ucKeyScan());
- spk=0;
- }
- }
復(fù)制代碼 全部資料下載地址:
數(shù)碼管顯示4×4鍵盤矩陣按鍵.rar
(57.22 KB, 下載次數(shù): 64)
2017-5-31 13:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|