单元训练01:LED指示灯的基本控制
在CT107D单片机综合训练平台上实现 ED的基本控制,首先让8路LED指示灯闪烁3遍然后熄灭,接着依次点亮亮LED指示灯,最后依次熄灭指示灯,程序循环实现上述功能。
【知识点】:
掌握在 Keil 环境下,进行单片机开发的基本流程。
初步了解 74HC138 译码器、74HC573 锁存器、74HC02 或非门的知识。
LED 指示灯的简单控制。
1. 74HC138译码器(三个IO实现8选1)74HC138的功能,
即是_____________,这8位输出的特点是:_____________、_____________。简单来说
,74HC138实现了_____________的功能。
2. 74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将会_____________。当使能为低时,输出将会_____________。输出控制不影响_____________,即老数据可以保持,甚至当输出被关闭时,新的数据_____________。这种电路可以驱动_____________,可以直接与_____________,而不需要外接口。特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
1、系统上电后,关闭 8 个 LED 灯。
2、 首先,8 个 LED 灯同时闪烁 3 次;
3、然后,从 L1 灯至 L8 灯依次点亮;
4、接着,从 L1 灯至 L8
#include "_______"
sbit HC138_A = _______;
sbit HC138_B = _______;
sbit HC138_C = _______;
//注意!这里的P是大写的P
void Delay(unsigned int t) //延时程序,消耗空时间
{
while(t--);
while(t--);
}
void LEDRunning() //实现LED的基本控制
{
unsigned char i;
HC138_C = _______;
HC138_B = _______;
HC138_A = _______; //让Y4输出低电平
//锁存器控制LEd灯
for(i=0; i<3; i++)
{
P0 = _______;
Delay(60000);
Delay(60000);
P0 = _______;
Delay(60000);
Delay(60000);
}
for(_______)
{
P0 = _______;
Delay(60000);
Delay(60000);
}
for(i=1; i<=8; i++)
{
P0 = _______;
Delay(60000);
Delay(60000);
}
}
void main()
{
while(1)
{
LEDRunning();
}
}
答案:
1. 将3位
二进制(A0,A1和A2),译码成8种
输出状态,并且一共有8个
输出I/O,互斥
(同时只有一位有效)、低有效
(低电平表示有效,表示选中)。用3根线选择8根线(8选1)的功能。
2. 随数据(D)输入而变,锁存在已建立的数据电平上,锁存器的内部工作,也可以置入,大电容或低阻抗负载,系统总线接口并驱动总线。
#include "reg52.h"
sbit HC138_A = P2^5;
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;
//注意!这里的P是大写的P
void Delay(unsigned int t)
{
while(t--);
while(t--);
}
void LEDRunning()
{
unsigned char i;
HC138_C = 1;
HC138_B = 0;
HC138_A = 0;
//锁存器控制LEd灯
for(i=0; i<3; i++)
{
P0 = 0x00;
Delay(60000);
Delay(60000);
P0 = 0xff;
Delay(60000);
Delay(60000);
}
for(i=1; i<=8; i++)
{
P0 = 0xff << i;
Delay(60000);
Delay(60000);
}
for(i=1; i<=8; i++)
{
P0 = ~(0xff << i);
Delay(60000);
Delay(60000);
}
}
void main()
{
while(1)
{
LEDRunning();
}
}