123key.rar

  • PUDN用户
    了解作者
  • Borland C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 2
    下载次数
  • 2011-07-03 20:30
    上传日期
比较完整的矩阵键盘C51程序,使用数码管显示,将按键的抖动降低到最小。
123key.rar
  • 123key.c
    3.7KB
内容介绍
//程序名:单片机实验仪配套程序--矩阵键盘 //电路简介:1、用最右面的一个数码管显示按键值,其接线为: // 位选择7接P1.0 // 显示驱动74HC164的时钟clk接P1.1,数据dat接P1.2 // 2、矩阵键盘用P2口,高4位为行扫描,低4位为列扫描 // 01mcu 20060916 #include <reg51.h> #define Mkey P2 //矩阵键盘线 sbit c1=P2^0; //1列 sbit c2=P2^1; //2列 sbit c3=P2^2; //3列 sbit c4=P2^3; //4列 sbit r1=P2^4; //1行 sbit r2=P2^5; //2行 sbit r3=P2^6; //3行 sbit r4=P2^7; //4行 //----延时--------------- delay() { unsigned int i=5000; while(--i); } //----读键--------------- unsigned char M_key() { unsigned char t,r=0xa0; //t=返回数据,大于0x0f位无效 Mkey=0x0f; //参见原理图 0000 1111,行全=0,等待读列 if(Mkey!=0x0f) //不相等就是有键按下,若相等就不进行行、列扫描 { delay(); //延时消抖动 if(Mkey!=0x0f) { Mkey=0xff; //1111 1111 准备读矩阵 r1=0; //从第1行开始 t=Mkey&0x0f; //读取端口并保留列值 switch(t) { case 0x0e:{ //1110 r=0x01; //1键 }break; case 0x0d:{ //1101 r=0x02; //2键 }break; case 0x0b:{ //1011 r=0x03; //3键 }break; case 0x07:{ //0111 r=0x0c; //c键 }break; default:break; } r1=1; //恢复1行 r2=0; //2行开始 t=Mkey&0x0f; //功能同1行 switch(t) { case 0x0e:{ //1110 r=0x04; //4键 }break; case 0x0d:{ //1101 r=0x05; //5键 }break; case 0x0b:{ //1011 r=0x06; //6键 }break; case 0x07:{ //0111 r=0x0d; //d键 }break; default:break; } r2=1; //恢复2行 r3=0; //3行开始 t=Mkey&0x0f; //同上 switch(t) { case 0x0e:{ //1110 r=0x07; //7键 }break; case 0x0d:{ //1101 r=0x08; //8键 }break; case 0x0b:{ //1011 r=0x09; //9键 }break; case 0x07:{ //0111 r=0x0e; //e键 }break; default:break; } r3=1; //恢复3行 r4=0; //4行开始 t=Mkey&0x0f; //同上 switch(t) { case 0x0e:{ //1110 r=0x0a; //a键 }break; case 0x0d:{ //1101 r=0x00; //0键 }break; case 0x0b:{ //1011 r=0x0b; //b键 }break; case 0x07:{ //0111 r=0x0f; //f键 }break; default:break; } } } return(r); } //************************* main() { unsigned char x; display(6); while(1) { Mkey=0x0f; //参见原理图 0000 1111,行全=0,等待读列 if(Mkey!=0x0f) //不相等就是有键按下;若相等就不进行行、列扫描 { x=M_key(); if(x<=0x0f) //大于0x0f为无效键值 { display(x); //显示得到的键值 Mkey=0x0f; while(Mkey!=0x0f);//等待键抬起 } } } }
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...