1、第八讲 按键控制电子信息学院电子技术教研室,键盘的应用 键盘的分类 键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘. 靠软件编程来识别的称为非编码键盘; 在单片机组成的各种系统中,用的最多的是非编码键盘。也有用到编码键盘的。,非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。,按键在闭合和断开时,触点会存在抖动现象:,硬件去抖:采用R-S触发器或单稳电路构成去抖电路。软件去抖:在检测到有键按下时,执行一个10ms 的延时程序后,再确认该键是否保 持闭合状态。,一、K1K4按键状态显示 K1或K2按下时LED1或LED
2、2点亮,松开时对应LED灭; K3或K4按下并释放时LED3或LED4点亮,再次按下并释放时对应LED灭。,#include #define uchar unsigned char#define uint unsigned intsbit LED1=P0_0;sbit LED2=P0_1;sbit LED3=P0_2;sbit LED4=P0_3;sbit K1=P1_0;sbit K2=P1_1;sbit K3=P1_2;sbit K4=P1_3;,void DelayMS(uint x) uchar i; while(x-) for(i=0; i120; i+);void main() P
3、1=0xFF; P0=0xFF; while(1) LED1=K1; LED2=K2;,if(K3=0) while(K3=0); LED3=LED3; if(K4=0) while(K4=0); LED4=LED4; DelayMS(10); ,二、K1K4键分组控制LED按K1逐个点亮D8D1;按K2点亮D8D5;按K3点亮D4D1;按K4熄灭D8D1。,#include #define uchar unsigned char#define uint unsigned intvoid DelayMS(uint x) uchar i; while(x-) for(i=0; i4; /取得4位
4、按键值,由xxxx1111 变为 /0000xxxx k=0; /获取按键号k while(Key_State != 0) k+ ; Key_State =1; switch(k) case 1: if (P0 = = 0x00) P0 = 0xFF ; P0=1; DelayMS(200); break; case 2: P0 =0xF0; break; case 3: P0 =0x0F; break; case 4: P0 =0xFF; ,三、4X4矩阵键盘控制条形LED显示按K1逐个点亮第1只LED ;按K2点亮前2只LED;按K3点亮前3只LED 按K10点亮110只LED 。电路图见
5、下图。键盘矩阵行线连P1.0P1.3,列线连P1.4P1.7。,源程序:#include#include#define uchar unsigned char#define uint unsigned int/键盘矩阵按键特征码表uchar code KeyCodeTable=0x11,0x12,0x14,0x18,0x21,0x22,0x24, 0x28,0x41,0x42,0x44,0x48,0x81,0x82,0x84,0x88;void Delay( ) uchar i ; for(i = 0; i= 1; else P2_LED = 1; P3 = P3_LED ; /点亮条形LED P2 = P2_LED ; ,习题:1. 用K1K4键分组控制八只LED灯,按K1轮流点亮D1D8;按K2点亮D1、D3、D5、D7;按K3点亮D2、D4、D6、D8;按K4熄灭D1D8。,2. 用实验板的矩阵按键实现:按S1键控制L1灯亮,同理按S2、S3、S5、S6、S9、S12、S15分别点亮L2L8;按S7键使L1灭而其他7只灯都点亮,同理按S10、S13、S16、S8、S11、S14、S17 分别使对应的灯灭而其他7只灯都点亮。,