|
這是我先前編寫(xiě)的數(shù)碼管顯示+矩陣按鍵程序:矩陣按鍵:按下4*4矩陣按鍵分別代表0~F;獨(dú)立按鍵K3為清屏按鍵,按下后數(shù)碼內(nèi)容清空。
電路原理圖如下:
單片機(jī)源程序如下:
- #include<reg51.h>
- #include<intrins.h>
- #define uchar unsigned char
- sbit k3=P3^5;
- uchar k;
- uchar duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e} ;
- void delays(s)
- {
- int i,j;
- for(i=s;i>0;i--)
- for(j=120;j>0;j--);
- }
- void keypros()
- {
- uchar a,b;
- P1=0xf0;
- delays(10) ;
- a=P1;
- P1=0x0f;
- delays(10);
- b=P1;
- a=a+b;
- switch(a)
- {
- case 0x7e:k=0;break;
- case 0xbe:k=1;break;
- case 0xde:k=2;break;
- case 0xee:k=3;break;
-
- case 0x7d:k=4;break;
- case 0xbd:k=5;break;
- case 0xdd:k=6;break;
- case 0xed:k=7;break;
-
- case 0x7b:k=8;break;
- case 0xbb:k=9;break;
- case 0xdb:k=10;break;
- case 0xeb:k=11;break;
-
- case 0x77:k=12;break;
- case 0xb7:k=13;break;
- case 0xd7:k=14;break;
- case 0xe7:k=15;break;
- }
- }
- void main()
- {
- P2=0x00;
- while(1)
- {
- if(k3==0)
- {
- delays(10);
- if(k3==0)
- {
- k=0xff;
- }
- }
- keypros();
- if(k!=0xff)
- {
- P0=duan[k];
- }
- else if(k==0xff)
- {
- P0=k;
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
實(shí)驗(yàn)三.zip
(17.46 KB, 下載次數(shù): 17)
2018-6-9 19:26 上傳
點(diǎn)擊文件名下載附件
實(shí)驗(yàn)程序
|
評(píng)分
-
查看全部評(píng)分
|