基于51单片机的一键多功能识别技术

发布者:qin199099最新更新时间:2017-12-31 来源: eefocus关键字:51单片机  一键多功能识别技术 手机看文章 扫描二维码
随时随地手机看文章

1.实验任务
  如图4.9.1所示,开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。
2.电路原理图
一键多功能按键识别技术
图4.9.1
3.系统板上硬件连线
(1).把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上;
(2).把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上。
4.程序设计方法
(1).设计思想由来
  在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID的值是不相同的,所以单片机就很容易识别不同功能的身份了。
(2).设计方法
  从上面的要求我们可以看出,L1到L4发光二极管在每个时刻的闪烁的时间是受开关SP1来控制,我们给L1到L4闪烁的时段定义出不同的ID号,当L1在闪烁时,ID=0;当L2在闪烁时,ID=1;当L3在闪烁时,ID=2;当L4在闪烁时,ID=3;很显然,只要每次按下开关K1时,分别给出不同的ID号我们就能够完成上面的任务了。下面给出有关程序设计的框图。
5.程序框图
一键多功能按键识别技术
图4.9.2
6.汇编源程序
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;
        }
    }

关键字:51单片机  一键多功能识别技术 引用地址:基于51单片机的一键多功能识别技术

上一篇:51单片机按键识别方法
下一篇:基于51单片机的0-59秒延时器设计

推荐阅读最新更新时间:2024-03-16 15:51

51单片机学习——8.2--定时计数器
定时计数器原理 CPU时序 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期) 状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。 机器周期:1个机器周期含6个状态周期,12个振荡周期。 指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。 例如:外接晶振为12MHz时,51单片机相关周期的具体值为: 振荡周期=1/12us; 状态周期=1/6us; 机器周期=1us; 指令周期=1~4us; 定时计数器介绍 基本特点 51单片机有两组定时器/计数器,因为既可以定时, 又可以计数,故称之为定时器/计数器。 定时器/计数器和单片机的CPU是相互独立的。定时器/
[单片机]
<font color='red'>51单片机</font>学习——8.2--定时计数器
基于51单片机的无线温湿度控制系统
发射_DHT11程序 //宏定义 #define uchar unsigned char #define uint unsigned int //头函数 #include reg51.h #include intrins.h //无线模块 #include api.h #include nRF24L01P.h #include DHT11.h //LED 管脚定义 sbit TXLED_R=P1^3; sbit RXLED_Y=P1^5; //主机询问命令 uchar CMD ={0xaa,0xbb,0xcc,0xdd}; //主函数 void main() { TXLED_R=0;
[单片机]
基于<font color='red'>51单片机</font>的无线温湿度控制系统
51单片机-数组与移位
1.数组运用 实现上一节的功能其实还有更简洁的方法去书写,那就是引用数组,用数组存取灯的八种状态值。定义含有8个元素的数组如下: unsigned char LEDSET ={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};每个元素轮流赋值给P0后延时即可。 #include reg52.h //sbit LED2 = P0^0; 本节代码中用不到这条语句了 sbit ADDR2 = P1^2; sbit ADDR1 = P1^1; sbit ADDR0 = P1^0; sbit ENLED = P1^4; sbit ADDR3 = P1^3; void delay_ms(uns
[单片机]
MCS-51单片机的定时器/计数器应该掌握的知识
1.如果采用的晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大的定时时间各为多少? 2.定时器/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关? 3.定时器/计数器作计数器模式使用时,对外界计数频率有何限制? 4.采用定时器/计数器TO对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。 5.定时器/计数器的工作方式2有什么特点?适用于什么应用场合? 6.编写程序,要求使用T0,采用方式2定时,在P1.0输出周期为400µs,占空比为10:
[单片机]
51单片机的主要组成结构分析详解
随着微电子技术的快速发展,以ARM为主的32位MCU(微控制器)已普及开来,8位MCU已被很多人认为将被淘汰,更何况其中的老古董MCS-51系列单片机。但从目前的形势来看,8位MCU还牢牢占据着工业控制领域的主导地位,一个原因是8位MCU的开发成本比较低,也有大量的成熟设计方案,还有一个原因是历史的延续,新的产品还处在不断变化中,老产品则是经数十年的淘汰而留存下来的精品。 MCS-51系列单片机正是如此,自1980年由Intel推出后,获得很大成功,并不断改进而形成系列,成为最普遍使用的单片机内核和指令系统。后来,ATMEL、NXP等多家著名半导体公司推出兼容和增强的51系列单片机,应用普遍,因此成为单片机教学的主要示例,熟悉其
[单片机]
三种方法教你如何破解51单片机
大家可能都知道破解51单片机是很容易的,但为什么容易,又是如何来破解的,可能很多人就不大清楚了,我在这里结合网上一些前辈整理的资料,和自己的经验,对MCU破解技术做个简单分析。 大家不要把解密想的很复杂,他不像研发一款产品那样,先确定客户需求或者新产品主要功能,然后立项确定技术指标,分配软硬件开发任务,基于硬件调试程序,然后验证功能,测试bug,还要做环境试验。行业里解密的方法有很多,每个人破解的思路也不一样。但是大致分为几种。 一软件破解 利用软件破解目标单片机的方法,利用这种方法,不会对目标MCU元器件造成物理损伤。主要是对WINBONGD,SYNCMOS单片机和GAL门阵列,这种利用软件解密设备,按照一定的步骤操作,
[单片机]
三种方法教你如何破解<font color='red'>51单片机</font>
89C2051单片机无线遥控电铃
如电路图所示。AC220V市电经降压、整流、滤波后,得到12V直流电压,再经稳压得到Sv直流电压,分别为继电器J1、89C2051单片机和315接收模块供电。 未 按遥控器的A键时,接收模块⑩脚没有指令信号输出,单片机Pl.0口的绿色指示灯Dl每隔0.5秒闪一下,Dl既作电源指示又作遥控指令信号。此时,如果 按下遥控器的A键,接收模块收到信号后从⑩脚输出高电平信号到单片机的P3.0口,单片机从P1.2口输出低电平,P1.1口输出高电平,令绿灯灭红灯 亮,同时经三极管Q1驱动继电器J1吸合,电铃响10秒后恢复初始状态。完整的程序清单如下(已通过调试)。
[单片机]
89C20<font color='red'>51单片机</font>无线遥控电铃
51单片机测量PWM脉冲宽度LCD1602显示当前PWM占空比频率
此程序通过两个定时器一个外部中断,测量PWM高电平时间以及周期,计算并在1602显示出占空比 周期 高电平时间,只需让脉冲在P3^2口输入即能测得数据。。 单片机源程序如下: #include reg52.h #include LCD1602.h typedef unsigned char uint8; typedef unsigned int uint16;//数据类型重定义 uint8 count = 0; //计进入外部中断次数 bit flag = 1; //捕获结束标志位 long Pwm_All; //PWM的周期 long Pwm_High; //PWM的高电平时间 占空比=Pwm_Hi
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved