⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t19.c

📁 51系列单片机在基本的开发例程
💻 C
字号:
/* t19.c 点对点通信--发送机 */
/* 将键盘获取的字符由串口发送出去 */
#include <reg51.h>
unsigned char key;
unsigned int i,j;
unsigned char led[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
                       0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
sbit bb=P3^7;

void delay(i)
{while(i--)
  {j=7650;while(j--);}
}

/* 键盘扫描码转换为字符显示码 */
unsigned char keyc(n)
unsigned char n;
{switch(n)
  {case 0x11:return(0);break;
   case 0x12:return(1);break;
   case 0x14:return(2);break;
   case 0x18:return(3);break;
   case 0x21:return(4);break;
   case 0x22:return(5);break;
   case 0x24:return(6);break;
   case 0x28:return(7);break;
   case 0x41:return(8);break;
   case 0x42:return(9);break;
   case 0x44:return(10);break;
   case 0x48:return(11);break;
   case 0x81:return(12);break;
   case 0x82:return(13);break;
   case 0x84:return(14);break;
   case 0x88:return(15);break;
  }
}

/* 延时 10ms */
void dlms(void)
{ unsigned int i;
  for(i=0;i<765;i++);}

/* 键盘扫描函数 */
unsigned char kbscan(void)
{ unsigned char sccode,recode;
  P1=0xf0;
  if((P1&0xf0)!=0xf0)
   { dlms();
     if((P1&0xf0)!=0xf0)
      { sccode=0xfe;
        while((sccode&0x10)!=0)
         { P1=sccode;
           if((P1&0xf0)!=0xf0)
            { recode=(P1&0xf0)|0x0f;
              return((~sccode)+(~recode));
            }
           else
            sccode=(sccode<<1)|0x01;
         }
      }
   }
  return(0);
}


void main(void)
{P0=0xf9;P2=0x92;delay(10);P0=0xff;P2=0xff;
 TMOD=0x20;			/* 为串口设T/C1为定时方式2 */
 TH1=0xfd;TL1=0xfd;		/* 设定波特率9600,fosc=11.0592MHz */
 SCON=0x50;			/* 串行口工作方式1 */
 TR1=1;

 while(1)
  { key=kbscan();       /* 去键盘扫描码 */
    if(key!=0)
     { key=keyc(key);           /* 或取键盘字符 */
       bb=0;delay(1);bb=1;
       P0=led[key>>4];		/* 显示键盘字符 */
       P2=led[key&0x0f];
       SBUF=key;       		/* 发送键盘字符 */
       while(TI==0);
       TI=0;
       delay(5);
     }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -