蓝桥杯单片机之LED灯
Posted 你是我的盛夏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯单片机之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 <intrins.h>//如果用延时,需要添加这个头文件
#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灯
- 打开Y4
- 将对应位置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 <intrins.h>//Èç¹ûÓõ½ÑÓʱ£¬ÐèÒªÓõ½Õâ¸öÎļþ
#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
评论区可以问问题~我看到了就会回复滴!
以上是关于蓝桥杯单片机之LED灯的主要内容,如果未能解决你的问题,请参考以下文章
蓝桥杯单片机基础之PWM(Pulse width modulation)