欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)矩陣鍵盤輸入并顯示 仿真電路加c51程序
[打印本頁]
作者:
huihui123
時間:
2016-1-13 17:06
標(biāo)題:
單片機(jī)矩陣鍵盤輸入并顯示 仿真電路加c51程序
1.png
(19.35 KB, 下載次數(shù): 190)
下載附件
2016-1-13 22:23 上傳
0.png
(27.74 KB, 下載次數(shù): 181)
下載附件
2016-1-13 22:23 上傳
仿真電路加 c程序下載:
矩陣鍵盤.zip
(26.45 KB, 下載次數(shù): 21)
2016-1-13 17:04 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
源程序代碼預(yù)覽:
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit seg_sel=P1^4;
sbit bit_sel=P1^5;
#define DATA P0
u8 seg_tab[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,
};
u8 bit_tab[]={
0x80,0x40,0x20,0x10,
0x08,0x04,0x02,0x01,
};
void delay(unsigned int num)
{
unsigned int x,y;
for(x=num;x>0;x--)
for(y=110;y>0;y--);//延時1ms
}
void display_led(u8 which_bit,u8 which_numbe)
{
bit_sel=1;//D[7-0]=Q[7-0]P1^4片選信號鎖存器1
DATA=bit_tab[which_bit];//DATA=P0輸出which_bit8位
bit_sel=0;//BIT[7-0]=0x80
delay(1);
seg_sel=1;//P1^5片選信號鎖存器2啟動
DATA=seg_tab[which_numbe];//P0口輸出which_numbe8位
seg_sel=0;
delay(1);
}
u8 _key_scan (void)//按鍵識別函數(shù)
{
u8 temp,temp2;
P2=0xf0;//讓P2輸出0xf0
temp=P2;//讀入P2的值
if(temp!=0xf0)//當(dāng)P2不等于0xf0
{
delay(5);//延遲5ms
temp=P2;//在讀入P2值
if(temp!=0xf0)//如果P2不等于0xf0
{ //說明有按鍵按下
temp2=temp&0xf0;//取出P2口高4位
P2=0x0f;//在P2=0x0f
delay(1);
temp=P2;//讀入P2口值
temp2=temp2|temp;//保留低4位并
return temp2;
}//while(P2!=0xf0);//等待 //并與取出的高4位與
}
}
u8 encolde(u8 cod)//解碼函數(shù)
{
u8 num;
switch(cod)
{
case 0xee:num=0;break;//11101110
case 0xde:num=1;break;//11011110
case 0xbe:num=2;break;//10111110
case 0x7e:num=3;break;//01111110
// case 0xed: num=4; break;//11101101
case 0xed:num=4;break;
case 0xdd:num=5;break;//11011101
case 0xbd:num=6;break;//10111101
case 0x7d:num=7;break;//01111101
case 0xeb:num=8;break;//11101011
case 0xdb:num=9;break;//11011011
case 0xbb:num=10;break;//10111011
case 0x7b: num = 11; break;//01111011
case 0xe7: num = 12; break;//11100111
case 0xd7:num=13;break;//11010111
case 0xb7:num=14;break;//10110111
case 0x77:num=15;break;//01110111
default : break;//無影響
}
return num;
}
void main (void)
{
u8 cod, num;
P0=0xff;
P1=0xff;//初始化P1;P2
seg_sel=0;//IE禁止 鎖存
bit_sel=0;
while(1)
{
cod=_key_scan();
num=encolde(cod);
display_led(1,num);
}
}
復(fù)制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1