蓝桥杯基础知识——锁存器控制原理——以LED控制为例进行解释

此篇文章的优点:原理解释,记忆方法,代码简单易用但功能完整   

蓝桥杯此款单片机对LED,蜂鸣器,数码管位选,数码管段选,锁存器关闭的控制过程:是74LS138(38译码器)通过控制74hc02(或非门)进而控制M74HC573M1R(八位锁存器芯片)形成的。

  1.对38译码器及其电路的解释:在单片机中的74ls138译码器的电路如图1.1所示;74ls138译码器的真值表如表1.1所示。可以大致看一下以下的两图后再进行阅读。(补充:图1.1中A输入对应表1.1中的A0;)

图1.1

74ls138的电路
74ls138的电路

表1.1

38译码器真值表

    对以上图表的解释:由io口P25,P26,P27控制三个输入引脚,这三个io口一共有8(2的3次方)种不同的输入的选择,这八种不同的输入对应输出端的八种不同输出,每种输出情况下只有八个输出引脚中只有一个有效(高电平)。综上所述即可根据需要给三个输入引脚不同的电平,来从输出端八中选一个有效端口设为高电平。(实质:用三条线控制8条线)

  2.74hc02为或非门,其逻辑可简述为输入有1输出就为0。其应用的原理图如图1.2所示。假设在74ls138中选择的输出Y4为高电平有效(Y4有效时给的的输入为P27=1;P26=0;P25=0;),则输出Y4C的电平为低电平0。

图1.2

3.M74HC573M1R(八位锁存器芯片)

在此简述其逻辑功能:

        ①当LE引脚为低电平时,左端的Dn的输入状态可以同步到右端的Qn的输出引脚(可以理解为Dn与Qn是直接连通的)

         ②当LE引脚由低电平变为高电平时,此时刻左端的Dn的输入状态即为以后LE保持低电平时右端的Qn的输出引脚的转态(可以理解为当LE由低变高时,锁存器对输出状态进行了锁存,锁存的输出状态与LE电平改变时的输入状态相同)

         ③当LE引脚为高电平时,右端的Qn的输出引脚的状态与输入无关(可以理解为Dn与Qn是断开的)

在理解其逻辑功能后,不难理解当Y4C为低电平时即可通过P0口来控制LED的亮灭。

(重点)以LED为例解释其控制过程:

① 要想控制LED,即要M74HC573M1R的控制引脚Y4C为低电平;

②Y4C为低电平,即74hc02或非门的输入Y4为高电平;

③Y4为高电平,即74ls138的有效输出为Y4=1的情况;

④要想Y4=1,即74ls138的输入为P27=1;P26=0;P25=0;综合到P2口就为P2=0x80;

⑤当P2=0x80时就可以通过P0口控制LED的亮灭。

以下为代码部分:

//此处的代码作用是led_c=0;buzzer_c=1;利用枚举类型,变量的值依次+1进行赋值
//优点:用语言代替数字有利于记忆,方便调用。
typedef enum   //枚举类型变量 
{
	led_c = 0,  //led灯控制       使能
	buzzer_c,   //蜂鸣器控制      使能
	wei_c,      //数码管位选控制  使能
	duan_c,     //数码管段选控制  使能
	off_c,      //锁存器关闭
}channel;
//此函数的作用是通过参数channel值的不同打开不同的锁存器来进行赋值
//channel的参数选择都在上面的枚举类型定义过
//channel的参数	led_c ,buzzer_c,wei_c,duan_c,off_c,
void Select38 (unsigned char channel)
{
	switch(channel)
	{
		case led_c:
			P2=(P2&0x1f)|0x80;//led
			break;
		case buzzer_c:
			P2=(P2&0x1f)|0xa0;//蜂鸣器
			break;
		case wei_c:
			P2=(P2&0x1f)|0xc0;//位选
			break;
		case duan_c:
			P2=(P2&0x1f)|0xe0; //段选
			break;
	  case off_c:
			P2=(P2&0x1f)|0x00; //关闭
			break;
		default:
			break;
	}
}

 

对代码的补充说明:

     ①对代码中的与或运算的解释:

    以P2=(P2&0x1f)|0x80;为例P2里面有P20、P21、P22、P23、P24、P25、P26、P27八个io口控制,P2&(与)0x1f可以实现对P20、P21、P22、P23、P24状态的保持不变,而对P25、P26、P27进行清零处理,之后或上0x80可以实现P20、P21、P22、P23、P24状态的保持不变,而对P25、P26、P27进行赋值P27=1;P26=0;P25=0;。

    ②打开不同锁存器的P2的值的记忆方法:

    对不同的赋值之间0x80,0xa0,0xc0,0xe0,高四位为16进制一次加2。

  • 25
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值