多语言展示
当前在线:1317今日阅读:91今日分享:37

单片机键盘程序

单片机,控制的核心基础,很多时候会用到按键操作,但是有很多人对它十分陌生,现在我和大家分享下。
工具/原料

Keil uVision3软件

方法/步骤
1

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

2

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

3

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

4

附加简单程序如下:独立按键程序:#include#define uchar unsigned char#define uint  unsigned intsbit 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

附加矩阵键盘的键值码:

推荐信息