博客
关于我
51单片机——LED流水灯
阅读量:681 次
发布时间:2019-03-17

本文共 1719 字,大约阅读时间需要 5 分钟。

51单片机——LED流水灯

一、查表法实现流水灯

通过对51单片机开发板的原理图进行分析,我们了解到控制LED2~LED7的I/O端口为P0口。通过对P0口进行赋值,可以实现发光二极管的亮灭控制。具体而言,使用十六进制表示P0的值时,可以实现所需的效果。例如,P0=0xfe时,仅LED2发光,其余LED熄灭。为了实现流水灯效果,需要让发光二极管从LED2到LED7顺序发光。这意味着P0口的值依次为0xfe、0xfd、0xfb、0xf7、0xef、0xdf、0xbf、0x7f。实现起来非常简单。

通过查表法,我们可以将P0口需要的值存储在循环器中的数组中,这样在程序运行时,只需读取数组中的相应值即可完成控制。这种方法具有简单易懂的优点,同时能够有效实现流水灯的效果。

Note: 下面提供的代码示例可以帮助更好地理解查表法的实现方式。

#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 n; while(--x) { for(n = 0; n < 250; n++) { } }}unsigned char code aa[] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};void main() { unsigned i; ADDR0 = 0; // 初始化I/O端口 ADDR1 = 1; ADDR2 = 1; ADDR3 = 1; ENLED = 0; while(1) { for(i = 0; i < 8; i++) { P0 = aa[i]; delay(250); } }}

二、循环法

在查表法的基础上,我们可以采用另一种实现流水灯的方法——循环法。这一方法的核心思想是利用对P0口值的左移操作来完成LED的流水灯效果。通过将左移操作嵌入到循环中,可以无需手动储存所有可能的P0值,从而实现流水灯的自动渐变效果。

这种方法的实现极为简单,只需要包含[intrins.h]头文件即可完成。在程序中,可以通过声明照度器时标志并持续进行左移操作来实现流水灯效果。

Note: 下面提供的代码示例展示了循环法的实现方式。

#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) { unsigned n; while(--x) { for(n = 0; n < 250; n++) { } }}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); } }}

这些代码示例提供了实现LED流水灯的两种不同方法。查表法通过提前定义并存储所有需要的P0口值来实现流水灯效果,而循环法则利用对P0口值的连续左移操作来实现流水灯的渐变效果。两种方法都非常简单易于实现,并且能够在短时间内完成流水灯的开发和测试工作。

转载地址:http://jmgqz.baihongyu.com/

你可能感兴趣的文章
Numpy:条件总和
查看>>
numpy、cv2等操作图片基本操作
查看>>
numpy判断对应位置是否相等,all、any的使用
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>
numpy数组替换其中的值(如1替换为255)
查看>>
numpy数组索引-ChatGPT4o作答
查看>>
NUMPY矢量化np.prod不能构造具有超过32个操作数的ufunc
查看>>
Numpy矩阵与通用函数
查看>>
numpy绘制热力图
查看>>
numpy转PIL 报错TypeError: Cannot handle this data type
查看>>
Numpy闯关100题,我闯了95关,你呢?
查看>>
Nutch + solr 这个配合不错哦
查看>>
NutUI:京东风格的轻量级 Vue 组件库
查看>>
NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
查看>>
NutzWk 5.1.5 发布,Java 微服务分布式开发框架
查看>>
NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
查看>>
NuxtJS 接口转发详解:Nitro 的用法与注意事项
查看>>
NVelocity标签使用详解
查看>>
NVelocity标签设置缓存的解决方案
查看>>
Nvidia Cudatoolkit 与 Conda Cudatoolkit
查看>>