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

你可能感兴趣的文章
python 使用in判断不准确,in不好使
查看>>
Python 使用pandas 进行查询和统计详解
查看>>
Redis 配置文件redis.conf详细解释
查看>>
python网络爬虫(2)——scrapy框架的基础使用
查看>>
python网络爬虫实例教程试读_Python网络爬虫实战教程(全套完整版) - 学途无忧网 - 做技术的王者 - Powered By EduSoho...
查看>>
Python 使用哈希函数用于加密
查看>>
Python 依赖管理的革新——Poetry 深度解析
查看>>
python 保留精度及增加去除数字的千位分隔符(金额化数字)
查看>>
python 倒计时 9,8,7,。。。。。。0
查看>>
Python 入门开发学习笔记之数据的增删改查
查看>>
Python 入门教程(2)搭建环境 2.4、VSCode配置Node.js运行环境
查看>>
Python 八大排序算法合集
查看>>
python 关于epoll的学习
查看>>
Python 内存管理
查看>>
Python 内嵌函数:它们有什么用处?
查看>>
Python 内置 sum 函数 vs. for 循环性能
查看>>
Python 内置时间模块
查看>>
python 内部如何实现命名元组?
查看>>
python 写入json数据到数据库
查看>>
Python 列表删除相同的元素
查看>>