博客
关于我
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/

你可能感兴趣的文章
php机器人聊天对话框,基于AIML的PHP聊天机器人
查看>>
PHP查找数组中最大值与最小值
查看>>
php查最大值,在PHP数组中查找最大值
查看>>
php标签筛选,关于PHP CodeIgniter框架中通过<a>标签和url做多条件分类筛选
查看>>
php根据年月日计算年龄
查看>>
RabbitMQ - 单机部署(超详细)
查看>>
php检查注册,PHP检查注册的电子邮件地址是一个’school.edu’地址
查看>>
php模拟发送GET和POST请求
查看>>
RabbitMQ - 以 MQ 为例,手写一个 RPC 框架 demo
查看>>
php模板引擎smarty
查看>>
php正则表达式模式
查看>>
php正则表达式的特殊字符含义
查看>>
PHP正则表达式获取武汉市的实时pm2.5数据并邮件发送phpmailer
查看>>
RabbitMQ + JMeter组合,优化你的中间件处理方式!
查看>>
PHP水仙花问题解法之一
查看>>
php没有解析是怎么回事,linux下php文件没有被剖析怎么办?_后端开发
查看>>
php注册页面实现注册后跳转页面
查看>>
PHP消息队列的实现方式与详解,值得一看
查看>>
PHP混合Go协程并发
查看>>
php源码中如何添加滚动公告,给WordPress网站添加滚动公告的方法
查看>>