在 CT107D 单片机综合训练平台上(单片机型号为IAP15F2K61S2转STC89C52RC),实现以下功能:
1、系统上电后,关闭 8 个 LED 灯。
2、循环实现 LED 跑马灯控制,
控制要求为: 首先,8 个 LED 灯同时闪烁 3 次;
然后,从 L1 灯至 L8 灯依次点亮;
接着,从 L1 灯至 L8 灯依次熄灭。
#include "reg52.h" //引用头文件
sbit HC138_A=P2^5; //将74HC138的A端口与单片机的P2^5连接起来
sbit HC138_B=P2^6; //将74HC138的B端口与单片机的P2^6连接起来
sbit HC138_C=P2^7; //将74HC138的C端口与单片机的P2^7连接起来
//延迟函数
void Delay(unsigned int t)
{
while(t--);
}
//LED点亮与熄灭
void LEDrunning()
{
unsigned char i;//定义变量i
//将74HC138译码器的Y4端口输出高电平,由此74HC573锁存器对于数据是同步输出的
HC138_A=0;
HC138_B=0;
HC138_C=1;
//LED灯闪烁三次
for(i=0;i<=3;i++)
{
P0 = 0x00; //P0端口输出十六进制00(二进制的00000000)点亮LED灯
Delay(60000);
P0 = 0xff; //P0端口输出十六禁止ff(二进制的11111111)熄灭LED灯
Delay(60000);
Delay(60000);
}
//LED灯逐个点亮
for(i=0;i<=8;i++)
{
P0=0xff<<i; // <<左移运算符,将P0从11111111,设置到00000000
Delay(60000);
Delay(60000);
}
//LED灯逐个熄灭
for(i=0;i<=8;i++)
{
P0=~(0xff<<i);
Delay(60000);
Delay(60000);
}
P2=0xA0;//二进制10100000
P0=0x02;//二进制00000010
}
//在主函数中执行
void main()
{
while(1)//while语句当括号内为1执行大括号内语句,为0停止执行大括号内语句,while(1)括号内一直为1,所以此while循环会一直执行下去
{
LEDrunning();
}
}