蓝桥杯51单片机——LED闪烁

 

 

概要

        实验名称:LED闪烁

        实验环境:IAP15F2K61S2国信长天实验板

        实验配置:J3跳线配置为I/O模式,J5配置为BTN模式,J3配置为1-3,2-4模式,
                   J6配置为蜂鸣器电源

        实验要点:宏函数,异或语句控制LED闪烁

备注:蜂鸣器在整个实验中应处于关闭状态

技术实现

1.硬件环境

        IAP15F2K61S2单片机部分

        

        74HC138译码器

        74HC573锁存器

        ULN2003达林顿管

2.原理图

 因为硬件设计原因,在实验中会涉及到蜂鸣器电路部分

3.代码实现

#include <STC15F2K60S2.h>
#include <intrins.h>

/*宏函数*/
#define LED(X) {P0 = X;P2 = ((P2 & 0X1F) | 0X80);P2 = P2 & 0x1f;}
#define BUZ(X) {P0 = X;P2 = ((P2 & 0X1F) | 0XA0);P2 = P2 & 0x1f;}


/*延时函数*/
void Delay100ms(void)	//@11.0592MHz
{
	unsigned char data i, j, k;

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

/*LED闪烁函数*/
void LED_TASK()
{
    static unsigned char led = 0xff;/*静态局部变量*/
    
    led ^= 0xff;
    LED(led);
}

/*主函数*/
void main(void)
{   
    BUZ(0X00);          //关闭蜂鸣器
    LED(0XFF);          //初始LED熄灭
	while(1)
	{
        LED_TASK();
        Delay100ms();
	}
}

 4.内容要点

  1.  宏函数

宏函数:宏函数是C语言中的一种预处理器指令,它在预编译阶段将宏名替换为后面的替换体。宏函数的使用可以提高程序的执行效率,因为它避免了函数调用的开销,如参数压栈、生成汇编语言的CALL调用、返回参数、执行return等过程。

宏函数的定义使用#define指令。例如:#define SQUARE(x) ((x)*(x))

            通过向LED(X)传递实参实现相应功能 ,代替的代码部分如下:

    /*LED开*/
 	P2 = ((P2 & 0X1F) | 0X80);
	P0 = 0x00;
	P2 = P2 & 0x1f;
	Delay();
		
	/*LED关*/
	P2 = ((P2 & 0x1f) | 0x80);
	P0 = 0xff;
	P2 = P2 & 0x1f;
	Delay();

        同理,BUZ(X)部分:

/*关闭蜂鸣器*/
void clo_buzzer()
{
	//选中控制蜂鸣器的锁存器
	P2 = ((P2 & 0X1F) | 0XAF);
	/*
		P2 & 0x1F:高三位清零
		P2 | 0xAF 设置高三位
	*/
	//关闭
	P0 = 0X00;
	//将138锁存器的输入端置空
	P2 = (P2 & 0x1F);
   
}

  2.异或语句控制LED闪烁

/*LED闪烁函数*/
void LED_TASK()
{
    static unsigned char led = 0xff;/*静态局部变量*/
    
    led ^= 0xff;
    LED(led);
}

        此处利用异或语句的特点,使得每次执行该语句时,静态局部变量的值均与前一次相反,从而实现高低电平转换 ,达到LED闪烁的效果。

 

实验结果

 

 

### 蓝桥杯单片机开发环境配置教程 #### 准备工作 为了顺利参与蓝桥杯竞赛中的单片机项目,参赛者需先准备好所需的硬件设备以及软件工具。通常情况下,硬件部分包括但不限于单片机最小系统板、编程器/调试器等;而软件方面则主要包括集成开发环境(IDE),如Keil C51。 #### Keil C51安装与基本设置 安装Keil C51是构建单片机开发环境的重要一步。完成安装后,在初次启动时会提示创建新的工程文件夹路径[^1]。建议将此路径设为容易记忆的位置以便后续操作。 #### CubeMX初始化配置 对于基于STM8或STM32系列MCU的设计而言,还需要借助ST官方提供的CubeMX来进行外设初始化配置。通过顶部菜单栏的帮助选项进入`Manage Embedded Software Package`界面来更新组件库至最新版本[^4]。 #### STC-IAP仿真设定 如果使用的是STC品牌的单片机,则可能需要用到专门的烧写工具——STC-IAP。在此过程中,“添加型号”的步骤至关重要,它允许用户指定所使用的具体芯片类型,并指向已正确安裝好的Keil编译器位置以实现联合调试功能[^5]。 #### 工程模板建立 利用上述工具完成了必要的前期准备工作之后,就可以着手新建具体的工程项目了。此时可以根据实际需求选择合适的微控制器架构并按照向导指示逐步完善各项参数直至最终生成可供编辑修改的基础框架代码。 ```c // 示例:简单的LED闪烁程序结构 #include <reg52.h> void delay(unsigned int time); sbit LED=P1^0; void main(void){ while(1){ LED=~LED; delay(60000); } } void delay(unsigned int time){ unsigned int i,j; for(i=time;i>0;i--) for(j=11;j>0;j--); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值