51单片机实现流水灯

2022-08-25 09:08:05 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

文章目录

  • 51单片机实现流水灯
  • 一、点亮第一个LED灯
  • 二、流水灯
    • 1.总线型控制
    • 2.延时函数
    • 3._ crol _函数使用
    • 4. 实现流水灯

51单片机实现流水灯

以下是本篇文章正文内容,下面案例可供参考

一、点亮第一个LED灯

代码语言:javascript复制
#include <reg52.h>
#define uint unsigned int //简化定义
#define uchar unsigned char//同上
sbit D1=P2^1;
void main(){ 
   
		D1=0;
}

代码中D1代表着位定义,相当于将LED灯对应管脚的位置起一个名字。单片机初始状态管脚默认为高电平,即对应值为1。所以如果想要点亮LED灯,只需要让他的管脚电平为低即可。

二、流水灯

1.总线型控制

设计一个流水灯,如果使用位操作,需要一个个去定义。这无疑是十分繁琐的。所以这里我们采用总线型操作。 总线型这种总线制方法可以统一控制十位数相同的管脚。 例如如果想要控制P1.0-p1.7的电平情况,具体编程方法是根据所需要的结果,标出每个管脚对应的01值,从前到后排列,然后转化为十六进制,直接令P1=0x 对应十六进制数。这样只用一行代码实现多个管脚控制。

代码语言:javascript复制
#include <reg52.h>
void main()
		P1=0x80;//对应十进制数字10000001,对应P1的首个管脚与最后一个管脚高电平。
}

2.延时函数

代码如下(示例):

代码语言:javascript复制
void delay(uint i){ 
   
while(i--);
}//此函数可以用来控制特定时长的延时,具体时间由单片机晶振频率决定。

3._ crol _函数使用

_crol_函数功能:将 c 进行b位左位移,并将值以unsigned char类型返回;

代码语言:javascript复制
#include <intrins.h>//_crol_函数在intrins.h函数库中。
unsigned int temp;
temp=0xfe;
P1=temp;
temp=_crol_(temp,1);//第一个变量用来控制位,第二个用来控制每次移动的位数。

4. 实现流水灯

代码语言:javascript复制
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int 
#define uchar unsigned char
void delay(uint i);
void main(){ 
   
	uint temp=0xfe;
	while(1){ 
   
		P2=temp;
		temp=_crol_(temp,1);
		delay(10000);
	}
}
void delay(uint i){ 
   
while(i--);
}

实现单片机流水灯操作。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141951.html原文链接:https://javaforall.cn

0 人点赞