首页 > 其他分享 >【小白自学】51单片机

【小白自学】51单片机

时间:2024-08-24 08:56:40浏览次数:13  
标签:运算符 LED LEDNum -- 51 Delay 单片机 while 自学

学习目标:3周了解并掌握51单片机

学习内容:独立按键控制LED灯

通过上次学习了LED流水灯之后,继续学习了如何用独立按键控制LED灯。主要有以下四个功能,其中包括按键控制LED灯的亮灭,闪烁,以及左移右移等。
在开始之前,先了解一下常见的一些算术运算符。算术运算符是用于执行基本数值运算的符号。常见的算术运算符有:

  1. 加法运算符(+):用于两个数值相加。
    例如:2 + 3 = 5

  2. 减法运算符(-):用于两个数值相减。
    例如:5 - 2 = 3

  3. 乘法运算符(*):用于两个数值相乘。
    例如:2 * 3 = 6

  4. 除法运算符(/):用于两个数值相除。
    例如:6 / 2 = 3

  5. 取余运算符(%):用于计算两个数值相除的余数。
    例如:7 % 3 = 1 (7除以3余1)

一、独立按键控制LED灯亮灭
按键模块

#include <REGX52.H>
void main()
{
	while(1)
	{
	  if(P1_4==0)	//判断P1.4是否等于0
	  {
	  	P2_0=0;
	  }
	  else
	  {
	  	P2_0=1;
	  }
	}
}

具体展示效果为:按一下亮,松开手灭。
二、独立按键控制LED灯状态

#include <REGX52.H>
void Delay(unsigned int xms)		
{
	unsigned char i, j;

	while(xms)
	{
		i = 2;
		j = 239;

		do
		{
			while (--j);
		} while (--i);
	xms--;
	}
}

void main()
{
	while (1)
	{
		if(P1_4==0)
		{
			Delay(20);
			while(P1_4==0);
			Delay(20);
			P2_0=~P2_0;
		}
	}	
}

具体展示效果为:按下按键,LED常亮。
三、 独立按键控制LED灯二进制

#include <REGX52.H>
void Delay(unsigned int xms)	
{
	unsigned char i, j;
	while(xms--)
	{
	i = 2;
	j = 239;
	
	do
		{
			while (--j);
		} while (--i);
	}
}

void main()
{
	unsigned char LEDNum=0;
	while(1)
	{
	 	if(P1_4==0)
		{
			Delay(20);
			while(P1_4==0);
			Delay(20);

			LEDNum++;
			P2=~LEDNum;
		}
	}
}

具体展示效果为:按一次按键,LED灯向下一位移动。

四、 独立按键控制LED灯左移右移

#include <REGX52.H>
void Delay(unsigned int xms);
unsigned char LEDNum;
void main()
{
	P2=~0x01;
	while(1)
	{
		if(P1_4==0)
		{
			Delay(20);
			while(P1_4==0);
			Delay(20);

			LEDNum++;
			if(LEDNum>=8)
				LEDNum=0;
			P2=~(0x01<<LEDNum);
		}
		if (P1_5==0)
		{
			Delay(20);
			while(P1_5==0);
			Delay(20);	

			if (LEDNum==0)
			   LEDNum=7;
			else
				LEDNum--;
			P2=~(0x01<<LEDNum);
		}
	}
}
void Delay(unsigned int xms)	
{
	unsigned char i, j;
	while(xms--)
	{
	i = 2;
	j = 239;
	
	do
		{
			while (--j);
		} while (--i);
	}
}

具体展示效果为:按K1左移,按K2右移
这里标个点,=~没搞懂什么意思。

标签:运算符,LED,LEDNum,--,51,Delay,单片机,while,自学
From: https://blog.csdn.net/m0_47092911/article/details/141476777

