欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

蓝桥杯国信长天单片机--LED灯模块(五)

时间:2023-06-03
LED等内部连接示意图


整体思路
通过74HC138芯片及74HC02芯片输入高低电平,来控制Y4C为1或0。当Y4C为1时,方可通过P0端口来控制LED灯的亮灭。当Y4C为0时,无法控制LED灯的亮灭。如:令P27为1、P26为0、P25为0,则输出Y4为0,再通过74HC02芯片,将Y4为0输入,则Y4C输出为1。再通过P0为0xfe即Q8-Q1,为1111 1110,控制L1亮。也可令P0为0x00即Q8-Q1,为0000 0000,控制L1~L8同时亮。

LED控制步骤分解:
步骤一:
从CT107D单片机综合训练平台原理图中找到LED模块

根据原理图,我们可以知道,这一组发光二极管的阳极,已经给了一个高电平,所以只要我们在阴极给出一个低电平,就可以让二极管发光。
学过51的朋友都知道,要给出一个低电平,我们只需要令IO口为0,就可以了。即

P0 = 0x00; //点亮所有LED

但是呢,这一块板子,你直接令P0口为0,是无法点亮IO口的。在P0端口与发光二极管之间有一个芯片74HC573(锁存器)。模块详解查阅蓝桥杯国信长天单片机–原理图详解(四)
步骤二:
板子上有4片74HC573芯片,使能其中Y4C端口(设置高电平既可以控制该芯片),利用138译码器进行端口高低电平设置。


138译码器这里的作用是用P25,P26,P27,也就是P2口的高三位来控制位选的。

使能P27-p25 清零,再定位Y4C操作

P2 = P2 & 0x1F | 0x80; //P27-p25 清零,再定位Y4CP2 &= 0x1F; //P27-p25 清零

IO 编程点亮LED核心代码如下:

P2 = ((P2&0x1F)|0x80);P0 = 0x00; //点亮所有LEDP2 = P2 & 0x1F;

案例:
LED闪烁

#include "reg52.h" //定义51单片机特殊功能寄存器//延时函数void delay(void){ unsigned char i,j,k; for(i=0; i<20; i++) { for(j=0; j<20; j++) { for(k=0; k<248; k++); } }}//主函数void main(void){ while(1) { P2 = ((P2&0x1f)|0x80); P0 = 0xff; //LED熄灭 P2 &= 0x1f; delay(); P2 = ((P2&0x1f)|0x80); P0 = 0x00; //LED点亮 P2 &= 0x1f; delay(); }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。