资讯详情

复习一下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', '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++; } }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台