资源描述:
《4乘4的矩阵按键》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//////////////////////////////////////////////程序编写人:小艾QQ:873808971//程序编写时间:2012-4-23//程序实现的功能:矩阵的显示//////////////////////////////////////////////#include"reg52.h"#defineucharunsignedchar#defineuintunsignedintvoidtime(void);externvoiddisplay(unsignedchara,unsignedcharb
2、);externvoidchuli();//////////////主程序///////////////////////////////voidmain(){time();//定时器初始化子程序while(1){chuli();//处理子程序display(2,2);//显示子程序}}////////////定时器初始化///////////////////////////////////////voidtime(void){TMOD
3、=0X01;EA=1;ET0=1;TR0=1;}//////////////定时器处理/////
4、/////////////////////////////voidtimep0(void)interrupt1using1{TH0=(65536-20000)/256;TL0=(65536-20000)%256;}#include"reg52.h"#defineucharunsignedchar#defineuintunsignedint#definekeyP3externvoiddelay(unsignedintx);///////////按键处理子程序/////////////////////////////unsignedc
5、harkeyscan(void){charj,z;key=0x0f;//屏蔽高四位j=key&0x0f;//与if(j!=0x0f)//判断是否有按键按下{delay(400);//延时子程序if((key&0x0f)!=0x0f)//判断按键是否真正按下{j=key&0x0f;//把低四位的值给jkey=0xf0;//屏蔽低四位z=key&0xf0;//把高四位值给zif((key&0xf0)!=0xf0)//等待按键抬起switch(j
6、z)//散转查表{case0x7e:return0;break;case0x7d:retu
7、rn1;break;case0x7b:return2;break;case0x77:return3;break;case0xbe:return4;break;case0xbd:return5;break;case0xbb:return6;break;case0xb7:return7;break;case0xde:return8;break;case0xdd:return9;break;case0xdb:return10;break;case0xd7:return11;break;case0xee:return12;break;ca
8、se0xed:return13;break;case0xeb:return14;break;case0xe7:return15;break;default:return0xff;break;}}}return0xff;}#include"reg52.h"#defineucharunsignedchar#defineuintunsignedint#defineoutputP0unsignedcharcodewe[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedcharcode
9、du[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbitdu_la=P2^1;sbitwe_la=P2^0;unsignedchardu_l[8];//寄存器externvoiddelay(unsignedintx);///////////////显示子程序////////////////////////////////////voiddisplay(unsignedinta,unsignedb){uinti;//定义局部变量for(i=0;i
10、utput=we[i+a];//位送数据we_la=1;//开位选we_la=0;//锁位选output=du_l[i];//段选送数据du_la=1;//开段选du_la=0;//锁段选delay(200);//延时子程序output=0xff;