单片机中LED灯的使用(流水灯、呼吸灯)
LED灯的原理图如下
由原理图不难看出,8个led灯是由P0口和P2.3引脚控制的。为点亮发光二极管,首先需要把P0口和P2.3设置为推挽输出,然后将P2.3置“1”(反向后为“0”),使能发光二极管电路;
sbit led_sel=P2^3;//定义引脚
void Init() //led灯初始化函数
{P0M1=0x00; //0000 0000P0M0=0xff; //1111 1111P2M1=0x00; //0000 0000P2M0=0x08; //0000 1000led_sel=1;
}
完成初始化以后,我们就可以根据P0口不同的设置来达到不同的效果。
流水灯:
#include<STC15F2K60S2.H>
#include<intrins.h>
#define uchar unsigned char
uchar led;void Delay200ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();_nop_();i = 9;j = 104;k = 139;do{do{while (--k);} while (--j);} while (--i);
}void main()
{Init(); //初始化led=0x01; //0000 0001while(1){P0=led;Delay200ms();if(led==0x80)led=0x01;elseled=led<<1;}}
流水灯其实是一个动态点亮的过程,如果点亮得太快,会导致效果不理想,所以使用了延时函数来使视觉效果停留。
而其中的“<<1”是位移操作,向左移一位,如0000 0001操作后就变为0000 0010。当然也存在右移操作“>>”。
呼吸灯:
简单点说,呼吸灯其实就是以不同的亮度点亮led灯,关键就在于如何以不同的亮度来点亮led灯,也就是改变led灯的亮度。简单的方法就是在肉眼观察不到的时间范围内,改变led点亮时间的占比,从而形成不同亮度的视觉效果。
可以用以下代码测试看看这样的方法led灯的亮度是否改变(效果应为L0~3比L4~7暗)
#include<STC15F2K60S2.H>
#include<intrins.h>
#define uchar unsigned char
uchar led;
sbit led_sel=P2^3;//定义引脚void Init() //led灯初始化函数
{P0M1=0x00; //0000 0000P0M0=0xff; //1111 1111P2M1=0x00; //0000 0000P2M0=0x08; //0000 1000led_sel=1;
}void Delay10us() //@11.0592MHz
{unsigned char i;_nop_();i = 25;while (--i);
}void Delay70us() //@11.0592MHz
{unsigned char i, j;_nop_();_nop_();i = 1;j = 189;do{while (--j);} while (--i);
}void main()
{Init();led=0xff;while(1){P0=led;Delay10us();P0=0xf0;Delay70us();}}
(若有不足和错误,还请各位斧正)
单片机中LED灯的使用(流水灯、呼吸灯)相关推荐
- 【蓝桥杯单片机(14)】PWM波实现呼吸灯
PWM:Pulse-Width Modulation的缩写,中文意思为脉冲宽度调制,它是一种占空比可控制的脉冲波形 占空比:一个完整的脉冲周期,是由高电平和低电平组成的,而占空比表示在一个脉冲周期里, ...
- 电量百分百亮绿灯,其余充电电量均为红灯。电量低于15闪红灯三秒一次。搜网灯没网时候绿灯快闪,有网了做呼吸灯五秒一次,呼吸灯可广播控制打开关闭。判断是否连上网。
frameworks/ base/services/core/java/com/android/server/BatteryService.java 电量百分百亮绿灯,其余充电电量均为红灯: publ ...
- android屏幕灯功能吗,呼吸灯有什么用 手机呼吸灯作用大公开【图文】
虽然说现在很多人的人都在使用智能手机,但是大家对于手机上的一些构造可能并不是很了解,就像是手机正面屏幕上那个经常一闪一闪的灯,大概很多朋友还不知道那是什么东西.其实这个很小的灯叫做 呼吸灯 ,是近几年 ...
- 【杰理AC692X】6脚RGB 5050灯珠实现全彩呼吸灯的方法
在消费电子中,呼吸灯和渐变灯都很常见,常见的呼吸灯要么是六种颜色,要么是七种,因为做这7种颜色的呼吸灯只要让PWM同增同减就好,是最简单的做法. 但要做全彩呼吸灯就没这么简单了,可以用HSB(HSV) ...
- dsp呼吸灯C语言编程,DSP28335 呼吸灯程序
DSP28335呼吸灯程序 //########################################################################### // // FI ...
- 51单片机PWM源码讲解 小车调速 呼吸灯等应用
PWM的程序讲解: 通过控制正电平的脉冲所占的时间比来控制小灯的亮暗程度或者电机转速的快慢 等等很多需要调速的地方都可以使用PWM 以小灯为例占空比越大(即高电平所占的时间更长)就越亮 源码: #in ...
- 关于灯板改板不用SGM3146呼吸灯
在按键背光灯基本上做更改(如下图所示),把白灯换成蓝灯,只留6个就OK,调整R133和R317限流电阻大小使灯到合适的亮度 思路:用面包板焊接,5V0和EN_WLED和地从主板上引出来 实验结果:限流 ...
- 单片机led灯闪烁实验总结_单片机很好玩3,花三分钟,使用普通LED小灯,制作手机“呼吸灯”...
上一节为了解决单片机 IO 电流驱动能力不足,导致 LED 小灯亮度不高的问题,借助了三极管.单片机的 IO 通过三极管开关 LED 小灯的电流,最后的确明显让小灯的亮度更高了. 使用电路模拟软件 还 ...
- 单片机炫彩灯实训报告_51单片机呼吸灯实验报告.doc
51单片机呼吸灯实验报告.doc 呼吸灯1功能与技术分析呼吸灯就是让LED灯的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样.可以展示出各种酷炫的图像.11 ...
最新文章
- 如何备份思科、锐捷、Juniper的配置文件
- 大脚导入配置选择哪个文件_「科普向」为何我用大脚时,单体插件会安装失败?...
- python 报错 too many values to unpack (expected 3) 的解决方案
- 多个线程直接按对数据进行操作容易引发线程安全问题
- PHP中 下列哪个操作符用来连接字符串,PHP试题带答案
- UI设计中常见插画应用素材,拿来就可以用!
- 海洋CMS v6.53 v6.54命令执行
- 管理感悟:技术好的人都有点工作狂
- Appium 常用操作
- java对象创建、对象内存布局、对象的访问定位、句柄池、直接指针
- python-微信自动发送信息
- linux ext4-fs error,Ubuntu 17.04升级后的EXT4-fs错误
- 智慧城市:Web GIS 地图应用 IOC 运营中心
- 笔记本电脑已连接WIFI密码查看方法
- linux系统下部署python自动化程序并配置Jenkins定时执行
- uni-swipe-action失效?
- 天线3db波束宽度_波束宽度
- 如何打造VUCA时代的敏捷型组织?
- ChatGPT办公应用:制作PPT大纲
- 田野调查手记·浮山摩崖石刻(十三)