历史上的今天
返回首页

历史上的今天

今天是:2025年04月14日(星期一)

正在发生

2020年04月14日 | 51单片机之LED流水灯

2020-04-14 来源:eefocus

数据类型

在写流水灯程序之前,我们了解一下数据类型。

image.png?imageView2/2/w/550

使用对应数据时,应该注意溢出问题,若溢出编译器也有可能编译通过,但是执行结果是错误的。


流水灯

操作LED前必须先了解LED是什么电平点亮,LED连接在什么引脚上,通常需要查找原理图。此处我的8个LED连接在P2口,为低电平点亮(因为灌电流比拉电流能力强)。


1、函数式循环流水灯:

#include "reg52.h"   

#include //函数头文件

  

#define led P2 //对整个LED的P2端口进行定义


/* 延时函数 */

void delay(unsigned int del) //10ms * del

{

unsigned int i,j;

for(i=0; i for(j=0; j<1827; j++);

}


/* while(i--);//延时 10 * i  us;因为单指令为1us; */


void main()

{

unsigned char  i; //使用char 节省RAM

led=0xfe; //初始状态将LED0点亮,1111 1110

while(1)

{

for(i=0;i<7;i++) //将led循环左移一位

{

led=_crol_(led,1);

delay(10); //大约延时100ms,LED显示比较快

}

// 此时 led为 0111 1111

for(i=0;i<7;i++) //将led循环右移一位

{

led=_cror_(led,1);

delay(10); 

}

}

}


逻辑移位式(补0)流水灯

#include "reg52.h"   

#include //此为函数头文件

  

#define led P2 //对整个P2端口进行操作


/* 延时函数 */

void delay(unsigned int del) //10ms * del

{

unsigned int i,j;

for(i=0; i for(j=0; j<1827; j++)      

    ;

}


/* while(i--);//大概延时10us;因为单指令为1us; */


void main()

{

unsigned  char i;

led=0xfe; //初始状态将LED0点亮

while(1)

{

for(i=0;i<8;i++)// 1111 1110

{

P2=~(0x01< delay(10); //大约延时100ms,比较快哦

}

for(i=0;i<8;i++)

{

P2=~(0x80>>i); //将1右移i位,然后将结果取反赋值到P2口

delay(10); 

}

}

}


这两种方式效果一致。至此,LED的操作结束啦。

推荐阅读

史海拾趣

德索五金(dosinconn)公司的发展小趣事

发展历程:2008年,公司从工程部门中分出研发部门,并设立研发实验室。连接器定制研发从此成为公司的核心业务,创新意识也深入到了企业文化之中。

成果与影响:研发部门的成立和技术创新的推动使德索五金电子在连接器制造领域保持了领先地位,也为公司的长远发展提供了源源不断的动力。

Fong Ya Enterprise Co Ltd公司的发展小趣事

发展历程:2015年,德索五金电子国际控股有限公司在香港注册成立,为公司拓展海外市场提供了有力支持。通过不断优化产品和服务,德索五金电子逐渐在国际市场上赢得了客户的信任和认可。

成果与影响:海外市场的拓展使德索五金电子的业务范围更加广泛,也为公司的国际化发展奠定了坚实的基础。

Caltron Devices Ltd公司的发展小趣事

随着电子行业的不断发展,Caltron Devices Ltd公司积极拓展业务领域,实现了多元化发展。公司不仅继续深耕原有的电子产品领域,还逐渐拓展到智能家居、物联网等新兴领域。通过不断创新和拓展,Caltron成功抓住了市场机遇,实现了业务的快速增长。

Component Research Co公司的发展小趣事

Component Research Co最初只是一家小型电子元件研发公司,面临着激烈的市场竞争。然而,公司研发团队在一次实验中意外发现了一种新型半导体材料,这种材料具有出色的导电性能和稳定性。公司迅速将这一发现转化为实际产品,并推向市场。新产品因其卓越性能迅速受到客户青睐,Component Research Co因此名声大噪,逐渐在电子元件市场占据一席之地。

BUSSMANN公司的发展小趣事

1992年,Bussmann开始了第一款芯片保险丝的开发工作。这款保险丝将可熔性材料沉降到陶瓷基底上,大小只有3mm*1.5mm,可以通过自动装配机安装到印刷电路板上。这一创新不仅大大提高了熔断器的性能和可靠性,还降低了生产成本,为电子行业的发展注入了新的活力。

Hanghsing Enterprise Co Ltd公司的发展小趣事

1985年,库柏工业收购了Bussmann公司,成立了新的事业部——“Cooper Bussmann熔断器”。这一收购为Bussmann带来了更广阔的市场和更多的资源,同时也带来了新的挑战和机遇。在库柏工业的支持下,Bussmann开始了更加积极的创新和市场拓展,逐渐成为了全球熔断器行业的领导者。

问答坊 | AI 解惑

在Keil中添加头文件

Keil中头文件很重要,对于51单片机常使用reg51.h、reg52.h或AT89x51.h。     本人是一个单片机c语言的菜鸟,不太会用Keil。我的电脑里安装的Keil就不能使用AT89x51.h头文件,还以为软件里没有这个头文件呢,所以每次参考网友的程序时都 ...…

查看全部问答>

嵌入式即将成为纯软件的学科?

现在提及嵌入式,就谈到了嵌入式操作系统。 难道大家不再关心下面硬件和底层的内容了么? 如果这样,嵌入式发展不是应该纳入软件门类?和我们硬件有什么关系呢?…

查看全部问答>

大家来看看晶振的两种接法,有谁用过这种接法?

1.这种接法的优点就是起振容易,适应频率范围比较宽。具体频率范围本人不记得了。 2.这种接法的优点接法简单,缺点是不那么容易起振,C1,C2要合适。 …

查看全部问答>

在C中如何调用C++函数

我想在C模块中调用C++模块中的函数。 目前,当我的C++模块中没有使用C++的库函数,我能正常调用 如: pro.cpp void pro(void) {     printf(\"test\\n\"); } 我在c中使用loadModule()与symFindByName()等函数,最终能 ...…

查看全部问答>

这个基于WinCE的条码采集器设备在电池用光情况下再充电打开竟然会初始化,把原先的一些配置都改了,大家有办法搞定这个?

这个基于WinCE的条码采集器设备在电池用光情况下再充电打开竟然会初始化,把原先的一些配置都改了,大家有办法搞定这个?…

查看全部问答>

wince有关支持韩文的问题?

在PB中选择了\"朝鲜语\",编出的nk中可以显示韩文,但是\'\\\'符号显示不对,显示成了\"中间有一横杠的\'W\'\",这是为什么?并且如果是\"英语\"/\"中文\"下,activesync工作正常,在\"朝鲜语\"下activesync也连不上??? 另外我的evc中怎么显示韩语啊????? ...…

查看全部问答>

STM32代码优化后的问题

刚接触STM32,还只看了时钟系统、中断、GPIO和通用定时器的普通定时功能。 编译器MDK4.0,借固件库写个了用TIM2控制灯闪的程序。不优化时正常,优化后(优化等级1~3都试过)闪烁频率翻倍了!本来一秒一次,现在一秒两次。 使用RCC_GetClocks ...…

查看全部问答>

求助uCOS在51上移植的问题

小弟学习uCOS-II 已经有一段时间,打算移植到STM32上。在这之前想先学习一下uCOS-II在51上的移植。最近在论坛上看到一个移植程序,就去看了一下,发现有好多不懂。先请教几个问题。 这些都在 OS_CPU_A.asm 中。      NAME&nbs ...…

查看全部问答>

圆点博士微型四轴飞行器...原理图和PCB设计

圆点博士微型四轴飞行器2011年11月3日完成情况: 1.圆点博士微型四轴飞行器线路图之电机控制 2. 圆点博士微型四轴飞行器线路图之传感器 3 .圆点博士微型四轴飞行器线路图之2.4G无线控制 4. 圆点博士微型四轴飞行器线路图之锂电池充电 未完待 ...…

查看全部问答>

CCS中能进行msp430的软件仿真嘛?

我没有开发板,请问能在CCS中进行msp430的软件仿真嘛?就像keil中调试51那样。 如果可以的话,如何设置呢?…

查看全部问答>