51单片机学习(1) LED点亮、闪烁以及流水灯实现

文章目录

      • 一、Keil创建项目
      • 二、Proteus搭建虚拟仿真电路
      • 三、LED点亮
      • 四、LED闪烁
      • 五、流水灯实现
        • 1. 流水灯(库函数法)
        • 2. 流水灯(左移法)
        • 3. 流水灯(右移法)
        • 4. 流水灯(数组索引法)

一、Keil创建项目

1. 打开keil软件,在工具栏点击Project选项选择new uVision Project创建新的工程并保存,步骤如下图所示:

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第1张图片
51单片机学习(1) LED点亮、闪烁以及流水灯实现_第2张图片
51单片机学习(1) LED点亮、闪烁以及流水灯实现_第3张图片

2. 创建新的文件,按快捷键“Ctrl+S”命名为led.c并保存,步骤如下:

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第4张图片
51单片机学习(1) LED点亮、闪烁以及流水灯实现_第5张图片

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第6张图片
3. 在.c文件中编写C语言程序

#include "reg51.h"    

sbit led=P2^0; 

void main()
{
     
	while(1)	
		{
     
			led=0; 
		}       
}

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第7张图片
4. 依次点击工具栏中的"Option for target"选择框中的"output ",勾选“Create Hex file ”,确保自己编写的源程序转换为.hex文件,为后续操作使用

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第8张图片
5. 依次点击工具栏按钮,生成目标文件
51单片机学习(1) LED点亮、闪烁以及流水灯实现_第9张图片

程序运行成功,将在相对路径Object文件夹中生成learning_002.hex文件

二、Proteus搭建虚拟仿真电路

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第10张图片

三、LED点亮

搭建好电路后,点击AT89C51主控,导入上文用keil中C语言程序生成的learning_002.hex文件

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第11张图片

点击软件右下角的运行按钮,红色的发光二级管被点亮
51单片机学习(1) LED点亮、闪烁以及流水灯实现_第12张图片

四、LED闪烁

C语言代码改为如下:

#include "reg51.h"    

unsigned int x;
sbit led=P2^0; 

void main()
{
     
	x=50000;
	while(1)	
		{
     
			led=0; //亮
			while(x--);  //延时
			led=1; //灭
			while(x--);	 //延时
		}       
}

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第13张图片

五、流水灯实现

1. 流水灯(库函数法)

#include 
#include 
#define uint unsigned int
#define uchar unsigned char

uchar temp;
int x;

void main()
{
     
	x=50000;
	temp = 0x01;
	P1 = temp;
	while(x--);   //延时
	while(1)
	{
     
		temp = _crol_(temp,1);  //调用库函数
		P1=temp;
		while(x--);
	}
}

2. 流水灯(左移法)

#include 

unsigned int x;
//shift to the left water lamp
void main()
{
     
	x=50000;
	P1=0x01;
	while(1)
	{
     
		while(x--);    //delay time
		P1=P1<<1;      //左移
		if(P1==0x00)
			P1=0x01;   //回到起始位置
	}
}

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第14张图片

3. 流水灯(右移法)

#include 

unsigned int x;
//shift to the right water lamp
void main()
{
     
	x=50000;
	P1=0x80;
	while(1)
	{
     
		while(x--);
		P1=P1>>1;
		if(P1==0x00)
			P1=0x80;
	}

}

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第15张图片

4. 流水灯(数组索引法)

#include 
#define uint unsigned int 
#define uchar unsigned char
	
uchar table[]={
     0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
uchar p;
int x;

void main()
{
     
	x=50000;
	while(1)
		{
     
		  for(p=0;p<8;p++)
		  {
     
		  	P1=table[p];
		   	while(x--);
		  }
		  for(p=6;p>=1;p--)
		  {
     
			P1=table[p];
			while(x--);
		  }
		}
}

51单片机学习(1) LED点亮、闪烁以及流水灯实现_第16张图片

你可能感兴趣的:(51单片机,LED,流水灯,电路)