51单片机(国信天长单片机实训平台)基于keli的常用程序之 LED指示灯一般控制程序设计
文章目录
前言
实验目的:让8路LED灯同时闪三次,再依次点亮LED灯,再依次熄灭
一、国信长天单片机竞赛实训平台的电路图与分析
国信长天单片机竞赛实训平台电路图
38译码器与或非门

#include "reg52.h"
void main()
{
while(1)
{
}
}
2.编写控制LED灯函数
#include "reg52.h"
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
void LEDrunning()
{
unsigned char i;
HC138_C=1;
HC138_B=0;
HC138_A=0;
}
void main()
{
while(1)
{
}
}
3.编写延时函数Delay
#include "reg52.h"
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void LEDrunning()
{
unsigned char i;
HC138_C=1;
HC138_B=0;
HC138_A=0;
}
void main()
{
while(1)
{
}
}
4.编写关闭外设函数
```c
#include "reg52.h"
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
void stop()
{
//P2=(P2&0x1f)|0x80;//关闭led 110
//P0=0xff;
//P2&=0x1f;
P2=(P2&0x1f)|0xa0;//关闭继电器蜂鸣器 101
P0=0;
P2&=0x1f;
}
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void LEDrunning()
{
unsigned char i;
HC138_C=1;
HC138_B=0;
HC138_A=0;
}
void main()
{
while(1)
{
}
}
P2=(P2&0x1f)|0xa0;
5.完善整体函数
#include "reg52.h"
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
void stop()
{
//P2=(P2&0x1f)|0x80;//关闭led 110
//P0=0xff;
//P2&=0x1f;
P2=(P2&0x1f)|0xa0;//关闭继电器蜂鸣器 101
P0=0;
P2&=0x1f;
}
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void LEDrunning()
{
unsigned char i;
HC138_C=1;
HC138_B=0;
HC138_A=0;
for(i=0;i<3;i++)//利用for循环实现三次亮灭
{
P0=0x00;//00000000
Delay(60000);
P0=0xff;//11111111
Delay(60000);
}
for(i=1;i<=8;i++)
{
P0=0xff << i;
Delay(60000);
}
}
for(i=1;i<=8;i++)
{
P0=~(0xff << i);
Delay(60000);
} void main()
{stop();
while(1)
{
LEDrunning();
Delay(60000);
}
}
总结
通过实验使大家了解关于LED灯的控制,从中可以知道,38译码器在前期发挥了很大的作用,并且文章展示了两种给38译码器P2接口赋值的方式,与或式的方式在后期经常会用到,大家可以注意一下。