蓝桥杯备战——1.点亮LED灯

1.解析原理图

由上图可以看到8个共阳LED灯接到了573输出口,而573输入接到单片机P0口上。当573 LE脚输入高电平时,输出随输入变化,当LE为低电平时,输出锁存。

由上图可以看到Y4C接到了或非门74HC02的输出端,而输入端为WR和138输出端Y4。现在我们把WR接地,通过控制138译码器即可控制Y4C。例:P25=0;P26=0;P27=1;则Y4=0;则Y4C=1;

2.点亮LED代码

c 复制代码
void Set_Leds(unsigned char Leds)
{
	//选中LED所在573,此时输出跟随输入变化
	P25=0;P26=0;P27=1; //74HC138-->Y4=0,else=1-->Y4C=1,else=0
	P0=Leds;
	//锁存LED所在573
	P25=0;P26=0;P27=0; //74HC138-->Y1=0,else=1
}

3.解决上电蜂鸣器鬼叫问题

由上图我们可以看到蜂鸣器以及继电器都是低电平有效,接到了ULN2003输出端,ULN2003内部结构为输入先经过非门再接入达林顿管,如果ULN2003输入为0,则输出为1。所以解决办法就是我们上电先控制138选中Y5输出低电平,则Y5C为高电平,然后单片机P0输出低电平,则ULN2003输出高电平,蜂鸣器继电器关闭,然后再让Y5C为低电平锁存一下573即可。

示例代码:

c 复制代码
#include "led.h"

void System_Init(void);

void main()
{
	System_Init();
	Set_Leds(0xEF);	//点亮L5
	while(1)
	{
	
	}
}

void System_Init()//系统上电初始化
{
	//先锁存蜂鸣器,继电器所在573输出低电平,防止上电乱叫
	P25=1;P26=0;P27=1; //74HC138-->Y5=0,else=1-->Y5C=1,else=0
	P0=0x00;	//ULN2003输入经过非门送入达林顿管,低电平有效
	P25=0;P26=0;P27=0;//锁存数据
	
}
相关推荐
范纹杉想快点毕业2 小时前
ZYNQ PS 端 UART 接收数据数据帧(初学者友好版)嵌入式编程 C语言 c++ 软件开发
c语言·笔记·stm32·单片机·嵌入式硬件·mcu·51单片机
方圆工作室2 小时前
51单片机驱动数码管
单片机·嵌入式硬件·51单片机
乔宕一3 小时前
stm32 链接脚本没有 .gcc_except_table 段也能支持 C++ 异常
c++·stm32·嵌入式硬件
范纹杉想快点毕业4 小时前
STM32 串口接收数据包(自定义帧头帧尾)
stm32·单片机·嵌入式硬件
茯苓gao4 小时前
STM32G4 电流环闭环
笔记·stm32·单片机·嵌入式硬件·学习
单片机系统设计5 小时前
基于stm32的环境监测系统/智能家居/空气质量监测系统
stm32·单片机·嵌入式硬件·毕业设计·智能家居
不知所云,6 小时前
5. STM32 时钟系统分配
stm32·单片机·嵌入式硬件
电子科技圈7 小时前
芯科科技FG23L无线SoC现已全面供货,为Sub-GHz物联网应用提供最佳性价比
科技·嵌入式硬件·mcu·物联网·制造·智能硬件·交通物流
天天爱吃肉82188 小时前
【比亚迪璇玑架构深度解析:重新定义智能电动汽车的“整车智能”】
数据库·人工智能·嵌入式硬件·架构·汽车
糖糖单片机设计9 小时前
硬件开发_基于物联网的沼气池环境监测系统
stm32·单片机·嵌入式硬件·物联网·51单片机