MSP430和AT89C51单片机4x4键盘C程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSP430和AT89C51单片机4x4键盘C程序
本程序在一位上显示按键,如果多位显示主程序需要修高为多位显示。
本
程序软件包括去抖功能,没有注释说明。
#include#define uchar unsigned
char#define uint unsigned intuint key,i;uchar temp,temp1,ms,buff;uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};void delay(ms){while(ms--) {
for(i=0;i<120;i++); }}void B_key(){ temp1=0xfe; P1=temp1; if(P1!=temp1) { delay(10); if (P1!=temp1) { temp=P1; switch(temp) { case 0xee:key=0;break; case 0xde:key=1;break; case 0xbe:key=2;break; case 0x7e:key=3;break; default:break; } } } temp1=0xfd; P1=temp1; if(P1!=temp1) { delay(10); if (P1!=temp1) { temp=P1;switch(temp) { case 0xed:key=4;break; case 0xdd:key=5;break; case 0xbd:key=6;break; case 0x7d:key=7;break; default:break; } } } temp1=0xfb;
P1=temp1; if(P1!=temp1) { delay(10); if (P1!=temp1) { temp=P1; switch(temp) { case 0xeb:key=8;break; case 0xdb:key=9;break; case 0xbb:key=10;break;
case
0x7b:key=11;break; default:break; } } } temp1=0xf7; P1=temp1; if(P1!=temp1) { delay(10); if (P1!=temp1) { temp=P1;switch(temp) { case 0xe7:key=12;break; case 0xd7:key=13;break; case 0xb7:key=14;break; case 0x77:key=15;break;
default:break; } }
}}void main(){while(1){ B_key(); P2=tab[key]; P3=0x04;}}tips:感谢大家的阅读,
本文由我司收集整编。
仅供参阅!。