目录
关于51单片机的准双向口:
- 当准双向IO口输出为1时,可检测其他IO口的低电平和高电平;当不进行任何输入时,其检测到的是高电平;
- 当准双向IO口输出为0时,可检测其他IO口的低电平,但检测不到高电平;当不进行任何输入时,其检测到的是低电平;(与MCU内部结构有关)
- 故矩阵键盘采用输出高点平,然后检测低电平的方式检测按下的按键。
代码:
#ifndef __KEYBOARD_H__
#define __KEYBOARD_H__
#include "stc8.h"
//column 列
sbit C4 = P2^7;
sbit C3 = P2^6;
sbit C2 = P2^5;
sbit C1 = P2^4;
//ROW 行
sbit R1 = P2^3;
sbit R2 = P2^2;
sbit R3 = P2^1;
sbit R4 = P2^0;
unsigned char Measure_Keyboard (void);
#endif
#include "Keyboard.h"
#include "intrins.h"
#include "uart.h"
#include "stdio.h"
#include "delay.h"
//先检测列,再检测行
unsigned char Measure_Keyboard (void)
{
unsigned char value,k;
R1=0;R2=0;R3=0;R4=0;
C1=1;C2&#