`

51单片机学习笔记:写了个led宏,并尝试控制led灯的亮度

led 
阅读更多

经常用led灯来观察现象,甚至调试代码,修改代码时用0和1很不方便,而且阅读性也不好,

故写了个宏,用起来方便些.

今天尝试控制灯的亮度. 先试试for循环控制,占空比调节...

//#include "my51.h"
#include <reg52.h>
typedef unsigned char  u8;
typedef unsigned short int u16;

#ifndef _51LED_
#define _51LED_
#define led 	  P1      			 //P1总线连8个led灯,灯连573锁存器,P1置低电平点亮
#define LED		  led
#define ON(x)     P1&(~(1<<(x)))	 //打开某个灯,开多个灯用 ON(m) & ON(n)
#define OFF(x)    P1|(1<<(x))	 	 //关闭某个灯,关多个灯用 OFF(m)| OFF(n)
#define on(x)	  ON(x)				 //包含大小写
#define off(x)	  OFF(x)

#define ledon     0					 //某个灯,打开
#define ledoff    1					 //某个灯,关闭

sbit led0=P1^0;     
sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;
sbit led4=P1^4;
sbit led5=P1^5;
sbit led6=P1^6;
sbit led7=P1^7;	
sbit ledLock=P2^5;	//锁定当前8个led的状态,0锁定 ,1不锁定

#endif

void ledCtr(u8 ledX,u8 per)		//参数1是某个灯,参数2是亮度
{
	u8 i=1;
	for(i=1;i<=100;i++)
	{
		if(i<per)
		{
			led=on(ledX) ;		//打开灯
		}
		else
		{
			led=off(ledX);		//关闭灯
		}
	}
}

void delayms(u16 ms)     		//毫秒级软延时函数
{	
	u16 i,j;
	for(i=ms;i>0;i--)
	{
        for(j=113;j>0;j--)
        {}
	}
}

void main()				    //测试
{
	led6=ledon;		    	//打开6号灯,亮度100%
	led=on(0);				//打开0号灯,亮度100%
	led=on(1) & on(5);  	//打开1号和5号灯,亮度100% 


	delayms(2000);

	led0=ledoff;			 //关闭0号灯
	led=off(6)|off(1)|off(5);//关闭1,5,6号灯
	while(1)
	{		
	  	ledCtr(2,5);    	 //仅打开2号灯,亮度5%, 省电...
	}
}

 

0
4
分享到:
评论

相关推荐

    (PWM)51单片机脉冲宽度调制控制LED灯亮度

    标题中的 "(PWM)51单片机脉冲宽度调制控制LED灯亮度" 提示我们,这个话题涉及51系列单片机使用脉冲宽度调制(PWM)技术来调节LED灯的亮度。51单片机本身并不直接提供PWM接口,因此需要通过软件模拟来实现这一功能。 ...

    矩阵键盘控制led灯_led灯_51单片机_矩阵键盘_

    通过这样的实践,你不仅可以掌握51单片机的基本操作,还能了解到矩阵键盘和LED灯的控制技术,这对于进一步学习嵌入式系统和物联网技术是非常有帮助的。总的来说,51单片机控制矩阵键盘驱动LED灯是一个经典的入门项目...

    基于51单片机的红外遥控LED灯控制系统设计与实现.doc

    基于51单片机的红外遥控LED灯控制系统设计与实现 本文旨在设计和实现基于51单片机的红外遥控LED灯控制系统,通过对系统的设计、实现和测试,验证单片机技术在红外遥控LED灯控制系统中的应用。 知识点一:单片机...

    51单片机中用PWM控制LED亮度调节

    在本例中,我们探讨的是如何使用51单片机通过脉宽调制(PWM)技术来调节LED灯的亮度。PWM是一种通过控制信号的占空比来模拟电压或电流大小的技术,对于LED亮度调节非常有效。 首先,LED通常需要恒定电流驱动以确保...

    51单片机控制两个LED灯分别闪烁

    在本项目中,我们将利用51单片机的P2端口来控制两个LED灯,使它们按照不同的周期闪烁。这种应用广泛存在于电子制作、教学实验以及各种自动化设备中,通过编程实现对硬件的动态控制,增强了设备的交互性和视觉效果。 ...

    51单片机控制多个LED灯

    本文将深入探讨如何使用51单片机通过GPIO(General-Purpose Input/Output)引脚来控制多个LED灯。我们将分析标题中提到的两个工程,即“003-8位LED灯-点亮多个LED灯方法1”和“004-8位LED灯-点亮多个LED灯方法2”,...

    51单片机案例研究:基于单片机的简易LED闪烁控制器.zip

    《51单片机案例研究:基于单片机的简易LED闪烁控制器》是关于嵌入式系统编程的一个经典实例,主要涉及51系列单片机的硬件基础、软件设计以及LED控制技术。51单片机是微控制器领域中广泛应用的一类芯片,以其简单易用...

    7-不同频率闪烁多个LED灯(51单片机C语言实例Proteus仿真和代码)

    7-不同频率闪烁多个LED灯(51单片机C语言实例Proteus仿真和代码)7-不同频率闪烁多个LED灯(51单片机C语言实例Proteus仿真和代码)7-不同频率闪烁多个LED灯(51单片机C语言实例Proteus仿真和代码)7-不同频率闪烁多个LED灯...

    c51单片机控制LED灯渐亮渐灭程序.txt

    本程序通过C51单片机实现对LED灯亮度的渐变控制,利用PWM技术来调整LED的亮度,并通过两个外部按键进行亮度调节。程序还包括了蜂鸣器报警功能,当PWM值达到最大或最小值时,蜂鸣器会发出报警信号。 #### 二、程序...

    51单片机代码 简单控制LED灯代码

    这个压缩包文件提供了51单片机控制LED灯的代码示例,是学习单片机编程和硬件控制的基础实践。接下来,我们将详细讨论相关知识点。 1. **51单片机**:51系列单片机是由Intel公司推出的,后来由许多厂商如Atmel、...

    51单片机控制led灯闪烁程序

    ### 51单片机控制LED灯闪烁程序详解 #### 一、程序概述 本篇文章主要介绍了如何使用51单片机控制LED灯实现闪烁功能的程序设计与实现过程。51单片机作为一种广泛应用于电子产品的微控制器,其简单易用的特点使其成为...

    51单片机8按键控制8灯源程序

    51单片机是一种广泛应用的微控制器,常用于电子设备的控制,比如在这个场景中,它被用来控制8个LED灯源。8按键控制8灯源的程序是单片机编程的一个经典实例,主要涉及以下几个关键知识点: 1. **51单片机硬件结构**...

    Protues仿真实例-51单片机-PWM控制LED的亮度仿真程序.rar

    这个压缩包文件“Protues仿真实例-51单片机-PWM控制LED的亮度仿真程序.rar”提供了关于如何使用51单片机通过脉冲宽度调制(PWM)技术来控制LED亮度的实例教程。下面我们将详细讨论相关知识点。 1. **51单片机**:51...

    51单片机串口通信点亮led灯程序

    学习51单片机串口通信点亮LED灯程序,不仅需要理解上述的硬件通信机制,还需要熟悉51单片机的指令集和编程方法。单片机的编程语言一般为汇编语言或C语言,其中汇编语言更适合于执行速度要求高、资源有限的嵌入式系统...

    4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)

    4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-...

    基于51单片机的LED灯控制(Proteus仿真)

    这个主题“基于51单片机的LED灯控制(Proteus仿真)”涉及了利用51单片机进行硬件控制,并通过Proteus软件进行仿真验证。下面将详细解释相关知识点。 1. **51单片机**:51系列单片机是Intel公司推出的8位微处理器,...

    51单片机采用定时器计时循环点亮8个LED小灯

    本项目旨在介绍如何利用51单片机的定时器功能来实现LED小灯的循环点亮,这既是一个基础的硬件控制实践,也是一个良好的学习编程逻辑和理解定时器工作原理的机会。 51单片机内部集成了几个定时器/计数器资源,通常...

    单片机pwm控制led亮度原理图

    单片机通过PWM(脉冲宽度调制)控制LED亮度的原理,实际上是一种利用数字信号对模拟信号进行模拟的过程。这种技术可以应用于多种微控制器中,但本文主要以51系列单片机为例进行说明。要理解单片机PWM控制LED亮度的...

    3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)

    3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-...

    基于51单片机的RGB三色LED灯点阵(8*8)源程序

    题目:基于51单片机的RGB三色LED灯点阵(8*8)要求: 1、主控:必须是51单片机 2、RGB三色LED灯: 必须是三色的LED彩灯(即一个灯四个引脚,很重要!!!), 共阴共阳无所谓 3、驱动芯片:驱动三色LED点阵必须用专门的驱动芯片,...

Global site tag (gtag.js) - Google Analytics