LED灯模块

        在CT107D单片机中,使用io口实现对LED灯的操作是非常基础的操作。

        电路原理

        

        以上是LED相关电路的示意图。我们看到每个LED灯分别对应了P00口至P07口,P0口的输入受到锁存器的控制,而且注意CT107D的点亮是低电平点亮。而锁存器则受到Y4C的控制,我们可以通过译码器的电路看到Y4C是译码器Y4口取反。译码器有P25,P26,P27控制。 

        操作思路

        先看到锁存器的效果,打开锁存器(高电平),锁存器会允许外部数据流入,关闭锁存器(低电平)就会锁定当前的输入,并且不再允许外界的数据输入。这样的机制可以保护LED的工作防止被外界数据干扰,产生预期外的现象。Y4口的非门的方式保证低电平的通常态。

        所以我门可以先通过P0口输入我们想要的LED灯的数据,然后通过P2口打开锁存器,放行数据输入,然后马上关闭锁存器。

        代码操作

        这里我们想让LED灯间隔点亮(分别是1,3,5,7号灯)。补充数据:根据上文电路图我们很容易得到,Y4口对应的P2口的数据是0x80,让LED灯间隔点亮的P0口数据是0x55。以下是代码操作。(PS:这个操作并不严谨,这里没有涉及到其他模块的初始化,可能会出现其他模块的异常现象)

        

#include <STC15F2K60S2.H>



void vDevice_Ctrl(unsigned char p2,unsigned char p0)//用一个函数直接完成操作
{
    P0 = p0;    //先输入P0口数据
    P2 = p2;    //再通过P2口打开锁存器
    P2 = 0;    //关闭锁存器
}



void main(void)
{
    vDevice_Ctrl(0x80,0x55);
    while(1){}
}

预期现象(有可能其他模块有异常响应)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值