蓝桥杯之单片机设计与开发(2)——LED程序设计

1、新建工程

  • 通过之前的学习积累,基本上可以灵活运用KEIL,所以在新建工程阶段我就变得超前起来。
  • 怎么说呢,学过原子哥的STM32都知道原子哥工程项目的风格

工程文件

  1. 先将此次开发板所有需要学的工程在文件夹建立好,省的每次创建工程都需要再新建工程。
    子文件
  2. 将子文件按照上面格式新建,将工程文件和main.c放在USER文件夹中,然后编译所产生的文件均在OBJ文件夹中,其余外设单独创建C文件,并且在HARDWARE中新建文件夹单独存放,SYSTEM中存放sys.c,用于定义引脚以及一些系统程序。这样所有的工程变得尽然有序。
    keil 建立多模块任务
    其中KEIL的工程文件的建立是更具这位前辈学习的。

2、工程分模块分析

  1. 主函数
/**********************************************************************
@功能模块:主函数
@作    者:朱明
@时    间:2020年1月28日
**********************************************************************/
#include <reg52.H>
#include"delay.h"
#include"led.h"
#include"Cls.h"

// 主函数
void main(void)
{
  unsigned char i, j;

  Cls_Peripheral();

  while(1)
  { // 4个亮度等级
    for(i=0; i<4; i++)
      for(j=0; j<100; j++)
      {
        Led_Disp(0xff);
        delay(i+1);
        Led_Disp(0);
        delay(4-i);
      }
  }
}
  1. 延迟函数
/*************************************************************************
@功能模块:延时函数
@作    者:朱明
@时    间:2020年1月28日
**************************************************************************/
#include"delay.h"

void delay(unsigned int num)
{
	unsigned int i;
	while(num--)
	 for(i=0; i<628; i++);
}
  1. LED显示函数
/*************************************************************************
@功能模块:LED显示函数
@作    者:朱明
@时    间:2020年1月28日
**************************************************************************/
#include "led.h"

void Led_Disp(unsigned char ucLed)
{ // IO模式(J13-2和J13-3相连)
  P0 = ~ucLed;
  P2 = P2 & 0x1F | 0x80;			// P27~P25清零,再定位Y4C
  P2 &= 0x1F;						      // P27~P25清零
}
  1. I/O模式函数
/*************************************************************************
@功能模块:I/O模式函数
@作    者:朱明
@时    间:2020年1月28日
**************************************************************************/
#include "Cls.h"

void Cls_Peripheral(void)
{ // IO模式(J13-2和J13-3相连)
  P0 = 0xFF;
  P2 = P2 & 0x1F | 0x80;			// P27~P25清零,再定位Y4C
  P2 &= 0x1F;						      // P27~P25清零
  P0 = 0;
  P2 = P2 & 0x1F | 0xA0;			// P27~P25清零,再定位Y5C
  P2 &= 0x1F;						      // P27~P25清零
}

每个部分的代码,都备注了详细解答,我也会附带上自己建立的工程,以便学习

3、学习笔记

蓝桥杯之单片机设计与开发(1)——LED
这位前辈,为我解答了部分开发板寄存器的相关问题
首先,在我们拿到题目的时候都会让我们先关闭蜂鸣器,继电器等无关外设。

到底是不是真的还不确定

我们可以看原理图,LED、数码管、以及驱动芯片2003所控制的外设均由P25、P26、P27三个I/O口连接标号为U24的74LS138控制,74LS138译码之后经过一个标号为U25的74HC02(2输入四或非门)或非门控制,74HC02的输出连接四个74LS573的输入使能端。或非门的一端连接标号为J13的排针,我在这里使用的是IO模式,所以就是或非门的一端接GND,为低电平。而74LS573的输入使能端为高有效。每个外设的数据输入为P0口控制。
38译码器
所以关闭外设就是打开每一个外设的片选74LS573,使其输入使能端为高电平,然后写入无效数据。

位操作

置0用与&,置1用或|

备注
其中I/O模式我大致get到了,但是MM模式似懂非懂。
问学长得到以下解答

  1. 0X8000=1000 0000 0000 0000
  2. P0.0~P2.7 从低到高,没有P1
  3. 低8位是P0.0~P0.7
  4. 高8位是P2.0~P2.7

附上MMampampIO编程方式说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路明呦呦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值