AVR简单好用的4bob手机版网页体育x4矩阵键盘
// Target : ATMEGA16

//晶体:8.0000Mhz

本文引用地址:http://www.eepw.com.cn/article/201611/317335.htm

//key.h

#ifndef _4X4_H_#define _4X4_H_

#定义No_key 255

#定义密钥端口端口b #定义密钥端口DDR DDRB #定义密钥端口pin PINB

无符号char keyboard _ Scan(void);

#endif

//key.c

#包含#包含

#包含“key.h”

const bob手机版网页体育 unsigned char key _ table#包含#包含= { 1,2,3,12,4,5,6,13,7,8,9,14,10,0,11,15,};

Void delay_1ms(void)//1ms延迟函数{ unsigned int I;for(I = bob手机版网页体育 0;I//4x4矩阵键盘扫描功能

无符号字符keyboard_Scan(void){无符号字符temp,key,row,Column

key _ port _ ddr = 0b00001111//上四位输入行线/下四位输出列线key _ port = 0b11110000//高四位开启上拉电阻/低四位输出低电平delay _ NUS(5);//延时5us if((key_port_pin & 0xF0)!= 0xF0)//初步检查是否按下了键。如果不是,则返回{//如果所有行都是1,可能有按键按delay _ NMS(5);//延迟去抖动

//为(column = 0,key _ port = 0b11111110设置列行3 ~ 0 = 1110的初始值;列//main.c

[16]

#包含“key.h”

voidmain(void){无符号字符密钥;while(1){ Key = keyboard _ Scan();//键盘扫描开关(Key){ case 0:break;

......默认:break} }}

个人觉得主功能的延迟最好用定时器。

可以用不同的电路连接修改key_table数组。

bob手机版网页体育
在线预约
TOP