資源簡(jiǎn)介
基于51單片機(jī)的記分器,外設(shè)利用資源為矩陣鍵盤,數(shù)碼管,蜂鳴器,單片機(jī)課程設(shè)計(jì)經(jīng)常的課題.
代碼片段和文件信息
#include
#define?uchar?unsigned?char
#define?uint?unsigned?int
sbit?led1=P2^4;
sbit?led2=P2^5;
sbit?led3=P2^6;
sbit?led4=P2^7;
uint?key;
int?a_scores;
int?b_scores;
uint?a_shi;
uint?a_ge;
uint?b_shi;
uint?b_ge;
uchar?shu;?//每次加減分?jǐn)?shù)?????
uchar?flag=0;?//判斷勝負(fù)標(biāo)志位???????????????????
uchar?code?table[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x90x71?};
//{0xc00xf90xa40xb00x990x920x820xf80x800x900x880x830xc60xa10x860x8e?};
void?delayxms(uint?xms)
{
uint?ij;
for(i=0;i for(j=0;j<110;j++);
}
void?key_scan()??//鍵盤掃描程序
{
uchar?temp;
????P1=0xfe;//給P1口送狀態(tài)1111?1110//掃描第1排
????temp=P1;
????temp=temp&0xf0;
if(temp!=0xf0)//延時(shí)10ms消抖確認(rèn)有鍵按下
{
?????????delayxms(10);
? ?temp=P1;?//再次讀i/o狀態(tài)?
?temp=temp&0xf0;
?if(temp!=0xf0)
? {
?temp=P1;//若有鍵按下高四位有一位拉低
?switch(temp)
? {
?case?0x7e:key=1;break;?//0111?1110??A隊(duì)加分??
?case?0xbe:key=2;break;?//1011?1110??A隊(duì)減分
?case?0xde:key=3;break;?//1101?1110??B隊(duì)加分
?case?0xee:key=4;break;?//1110?1110 ?B隊(duì)減分
}
? ?while(temp!=0xf0)//等待按鍵釋放未釋放則一直停留在這個(gè)語句
{
????? ?temp=P1;
?temp=temp&0xf0;
}
?????????????key=key; ?
}
}
??
????P1=0xfd;//給P1口送狀態(tài)1111?1101//掃描第2排
????temp=P1;
????temp=temp&0xf0;
if(temp!=0xf0)//延時(shí)10ms消抖
{
?????????delayxms(10);
? ?temp=P1;?//再次讀i/o狀態(tài)確認(rèn)有鍵按下?
?temp=temp&0xf0;
?if(temp!=0xf0)
? {
?temp=P1;//若有鍵按下高四位有一位拉低
?switch(temp)
? {
?case?0x7d:key=5;break;?//0111?1101??切換加減分?jǐn)?shù)????
?case?0xbd:key=6;break;?//1011?1101???預(yù)置分?jǐn)?shù)???
?case?0xdd:key=7;break;?//1101?1101???清零?
?case?0xed:key=8;flag=1;break;?//1110?1101?判斷 ?
}
?while(temp!=0xf0)//等待按鍵釋放未釋放則一直停留在這個(gè)語句
- 上一篇:ADXL335加速度傳感器
- 下一篇:無源定位學(xué)習(xí)代碼
評(píng)論
共有 條評(píng)論