栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

51单片机流水灯实验(改)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

51单片机流水灯实验(改)

51单片机流水灯可以通过移位函数_crol_、移位运算符、数组等方法来实现。

看原理图

普通的51单片机开发板的LED模块的灯都是通过接电阻与单片机的IO口直接相连,一般连在P2口上也有其他IO口等等,写代码前要先看原理图灯连在哪里。
我的是连在P2上,如图:
图片:

代码如下

#include "reg52.h" 
#include //包含移位函数的头文件
typedef unsigned char u8;
#define led P2   //流水灯要是接在其他IO口就把P2改过去
u8 tap[] = {0xe7,0xdb,0xbd,0x7e};
u8 tap1[] = {0x7e,0xbd,0xdb,0xe7};
static u8 a;
void Delay()	//延时函数	
{
	u8 i, j;

	for(i=0;i<255;i++)
	 for(j=0;j<255;j++);
}

void zuoyi()  //左移函数
{

  for(a=0;a<7;a++) 
    {
      led=_crol_(led, 1);
      Delay(); 
    }
}

void youyi()  //右移函数
{

   for(a=0;a<7;a++) 
     { 
       led=_cror_(led,1);
       Delay();
     }
}

void zuoyoutonshiyi()  //左右同时移动
{
	 
   for(a=0;a<4;a++)
    {
		led = tap1[a];
		Delay();
	}
		led = 0xff; 
		Delay();
		for(a=0;a<4;a++)
    {
		led = tap[a];
		Delay();
	}
		led = 0xff; 
}
void pingshan()  //八颗灯分别闪两下
{
   for(a=0;a<2;a++)
	  {
	     led = 0x0f;
	     Delay();
		 led = 0xf0;
		 Delay();
	  }

}
//可以通过主函数改变调用子函数顺序来实现花样流水灯
void main()  
{
	P0 = 0x00;  //关闭数码管的显示
    Delay();
    while(1)
     {
	   led=~0x01;  
       zuoyi();
	   Delay();
       youyi();
	   Delay();  
	   zuoyoutonshiyi();
	   Delay();
	   pingshan();
	   Delay();
     }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号