0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

51单片机流水灯制作

小黄1176 来源: 小黄1176 作者: 小黄1176 2024-02-26 10:06 次阅读

​流水灯是学习51单片机的一个基本项目,是我们对单片机IO口输出认识的基本项目。当然学会了花样流水灯也很好玩。

下面就分享一种51单片机流水灯制作的方法。

一、流水灯原理图

wKgaomXb8VyASKTsAACFYv8Crn0012.png

二、相关知识

1、while语句

书写格式:while(表达式) { 语句; //循环体 。。。 }

备注:当while语句中的()里的值为非零值是,while所带的语句就会执行,为0时程序不执行(只有为0值时不执行),括号里可以是常量,可以是变量,也可以是一个公式。

我们常用写法:

(1)while(1){ 语句; } //这样写代表了这是一个死循环,{ }中的程序会一直循环执行

(2)while(a--){ 语句; } //这样写就是当a每执行一次循环会自减一个数,当a的值减到0了,就不执行了。

2、for循环语句

除了while语句语句之外,c语言还有一个for循环语句。

书写格式:for(初始化表达式;条件表达式;增量表达式) { 语句; 。。。 }

常用写法:

for(i=0;i<8;i++)  {     语句:。。。  }

//这样写代表了,for语句的{}中的程序循环执行,循环的次数由()的内容决定,()中的意思是i变量从0开始,到8结束(不含8),i每次自加1,加到8 了跳出循环。

3、左移右移指令

运算符 意义 示例(设j=0x10)
<< 左移(各位同时左移若干位,高位舍弃,低位补零) k=j<<1;//k=0x20 wKgaomXb8OyAOk9nAAAxdleDWKw360.png
>> 右移(各位同时右移若干位,低位舍弃,高位补零) k=j>>1;//k=0x08

wKgaomXb8PGAOFG-AAAxgSp2o54508.png

4、位取反指令

运算符 意义 示例(设a=0x25)
~ 按位取反 c=~a; //c=0xda

wKgaomXb8RWAfCPXAAAJHpseGW4808.png

5、延时函数

/*--------微秒延时--------*/
void delay_us(uint z)
{
uint x;
for(x=z;x>0;x--);
}

第一个延时函数是微秒级延时,程序原理是for语句每循环一次,单片机执行一次空语句,51单片机(接12M晶振)执行每次空语句实际不止1us,一般会是几微秒。
/*--------毫秒延时--------*/
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}

第二个延时函数是毫秒级延时,其中的两个for语句成为嵌套训话语句,下面的for嵌套在上面的for里面执行。下面的for代表了循环执行110次空语句,得到一个1ms延时,此时上面的for循环多少次就延时多少毫秒,而延时多少毫秒由,变量z决定。

三、例程

 
/*---------------------------
流水灯接口:P1    
------------------------------*/
 
 
#include< reg52.h >
 
#define uint unsigned int
#define uchar unsigned char
 
 
 
/*--------微妙延时--------*/
void delay_us(uint z)
{
	uint x;
	for(x=z;x>0;x--);
}
/*--------毫秒延时--------*/
void delay_ms(uint z)
{
  uint x,y;
	for(x=z;x>0;x--)
	   for(y=110;y>0;y--); 
}
 
/*----------主函数-----------*/
void main()
{
	
	P0=0x00;P1=0xff;P2=0x00;P3=0x00;//端口初始化,熄灭所有LED灯
	uchar i,j;
	while(1)
	{
	  j=0x01;
	  for(i=0;i< 8;i++)    //for循环8次
	 {
	   P1=~j;              //P1等于j位取反
	   j=j< <1;             //j左移1位
	   delay_ms(1000);     //等待1秒
	 }
    }
}

审核编辑 黄宇

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 51单片机
    +关注

    关注

    269

    文章

    5649

    浏览量

    120701
  • C语言
    +关注

    关注

    180

    文章

    7533

    浏览量

    128773
  • 流水灯
    +关注

    关注

    21

    文章

    432

    浏览量

    59109
