注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

耳朵的博客

做自己想做的人

 
 
 

日志

 
 

AVR 矩阵键盘程序源代码V1.0(原创)  

2010-09-12 01:22:58|  分类: AVR |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最新版本:

使用方法:放入工程,调用GetKeyValue,没按键时返回KEY_NULL,有按键时为按键字符,字符见文章最下面

Keyboard.h
/********** AVR 矩阵键盘扫描程序 *********
* 版本.........: 1.0
* 作者.........: 陈利栋
* 目标.........: AVR
* 文件名.......: Keyboard.h
* 编译器.......: AVR GCC 20100110
* 开发环境.....: AVR Studio V4.18
* 创建时间.....: 2010.09.12
* 最后修改.....: 2010.09.12
*****************************************/
#ifndef __KEYBOARD_H__
#define __KEYBOARD_H__
#include <avr/io.h>
#include <util/delay.h>
#define KEYBOARD_PORT        PORTA
#define KEYBOARD_DDR         DDRA
#define KEYBOARD_PIN         PINA
#define KEY_NULL             0xff
#define KEY_READY_COUNT      1000  //此值在不同环境下应适当调整(1 - 65535),值越小,灵敏度越高

extern unsigned char GetKeyValue(void);

#endif /* __KEYBOARD_H__ */
 
Keyboard.c

/********** AVR 矩阵键盘扫描程序 *********
* 版本.........: 1.0
* 作者.........: 陈利栋
* 目标.........: AVR
* 文件名.......: Keyboard.c
* 编译器.......: AVR GCC 20100110
* 开发环境.....: AVR Studio V4.18
* 创建时间.....: 2010.09.12
* 最后修改.....: 2010.09.12
*****************************************/
#include "Keyboard.h"

unsigned char _key_last = KEY_NULL;
unsigned int  _key_count = 0;

unsigned char KeyScan(void)
{
    unsigned char temp = 0;

    KEYBOARD_DDR = 0x0f;
    KEYBOARD_PORT = 0xf0;
    _delay_us(5);
    temp = KEYBOARD_PIN;

    KEYBOARD_DDR = 0xf0;
    KEYBOARD_PORT = 0x0f;
    _delay_us(5);
    temp |= KEYBOARD_PIN;

    if (temp != _key_last)
    {
        _key_count++;
        if (_key_count >= KEY_READY_COUNT)
        {
            _key_last = temp;
            _key_count = 0;
            return _key_last;
        }
    }
    else
    {
        _key_count = 0;
    }

    return KEY_NULL;
}

unsigned char GetKeyValue(void)
{
    switch (KeyScan())
    {    
        case KEY_NULLreturn KEY_NULL;
        case 0x77return '1';
        case 0x7Breturn '2';
        case 0x7Dreturn '3';
        case 0x7Ereturn 'A';
        case 0xB7return '4';
        case 0xBBreturn '5';
        case 0xBDreturn '6';
        case 0xBEreturn 'B';
        case 0xD7return '7';
        case 0xDBreturn '8';
        case 0xDDreturn '9';
        case 0xDEreturn 'C';
        case 0xE7return '*';
        case 0xEBreturn '0';
        case 0xEDreturn '#';
        case 0xEEreturn 'D';
        default  : return KEY_NULL;
    }
}

 
AVR 矩阵键盘程序源代码(原创) - 耳朵 - 耳朵的博客
  评论这张
 
阅读(672)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017