相关文章

  • 【最新原创毕设】基于SpringBoot的新高考志愿填报辅助系统+35190(免费领源码)可做计算机
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1登录流程2.2.2数据删除流程2.3 系统功能分析2.4系统用例分析2.5本章小结3 系统总体设计3.1系统架构设计3.2系统功能模块......
  • CF1514D Cut and Stick 题解
    题目传送门前置知识可持久化线段树解法若区间内不存在绝对众数,直接保持这一段即可。若存在绝对众数,贪心地想肯定要尽可能地把其分开还要限制出其他数使其不成为绝对众数。容易发现设绝对众数出现次数为\(cnt\),取\(cnt-1\)个其他数和绝对众数配对最优。但可能其他数不够\(......
  • 如何学习单片机:从入门到精通的全面指南
    摘要本文旨在为初学者提供一份系统的单片机学习指南,涵盖了从基础知识到进阶应用的各个方面。文章首先介绍了单片机的基本概念和架构,帮助读者理解单片机的工作原理和常见的单片机型号。接着,文章详细讲解了如何选择适合的单片机及其开发工具,并提供了一些入门和进阶学习的实用建......
  • AP5101C 6-100V 2A LED降压恒流型的线性调光驱动器 台灯手电筒与汽车灯方案
    产品描述AP5101C是一款高压线性LED恒流芯片,外围简单、内置功率管,适用于6-100V输入的高精度降压LED恒流驱动芯片。最大电流2.0A。AP5101C可实现内置MOS做2.0A,外置MOS可做3.0A的。AP5101C内置温度保护功能,温度保护点为130度,温度达到130度时,输出电流慢慢减小,达到保护芯片电路......
  • 代码随想录算法训练营第 51 天 |LeetCode99岛屿数量 LeetCode100.岛屿的最大面积
    代码随想录算法训练营Day51代码随想录算法训练营第51天|LeetCode99岛屿数量LeetCode100.岛屿的最大面积目录代码随想录算法训练营前言LeetCode200岛屿数量LCR105.岛屿的最大面积一、广度优先搜索基础1、用队列实现2、代码框架:二、卡码网99岛屿数量(LeetCode......
  • 自学C语言
    DAY#0一开始(好好学习,提前内卷!)后面……什么鬼,电子信息工程到底是什么,我要学什么然后#宋浩高数#,#每日英语#学着学着劲头就没了,啊啊啊小说我来了》~《然后又是浑浊,挣扎最近加入了校园的科协预备群,www,一下子感觉亚历山大了(因为看过学长分享,非常想进去,他高一就是进了科协)要学的......
  • 自学C语言
    DAY#3哎,今天忙了很多事,晚上九点才碰到电脑。没什么时间学电脑,又补了一点电脑常识,关于文件还有C盘的一些常识(C盘真的非常非常重要!!)早上弄了校园卡(大学真是个神奇的东西)下午忙忙忙,晚上又学了一点基础知识。和家人发生了矛盾,我好难过/-||||DAY#4(啊啊啊啊,昨天的怎么没有发送......
  • 20240819编译 链接 单片机执行的第一个语句
    2024年8月中旬在宝鸡出差,在B站上学习了下。在linux操作系统中,gdb是调试器,gcc是编译器。Linux操作系统将main.elf文件加载到内存中以后,操作系统为其分配进程,然后main函数就开始执行了。输入layoutasm则显示出来汇编代码 键入“starti”的时候 进入到程序里面的第一......
  • Java基础——自学习使用(static关键字)
    一、static关键字是什么?static修饰的代码属于类,定义的变量存储在方法区的静态常量池当中二、static可以修饰什么1.static修饰变量static修饰的变量叫做类变量,被所有该类产生的对象所共享,存储在方法区的静态常量池中2.static修饰方法static修饰是的方法属于静态方法,stat......
  • AP5174内置PWM调节LED灯亮度输入5-100V车灯驱动IC 手电筒与车灯方案
    产品描述AP5174是一款效率高,稳定可靠的LED灯恒流驱动控制芯片,内置高精度比较器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率LED恒流驱动。AP5174采用ESOP8封装,散热片内置接SW脚,通过调节外置电流检测的电阻值来设置流过LED灯的电流,支持外加电压线性调光,最大......