51单片机入门流水灯

这篇具有很好参考价值的文章主要介绍了51单片机入门流水灯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

上次已经实现了LED的点亮了,这篇文章将带大家实现流水灯。

一、延时函数

要想实现流水灯首先就得知道什么是延时函数,延时函数的作用就是等待。比如延时一毫秒就是让程序在这里等待一毫秒。延时函数的本质就是执行一些空指令,因为执行指令需要耗费时间,所以执行一定数量的空指令就能达到延时的效果。

延时函数的实现
这里的延时函数就是不断的在执行;表达式来达到延时的效果。

/*延时函数
单位:ms
x:延时的数值
*/
void delayms(unsigned int x)
{
   unsigned char i;
	 while(x--)
	 {
		 for(i=0;i<113;i++);
	 }
}

二、流水灯代码

下面就是流水灯的代码了,其实操作起来也是非常简单的。不过这样写一个流水灯看起来实在是太过于复杂了,下面将对代码进行整改。

#include <reg52.h>

/*LED灯端口定义*/
sbit LED0 = P2^0;
sbit LED1 = P2^1;
sbit LED2 = P2^2;
sbit LED3 = P2^3;
sbit LED4 = P2^4;
sbit LED5 = P2^5;
sbit LED6 = P2^6;
sbit LED7 = P2^7;

/*延时函数
单位:ms
x:延时的数值
*/
void delayms(unsigned int x)
{
   unsigned char i;
	 while(x--)
	 {
		 for(i=0;i<113;i++);
	 }
}


void main()
{
	
	while(1)
	{
		LED0 = 0;
		delayms(1000);
		LED1 = 0;
		delayms(1000);
		LED2 = 0;
		delayms(1000);
		LED3 = 0;
		delayms(1000);
		LED4 = 0;
		delayms(1000);
		LED5 = 0;
		delayms(1000);
		LED6 = 0;
		delayms(1000);
		LED7 = 0;
		delayms(1000);
		LED0 = LED1 = LED2 = LED3 = LED4 = LED5 = LED6 = LED7 = 1;	
	}
}

三、代码改进

上篇文章我们已经讲到了8个LED灯分别接到了P2.0—P2.7上面。所以我们可以直接对P2端口进行操作实现点亮LED灯。
默认状态LED灯都为灭,也就是状态都为1。所以P2.0—P2.7的8个端口状态为
1111 1111。
我们只需要让其中一个位变成0即可让LED灯点亮。
对P2直接进行操作让第一个LED灯点亮就是对P2赋值如下:
1111 1110
换成16进制也就是0xfe
下面的代码就可以点亮第一个LED了

P2 = 0xfe;

所以可以直接对P2进行操作达到流水灯的效果。

#include <reg52.h>

/*延时函数
单位:ms
x:延时的数值
*/
void delayms(unsigned int x)
{
   unsigned char i;
	 while(x--)
	 {
		 for(i=0;i<113;i++);
	 }
}


void main()
{
	int i = 0;
	while(1)
	{
		
		for(i = 0; i < 8; i ++ )
		{
			P2 = ~(1<<i);
			delayms(1000);
		}
	}
		
}

板子上面有8个LED灯,所以这里设计了一个for循环。利用左移操作和取反操作实现了流水灯的效果。
简单解释一下这个for循环实现流水灯的原理
一开始i=0 P2 = ~(1<<0)相当于是1111 1110
i = 2时P2 = ~(1<<1)相当于是1111 1101
后面的以此类推,这里0移到到了哪里哪个LED就会被点亮了。
对左移和取反操作还不熟悉的同学建议去加强一下C语言的知识。

总结

流水灯的点亮就介绍到这里了,大家主要是掌握sbit位定义和直接操作P2进行流水灯的点亮。文章来源地址https://www.toymoban.com/news/detail-757766.html

