一、查表法实现流水灯
查看开发板的原理图,知道了控制LED2~LED7的端口为P0口,所以可以通过对P0口赋值控制发光二极管的亮灭。比如,用十六进制表示P0的值,P0=0xfe,即LED2发光,其他LED熄灭。要实现流水灯的话,让发光二极管从LED2到LED7顺序发光就可以了,也就是说,P0口的值依次为0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,简简单单。
而查表法就是把P0口要表示的值做成数组,再利用'code'将其存入ROM中,使用时,让P0口等于数组中的某个值。
程序如下:
#include
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
void delay(unsigned char x);
unsigned char code aa[]=//P0口查表
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main()
{
unsigned i;
ADDR0=0; //按原理图端口初始化
ADDR1=1;
ADDR2=1;
ADDR3=1;
ENLED=0;
while(1)
{
for(i=0;i<8;i++)
{
P0=aa[i];
delay(250);
}
}
}
void delay(unsigned char x)
{
unsigned n;
while(--x)
for(n=0;n<250;n++);
}
二、循环法
用查表法实现流水灯时,发现对P0口赋值是由规律的,即0的位置在左移,如果让0左移到最高位后,重新从最低为开始左移,也可以实现流水灯。介就是循环法,也是蛮简单的,可以加入一个叫'intrins.h'的头文件来做。
程序如下:
#include #include
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
void delay(unsigned char x);
void main()
{
unsigned char i,a=0xfe;
ADDR0=0; //按原理图端口初始化
ADDR1=1;
ADDR2=1;
ADDR3=1;
ENLED=0;
while(1)
{
for(i=0;i<8;i++)
{
P0=a;
a=_crol_(a,1);
delay(250);
}
}
}
void delay(unsigned char x)
{
unsigned n;
while(--x)
for(n=0;n<250;n++);
}
关键字:51单片机 LED 流水灯
引用地址:
51单片机——LED流水灯
推荐阅读最新更新时间:2024-11-17 10:24
哪些技术可以增强LED照明系统可靠性
为打造兼具节能、高效的智慧 照明 系统,利用MCU与可调光驱动器进行环境感测、高效能调光已是现今 LED照明 系统盛行的设计趋势,除此之外,光学与散热的模拟亦是确保 LED产品 的可靠性和安全性不可或缺的开发环节。 电路设计与系统模拟是实现 LED 智慧型照明系统的两大成败关键,其中在电路设计方面若加入微控制器(MCU),不仅可全天候监控LED装置并即时回报异常状况,还能对照明设备进行群组控制以调节能源,使照明系统更具智慧化;而为加强LED光源稳定度,将可调光驱动器导入电路设计中,则可解决光源闪烁的问题,并提升能源使用效率。 另一方面,透过光学与散热的模拟过程来验证产品可行性更是至关重要,此举不仅可确保产品安全性,在模拟过
[电源管理]
ARM之LPC2132流水灯LCD1602
1、汇编程序 GPADIR EQU 0xE0028008 GPASET EQU 0xE0028004 GPACLR EQU 0xE002800C EXPORT xmain AREA Init,CODE,READONLY ENTRY xmain ldr r0,=GPADIR orr r1,r1,#0x0ff orr r1,#0x300 str r1, ;A=out ;========
[单片机]
【51单片机】STC89C52独立键盘实验,含c代码(6)
1.参考教程: 清翔51单片机教程 2.实现效果: 利用独立键盘的按键,控制数码管数字的变化。 3.基本原理 **特点:**每个按键占用一个IO口,当按键数量较多时,IO口的利用效率不高,但程序简单,适用于所需按键较少的场合。 **原理:**以按键S2为例,给P30赋逻辑1,当S2被按下的时候,由于S2左端接地,则P30输出由高电平变低电平。S2没被按下依旧输出高电平。 4.参考代码 #include reg52.h #include intrins.h //标准库函数 #define uint unsigned int #define uchar unsigned char sbit DU = P2^6; //
[单片机]
利亚德与台湾晶电成立合资公司落户无锡, MicroLED这么香?
利亚德集团将与台湾晶电集团成立合资公司,并正式注册落户无锡市梁溪区,并已与无锡市梁溪区共同签署了“关于 Mini LED 和 Micro LED 显示项目合作框架协议”,双方将在无锡建成运用巨量转移技术实现最小尺寸 Micro LED 显示产品大规模量产的基地,极大推进 Micro LED 市场的布局和发展。 据了解,基地建设将于今年年底启动计划实施,2020 年正式投产,2023 年达产,未来销售额预计可达 50 亿元人民币。项目包含 Mini LED 和 Micro LED 在中国大陆的设计研发、生产、销售等整条产业链。 利亚德自 2011 年全球首发小间距电视以来,陆续推出 P1.9、 P1.6、P1.2、P1.0
[嵌入式]
LED光源模组简介
一、基本定义:LED光源模组,是结合现代制造技术和照明技术为一体的现代标识产品,主要用于展示广告字体(压克力、吸塑)和标识的夜间效果,它以文字或标识为媒介,安装在楼宇顶部或墙面,既能表现标识白天效果,又能利用LED作为发光光源,在夜间表现出另外一种效果,再配以LED照明应用控制系统,对文字或标识进行动态视频控制,在一些娱乐气氛较浓的场所,LED光源模组已经成了企业展示自我形象的最重要的选择之一。 二、基本参数:LED光源模组按颜色种类可以分为单色、七彩、全彩单点控制三种,按单颗LED的功率又可以分为小功率(0.3W以下)、中功率(0.3-0.5W)、大功率(1W及以上)三种,按密封性又可以分为防水和不防水两种,目前用得最多的是
[电源管理]
首款照明级LED 提供低成本解决方案【Cree】
2011 年 4 月 11 日,北京讯 —Cree 公司宣布推出业界首款照明级 LED ,完美结合高光输出和 XLamp®XM-L LED 的小型化封装以及Cree 独特的 EasyWhite™光色混合技术。该款全新的 XM-L EasyWhite LED 能够显著降低因色区分档、光色混合以及采用多颗分立式LED所带来的成本和复杂性,这不仅能帮助客户降低成本,并可进一步提高 LED 解决方案的性能,以满足紧凑型定向照明应用的需求;例如可用于20 至 25 瓦的卤素 MR、PAR 和 B10 型的替代灯。 新型 Cree XLamp® XM-L EasyWhiteTM LED 在上述应用中,原先的单颗 LED
[电源管理]
51单片机实验11:串口通信
目的:通过电脑向单片机发送字符,单片机收到字符后,向电脑回应相同的字符。 开发板时钟频率为12MHz。程序设置波特率为4800,加倍。 #include reg52.h #define uc unsigned char void usartinit() { TMOD=0X20; TH1=0XF3; TL1=0XF3; PCON=0X80; SCON=0X50; TR1=1; ES=1; EA=1; } void usart() interrupt 4 { uc receive_data; receive_data=SBUF; RI=0; SBUF=receive_data
[单片机]
击败传统照明的关键:智能LED是这样赢得比赛的
现在,您可能会问我:“马拉松跟 LED 有什么关系?你真的知道自己在说什么吗?”我想是的。就像强壮的选手领跑马拉松一样,LED在高能效照明领域遥遥领先。相对于白炽灯和荧光灯照明, LED 的主要技术优势是消耗的能源更低、寿命更长,并且能够更好地控制 照明 颜色和方向。 LED智能化——赢得比赛的关键所在 LED将如何发挥其巨大潜能?毫无疑问,第一道障碍是价格。LED目前的成本远远高于现有照明方案。节能往往不足以说服价格敏感的企业和消费者购买较贵的产品。随着时间推移,大规模生产可能会降低价格,但成本是否能够降得足够低,降价速度是否满足用户的预期?这些都是不确定因素,有待商榷。当然,这些问题也超出了本文的讨论范围。假如我们
[电源管理]