4x4按键c语言,52单片机C语言4X4键盘.docx

52单片机C语言4X4键盘

4*4#include#include#define ulong unsigned long宏定义#define uint unsigned int#define uchar unsigned char#define ajk P1//定义按键口#define xsk P0//定义显示口sbit e=P2^7;//显示控制口sbit cs2=P2^6;sbit cs1=P2^5;uint jm,shi=0x0b,ge=0x0b,dxkz=0xff,wxkz=0xfe,z;uchar code tab1[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77,};uchar code tab2[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0xff,};void anjjc();//按键处理void delay(uint z);//申明/***************主程序******************/void main(){TMOD=0x01;//中断初始化TH0=(65536-500)/256;TL0=(65536-500)%256;EA=1;ET0=1;TR0=1;while(1){anjjc();//调用按键扫描}}/****************矩阵扫描*****************/void anjjc(){uchar aa;ajk=0xf0;//列为1横为0aa=ajk;if(aa!=0xf0)//判断是否按下{delay(5);//去抖动ajk=0xf0;aa=ajk;if(aa!=0xf0)//在判断是否按下{uchar j,i=0,k,ajkkz=0xfe;for(k=4;k>0;k--)//逐行为0控制{ajk=ajkkz;aa=ajk;for(j=4;j>0;j--){if(aa==tab1[i])//逐列查数组是否相等jm=i;//相等则i就是键码i++;//不等加1}ajkkz=_crol_(ajkkz,1);//左移使下一行为0,在查}}shi=jm/10;//十位数据处理ge=jm%10;//个位数据处理}}/*************数码管控制********************/void xst0() interrupt 1//中断显示{switch(wxkz)//位选控制段选数值{case 0xfe:dxkz=ge;break;case 0xfd:dxkz=shi;break;}e=0;cs2=0;xsk=0xff;e=1;cs2=1;e=0;cs1=0;xsk=tab2[dxkz];e=1;cs1=1;e=0;cs2=0;xsk=wxkz;e=1;cs2=1;wxkz=_crol_(wxkz,1);//位选控制if(wxkz==0xfb)//显示位数控制wxkz=0xfe;TH0=(65536-500)/256;TL0=(65536-500)%256;}/*************延时程序********************/void delay(uint z)//延时{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值