流水灯程序

时间: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,亮的是最左边的小灯。中间  过程大家自己分析一下。

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

相关阅读

睡觉要远离的十大电器,长期辐射会致癌,所有人猜不到第一名是它

辐射这个名词进入普通人的生活时间并不长,但大家对辐射的关注程度并不低,而日常我们接触到的辐射主要来自家用电器,那么到底哪些电器对我们有危害呢? 辐射是否对人有害的标...
2023-06-11
睡觉要远离的十大电器,长期辐射会致癌,所有人猜不到第一名是它

室内配电与照明插座线路的安装

  室内配电线路安装主要包括照明光源的安装、导线的选择与安装、插座与开关的安装及配电箱的安装等。室内配电线路安装好后,在室内可以获得照明,可以通过插座为各种家用电...
2023-06-27
室内配电与照明插座线路的安装

电工实操看不懂电路图、接线图?核心要点一文讲透

干电工实操,最基础也最容易出错的,就是分不清电路图和接线图!很多新手刚上手,看着两张图就发懵,不知道该看哪个、怎么看,其实只要掌握核心要点,不用死记硬背,就能轻松上手,实操起来少...
2026-04-16
电工实操看不懂电路图、接线图?核心要点一文讲透

变压器的运行特性,这一篇给你讲清楚

变压器的运行特性主要有外特性与效率特性,而表征变压器运行性能的主要指标则是电压变化率和效率。 1.2.1 变压器的外特性 当电源电压和负载的功率因数等于常数时,二次端电压随...
2023-06-13

浅谈电容的高频特性

01 高频电容的作用 在射频领域,贴片式电容的作用非常丰富,可以进行滤波器调谐、阻抗匹配、晶体管有源器件的偏置电路等等,了解电容的高频特性显得非常重要。 02 平行板电容器...
2023-03-31
浅谈电容的高频特性

热销商品

德国进口雅马哈风力灭火机大功率手提森林灭火器落叶工地吹雪机汽

德国进口雅马哈风力灭火机是一款高效、可靠的森林灭火和清理设备。它拥有大功率风机,能够迅速吹散落叶、杂草和积雪,有效清理工地和森林地面。这款灭火机采用先进技...
¥ 692.5

3M自粘橡胶条高硬度耐压实心幕墙玻璃舞台搭建货架专用减震密封条

3M自粘橡胶条是一款专为高要求工业及建筑场景设计的高性能密封减震材料,采用高硬度实心橡胶材质,具备优异的耐压性、抗老化性和持久弹性。其独特的自粘背胶设计,安装...
¥ 1.6

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

电位器旋钮电流调节螺帽直流逆变电焊机二保焊送丝机通用旋钮B102

电位器旋钮电流调节螺帽适用于直流逆变电焊机和二保焊送丝机,是一款通用的旋钮B102。该旋钮采用优质材料制造,具有耐磨损、耐高温、耐腐蚀等特点,能够长时间稳定运行...
¥ 0.7

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目