呼吸灯和花样流水灯 51单片机实现

1.用C51单片机实现花样流水灯,代码如下:

#include <reg52.h> 
#define LED_All P1            //led灯所用的接口,单片机接口不同,led灯不同
void delayms()
{
unsigned char x = 0;          
unsigned char i;
unsigned char y = 0;
while(y < 0.001)             //定义led灯的切换的延时时间,越小越快
{                     //i,x,y均可以修改
x = 0;
while(x<100)
{
i = 0;
while(i<100)
{
i++;
}
x++;
}
y++;
}
}
#define LED_NUM 8          //定义led灯的数量,可快速实现不同用途的修改
void main()
{
unsigned char k;
unsigned char j;
unsigned char LED_ALL[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};      //led灯亮灭的十六进制数组
unsigned char LED_ALL1[] = {0XFC,0XF3,0XCF,0X3F};
  while(1)
  {
    for(k=0;k<3;k++)                    //第一个for实现奇偶灯交叉闪烁三次,k的值决定了灯的闪烁次数
    {
      LED_All = 0xAA;                      
      delayms();
      LED_All = 0x55;
      delayms();
    }
    for(k=3;k>0;k--)                //实现一个流水灯左右三次(左右来回为一次)
    {
      for(j=0;j<LED_NUM;j++)        
      {
        LED_All = LED_ALL[j];
        delayms();
      }
      for(j=6;j>0;j--)
      {
        LED_All = LED_ALL[j];
        delayms();
      }
    }
    for(k=0;k<3;k++)            //实现前四个灯亮后四个灯灭,交叉闪烁3次,修改次数同上
    {
      LED_All = 0xf0;
      delayms();
      LED_All = 0xf;
      delayms();
    }
    for(k=3;k>0;k--)              //实现两个灯依次流水3次
    {
      for(j=0;j<4;j++)
      {
        LED_All = LED_ALL1[j];
        delayms();
      }
      for(j=2;j>0;j--)
      {    
        LED_All = LED_ALL1[j];
        delayms();
      }
    }
  }
}

2.实现第一个灯为灯呼吸,程序如下;

#include <reg52.h>
sbit LED1 = P3^0;
void delay(unsigned int a)          //定义一个延时函数
{
  while(--a);
}
void main()
{
  unsigned int t,T=800;          //定义变量,T=800为led灯呼吸的呼吸频率,数值越小,频率越小
  while(1)
  {
    LED1 = 1;
    for(t=1;t<T;t++)
    {
      LED1 = 0;
      delay(t);          
      LED1 = 1;
      delay(T-t);
    }
    LED1 = 0;
    for(t=T-1;t>0;t--)
    {
      LED1 = 0;
      delay(t);
      LED1 = 1;
      delay(T-t);
    }
  }
}

原文地址:https://www.cnblogs.com/yozora/p/11605290.html

时间: 2024-10-09 18:43:26

呼吸灯和花样流水灯 51单片机实现的相关文章

C51单片机实现呼吸灯和花样流水灯程序

1.用C51单片机实现花样流水灯,代码如下: #include <reg52.h> #define LED_A P1 //led灯所用的接口,是哪个口就写P几void delayms(){ unsigned char x = 0; unsigned char i; unsigned char y = 0; while(y < 0.001) //定义led灯的切换的延时时间,越小越快. {   //(y < 0.001);(x<100);(i<100)都可以修改 x =

花样流水灯的verilog实现

LED(Light emitting diode)发光二极管将电能转化为可见光,正向电压导通,反向电压截止.对于该板子,二极管用低电压导通,其实验原理图为: 所谓流水灯,即让LED像水一样的点亮,从左向右依次点亮,最右位点亮后,再从左向右移动.以下是以移位方式实现的verilog代码: module led( clk, //50M时钟输入 reset, //复位信号,高电平复位 led //led输出 ); input clk; input reset; output[7:0] led; wir

单片机教程4.C语言基础以及流水灯的实现

单片机教程4.C语言基础以及流水灯的实现 C语言,没接触过计算机编程语言的人会把它看的很神秘,感觉非常的难,而在我看来,C语言的逻辑和运算,就是小学水平,所以大家不要怕它,我尽可能的从小学数学逻辑方式带着大家学习C语言. 1.1 二进制.十进制和十六进制 看似很简单的东西,但是从同学们学习视频的情况来看,很多同学不能彻底明白.这里先简单介绍一些注意事项,然后还是从实验中讲解会比较深刻. 1.十进制就不多说了,逢十进位,一个位有十个值:0-9,我们的生活中到处都是它的身影.二进制就是逢二进位,它的

3. 戏说VHDL之入门游戏一:流水灯

一.   流水灯 1.1流水灯原理 流水灯是每个学电子的入门“游戏” ,示意图如图1,其原理极其简单,但是可玩性却极强,可以就8个LED写出不同花样的程序.在1.2中我们列出两个不同思路的代码作为VHDL的入门例程. 图1 流水灯电路图 1.2 流水灯例程 这里提供两个不同的代码. 第一个代码的思路是先对系统时钟分频,产生1s信号(即变量count取值到25000000,这样分频时间=20ns*25000000*2=1s),然后使用移位操作符指令进行操作.该指令是在VHDL93中引入的,包括sl

MiS603开发板 第四章 流水灯实验

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第四章 流水灯实验 关于流水灯,网上有太多的例子了.其实只要掌握上面分频计数的技巧,设计流水灯是件极其简单的事情.从

基于51单片机的温度控制系统毕设

分享一下单片机毕设课程计参考资料33个,献给大四的朋友,毕业设计就不用愁了,如果有什么不懂的地方可以加群大家一起交流:813238832资料下载的地址:https://bbs.usoftchina.com/thread-208012-1-1.html 1.CDMA通信系统中的接入信道部分进行仿真与分析2.USB接口设计3.毕业设计(论文)OFDM通信系统基带数据4.电气工程系毕业设计开题报告5.电信运营商收入保障系统设计与实现6.基于51单片机的16×16点阵(滚动显示)7.基于51单片机的LE

[51单片机] EEPROM 24c02 [I2C代码封装-保存实现流水灯]

这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC >_<:i2c.c 1 /*----------------------------------------------- 2 名称:IIC协议 3 内容:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 4 周期,即晶振频率要小于12MHZ) 5 ---------------------------------------

51单片机第一弹---流水灯

转行搞硬件..acm算是走到头了,毕竟电子是自己专业的特色.. 初撸单片机,买的板子是STC89C52(某宝58大洋淘来的..) 郭天祥新概念的那本书(好像有点不配套不过凑活着弄了也..) 说一下容易犯的错误吧. 1.串口驱动搞了1个多小时..一直安装不上,后来跟着教程做的 2.书上写的控制LED端口的是P1 ,但实际上买的这快板子是P2 ,最开始搞了半天老是点不亮灯,后来一想会不会端口错了,换成0试试?换了不行,又换了2..亮了(这是个问题,以后要找学长问问,怎么根据开发板看出来每个模块的端口

[51单片机学习笔记ONE]-----LED灯的多种使用方法

一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间间隔1s 3 实验时间: 2014年12月2日 4 ******************************************************/ 5 6 #include <reg51.h> 7 8 void delay(unsigned char a); 9 10 void m