单片机控制的流水灯程序

发布者:SecretWhisper最新更新时间:2015-03-18 来源: diangon关键字:单片机  流水灯 手机看文章 扫描二维码
随时随地手机看文章
  我们前边学了点亮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。[page]

  还要学习另外一个运算符~,这个符号是按位取反的意思,同样,按位取反也是针对二进制而言。比如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,亮的是最左边的小灯。中间  过程大家自己分析一下。

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

关键字:单片机  流水灯 引用地址:单片机控制的流水灯程序

上一篇:74HC138三八译码器的应用
下一篇:基于单片机的激光扫描高频信号幅值测量系统设计

推荐阅读最新更新时间:2024-03-16 13:55

基于单片机实现的无线遥控技术
引言    无线遥控 器由于控制距离远,抗干扰性强,已越来越多的出现在生活的各个方面。本文介绍了一款通用的无线遥控器,采用AT89C5l作为控制核心并采用专用编码解码电路,由于其体积小、价格低廉因此可非常方便的移植到遥控机器人、遥控小车上等,实现远距离控制。   1 工作原理   当无线遥控器的某个按键按下时,由单片机判断是否有按键发生并检测出键值。单片机根据检测到的键值发出相应的码值,无线发射器负责将按键信号以编码的形式在315MHz的频率上发射出去。无线接收器接收并放大发射信号同时解调出TTL电平信号送至单片机进行处理,单片机通过比较和识别接收来的无线遥控编码便可执行相应的遥控功能。   2 设计方案   无线遥
[单片机]
基于<font color='red'>单片机</font>实现的无线遥控技术
瑞萨电子推出16位通用RL78/G23扩充低功耗MCU RL78产品家族
新款RL78/G23针对物联网终端应用进行优化,扩展外设与安全功能,提升功耗性能 2021 年 4 月 13 日,日本东京讯 - 全球半导体解决方案供应商瑞萨电子集团今日宣布,推出16位通用型RL78/G23微控制器(MCU)并开始量产,此举将进一步增强瑞萨面向广泛应用的8位和16位RL78 MCU的竞争力。RL78/G23可兼容瑞萨当前通用RL78 MCU(如RL78/G13),同时改善功耗性能,满足电池供电应用的需求。此外,为应对市场需求,其片上闪存容量增加至768KB,并大幅扩展片上外设功能,从而在增加功能的同时提升安全性并降低物料清单(BOM)成本。凭借以上功能,全新RL78/G23非常适用于需要兼顾功耗和成本的
[单片机]
瑞萨电子推出16位通用RL78/G23扩充低功耗<font color='red'>MCU</font> RL78产品家族
51单片机烧写芯片无法工作的故障分析
故障现象: 做了一个单片机温度监测系统,仿真机上一切正常,烧写芯片无法工作。 相关电路框图: 用51做处理器,外围电路如图,一片双积分转换芯片ICL7135做AD,它的时钟需要125K,用51的ALE经过一片CD4024分频得到。1403提供基准源。另外,一片7660提供7135工作所需要的负压。 为了省电,把所有模拟电路部分电源用一个晶体管管理起来,由P1.0来控制。(上图为示意图,省去了电阻没画)P1.0为地的时候,模拟系统才上电 现在怪现象如下: 仿真机正常运行,烧写芯片后无反应。 仿真正常,说明外围芯片完全正常,电路也没有错误。 经过检查,晶体正常,复位可靠,EA高,程序堆栈都没有溢出,并排除其它一切低级错
[单片机]
51<font color='red'>单片机</font>烧写芯片无法工作的故障分析
51单片机SRF寄存器
1、21个寄存器介绍 51系列单片机内部主要有四大功能模块,分别是I/O口模块、中断模块、定时器模块和串口通信模块(串行I/O口),如其结构和功能如下图: iframe id="iframe_0.2188624832779169" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://www.51hei.com/UploadFiles/2013-12/huqin/psb(108).png?_=5106258%22%20style=%22border:none;max-width:1432px%22%3E%3Cscript%3Ewin
[单片机]
51<font color='red'>单片机</font>SRF寄存器
C52单片机定时器2介绍
定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位可将其设置为定时器或是计数器;通过设置T2CON中的工作模式选择位可将定时器2设置为三种工作模式,分别为捕获、自动重新装载(递增或是递减计数)和波特率发生器。 知识点一、定时器2的控制寄存器T2CON(可按位寻址)* D7位--TF2:定时器2溢出标志位。用于请求中断(必须由软件清0) D6位--EXF2:定时器外部标志位。当外部信号使能时,发生外部负跳变时置位请求中断(必须由软件清0) D5位--RCLK:接受时钟标志位。默认情况下串行口中模式1和模式3的时钟是由定时器1的溢出率提供,若该位置位,则由定时器2提供。 D4位--TCLK:发送时钟
[单片机]
飞思卡尔超薄MEMS传感器问世,可简化微处理器和微控制器集成
飞思卡尔半导体公司已经开始推出市场上最薄的具有3轴数字输出的加速计的微机电系统(MEMS)传感器MMA7450L的样品,并将于第3季度量产。该加速器能够简化微处理器和微控制器的集成,目标市场为移动电话和便携式媒体播放器。 该产品为0.8毫米接点栅格阵列(land grid array, LGA),能够与I2C和SPI接口总线通信,无需专用模数转换器,是传感器能够与其它器件的总线一起共享借口。 MMA7450L具有多种运动功能,如游戏控制、点击静音、硬盘自由落体保护等。 飞思卡尔公司传感器与制动器解决方案部门副总裁及总经理Demetre Kondylis表示,该产品的封装尺寸减少了77%,数字输出免除了模数转换器和外部存储器。
[焦点新闻]
基于89S51单片机的微型热敏打印机软件设计
1引言 由于常用的微型针式打印机的速度慢,噪声大,无法满足某些场合的需要。微型热敏打印机具有打印速度快、噪音低、可靠性高、字迹清晰、机头小而轻等优点,可满足各种场合的打印要求,因此得到广泛应用。笔者在汽车行驶记录仪的开发过程中,根据厂家要求,选用较为先进的热敏打印机作为打印设备。但微型热敏打印头对打印时序和温度要求较高,一旦控制不当极易造成打印头烧毁。因此,在有合理的硬件设计的基础上,软件设计也十分重要。本文使用某些软件设计替代了部分硬件电路,使打印机的控制电路得到了简化。 2 打印原理 选用的FTP-628作为热敏打印头。该热敏打印头点结构384点/行,水平方向点密度:8点/mm,垂直方向行间距:8点/mm。有效打印宽度4
[单片机]
基于89S51<font color='red'>单片机</font>的微型热敏打印机软件设计
基于C8051F060单片机和K9F2808UOC存储器实现数据采集系统的设计
从上个世纪九十年代起,电子技术在钻井井下得到应用。但井下钻具的振动会给很多传感器带来不利影响。 特别是对测量井下钻头姿态的惯性导航传感器影响巨大,在随钻振动环境中,如果对信号不作处理,根本就不能测量出正确的井斜角和方位角,也就无法实现井眼轨迹随钻控制的要求。本文介绍应用SoC芯片中的DMA技术对振动的高速采集和存储功能的实现方法,并给出了钻井环境中测试的结果。 1 方法的提出 传统的数据采集方法采用CPU直接控制的方式进行数据采集,数据传送需要经过CPU的中转才能存入存储器,传送速度慢且采集速率受到CPU的限制,极大影响了系统的采样频率,不能满足对振动信号高速采集的要求。而在DMA传送方式下,数据传送不经过CPU,由DMA
[单片机]
基于C8051F060<font color='red'>单片机</font>和K9F2808UOC存储器实现数据采集系统的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved