复习单片机:流水灯(内含2种方法(左移操作符法+crol法)+设计思路+原始代码)

简介: 复习单片机:流水灯(内含2种方法(左移操作符法+crol法)+设计思路+原始代码)

思路1:


根据流水灯实现原理,即 IO 口由低往高或者由高往低逐个输出低电平特点,那么我们可以将移位操作以及循环结合进来。


进入 main 函数后首先定义一个变量 i,然后进入 while 循环,由于要实现 8个 LED 从 D1->D8 循环点亮,因此可以使用 for 循环语句循环 8 次,每循环一次,点亮的小灯向右移动一个,而 D1-D8 是连接到 P2.0-P2.7 的,因此输出的低电平要左移一位,因此可以使用 LED_PORT=~(0x01<<i);语句实现。0X01<<i 表示 i增加 1 次,0x01 中的 1 就移动多少位,因为 1(高电平)不会让 LED 点亮,需要取反后变为低电平 0 才能点亮,所以最后的结果需要取反后给 LED_PORT 口,并且每次循环都要延时一段时间,这样才能分辨出来 LED 在实现流水灯。


代码如下:


2b2a5419691f4a32829115465bb62bc3.png


原始代码如下:


#include"reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define LED_PORT P2
void delay_time(u16 ten_us)
{
while(ten_us--);
}
void time()
{
while(1)
{
u8 i=0;
for(i=1;i<=8;i++)
{
LED_PORT=(~0x01<<1);//循环亮灯
delay_time(50000);//延时
}
}
}

思路2:


使用左移_crol_、右移_cror_函数


除了使用 for 循环语句实现移位,KEIL C51 软件内还有对应的移位库函数,


左移函数是_crol_(),右移函数是_cror_(),要使用这两个函数在我们的程序中


必须包含 intrins.h 头文件。这两个移位函数大家可以百度了解下,其内部实现


过程是看不到的,该移位函数实现的移位功能就相当于一个队列内循环移动,如


果是左移,那么最高位就被移到最低位了,次高位变为最高位,依次类推。


代码如下:


4e8eb12b882f4028a250796039562f34.png


原始代码如下:  


#include"reg52.h"
#include"intrins.h"
//使用corl和cror函数需要头文件
typedef unsigned char u8;
typedef unsigned int u16;
#define PORT_LED P2
u8 delay_time(u16 ten_us)
{
while(ten_us--);
}
void main()
{
while(1)
{
u8 i=0;
for(i=0;i<=8;i++)//左移
{
PORT_LED=(_crol_(PORT_LED,1));
//crol是左移操作函数,需要传参
//第一个参数是目标值,第二个是移动几个
delay_time(50000);
}
for(i=0;i<7;i++)//右移
{
PORT_LED=(_cror_(PORT_LED,1));
//crol是右移操作函数,需要传参
//第一个参数是目标值,第二个是移动几个
delay_time(50000);
}
}
}


相关文章
|
4月前
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
360 1
|
4月前
|
C语言
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
|
4月前
|
C语言
51单片机汇编语言流水灯代码
51单片机汇编语言流水灯代码
106 1
|
7月前
|
传感器
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
|
7月前
|
传感器
51单片机矩阵键盘超详解!(内含LCD1602代码)
51单片机矩阵键盘超详解!(内含LCD1602代码)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义动态数码管显示(设计思路&原理&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
【51单片机】自定义静态数码管显示(设计思路&代码演示)
|
7月前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
59 1
|
7月前
|
数据采集 数据处理 C语言
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
113 1
|
7月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
153 0