專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

復習一下PS2鍵盤解碼(開發(fā)板上矩陣鍵盤不夠用,用電腦鍵盤吧)

作者:我行天下   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2014年03月31日   【字體:


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/**************1602部分******************/
sbit lcden=P1^2;
sbit lcdrs=P1^0;
sbit lcdrw=P1^1;
sbit psdat=P3^4;
sbit psclk=P3^3;
/*char code Tab[]={'0','1','2','3','4','5','6','7','8',
'9','A','B','C','D','E','F'};*/
char code Tab[]="0123456789abcdef";
uchar key[3];
uchar numbit,keyv,keynum,m,n,o,p,q,r;
void delay(uint z) //延時子程序
{
  uint x,y;
  for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}

void write_com(uchar com)//定義一個帶參數(shù)的寫命令子程序
{
 lcdrs=0; //1602的rs為0時,接收命令,為1時接收數(shù)據(jù)
 P0=com;//把void write_com(uchar com)中的COM中的數(shù)據(jù)給P0口
 delay(2);
 lcden=1;
 delay(2);
 lcden=0;
 delay(2);
}
 

void init_1602()//定義一個初始化子程序
{
 lcden=0;
 lcdrw=0;
 write_com(0x38);//調(diào)用 write_com子程序并把0x38賦給P0口,顯示模式打開
 write_com(0x0f);//調(diào)用 write_com子程序并把“開顯示,顯示光標,光標閃爍”指令碼賦給P0口
 write_com(0x06);//調(diào)用 write_com子程序并把“地址指針加1,整屏不移動”指令碼賦給P0口
 write_com(0x80);//數(shù)據(jù)指針初始化,讓指針指向最左端,顯示從第一行開始
 write_com(0x01);//調(diào)用 write_com子程序并把"清零指"令碼賦給P0口
 }
 
void write_dat(uchar dat)//定義一個帶參數(shù)的寫數(shù)據(jù)子程序
{
 lcdrs=1; //1602的rs為0時,接收命令,為1時接收數(shù)據(jù)
 P0=dat;//把void write_shu(uchar shu)中的COM中的數(shù)據(jù)給P0口
 delay(2);
 lcden=1;
 delay(2);
 lcden=0;
 delay(2);
}
 
/******************/
 
void main()
{
 init_1602();
 IT1=1;//接P3^3,所以用外部中斷1,用下降沿IT1=0是用低電平
 EX1=1;// 打開外部中斷1。
 EA=1;//打開總中斷
 while(1)
     {
   if(keynum==3)
     {
    keynum=0;
    m=key[0]/16;
    n=key[0]%16;
    o=key[1]/16;
    p=key[1]%16;
    q=key[2]/16;
    r=key[2]%16;
  write_com(0x80);
     write_dat(Tab[m]);
     write_dat(Tab[n]);
  write_dat(Tab[o]);
  write_dat(Tab[p]);
  write_dat(Tab[q]);
  write_dat(Tab[r]);
  }
 
  }
}
void int1() interrupt 2
{
 if((numbit>0)&&(numbit<9))
  {
   keyv=keyv>>1;
   if(psdat)
     keyv=keyv|0x80;
  }
  numbit++;
     if(numbit>10)
 
  {
  numbit=0;
  key[keynum]=keyv;
  keynum++;
  }
}
 

關(guān)閉窗口

相關(guān)文章