资源描述:
《单片机应用ps-2键盘的实例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、单片机应用PS/2键盘的实例
2、第1500)this.style.ouseg(this)">SMC1602A(16*2)模拟口线接线方式连接线图:---------------------------------------------------
3、LCM-----51
4、LCM-----51
5、LCM------51
6、--------------------------------------------------
7、
8、DB0-----P1.0
9、DB4-----P1.4
10、R或11.0592M晶振,实测使用11.0592M][Keil
11、uV27.01编译运行通过程序中没有做键盘数据的奇偶校验]=============================================================*/#include#include"scancodes.h"#defineLCM_R_RSP2_1#defineLCM_EP2_2#defineLCM_DataP1#defineKey_DataP3_4//定义Keyboard引脚#defineKey_CLKP3_3#defineBusy0x80//用于检测LCM状态字中的Busy标识voidLCMI
12、nit(void);voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData);voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);voidDelay5Ms(void);voidDelay400Ms(void);voidDecode(unsignedcharScanCode);void(unsignedchar);void(unsignedchar,BuysC);un
13、signedcharReadDataLCM(void);unsignedcharReadStatusLCM(void);unsignedcharcodecdle_[]={".cdle.--"};unsignedcharcodeemail[]={"pnz=0;//中断次数计数staticunsignedcharKeyV;//键值staticunsignedcharDisNum=0;//显示用指针staticunsignedcharKey_UP=0,Shift=0;//Key_UP是键松开标识,Shift是Shift键按下标识sta
14、ticunsignedcharBF=0;//标识是否有字符被收到voidmain(void){unsignedcharTempCyc;Delay400Ms();//启动等待,等LCM讲入工作状态LCMInit();//LCM初始化Delay5Ms();//延时片刻(可不要)DisplayListChar(0,0,cdle_);DisplayListChar(0,1,email);ReadDataLCM();//测试用句无意义for(TempCyc=0;TempCyc<10;TempCyc++)Delay400Ms();//
15、延时DisplayListChar(0,1,Cls);IT1=0;//设外部中断1为低电平触发EA=1;EX1=1;//开中断do{if(BF)Decode(KeyV);elseEA=1;//开中断}andLCM(unsignedchar,BuysC)//BuysC为0时忽略忙检测{if(BuysC)ReadStatusLCM();//根据需要检测忙LCM_Data=;LCM_RS=0;LCM_R_E=0;LCM_E=0;LCM_E=1;}//读数据unsignedcharReadDataLCM(void){LCM_RS=1;L
16、CM_R_E=0;LCM_E=0;LCM_E=1;return(LCM_Data);}//读状态unsignedcharReadStatusLCM(void){LCM_Data=0xFF;LCM_RS=0;LCM_R_E=0;LCM_E=0;LCM_E=1;p;Busy);//检测忙信号return(LCM_Data);}voidLCMInit(void)//LCM初始化{LCM_Data=0;(0x38,0);//三次显示模式设置,不检测忙信号Delay5Ms();(0x38,0);Delay5Ms();(0x38,0);De
17、lay5Ms();(0x38,1);//显示模式设置,开始要求每次检测忙信号(0x08,1);//关闭显示(0x01,1);//显示清屏(0x06,1);//显示光标移动设置(0x0F,1);//显示开及光标设置}//按指定位置显示一个字符voidDisplay