找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4093|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机矩阵键盘程序

[复制链接]
跳转到指定楼层
楼主
ID:109770 发表于 2016-3-23 00:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. #define KEY   P1                //用P1口控制4*4个矩阵键盘
  5. //------------------------------------------------
  6. uchar code duanma[17]={   //码表的定义
  7. 0x3f,0x06,0x5b,0x4f,
  8. 0x66,0x6d,0x7d,0x07,
  9. 0x7f,0x6f,0x77,0x7c,
  10. 0x39,0x5e,0x79,0x71
  11. };
  12. //------------------------------------------------
  13. void delay(uchar x)       //延时函数的定义
  14. {
  15. uchar y,z;
  16. for(y=x;y>0;y--)
  17.   for(z=110;z>0;z--);
  18. }
  19. //------------------------------------------------
  20. uchar kayscan()        //按键检测函数的定义
  21. {
  22. uchar keyvalue=0;           //键值的定义,并且用于返回
  23. uchar temp;     
  24. uchar and;
  25. temp=0x0f;      
  26. KEY=0x0f;
  27. if(KEY != 0x0f)    //检测按键是否被按下
  28. {
  29.   delay(10);    //延时10毫秒,以便消抖
  30.   if(KEY != 0x0f)   //再次检测按键是否被按下
  31.   {
  32.    and = KEY & temp;   //行检测
  33.    switch(and)   
  34.    {
  35.     case(0x0e) : keyvalue=0 ; break;  //第一行的按键被按下了
  36.     case(0x0d) : keyvalue=4 ; break;  //第二行的按键被按下了
  37.     case(0x0b) : keyvalue=8 ; break;  //第三行的按键被按下了
  38.     case(0x07) : keyvalue=12; break;  //第四行的按键被按下了
  39.    }
  40.    
  41.    temp=0xf0;      //列检测
  42.    KEY=0xf0;
  43.    and = KEY & temp;
  44.    switch(and)
  45.    {
  46.     case(0xe0) : keyvalue=keyvalue+0; break;  //第一列的按键被按下了
  47.     case(0xd0) : keyvalue=keyvalue+1; break;  //第二列的按键被按下了
  48.     case(0xb0) : keyvalue=keyvalue+2; break;  //第三列的按键被按下了
  49.     case(0x70) : keyvalue=keyvalue+3; break;  //第四列的按键被按下了
  50.    }
  51.   }
  52. }
  53. return(keyvalue);
  54. }
  55. //------------------------------------------------
  56. void main()               //主函数
  57. {      
  58. P0=0;                             //初始化,让所有led都灭
  59. while(1)
  60. {
  61.   P0=duanma[kayscan()];         //矩阵键盘的扫描,并且返回键值,赋值给P0
  62. }
  63. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表