此文旨在帮助大学生实训期间快速完成实训任务,分别实现了心型灯的6种闪烁形态(全亮、间隔一个、间隔两个、间隔三个、间隔四个、间隔五个)
连接实物图
采用的单片机是STC89C52RC
代码
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;
sbit led=P2^0;
void Delay(uint t);
void action0(uchar speed); //全亮
void action1(uchar speed);//隔一个
void action2(uchar speed);//隔两个
void action3(uchar speed);//隔三个
void action4(uchar speed);//隔四个
void action5(uchar speed);//隔五个
void main()
{
while(1)
{
action0(250);//全亮
//action1(250);//隔一个
//action2(250);//隔两个
//action3(250);//隔三个
//action4(250);//隔四个
//action5(250);//隔五个
}
}
void action0(uchar speed) //全亮
{
P0=0x00;P1=0x00;P2=0x00;P3=0x00;
}
void action1(uchar speed) //隔一个
{
for(i=1;i<17;i++)
{
P0=0xaa;
P1=0x55;
P3=0x55;
P2=0x55;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action2(uchar speed) //隔两个
{
P0=0xDB;
P1=0xB6;
P2=0x6D;
P3=0x6D;
}
void action3(uchar speed) //隔三个
{
P0=0xEE;
P1=0x77;
P2=0x77;
P3=0x77;
}
void action4(uchar speed) //隔四个
{
P0=0xBD;
P1=0xDE;
P2=0xEF;
P3=0x7B;
}
void action5(uchar speed) //隔五个
{
P0=0xDF;
P1=0xBE;
P2=0xEF;
P3=0xAF;
}
void Delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<80; k++)
{ }
}
}
代码默认为使灯全亮,需更改需要删除对应功能前的注释符号“//”
效果图
全亮
隔一个
隔两隔两个
隔三个隔四个
隔五个