久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機矩陣鍵盤檢測程序-詳細注釋
[打印本頁]
作者:
daxiao
時間:
2015-3-21 16:47
標題:
51單片機矩陣鍵盤檢測程序-詳細注釋
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar table[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xBF};
//0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,-的顯示碼
sbit BEEP = P3^7; //蜂鳴器驅動線
uchar disp_buf; //顯示緩存
uchar temp; //暫存器
uchar key; //鍵順序嗎
/********以下是延時函數********/
void Delay_ms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時約xms毫秒
for(j=110;j>0;j--);
}
/*********以下是蜂鳴器響一聲函數********/
void beep()
{
BEEP=0; //蜂鳴器響
Delay_ms(100);
BEEP=1; //關閉蜂鳴器
Delay_ms(100);
}
/********以下是矩陣按鍵掃描函數********/
void MatrixKey()
{
P1=0xff;
P1=0xef; //置第1行P1.4為低電平,開始掃描第1行
temp=P1; //讀P1口按鍵
temp=temp & 0x0f; //判斷低4位是否有0,即判斷列線(P1.0~P1.3)是否有0
if (temp!=0x0f) //若temp不等于0x0f,說明有鍵按下
{
Delay_ms(10); //延時10ms去抖
temp=P1; //再讀取P1口按鍵
temp=temp & 0x0f; //再判斷列線(P1.0~P1.3)是否有0
if (temp!=0x0f) //若temp不等于0x0f,說明確實有鍵按下
{
temp=P1; //讀取P1口按鍵,開始判斷鍵值
switch(temp)
{
case 0xee:key=0;break;
case 0xed:key=1;break;
case 0xeb:key=2;break;
case 0xe7:key=3;break;
}
temp=P1; //將讀取的鍵值送temp
beep(); //蜂鳴器響一聲
disp_buf =table[key]; //查表求出鍵值對應的數碼管顯示碼,送顯示緩沖區disp_buf
temp=temp & 0x0f; //取出列線值(P1.0~P1.3)
while(temp!=0x0f) //若temp不等于0x0f,說明按鍵還沒有釋放,繼續等待
{
temp=P1; //若按鍵釋放,再讀取P1口
temp=temp & 0x0f;// 判斷列線(P1.0~P1.3)是否有0
}
}
}
P1=0xff;
P1=0xdf; //置第2行P1.5為低電平,開始掃描第2行
temp=P1;
temp=temp & 0x0f;
if (temp!=0x0f)
{
Delay_ms(10);
temp=P1;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P1;
switch(temp)
{
case 0xde:key=4;break;
case 0xdd:key=5;break;
case 0xdb:key=6;break;
case 0xd7:key=7;break;
}
temp=P1;
beep();
disp_buf =table[key];
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P1;
temp=temp & 0x0f;
}
}
}
P1=0xff;
P1=0xbf; //置第3行P1.6為低電平,開始掃描第3行
temp=P1;
temp=temp & 0x0f;
if (temp!=0x0f)
{
Delay_ms(10);
temp=P1;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P1;
switch(temp)
{
case 0xbe:key=8;break;
case 0xbd:key=9;break;
case 0xbb:key=10;break;
case 0xb7:key=11;break;
}
temp=P1;
beep();
disp_buf=table[key];
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P1;
temp=temp & 0x0f;
}
}
}
P1=0xff;
P1=0x7f; //置第4行P1.7為低電平,開始掃描第4行
temp=P1;
temp=temp & 0x0f;
if (temp!=0x0f)
{
Delay_ms(10);
temp=P1;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P1;
switch(temp)
{
case 0x7e:key=12;break;
case 0x7d:key=13;break;
case 0x7b:key=14;break;
case 0x77:key=15;break;
}
temp=P1;
beep();
disp_buf =table[key];
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P1;
temp=temp & 0x0f;
}
}
}
}
/********以下是主函數********/
main()
{
P0=0xff; //置P0口
P2=0xff; //置P2口
disp_buf=0xBF; //開機顯示"-"符號
while(1)
{
MatrixKey(); //調矩陣按鍵掃描函數
P0 = disp_buf; //鍵值送P0口顯示
Delay_ms(2); //延時2ms
P2 = 0x7f; //打開第8只數碼管
}
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美综合久久
|
99久久婷婷国产综合精品首页
|
日韩国产精品一区二区三区
|
日本成人中文字幕在线观看
|
欧美一区二区三区日韩
|
www.久久久.com
|
久久久视频在线
|
国产一区
|
亚洲黄色在线免费观看
|
欧美精品片
|
午夜大片
|
一级国产精品一级国产精品片
|
久综合
|
精品视频亚洲
|
日本成人中文字幕
|
国产在线精品一区
|
亚洲一区二区三区四区五区午夜
|
亚洲免费一区
|
aaa级片
|
99热在线播放
|
caoporn视频在线
|
午夜成人免费视频
|
干干天天
|
亚洲欧美激情国产综合久久久
|
久久久青草婷婷精品综合日韩
|
在线视频一区二区
|
欧美一级欧美三级在线观看
|
福利视频网址
|
欧美在线a
|
日日夜夜狠狠操
|
91视视频在线观看入口直接观看
|
国产免费一区二区三区网站免费
|
精品国产乱码久久久
|
自拍偷拍视频网
|
一区二区三区四区视频
|
国产免费视频在线
|
一级黄色片网站
|
久草福利
|
精品一区在线
|
国产精品免费一区二区三区四区
|
国产毛片毛片
|