蓝桥杯LED

本文详细介绍了蓝桥杯单片机比赛中的LED控制部分,包括LED连接原理、使用P0端口的锁存器进行区分、扫描函数和控制逻辑。初学者可通过此内容学习如何处理LED的常见问题和实现基本操作。
摘要由CSDN通过智能技术生成

蓝桥杯单片机led

蓝桥杯单片机赛项是电子类比较好获奖的赛项,达到了60%,其中省一10%,省二20%,省三30%。其中led是每届必考的,处理不好容易出现鬼影,闪烁,以及各种问题。

led原理图分析

蓝桥杯led和普中51开发板上的led在连接上有所不同,蓝桥杯的led,数码管,蜂鸣器,继电器都是连接在P0端口通过锁存器进行区分;
在这里插入图片描述
从原理图上可以得知led灯需要打通138译码器和SN74HC0以及74hc573。SN74HC0就是简单的集成的多路或非门,通过控制锁存器LE引脚与Y4C相连接即可控制锁存器。

led.c文件

#include <STC15F2K60S2.H>
char led_date[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char led_D;
void led_inite() //初始化led
{
	P0=0xff;  //关闭全部led
}

void led_scan()   //led扫描
{
	P0=led_D;
	P2=(P2&0x1f)|0x80; //打开led锁存器
	P2=(P2&0x1f);      //关闭led锁存器
}
void led_on(char a)  //打开led,a=0~8
{
	led_D=led_date[a];//控制L1~L8的打开
}

void led_off(char a)  //关闭led,a=0~8
{
	led_D|=~led_date[a];//控制L1~L8的关闭
}

void led_byte(char a)  //a=0~255
{
	led_D=~a; //用led显示二进制0~255
}

led.h

#ifndef __LED__H
#define __LED__H

void led_scan(); //扫描函数
void led_on(char a);
void led_off(char a);
void led_inite(); //初始化函数
void led_byte(char a);

#endif

main.c

#include <STC15F2K60S2.H>
#include "led.h"
main()
{
	P0=0x00;  //关闭蜂鸣器
	P2=(P2&0x1F)|0xa0;  //打开蜂鸣器锁存器
	P2=(P2&0x1F);   //关闭蜂鸣器锁存器
	led_inite();
	while(1)
	{
	led_on(1); //L1亮
	//led_off(1);  //L1灭
	//led_byte(25);  //显示二进制的25
	led_scan(); //扫描led
	}
	
}

上面代码是模块化过后的,其中led_scan();函数的位置会影响直接led的运行;
小白刚入坑,如有问题请指出,谢谢;
  • 13
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值