复习一下PS2键盘解码

发布者:daasddla最新更新时间:2015-04-27 来源: 51hei关键字:PS2  键盘解码 手机看文章 扫描二维码
随时随地手机看文章
#include

#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)//定义一个带参数的写命令子程序
{
 lcdrs=0; //1602的rs为0时,接收命令,为1时接收数据
 P0=com;//把void write_com(uchar com)中的COM中的数据给P0口
 delay(2);
 lcden=1;
 delay(2);
 lcden=0;
 delay(2);
}
 

void init_1602()//定义一个初始化子程序
{
 lcden=0;
 lcdrw=0;
 write_com(0x38);//调用 write_com子程序并把0x38赋给P0口,显示模式打开
 write_com(0x0f);//调用 write_com子程序并把“开显示,显示光标,光标闪烁”指令码赋给P0口
 write_com(0x06);//调用 write_com子程序并把“地址指针加1,整屏不移动”指令码赋给P0口
 write_com(0x80);//数据指针初始化,让指针指向最左端,显示从第一行开始
 write_com(0x01);//调用 write_com子程序并把"清零指"令码赋给P0口
 }
 
void write_dat(uchar dat)//定义一个带参数的写数据子程序
{
 lcdrs=1; //1602的rs为0时,接收命令,为1时接收数据
 P0=dat;//把void write_shu(uchar shu)中的COM中的数据给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++;
  }
}

关键字:PS2  键盘解码 引用地址:复习一下PS2键盘解码

上一篇:红外解码程序(用1602显示码值)
下一篇:DS18B20与数码管程序

推荐阅读最新更新时间:2024-03-16 13:59

复习一下PS2键盘解码
#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&#
[单片机]
AVR单片机读PS2鼠标
如果该程序已验证过的,用的是AVR系列单片机的IO口模拟PS2协议。 #include iom8v.h #include macros.h #include myh.h //MOUSE //时钟接CLK:5--INT0--PD2 #define PINMCLK (PIND&BIT2) #define PRTMCLK_H {DDRD&=NBIT2;PORTD|=BIT2;} #define PRTMCLK_L {DDRD|=BIT2;PORTD&=NBIT2;} //数据接DAT:1--PC4 #define PINMDAT (PINC&BIT4) #define PRTMDAT_H {DDRC&=N
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved