`

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
分享到:
评论

相关推荐

    HJ2GAVR单片机学习笔记1概述.pdf

    HJ2GAVR单片机学习笔记1概述.pdf 本学习笔记主要介绍了HJ-2G AVR单片机的概述,包括开发板的介绍、核心处理器ATMEGA16、锁存器、数码管、矩阵键盘、液晶1602接口、串口接口MAX232、DS1302时钟电路等内容。 1.2 HJ-...

    51单片机数码管的笔记记录

    总之,51单片机控制LED数码管显示涉及到硬件设计、驱动电路和软件编程等多个环节。理解数码管的工作原理、正确配置驱动电路以及编写有效的控制程序,是实现高效、稳定显示的关键。在学习和实践中,深入理解这些知识...

    多功能流水灯

    首先,流水灯的基本原理是通过控制一系列LED灯的亮灭顺序,形成一种连续流动的视觉效果。这种效果可以通过微控制器(如Arduino或51单片机)编程实现。微控制器会按照预设的程序,依次改变连接到其输出引脚的LED的...

    c语言学习笔记

    【C语言学习笔记】 在C语言中,常量表达式是一个关键概念,它指的是在编译阶段就能计算出结果的表达式,不涉及运行时的变量分配。这意味着常量表达式的值在程序编译时已经确定,且结果必须是对应类型的可表示值范围...

    603、灯光控制集成电路与灯光控制器制作.rar-教程与笔记习题

    1. **微控制器**:如Arduino、STM32或51系列单片机,它是整个系统的"大脑",接收并处理来自用户的指令,控制灯光的开关和亮度。 2. **输入接口**:可以是按钮、触摸传感器或无线模块(如蓝牙、Wi-Fi),用于接收...

    DMX512接收发送程序

    这个协议允许设备之间的通信,确保精确控制LED灯和其他类型的照明设备。"DMX512接收发送程序"是针对C51微控制器的开发项目,旨在实现DMX512协议的功能,使C51微控制器能够作为DMX512网络中的发送器或接收器。 C51是...

    display_C.rar_单片机开发_Visual_C++_

    在描述中,我们得知这个项目的目标是利用51系列单片机控制LED灯的显示,这通常涉及到硬件接口设计和编程。 51单片机是一种广泛应用的微控制器,由Intel公司开发,但现在主要由其他制造商如Atmel、Samsung和...

    110、led大屏幕点阵屏设计资料.rar-教程与笔记习题

    首先,LED大屏幕点阵屏是由多个像素点组成的,每个像素点由一个或多个LED灯组成,通过控制这些LED灯的亮灭,可以显示各种文字、图像和动态效果。在设计过程中,我们需要考虑像素密度、亮度、颜色配置以及驱动电路等...

    0568、给初学AT89S52单片机的40个实验.rar-教程与笔记习题

    5. **基本实验**:从简单的LED灯控制开始,逐步过渡到数码管显示、按键扫描、定时器/计数器应用、中断系统理解和应用。 6. **串行通信**:介绍UART(通用异步收发传输器)的基本原理和配置,实现点对点或主从通信。...

Global site tag (gtag.js) - Google Analytics