找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4117|回复: 1
收起左侧

Key.h头文件下载-AVR系列单片机的4*4小键盘驱动头文件

[复制链接]
ID:71259 发表于 2014-12-30 12:51 | 显示全部楼层 |阅读模式
在代码下方点复制代码,然后另存到电脑磁盘即可下载.


  1. /*****************************************************************************

  2.       单    位:广西民族大学物理与电子工程学院07物本班
  3.       文件名称:Key.h
  4.       文件标识:_KEY_H_
  5.       摘    要:AVR系列单片机的4*4小键盘驱动头文件
  6.       当前版本:V1.0
  7.       作    者: 【白 羽】
  8.       完成日期:2010年5月1日

  9. *****************************************************************************/
  10. #ifndef  _KEY_H_
  11. #define  _KEY_H_

  12. #include <BaiYuAvrKu\DataType.h>
  13. #include <BaiYuAvrKu\PORT.H>

  14. /*****************************************************************************
  15. 编绎控制:以下条件编绎语句保证只有在IO端口正确配置的情况下,才引用并编绎本文件
  16. *****************************************************************************/
  17. #if !defined(KEY_PORT)&&!defined(KEY_LINE)&&!defined(KEY_ROW)
  18.    #define  KEY_LINE    P(PORTB,L)
  19.    #define  KEY_ROW     P(PORTB,H)
  20. #elif defined(KEY_PORT)&&!defined(KEY_LINE)&&!defined(KEY_ROW)
  21.    #define  KEY_LINE    P(KEY_PORT,L)
  22.    #define  KEY_ROW     P(KEY_PORT,H)
  23. #elif defined(KEY_LINE)&&defined(KEY_ROW)&&!defined(KEY_PORT)
  24. #else
  25.    #error   您没有正确设置key.h与AVR单片机的连接
  26. #endif


  27. /*****************************************************************************
  28. 常用控制命令
  29. *****************************************************************************/
  30. #define  KeyInit()   do{OUTS(KEY_LINE);OUTS(KEY_ROW);}while(0)    //键盘初始化
  31. UINT8    GetKey(void);                                            //读取按键值

  32. /*****************************************************************************
  33. 获取按键值

  34. 这种方法稍复杂,但抗干扰能力很强
  35. *****************************************************************************/
  36. UINT8 GetKey(void)
  37. {
  38.    UINT8 i;
  39.    UINT8 temp;
  40.    UINT8 key=16;

  41.    SETS(KEY_ROW);
  42.    CLRS(KEY_ROW);

  43.    temp = (PBITS(KEY_LINE)==L) ? READS(KEY_LINE) : READS(KEY_LINE)>>4;

  44.    SETS(KEY_LINE);
  45.    CLRS(KEY_LINE);
  46.    temp |= (PBITS(KEY_ROW)==H) ? READS(KEY_ROW) : READS(KEY_ROW)<<4;

  47.    for(i = 0; i < 8; temp >>= 1, i++)
  48.    {
  49.       if((temp & BIT(0)) && (i < 4))   key = i << 2;
  50.       else if((temp & BIT(0)) && (i < 8))   key|=i-4;
  51.    }

  52.    return key;
  53. }



  54. #endif
复制代码



回复

使用道具 举报

ID:477269 发表于 2019-3-2 22:12 | 显示全部楼层
谢谢分享          
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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