【蓝桥杯单片机备赛】2.【LED】真正的大师永远怀着一颗点亮LED的心

众所周知,点灯可谓是硬件爱好者们心中的「 Hello,World 」,但是在硬件学习前期,led和smg或许是最好的调试结果对比工具,小小的led其实也有大大的道理,或许这一篇led能帮你梳理一遍:关于LED,我们需要掌握哪些。

点灯之前:
在这里插入图片描述
因为根据原理图上显示,要点亮LED,首先要对译码器进行处理,这里简单地介绍一下锁存器和译码器。

  1. 为何要用锁存器?
    答:由“锁”字可以联想到保险柜,保险柜呢打开锁之后,把钱放进去,再把锁锁上,不管你外面再怎么变化,我的Money是不会少一点的,该是什么样就是什么样的。哪锁存器就好理解了,相当于我在单片机想要保留某一状态但是又不想影响其他状态的时候,巧妙的借用了锁存器这一功能。
  2. 为什么要用译码器?
    答:译码器,语句上理解就是密码翻译器。你想,如果用2进制来表示你想要的密文,如果你学过数电,应该知道3-8译码器(具体不多说了,不懂的去百度上搜一下三八译码器)把三位数翻译成八位数(节省了IO口啊!)

话不多说,上译码器初始化代码
函数名称:SelectHC573
函数说明:一共四个选择,分别对应了上图的四个区域

void SelectHC573(unsigned char t)
{
	switch(t)
	{
		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;
	}
}

是时候展现真正的技术了!
下面就直接上LED的各种调试好的代码了!

  1. 点亮L1
  2. 点亮任一一盏灯
  3. 点亮全部
#include "reg52.h"
sbit L1 P0^0;
sbit L2 P0^1;
sbit L3 P0^2;
sbit L4 P0^3;
sbit L5 P0^4;
sbit L6 P0^5;
sbit L7 P0^6;
sbit L8 P0^7;

/******************************************
* 函数名称:Led_ShowL1
* 函数功能:点亮L1
* 函数说明:无
******************************************/
void Led_ShowL1()
{
	P2 = (P2 & 0x1f ) | 0x80;
	P0 = 0xff;			//	      全灭:1111 1111 
	L1 = 0;				//	P0 = 0x7f: 0111 1111
}

// 仅点亮某一盏灯
/******************************************
* 函数名称:Led_ShowBit
* 函数功能:点亮某一盏LED灯
* 函数说明:每次调用只能点亮自己想点亮的那盏灯,不能同时点亮
******************************************/
void Led_ShowBit(unsigned char LedID)
{
	P2 = (P2 & 0x1f ) | 0x80;	//	SelectHC573(4);
	switch(LedID){
		case 1: P0 = 0x7f;break;
		case 2: P0 = 0xbf;break;
		case 3: P0 = 0xdf;break;
		case 4: P0 = 0xef;break;
		case 5: P0 = 0xf7;break;
		case 6: P0 = 0xf8;break;
		case 7: P0 = 0xfd;break;
		case 8: P0 = 0xfe;break;
	}
}

/******************************************
* 函数名称:Led_ShowAll
* 函数功能:点亮全部LED
* 函数说明:无
******************************************/
void Led_ShowAll()
{
	P2 = (P2 & 0x1f ) | 0x80;	//	SelectHC573(4);
	P0 = 0x00;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值