流水灯程序

时间:2023-03-13来源:佚名

  我们前边学了点亮LED小灯,然后又学了LED小灯闪烁,下边我们要进一步了解一下如何让8个小灯依次一个一个点亮,流动起来。

流水灯程序

图1 LED小灯电路图

   通过前面的课程,我们可以了解到控制引脚P0.0通过了74HC245控制DB0,P0.1控制DB1......P0.7控制DB7。我们还学到一个字节是8位,我们如果写一个P0,就代表了P0.0到P0.7的共8个位。比如我们写P0 = 0xFE;转换成二进制就是0b11111110,所以点亮LED小灯的程序,实际上我们可以改成另外一种写法,如下所示。

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main()

{

ENLED = 0;

ADDR0 = 0;

ADDR1 = 1;

ADDR2 = 1;

ADDR3 = 1; //74HC138开启三极管

P0 = 0xFE;

while(1); //程序停止在这里

}

  通过上边这个程序我们可以看出来,可以通过P0来控制所有的8个LED小灯的亮和灭。我们下边要进行依次亮和灭,怎么办呢?从这里就可以得到方法了,如果想让单片机流水灯流动起来,依次要实现的结果是:0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F。

  在我们的C语言当中,有一个移位操作,其中<<代表的是左移,>>代表的是右移。比如a = 0x01 << 1就是a 的结果等于0x01左移一位。大家注意,移位都是指二进制移位,那么移位完了,本来在第0位的1移动到了第一位上,移动完了低位是补0的。所以a的值最终是等于0x02。

  还要学习另外一个运算符~,这个符号是按位取反的意思,同样,按位取反也是针对二进制而言。比如a = ~(0x01),0x01的二进制是0b00000001,按位取反是0b11111110,那么a的值就是0xFE了。

  学会了这两个符号后,那么我们就可以把流水灯的程序写出来,先把程序贴上。

#include

sbit ADDR0 = P1^0;

sbit ADDR1 = P1^1;

sbit ADDR2 = P1^2;

sbit ADDR3 = P1^3;

sbit ENLED = P1^4;

void main()

{

unsigned char j = 0;

unsigned int i = 0;

ENLED = 0;

ADDR0 = 0;

ADDR1 = 1;

ADDR2 = 1;

ADDR3 = 1; //74HC138开启三极管Q16

while(1) //程序死循环

{

P0 = ~(0x01 << j ); //P0等于1左移j位,并且j

for(i=0; i<20000; i ); //延时

if(j == 8) //如果j等于8,重新给j赋值0

{

j = 0;

}

}

}

  这里我只讲两种情况,当j等于0的时候,1左移0位还是1,那么写成二进制后就是0b00000001,对这个数字按位取反就是0b11111110,亮的是最右边的小灯。当j等于7的时候,1左移7位就是0b10000000,按位取反0b01111111,亮的是最左边的小灯。中间  过程大家自己分析一下。

  流水灯结束后,关于小灯的讲解,我们暂时告一段落,后边还有小灯的高级用法,我们到时候再详细讲解。

相关阅读

电工基础知识简答题

学工控技术,拿10万年薪 马上注册,免费学习 超过100课时视频教程,免费下载海量学习资料 1、为什么变压器的低压绕组在里面,而高压绕组在外面? 答:变压器高电压绕组的排列方式...
2023-06-27

养鱼池水位自动控制

大家好!每天学一点,学习更轻松。关注我,感谢大家为我点赞。今天我们分享一个养鱼池水位自动控制。 在编制程序的时候,可以先将I/O表进行注释,这样在用I/O点位的时候就可以轻...
2023-04-30
养鱼池水位自动控制

90KW电机异响,电工说有问题,机修说正常,我这样做对吗?

周二下午,我正在公司篮球场上打得尽兴,机修主任突然找了过来,拉着我就往车间走,非要我去现场听一听一台电机的轴承声音,确认是不是有异响。可当我听完来龙去脉,当场就不干了,直接甩...
2026-04-11
90KW电机异响,电工说有问题,机修说正常,我这样做对吗?

为什么说“紧车工,慢钳工,吊儿郎当当电工,不要脸的是焊工”?

工厂里流行的口头语,“紧车工,慢钳工,吊儿郎当当电工,不要脸的是焊工”下面我们就来了解一下。 车工一旦接单,整个切削加工过程都是特别紧张忙碌的。每一个步骤都不能错,...
2023-06-11
为什么说“紧车工,慢钳工,吊儿郎当当电工,不要脸的是焊工”?

静电竟然会引起爆炸!教你5个小妙招,不做“闪电侠”!

前不久,浙江一位老人在厨房里忙碌时,身上穿的羽绒服突然爆炸! 后来经调查发现,原来......老人家里的煤气泄漏,他穿的羽绒服又产生了静电,当静电遇上煤气,就产生了爆炸!...
2023-06-11
静电竟然会引起爆炸!教你5个小妙招,不做“闪电侠”!

热销商品

304不锈钢连胶条喉箍R型固定夹管夹U型电缆电线连胶条卡箍橡胶减

304不锈钢连胶条喉箍R型固定夹管夹U型电缆电线连胶条卡箍橡胶减震,是一种高效、耐用的管路连接解决方案。该产品采用高品质304不锈钢材料,具有优异的耐腐蚀性和强度...
0.29

电焊机焊把线电焊线国标电缆线16 25 35 50 70平方纯铜焊把线

电焊机焊把线(电焊线)是焊接作业中的关键连接线,采用国标纯铜导体,导电性能优异、电阻低、发热少,确保电流稳定传输。常见规格包括16、25、35、50、70平方毫米,适用于不...
3.8

塑料镊子 黑色平头弯头尖头扁嘴圆头塑料防静电镊子 碳纤维镊子

塑料镊子是一种轻便、耐腐蚀且防静电的精密工具,广泛应用于电子、医疗、实验室及精密装配等领域。黑色款式多采用碳纤维增强塑料材质,兼具高强度与导电性,有效防止静...
0.6

阻燃尼龙编织网管 PET伸缩网套管 电脑机箱电线避震蛇皮管 10米

阻燃尼龙编织网管(PET伸缩网套管)是一种高性能电线保护套管,采用环保PET材料经精密编织而成,具有优异的阻燃、耐磨、抗拉伸及柔韧性能。其独特的蛇皮状结构可自由伸缩...
4.01

萝卜头螺丝刀磁性两用伸缩螺丝刀一字十字梅花平口短小改锥

萝卜头螺丝刀是一款多功能、便携实用的手动工具,集一字、十字、梅花(星型)等多种刀头于一体,采用磁性设计,可牢固吸附螺丝,提升操作效率。其独特的伸缩结构让刀头可灵活...
3.28

网站栏目