收藏 人收藏

    评论

    相关推荐

    51单片机定时器定时1秒程序流水灯结果分析

    流水灯的设计原理、实现步骤和结果分析。 一、设计原理 在51单片机中,定时器常用的工作方式有两种:定时器模式和计数器模式。定时器模式是指定时器的计数值递增至最大值后重新计数,从而周期性产生中断;计数器模式是指定时器的
    的头像 发表于 12-26 14:57 1715次阅读

    基于51单片机无线遥控流水灯电路图及程序

    本资源内容概要: 这是基于51单片机的无线遥控流水灯设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开) 。 本资源适合人群: 单片机
    发表于 11-06 18:15 0次下载

    基于单片机流水灯电路设计

    前面一课掌握了嵌入式程序源代码级调试,为复杂单片机实验程序的调试做好了准备工作。本次实验完成流水灯电路模型设计和编程,在实验过程中,学习流水灯电路设计、编写延迟函数、循环移位宏定义。
    的头像 发表于 10-31 14:56 1463次阅读
    基于<b class='flag-5'>单片机</b>的<b class='flag-5'>流水灯</b>电路设计

    求分享c语言的51单片机流水灯循环流水程序

    [i][i][i][i] c语言 的51单片机流水灯循环流水程序
    发表于 10-18 06:57

    51单片机POV趣味制作解析

    ISP下载线的自制资料及万用板使用经验,作为进一步补充。u3000u3000将单片机控制的LED流水灯设备稍作改进,让它动起来,就能神奇地显示各种字符或图案,其效果如漂浮在空中一般。之所以能如此,这得
    发表于 09-26 07:32

    如何使用51单片机制作一个心形流水灯

    使用 51 单片机制作一个心形流水灯 心形流水灯,顾名思义,成品肯定是一个心形。随着程序的改变,通过单片机控制单个灯的亮灭达到不同的流动图案
    的头像 发表于 09-11 10:27 2538次阅读
    如何使用<b class='flag-5'>51</b><b class='flag-5'>单片机制作</b>一个心形<b class='flag-5'>流水灯</b>

    利用51单片机流水灯和LCD1602实现表白功能

    利用51单片机流水灯和LCD1602实现表白功能。
    的头像 发表于 08-17 09:45 830次阅读

    51单片机的8位按键流水灯设计

    本资源内容概要: 这是基于51单片机的8位按键流水灯设计包含了C语言程序源代码(keil软件打开)。 本资源适合人群: 单片机爱好者、电子类专业学生、电子diy爱好者。 本资源能学到什
    发表于 07-24 14:36 0次下载

    流水灯单片机解决方案,多种灯光效果可变

    的灯光效果是在控制系统的控制按照设定的顺序和时间来发亮和熄灭。通过单片机引脚输出低电平,LED灯导通发亮,单片机引脚输出高电平,LED灯截止熄灭。 流水灯方案工作原理: 流水灯控制原理
    的头像 发表于 07-20 17:45 528次阅读

    流水灯单片机解决方案,多种灯光效果可变

    流水灯,即LED从一边依次亮至另一边,光像流水一样流动,形成一定视觉效果的一组灯。流水灯在生活中的应用也是非常的广泛,常被安装于店面、招牌、夜间建筑物等地方,可以让门面或建筑变得更加美观显眼。
    的头像 发表于 07-15 16:36 827次阅读

    基于51单片机设计的花样流水灯设计

    花样流水灯是一种常见的LED灯效果,被广泛应用于舞台表演、节日庆典、晚会演出等场合。
    的头像 发表于 06-11 10:00 2582次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>设计的花样<b class='flag-5'>流水灯</b>设计

    基于51单片机的查表法实现流水灯例程源代码

    基于51单片机的查表法实现流水灯例程源代码
    发表于 05-17 15:04 4次下载

    基于89C51单片机的24c02存储花样流水灯源程序

    基于89C51单片机的24c02存储花样流水灯源程序
    发表于 05-16 10:43 1次下载

    基于ATmega8单片机流水灯设计Proteus仿真源程序

    基于ATmega8单片机流水灯设计Proteus仿真源程序
    发表于 05-05 09:29 1次下载

    基于AT89C51单片机TIMER0控制流水灯仿真及代码

    基于AT89C51单片机TIMER0控制流水灯仿真及代码
    发表于 05-04 14:31 1次下载