2.1 【基础 01】LED 指示灯的基本控制 新建工程,以 I/O 模式编写代码,在 CT107D 单片机综合训练平台上,实现以下功能: 1、系统上电后,关闭 8 个 LED 灯。 2、循环实现 LED 跑马灯控制,控制要求为: 首先,8 个 LED 灯同时闪烁 3 次; 然后,从 L1 灯至 L8 灯依次点亮; 接着,从 L1 灯至 L8 灯依次熄灭。 【训练要点】:掌握在 Keil 环境下,进行单片机开发的基本流程。 初步了解 74HC138 译码器、74HC573 锁存器、74HC02 或非门的知识。 LED 指示灯的简单控制。 【参考资源】: B 站视频教程【基础技能 02】LED
限于个人水平,难于做到尽善尽美,且本专栏主要起练习笔记作用。如有前辈发现代码错误或可以优化的地方,还请不吝赐教,学生感激不尽。
#include<STC15F2K60S2.h>
void SelectHc573(unsigned char n)
{
switch(n)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
}
}
void Delay(unsigned int t)
{
while(t--);
}
unsigned char i=0;
void DisplayLED()
{
SelectHc573(4);
for(i=0;i<3;i++)
{
P0=0x00;
Delay(50000);
Delay(50000);
P0=0xff;
Delay(50000);
Delay(50000);
}
for(i=0;i<8;i++)
{
P0=~(0x01<<i);
Delay(50000);
Delay(50000);
}
for(i=0;i<8;i++)
{
P0=~(0x80>>i);
Delay(50000);
Delay(50000);
}
}
void main()
{
while(1)
{
DisplayLED();
}
}