单片机键盘程序

2025-11-06 17:39:04

1、进入软件,最基础的创建工程我就不说了,直接到按键程序,写程序,首先要了解按键,对于按键,分为独立式和矩阵式按键。

2、先说说独立式按键,这个十分简单,特点是每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编制简单。所以,如果按键就那么两三个的话用起来还是占优势的哦。这样的开关程序就是一个检测过程,看I/O端口是否低电平,如果是则有按键按下,否则就没有。如下是独立式按键的接法。

单片机键盘程序

3、复杂的是矩阵式按键,但是他也有很大的优势,电路连接复杂,但提高了I/O口利用率,软件编程较复杂。要是你的东西有很多的按键要操作,那么采用这种方式的优势就十分明显了。如下图就是矩阵式按键,矩阵式按键的程序较独立式按键复杂的多,方法也很多,基本的有线翻转法,扫描法,计算法,因为程序很复杂的原因,在这里就不一一讲解了,有兴趣的自己可以查查资料。

单片机键盘程序

4、附加简单程序如下:

独立按键程序:

#include<reg52.h>

#define uchar unsigned char

#define uint  unsigned int

sbit P27=P2^7;

sbit K5=P1^4;

sbit fmq=P3^6;

uchar num;

unsigned char code s8[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

void delay1ms(uint i)

{

uchar j;

 while(i--)

 {

 for(j=0;j<115;j++)  //1ms基准延时程序 

 {

  ;

 } 

 }  

}

void beep() //产生1KHZ频率声音的函数

{

  fmq=0;

delay500us();

fmq=1;

delay500us();

}

void delay500us()

{

unsigned char j;

 for(j=0;j<57;j++)  //500us基准延时程序 

 {

  ;

 } 

}

void main()

{ uchar t;

  P27=0;

  while(1){

    if(K5==0){

delay1ms(15);

if(K5==0){

for(t=0;t<100;t++)

{

   beep();

}

   num=num+1;

if(num==16){

 

num=0;

}

while(!K5);//等待按键释放

}

}

  P0=s8[num];

  }

}

void beep() //产生1KHZ频率声音的函数

{

  fmq=0;

delay500us();

fmq=1;

delay500us();

}

void delay500us()

{

unsigned char j;

 for(j=0;j<57;j++)  //500us基准延时程序 

 {

  ;

 } 

}

5、附加矩阵键盘的键值码:

单片机键盘程序

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