屏幕截圖(109).png (459.02 KB, 下載次數: 64)
下載附件
2019-7-24 17:44 上傳
屏幕截圖(108).png (314.74 KB, 下載次數: 70)
下載附件
2019-7-24 17:44 上傳
屏幕截圖(110).png (309.2 KB, 下載次數: 69)
下載附件
2019-7-24 17:44 上傳
單片機源程序如下:
- /*讀取鍵盤值(先讀行,后讀列,兩兩相加,再來個switch判斷,函數返回值0-15)
- --> 若有鍵按下 P2顯示0-f -->判斷是否松開按鍵,沒松開等待,松開返回程序
- 起始位置
- */
- #include <reg51.h>
- #include "delay.h"
- #define unit unsigned int
- #define uchar unsigned char
- uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
- 0x77,0x7c,0x39,0x5e,0x79,0x71,};//0-f 共陰數碼管
- uchar key;
- uchar i,j;
- uchar keycl()//讀取鍵盤的函數(注:子函數最好放在main前,這樣就不用申明)
- {
- uchar a,b;
- P1=0x0f;
- i=P1;//讀取P1低4位,放在i
- P1=0xf0;
- j=P1;//不用說也知道吧
- a=i+j;//行+列
- switch(a)//16種情況
- {
- case 0x7e:b=0;break;
- case 0xbe:b=1;break;
- case 0xde:b=2;break;
- case 0xee:b=3;break;
- case 0x7d:b=4;break;
- case 0xbd:b=5;break;
- case 0xdd:b=6;break;
- case 0xed:b=7;break;
- case 0x7b:b=8;break;
- case 0xbb:b=9;break;
- case 0xdb:b=10;break;
- case 0xeb:b=11;break;
- case 0x77:b=12;break;
- case 0xb7:b=13;break;
- case 0xd7:b=14;break;
- case 0xe7:b=15;break;
- default:b=0xff ;break;
- }
- return(b);//函數返回值
- }
- void main()
- {
- P2=0x00;//數碼管啥都不顯示
- while(1)
- {
- key=keycl();//讀鍵盤值,key=函數返回值
- if(key!=0xff)//有鍵按下么?
- {
- delay(5);
- if(key!=0xff)//真的有么?有的 就繼續往下走
- {
-
- P2=led[key];
- while(P1!=0xf0);//你松開了按鍵么?沒就在這等著
- do{delay(5);}
- while(P1!=0xf0);//你真的松開了么?假的就等著
- }
- }
- }
- }
復制代碼
所有資料51hei提供下載:
矩陣鍵盤.zip
(45.33 KB, 下載次數: 40)
2019-7-24 17:43 上傳
點擊文件名下載附件
c+protues仿真 下載積分: 黑幣 -5
|