经常用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%, 省电... } }
相关推荐
介绍一个51系列单片机采用脉冲宽度调制(PWM)方式控制LED灯亮度的一个程序,大家都知道,51单片机本身是没有pwm接口的,这个程序是通过软件模拟pwm....#include "AT89X51.H" //模拟PWM输出控制灯的10个亮度级
7-不同频率闪烁多个LED灯(51单片机C语言实例Proteus仿真和代码)7-不同频率闪烁多个LED灯(51单片机C语言实例Proteus仿真和代码)7-不同频率闪烁多个LED灯(51单片机C语言实例Proteus仿真和代码)7-不同频率闪烁多个LED灯...
通过51单片机控制矩阵键盘控制led灯,,,,
用51单片机的P2口控制两个LED灯分别以不同的循环时间闪烁
4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-点亮多个LED灯方法2(51单片机C语言实例Proteus仿真和代码)4-IO输出-...
资源中是采用51单片机的GPIO引脚对多路LED灯进行控制的代码,包含两个工程,分别采用两种不同的方法对多路LED灯进行控制。
题目:基于51单片机的RGB三色LED灯点阵(8*8)要求: 1、主控:必须是51单片机 2、RGB三色LED灯: 必须是三色的LED彩灯(即一个灯四个引脚,很重要!!!), 共阴共阳无所谓 3、驱动芯片:驱动三色LED点阵必须用专门的驱动芯片,...
大大的好#include <REG52.H> //模拟PWM输出控制灯的10个亮度级 unsigned int scale; //占空比控制变量 sbit P0_0=P2^0; void main(void) // 主程序 { unsigned int n; //延时循环变量 TMOD=0x01; //定时器0...
下文为51单片机控制led灯闪烁程序。
PWM 控制 LED 灯渐亮渐灭程序 * ; 利用定时器控制产生占空比可变的 PWM 波 * ; 按K1,PWM值增加,则占空比减小,LED 灯渐暗。 * ; 按K2,PWM值减小,则占空比增加,LED 灯渐亮。 * ;当PWM值增加到最大值或减小到最小值...
52-1个独立按键控制LED状态转换(51单片机C语言实例Proteus仿真和代码)52-1个独立按键控制LED状态转换(51单片机C语言实例Proteus仿真和代码)52-1个独立按键控制LED状态转换(51单片机C语言实例Proteus仿真和代码)52-1...
51单片机Proteus仿真实例 开关控制led51单片机Proteus仿真实例 开关控制led51单片机Proteus仿真实例 开关控制led51单片机Proteus仿真实例 开关控制led51单片机Proteus仿真实例 开关控制led51单片机Proteus仿真实例 ...
在51单片机课堂上,LED模拟交通灯是一个非常实用的练习项目。这个练习可以帮助我们掌握单片机的定时器和引脚控制等基本知识,并且可以模拟真实交通灯的运行情况,对于理解和掌握交通灯的控制逻辑非常有帮助。 首先,...
51单片机Proteus仿真实例 甲机通过串口控制乙机LED闪烁51单片机Proteus仿真实例 甲机通过串口控制乙机LED闪烁51单片机Proteus仿真实例 甲机通过串口控制乙机LED闪烁51单片机Proteus仿真实例 甲机通过串口控制乙机LED...
3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-点亮多个LED灯方法1(51单片机C语言实例Proteus仿真和代码)3-IO输出-...
51单片机代码 简单控制LED灯代码
本文主要为51单片机串口通信点亮led灯程序,下面一起来学习下
51-1个独立按键控制LED(51单片机C语言实例Proteus仿真和代码)51-1个独立按键控制LED(51单片机C语言实例Proteus仿真和代码)51-1个独立按键控制LED(51单片机C语言实例Proteus仿真和代码)51-1个独立按键控制LED(51...
无线模块esp8266控制led灯亮灭51单片机底层程序,只有51单片机的程序没有控制app,使用网络调试助手可以实现手机与51单片机通讯,从而达到控制led灯的亮灭,亲测可行
51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组...