51例程---跑马灯

2020-03-25来源: eefocus关键字:51  跑马灯  流水灯

原理分析:什么是跑马灯


(1)跑马灯和流水灯非常像,不同的是:流水灯是8颗LED其中7灭1亮,亮的在移动;跑马灯是8颗LED7亮1灭,灭的在移动。

01111111 0x7f 10000000

10111111 0xbf 01000000

11011111 0xdf 00100000


(2)编程实现跑马灯,必须用到C语言的2种技巧:左移(右移)、按位取反;

C语言中~这个符号表示对一个数字按位取反,譬如一个数01111111按位取反后变成了10000000。而11011111按位取反后变成了00100000相反 01 左移


例程:


#include


void delay(void)

{

   unsigned char i = 100;

   unsigned char j = 100;

   while(i--)

   {

     while(j--);

}

} //延时函数


void main(void)

{  

     unsigned char i = 0;

unsigned char initial_value = 0x80;

     while(1)

{

       for(i = 0; i < 8; i++)

  {

  P0 = ~(initial_value>>i);

  delay();

  }



}  


关键字:51  跑马灯  流水灯 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492494.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:关于这个错误 error C231: 'INT0': redefinition的原因以解决
下一篇:单片机小白学习之路(十一)---8x8点阵显示数字

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51例程---流水灯改进版
(1)首先定义变量unsigned char a,初值等于0x80(10000000)(2)8个状态,其实就是a依次右移0-7位(3)利用C语言中移位运算符实现移位C语言中的移位运算符,>>可以右移,<<可以左移。(无符号数移位:移出去的位丢掉了,空出来的位用0补。有符号位另当别论。)例如:12345678---右移 = 01234567例程1:#include<reg51.h>void delay(void){   unsigned char i = 100;   unsigned char j = 100;   while(i--
发表于 2020-03-25
基于51单片机个8位数码管的简单拨号键盘
我们知道,在拨号是,每拨一位数字,前边拨的数字就要向左挪一位,我们可以用一个一位数组,通过移动数组中数字的移动和8位数码管的动态扫描来实现位置的移动。代码如下:#include "reg52.h"           //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16;     //对数据类型进行声明定义typedef unsigned char u8;#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P2^2;sbit LSB=P2^3;
发表于 2020-03-25
C51玩8x8LED点阵:PointGame
复制这段内容后打开百度网盘手机App,操作更方便哦打开软件后,新建8X8的图像,模拟动画,放大格点,用鼠标在白色窗口中点上自己想要的,取模方式,C51如果选择的是纵向(行选),那么列选是通用的0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe如果选择的是横向(列选),那么行选是通用的0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01更改纵向还是横向在参数设置-》其他选项里1.为了显示正确,必须先选通用的,再选另外一边2.一般另外一边在显示和延迟后需要消隐#include<reg52.h>#include<intrins.h>typedef
发表于 2020-03-25
C51玩8x8LED点阵:PointGame
51单片机——8X8点阵显示
74hc595.h:#ifndef __74hc595_H__#define __74hc595_H__/************************************位定义************************************/sbit DATA_IN = P1^0;         //串行数据输入sbit ST_CK = P1^1;         //存储寄存器时钟输入sbit SH_CK = P1^2;         //移位寄存器时钟输入/*****************
发表于 2020-03-24
基于51单片机的秒表和数显时钟
刚刚学过51单片机最重要的两个部分,定时器和中断,学完后应用定时器和数码管,首先,我们可以做出一个秒表程序,做出后,我们再在秒表的基础上,做一个数显时钟#include<reg52.h>sbit k1=P3^1;   //定义四个按键sbit k2=P3^0;sbit k3=P3^2;sbit k4=P3^3;sbit LSA=P2^2; //38译码器数码管位选sbit LSB=P2^3;sbit LSC=P2^4;typedef unsigned char u8;   //对数据类型进行声明定义typedef unsigned int u16;u8 code smgduan[]={0x3f
发表于 2020-03-24
初步学习MSP430——跑马灯
/***********************************************程序功能:实现流水灯以三种流动方式和四种流动速度          的不同组合而进行点亮"流动"------------------------------------------------拨码开关设置:将LED位拨至ON,其余拨至OFF测试说明:观察流水灯流动顺序和速度的变化************************************************/#include  <msp430x14x.h>typedef unsig
发表于 2020-02-24
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved