独立按键控制led灯

这篇具有很好参考价值的文章主要介绍了独立按键控制led灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天,我们来学习关于独立按键来控制led灯的知识。

1.独立按键控制led灯亮灭

首先是来用一个独立按键控制一个led灯的亮灭。其中独立按键由P3表示,其具体电路图如下

                  单片机独立按键控制led灯,单片机,嵌入式硬件

 其中第一个按键为P3_1,第二个按键为P3_0,第三个按键为P3_2,第四个按键为P3_3,很明显是单片机的创作人把第一个按钮和第二个按钮给搞混了,哈哈。如果按下第一个按键则表示为P3_1=0,因此其代码便可表示为

#include <REGX52.H>
void main()
{
   while(1)
	 {
	   if(P3_1==0)
		 {
		    P2_0=0;
		 }
		 else
		 {
		    P2_0=1;
		 }
	 }

}

当按下按键,按键为0,此时小灯变亮,当再次按下,按键变为1,此时led灯熄灭。

2. 独立按键控制led状态

在开始之前需要提前补充一个小知识点,关于按键的抖动。

单片机独立按键控制led灯,单片机,嵌入式硬件

 由此我们可以看出当我们按下按键时它会抖动5-10ms松手时也会抖动5-10ms,因此为了避免抖动而产生的误差我们便需要延时函数来消除此的影响代码变为这样

#include <REGX52.H>
#include <INTRINS.H>
void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
  while(xms)
	{
	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
  xms--;
	}
}

void main()
{
  while(1)
	{
	  if(P3_1==0)
		{
		  Delay1ms(20);
			while(P3_1==0)
				Delay1ms(20);
				
		}
	}
}

这样我们就消除了抖动给我们的影响,如果还不理解的朋友们可以试着将两个延时函数删掉,也许会有以下情况发生,例如当按下时led小灯会不亮,或者亮一下就灭了,这都是抖动带给我们的影响,因此消除抖动的影响很重要。完整代码为

#include <REGX52.H>
#include <INTRINS.H>
void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
  while(xms)
	{
	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
  xms--;
	}
}

void main()
{
  while(1)
	{
	  if(P3_1==0)
		{
		  Delay1ms(20);
			while(P3_1==0)
				Delay1ms(20);
			P2_0=~P2_0;
		}
	}
}

这样就实现了独立按键控制led状态。

3. 独立按键控制led显示二进制

要实现此功能需要一个中间变量来实现,需要unsigned char这个类型,因为我们要让它呈二进制发亮因此设unsigned char lednum=0;意思是lednum=0000 0000;让它一次循环加一,并且用它的按位取反就可以实现了。代码为

#include <REGX52.H>
#include <INTRINS.H>
void Delay(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
  while(xms--)
	{
	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
  
	}
}

void main()
{  
	unsigned char lednum=0;
   while(1)
	 {
	   if(P3_1==0)
		 {
			 Delay(20);
		   while(P3_1==0)
		   Delay(20);
		   
			 
			 lednum++;
			 P2=~lednum;
		   
		 }
	 }


}

4. 独立按键控制led的移位

要想实现这个功能我们需要学习一个移位符号<<和>>,一个代表左移一个代表右移,例如0x01<<1,表示0000 0001向左移一位变成0000 0010,如果再将其按位取反,就变为1111 1101,这样我们就可以很轻松的来控制其移位,另外还需要注意的是,如果移了8位之后,需要让其归零,才能继续让其移位,向左移很好理解,向右移就是向右移一位就相当于向左移动了7位,这样向右移动的代码也很简便的写了出来,代码可以表示为

#include <REGX52.H>
#include <INTRINS.H>
void Delay(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
  while(xms--)
	{
	_nop_();
	_nop_();
	_nop_();
	i = 11;
	j = 190;
	do
	{
		while (--j);
	} while (--i);
  
	}
}
unsigned char lednum=0;
void main()
{   
	 P2=~(0X01);
   while(1)
	 {
	   if(P3_1==0)
		 {
			 Delay(20);
		   while(P3_1==0);
		   Delay(20);
		   
			 lednum++;
			 if(lednum>=8)
		   lednum=0;
			 P2=~(0x01<<lednum);
		 }
		 if(P3_0==0)
		 {
		   Delay(20);
		   while(P3_0==0);
		   Delay(20);
		 
		   if(lednum==0)
				 lednum=7;
			 else
				 lednum--;
			 P2=~(0X01<<lednum);
		 
		 }
	 }


}

这样我们就表示出来了控制led的移位情况。文章来源地址https://www.toymoban.com/news/detail-717645.html

到了这里,关于独立按键控制led灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单片机原理及应用:独立式键盘控制LED与多功能按键识别

    今天来介绍另一个外设——按键与LED的配合工作,与开关不同,按键需要注意消除抖动带来的影响,代码逻辑也会更复杂一写,下面先为大家介绍独立式键盘的相关知识。 单片机的独立式键盘指的是一种不依赖于计算机或其他外部设备的键盘输入方式,由若干按键按照一定的

    2024年01月21日
    浏览(43)
  • 单片机C51(STC89C52RC)独立按键控制LED亮灭、状态、显示二进制、位移

    目录 1.独立按键控制LED灯亮灭 2.独立按键控制LED灯状态 3.独立按键控制LED灯显示二进制 4.独立按键控制LED灯位移 5.附录 独立按键控制LED灯状态,在独立按键按下时,LED灯点亮,松手后LED灯熄灭。独立按键按下为0,松开为1,在STC89C52RC芯片上,P2为LED灯IO口,P2_0表示第一个LED灯

    2024年02月01日
    浏览(103)
  • 【51单片机】LED与独立按键(学习笔记)

    LED:发光二极管 补:电阻读数 102 = 10 00 = 1k 473 = 47 000 1、新建工程:Project = New Project Ctrl + Shift + N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx提示?选否 4、Source Group = 右键 = Add New Item … = C文件\\\"main.c\\\" 5、设置勾选创建HEX File文件 6、编译 CPU通过对寄存器的控制,寄存器通过驱

    2024年02月06日
    浏览(46)
  • 四、51单片机控制独立按键

    按键相关知识。 1.1、按键工作原理 (1)按键内部是机械结构,也就是内部是没有电路的。按键对外表现位四个引脚,但本质上只是两个,引脚是两两连在一起的。按键按下内部引脚导通,松开内部断开。 (2)电路连接与原理图中图标。 按键一端接地,一端接单片机IO口。  (3)按

    2023年04月14日
    浏览(61)
  • 嵌入式51单片机04-矩阵按键系列

    一、矩阵按键基础知识 矩阵按键工作原理 : 逐行扫描 :通过高四位轮流输出低电平来对矩阵键盘进行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过判断低四位数据中哪一位为零来判断哪一个按键被按下。 逐列扫描 :通过低四位轮流输出低电平来

    2024年02月07日
    浏览(65)
  • 51单片机-按键控制led灯

    1.开发环境介绍 使用C语言,环境为keil Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用. 什么是单片机 单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具

    2024年02月09日
    浏览(48)
  • 单片机-控制按键点亮LED灯

    定义四个按键引脚  1、按键按下 为 输入为低电平 2、按键不按下 IO有上拉电阻,为高电平 // 定义 按键的 管教 sbit KEY1 = P3^1; sbit KEY2 = P3^0; sbit KEY3 = P3^2; sbit KEY4 = P3^3; LED 输出高电平为亮 // 定义LED灯 管教 sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; 1、定义按键管教

    2024年02月10日
    浏览(44)
  • 51单片机按键控制LED亮灭

    通过单片机按键控制LED亮灭与传统电路的物理逻辑不同,在物理逻辑中开关控制电路的通断来控制LED的亮灭,而通过单片机完成该项目至于要不断地读取按键所连接IO口的电平来判断对LED连接的IO口输出的电平即可。 原理图如下:  根据原理图,我们可以发现按键按下时P2.1口

    2023年04月18日
    浏览(54)
  • 如何使用单片机点亮LED灯,并使用按键控制[51单片机]

    首先先看一下我的板子,如果我们板子不相同,可能操作也不太相同 我们就不讲底层原理了,直接看,我们可以看到板子上有 8个LED灯   那这个8个LED用什么来控制呢,我们先看底层的线路图,所有的LEDD都连接到了P2带后缀的接口上, 那么只需要操作这几个接口的高低电频,

    2024年02月05日
    浏览(46)
  • 在51单片机中使用一个独立按键控制流水灯方向

    用独立按键控制流水灯转向,按下独立按键流水灯向右移动,再按下独立按键流水灯向左移动 此代码用到 逻辑左移:_crol_(移动对象,移动的位数) 逻辑右移:_cror_(移动对象,移动的位数)

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包