欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機矩陣鍵盤輸入三位數
[打印本頁]
作者:
2983606955
時間:
2020-12-22 09:33
標題:
單片機矩陣鍵盤輸入三位數
矩陣鍵盤輸入三位數:可以輸入百位數
#include <reg52.h>
#include "text.h"
uchar key; //按鍵值,按鍵結果
uchar count; //標志位, 按鍵次數
uint temp,end;
uchar i; //數碼管顯
uchar prin[6];
uchar code srceen[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數碼管顯示
/********************************延時**************************************/
void delay(uchar j)
{
uchar i=10;
for(;j>0;j--)
for(;i>0;i--);
}
/**************************數碼管顯示函數********************************/
void DigDisplay()
{
prin[2]=srceen[temp%1000/100]; //千位
prin[1]=srceen[temp%100/10]; //百位
prin[0]=srceen[temp%10]; //個位
for(i=0;i<3;i++) //利用循環點亮不同數碼管
{
switch(i) //位選,選擇點亮的數碼管
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3
}
P0=prin[i];
delay(7); //間隔一段時間掃描
P0=0X00;//消隱
}
}
/**************************矩陣鍵盤********************************/
void keyill()
{
P1=0x0f;
if(P1!=0x0f)//讀取按鍵是否按下
{
delay(12);
if(P1!=0x0f)//再次檢測鍵盤是否按下
{
//測試列
P1=0X0F;
switch(P1)
{
case(0X07): key=1;break;
case(0X0b): key=2;break;
case(0X0d): key=3;break;
case(0X0e): key=4;break;
}
P1=0XF0;
switch(P1)
{
case(0X70): key=key;break;
case(0Xb0): key=key+4;break;
case(0Xd0): key=key+8;break;
case(0Xe0): key=key+12;break;
}
}
if(key==10) key=0; //S10--> 0
if(key<10) count++; //S1-S10內輸入次數
if(count==4) end=0,count=1; //防止第四次輸入,變為第一次
if(key<10) end=(end*10)+key; //保證S1-S10內輸入
if(key==11) count=0,end=0; //提前結束輸入
while(P1!=0xf0); //檢測按鍵松手檢測
{
temp=end;
DigDisplay(); //數碼管顯示函數
}
}
}
/*******************************主函數******************************************/
void main ()
{
while(1)
{
keyill();
DigDisplay(); //數碼管顯示函數
}
}
復制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1