Stc15F2k60s2

本文详细介绍了如何通过P2引脚控制LED的亮灭,利用锁存器Y4和Y5控制蜂鸣器以及按键的逻辑操作,展示了基础硬件编程中的138译码器在控制中的应用。
摘要由CSDN通过智能技术生成

注:备赛蓝桥杯期间,为了加深自己的理解,写下这篇文章。

1、led的亮灭控制

  

  //关闭led灯
    P0 = 0xff;//给灯赋值,让他全关闭  1是灭)(因为led右边接的是Vcc即1,左边给他为1就会熄灭)
    P2 = P2 & 0x1f | 0x80;//1、后五位不变,前三位置0  2、将前三位变成100,即打开led相关的锁存器Y4
    P2 &= 0x1f;//前三位置0,关闭锁存器

可以看出P0引脚并不能直接控制Led的亮灭,P0与Y4共同作用控制Led的亮灭,在原理图中找到Y4C,它受到Y4和WR控制,wr为0,所以影响Wr值的只有Y4,所以我们接着研究Y4

Y4受到138译码器的控制,打开Y4就要把Y4置1,P2 = P2 & 0x1f | 0x80;//1、后五位不变,前三位置0  2、将前三位变成100,即打开led相关的锁存器Y4,然后一顺看过去P2--Y4--Y4C

最终效果是P2控制锁存器Y4的开关,锁存器像是一道拦着数据的门,有数据要到他想去的位置,就打开锁存器,通过后立马关上(图中含有与、或、非门,自行理清逻辑即可。)

2、蜂鸣器的关闭

数据输入还是P0输入,但同样的Y5c控制着锁存器,决定着数据是否能通过,找到原理图上的Y5c,发现被Y5控制着,再通过P2引脚将Y5置1,代码如下

   //关闭蜂鸣器
    P0=0x00;//给蜂鸣器赋值,让他关闭 0位灭
    P2 = P2 & 0x1f | 0xa0;
    P2 &= 0x1f;//前三位置0,关闭锁存器

3、按键的控制

按键相对简单,对着原理图看,能看出哪个引脚控制行,哪个控制列

unsigned char Key_Read()
{
    unsigned char temp=0;
    P44=0;P42=1;P35=1;P34=1;
    if(P33==0)temp=4;
    if(P32==0)temp=5;
    if(P31==0)temp=6;
    if(P30==0)temp=7;
    
    P44=0;P42=1;P35=1;P34=1;
    if(P33==0)temp=8;
    if(P32==0)temp=9;
    if(P31==0)temp=10;
    if(P30==0)temp=11;
    
    P44=0;P42=1;P35=1;P34=1;
    if(P33==0)temp=12;
    if(P32==0)temp=13;
    if(P31==0)temp=14;
    if(P30==0)temp=15;
    
    P44=0;P42=1;P35=1;P34=1;
    if(P33==0)temp=16;
    if(P32==0)temp=17;
    if(P31==0)temp=18;
    if(P30==0)temp=19;
    return temp;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值