找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2039|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)程序只能掃描行 不能掃描列 求大神幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:667884 發(fā)表于 2019-12-25 09:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
30黑幣
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit B1=P3^6;
sbit B2=P3^7;
sbit buzzer=P3^5;
sbit clear=P3^4;       // ???????B1,B2,BUZZER,CLEAR
uchar code distab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code keytab[8][8]={{1,2,3,4,5,6,7,8},         // ????????
       {9,10,11,12,13,14,15,16},
       {17,18,19,20,21,22,23,24},
       {25,26,27,28,29,30,31,32},
       {33,34,35,36,37,38,39,40},
       {41,42,43,44,45,46,47,48},
       {49,50,51,52,53,54,55,56},
       {57,58,59,60,61,62,63,64},
      };      
uchar bed_NO;
uchar btime;
uchar itime;       //???????bed_NO??uchar btime??uchar itime
void delay(uint x)         //???????????
{   uint i,j;
for(i=0;i<x;i++)
{
  for(j=0;j<10;j++)
  {;;}
}
}
void display(void)        //??????????
{
uchar a10,a1;
a10=bed_NO/10;
a1=bed_NO%10;
P1=distab[a10];
B1=1;
delay(10);
B1=0;
P1=distab[a1];
B2=1;
delay(10);
B2=0;
}
void key(void)             //???????
{
uchar hang,lie;
P0=0x00;P2=0xff;
delay(1);         
if(P2!=0xff)
{
  delay(5);       //????5???????????
  if(P2!=0xff)
  {
   switch(P2&0xff)        //??????
    {
    case 0xfe:lie=0;break;
    case 0xfd:lie=1;break;
    case 0xfb:lie=2;break;
    case 0xf7:lie=3;break;
    case 0xef:lie=4;break;
    case 0xdf:lie=5;break;
    case 0xbf:lie=6;break;
    case 0x7f:lie=7;break;
    }
  P2=0xff;P0=0xff;
  switch(P0&0xff)       // ??????
    {
    case 0xfe:hang=0;break;
    case 0xfd:hang=1;break;
    case 0xfb:hang=2;break;
    case 0xf7:hang=3;break;
    case 0xef:hang=4;break;
    case 0xdf:hang=5;break;
    case 0xbf:hang=6;break;
    case 0x7f:hang=7;break;
    }
  P2=0xff;P0=0x00;
  while(P2!=0xff);
  bed_NO=keytab[hang][lie];TR0=1;       //??????????bed_NO
  }
else
  bed_NO=0;
}  
}
void time_init(void)        // ????????????
{
TMOD=0x01;
TH0=(65536-8333)/256;        //  ?????
TL0=(65536-8333)%256;
EA=1;
ET0=1;
}
void time(void) interrupt 1 using 1      // ?????ж??
{
TH0=(65536-8333)/256;
TL0=(65536-8333)%256;
itime++;
if(itime>=100)
{
  itime=0;
  btime++;
  if(btime>3){TR0=0;btime=0;}
  buzzer=!buzzer;
}
}
void main(void)
{
time_init();
for(;;)
{
  key();
  display();
  if(TR0==0){buzzer=1;}
  if(clear==0)           //???????????
  {
   delay(10);
   if(clear==0)
   {
    bed_NO=0;
   }
   }
}
}

新建文件夾.rar

42.52 KB, 下載次數(shù): 6

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:437615 發(fā)表于 2019-12-25 17:34 | 只看該作者
你這問的,什么叫只能掃描行 不能掃描列,問的也不清楚,如果說的是這個(gè)二維數(shù)組,二維數(shù)組是沒有多行單列這種概念的
回復(fù)

使用道具 舉報(bào)

板凳
ID:584814 發(fā)表于 2019-12-26 18:21 | 只看該作者
zhy123654 發(fā)表于 2019-12-25 17:34
你這問的,什么叫只能掃描行 不能掃描列,問的也不清楚,如果說的是這個(gè)二維數(shù)組,二維數(shù)組是沒有多行單列 ...

可能指8*8鍵盤只掃到行出不了列的意思,這樣的程序網(wǎng)上大把可找。
回復(fù)

使用道具 舉報(bào)

地板
ID:636210 發(fā)表于 2019-12-26 20:27 | 只看該作者
這程序出錯(cuò)了,P0=0xff;
  switch(P0&0xff)       //
這個(gè)P0已經(jīng)給值了,后面一名開關(guān)語言還有什么用。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表