单片机
返回首页

单片机一键多功能按键识别技术

2012-12-05 来源:51hei

在一些单片机系统中,有时候需要采用一些一键多功能的技术,这里我给大家介绍一下。开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。这样就实现了具有一键多功能的按键识别技术。简单吧

单片机系统板上硬件连线

把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上。具体的电路图在单片机论坛http://www.51hei.com51区上有。欢迎发表您的高见。本文为郭子喻先生原创作品希望大家支持。


汇编源程序
ID          EQU 30H
SP1         BIT P3.7
L1          BIT P1.0
L2          BIT P1.1
L3          BIT P1.2
L4          BIT P1.3
            ORG 0
            MOV ID,#00H
START:      JB K1,REL
            LCALL DELAY10MS
            JB K1,REL
            INC ID
            MOV A,ID
            CJNE A,#04,REL
            MOV ID,#00H
REL:        JNB K1,$
            MOV A,ID
           CJNE A,#00H,IS0
            CPL L1
            LCALL DELAY
            SJMP START
IS0:       CJNE A,#01H,IS1
            CPL L2
            LCALL DELAY
            SJMP START
IS1:       CJNE A,#02H,IS2
            CPL L3
            LCALL DELAY
            SJMP START
IS2:       CJNE A,#03H,IS3
            CPL L4
            LCALL DELAY
            SJMP START
IS3:        LJMP START
DELAY10MS:    MOV R6,#20
LOOP1:       MOV R7,#248
             DJNZ R7,$
             DJNZ R6,LOOP1
             RET
DELAY:      MOV R5,#20
LOOP2:      LCALL DELAY10MS
            DJNZ R5,LOOP2
            RET
            END
7.C语言源程序
#include
unsigned char ID;
void delay10ms(void)
{
  unsigned char i,j;
  for(i=20;i>0;i--)
  for(j=248;j>0;j--);
}
void delay02s(void)
{
  unsigned char i;
  for(i=20;i>0;i--)
    {delay10ms();
    }
}
void main(void)
{ while(1)
    { if(P3_7==0)
        {delay10ms();
          if(P3_7==0)
            {
              ID++;
              if(ID==4)
                {
                  ID=0;
                }
              while(P3_7==0);
            }
        }
      switch(ID) 
        { case 0:
            P1_0=~P1_0;
            delay02s();
            break;
          case 1:
            P1_1=~P1_1;
            delay02s();
            break;
          case 2:
            P1_2=~P1_2;
            delay02s();
            break;
          case 3:
            P1_3=~P1_3;
            delay02s();
            break;
        }
    }

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章