【蓝桥杯笔记01】小蜜蜂老师-LED指示灯的基本控制

单元训练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();
  }
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值