蓝桥杯单片机之LED灯

LED

这是第一个模块的教程,首先我先说一下标准模板里面的文件。
因为每一个模块的使用都涉及到译码器(译码器、锁存器小蜜蜂老师讲解),以及一些公用的数据类型等,因此我会建立一个公共头文件,具体代码(.c和.h)如下:
common.c文件

#include "common.h"

void cls_buzz()
{
     
	Y4;P0=0xff;//关闭led
	Y5;P0=0xaf&(P0|0x50);//关闭蜂鸣器、继电器
}

common.h文件

#ifndef _COMMON_H_
#define _COMMON_H_

#include "STC15F2K60S2.h"//添加STC头文件
#include //如果用延时,需要添加这个头文件

#define uchar unsigned char//程序中的unsigned char数据类型都用uchar表示
#define uint unsigned int
	
#define Y4 P2=0x9f&(P2|0xe0);//打开Y4
#define Y5 P2=0xbf&(P2|0xe0);//打开Y5
#define Y6 P2=0xdf&(P2|0xe0);//打开Y6
#define Y7 P2=0xff&(P2|0xe0);//打开Y7

void cls_buzz(void);//函数声明,只有声明了,才可以调用

#endif

common.c和common.h都存在System文件夹和System Group里。

接下来开始led的讲解
看原理图可以知道,使用led模块时,需要打开Y4译码器。
打开对应的led灯

  1. 打开Y4
  2. 将对应位置0

接下来这段程序展示了L1~L8依次点亮后亮三秒,循环往复。

main.c

#include "main.h"

void main()
{
     
	cls_buzz();
	while(1)
	{
     
		liushuideng();
	}
}

main.h

#ifndef _MAIN_H_
#define _MAIN_H_

#include "common.h"
#include "led.h"

#endif

led.c

#include "led.h"

void liushuideng()
{
     
	Y4;P0=0xfe;
	Delay100ms();
	Y4;P0=0xfd;
	Delay100ms();
	Y4;P0=0xf8;
	Delay100ms();
	Y4;P0=0xf0;
	Delay100ms();
	Y4;P0=0xe0;
	Delay100ms();
	Y4;P0=0xd0;
	Delay100ms();
	Y4;P0=0x80;
	Delay100ms();
	Y4;P0=0x00;
	Delay3000ms();
}

led.h

#ifndef _LED_H_
#define _LED_H_

#include "common.h"

void liushuideng(void);

#endif

common.c

#include "common.h"

void cls_buzz()
{
     
	Y4;P0=0xff;//¹Ø±Õled
	Y5;P0=0xaf&(P0|0x50);//¹Ø±Õ·äÃùÆ÷¡¢¼ÌµçÆ÷
}

void Delay100ms()		//@11.0592MHz
{
     
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 5;
	j = 52;
	k = 195;
	do
	{
     
		do
		{
     
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay3000ms()		//@11.0592MHz
{
     
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 127;
	j = 18;
	k = 107;
	do
	{
     
		do
		{
     
			while (--k);
		} while (--j);
	} while (--i);
}


common.h

#ifndef _COMMON_H_
#define _COMMON_H_

#include "STC15F2K60S2.h"//Ìí¼ÓSTCÍ·Îļþ
#include //Èç¹ûÓõ½ÑÓʱ£¬ÐèÒªÓõ½Õâ¸öÎļþ

#define uchar unsigned char//Ö®ºóÓõ½unsigned charÊý¾ÝÀàÐÍʱ£¬Ö±½Óдuchar
#define uint unsigned int
	
#define Y4 P2=0x9f&(P2|0xe0);//´ò¿ªY4
#define Y5 P2=0xbf&(P2|0xe0);//´ò¿ªY5
#define Y6 P2=0xdf&(P2|0xe0);//´ò¿ªY6
#define Y7 P2=0xff&(P2|0xe0);//´ò¿ªY7

void cls_buzz(void);
void Delay100ms(void);
void Delay3000ms(void);

#endif

评论区可以问问题~我看到了就会回复滴!

你可能感兴趣的:(蓝桥杯,c语言,编程语言)