到了这里,关于51单片机入门流水灯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 51单片机按键控制流水灯

    51单片机按键控制流水灯

    1独立按键的原理图 按键所对应的引脚为P3的0、1、2、3引脚口,并且这里总共有四个独立按键,它们公共的一段都接到了 GND 电源的负极。这样我们就知道按键上电的默认电平为高电平。所以我们只需要控制按键按下时给一个低电平0,不按下时默认高电平1就行。  2按键控制

    2024年02月11日
    浏览(11)
  • 51单片机学习--LED流水灯

    51单片机学习--LED流水灯

    延时代码可通过软件生成,系统频率要和开发板的晶振频率相对应。  

    2024年02月16日
    浏览(17)
  • 51汇编单片机学习(三)八路流水灯

    51汇编单片机学习(三)八路流水灯

    流水灯主要是在小灯闪烁的基础上对小灯进行移动 八路流水则为赋值一组引脚并对引脚进行定义,在上一篇文章我们能知道当引脚置1时为高电平,此时小灯不亮,引脚置0时,低电平,小灯亮,所以可知在一组引脚中,可设置小灯初始位置从“01111111”开始亮起,而十六进制

    2024年02月07日
    浏览(16)
  • 【51单片机】:闪灯、流水灯(从左往右)、流水灯(从右往左)、蜂鸣器。

    【51单片机】:闪灯、流水灯(从左往右)、流水灯(从右往左)、蜂鸣器。

            言归正传,一切都回归本源,从51再来一次,首先就是最简单的点灯大师。         这么些年从51 到  32  再到  arduino  再到  ESP  等等,都是从点灯大师开始的。 于是介绍如下: 闪灯 流水灯(从左往右) 流水灯(从右往左) 蜂鸣器         LED灯的原理:LED是发

    2024年02月11日
    浏览(15)
  • 基于51单片机设计的花样流水灯设计

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

    花样流水灯是一种常见的LED灯效果,被广泛应用于舞台表演、节日庆典、晚会演出等场合。在现代智能家居、电子产品中,花样流水灯也被广泛使用,通过调整亮灭顺序和时间,可以实现各种炫酷的灯光效果,增强用户体验。而51单片机作为一种常见的嵌入式开发平台,具有

    2024年02月09日
    浏览(12)
  • 51单片机流水灯三种实现方法

    51单片机流水灯三种实现方法

    流水灯可以用三种方法实现 一.通过移位函数  _crol_()  和  _cror_() 二.位移实现流水灯 三.数组流水灯实现 首先说一下流水灯的原理 让0从左往右位移或者从右往左位移 从而实现流水灯依次点亮 电路图如下,使用软件是project 使用左移函数代码如下  ///运行结果是LED灯从上到

    2023年04月09日
    浏览(13)
  • 单片机c51中断 — 中断键控流水灯

    单片机c51中断 — 中断键控流水灯

    项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第五章,中断   在第4章的实例2中,按键检测是采用查询法进行的,其流程图如图所示 问题是这样的:由于查询法 -按键查询、标志位修改及彩灯循环几个环节是串联关系,当CPU运行于彩灯时,将因不能及

    2024年02月08日
    浏览(26)
  • 【51单片机】按键操作(单个灯闪烁&&流水灯)

    【51单片机】按键操作(单个灯闪烁&&流水灯)

    🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 ⭐注意 🍔同一个灯  🏳️‍🌈效果 🏳️‍🌈代码 🏳️‍🌈问题分析 ⭐注意 ⭐P3_1=0,表示按下按键  ⭐为什么while(

    2024年02月01日
    浏览(13)
  • 51单片机通过两个按键控制流水灯方向

    按键一接单片机P3_1,按键2接P3_0 8个流水灯接P2口 以下是代码:

    2024年02月11日
    浏览(17)
  • 51单片机--定时器与按键控制流水灯模式

    51单片机--定时器与按键控制流水灯模式

    51单片机上的定时器是一种硬件模块,用于计时和生成特定的时间延迟。 它的电路和运转都在单片机内完成 ,它是嵌入在单片机内部的一个功能模块,具有多种工作模式和功能。 在51单片机中,通常有两个定时器/计数器:定时器0(Timer 0)和定时器1(Timer 1)。每个定时器都

    2024年02月13日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包