1. 项目概述与开发环境搭建

各位同学好,我是老张。做嵌入式开发十几年了,今天咱们聊聊电梯楼层计数器这个项目。说实话,这个项目是我当年入门时做的第一个完整产品,到现在还记忆犹新。

电梯楼层计数器,听起来挺简单对吧?就是显示电梯当前在几楼。但实际做起来,你会发现里面门道不少。传感器怎么选?数码管怎么驱动?单片机怎么处理信号?这些都得一步步来。

1.1 项目整体介绍

这个项目的核心功能,说白了就是:检测电梯位置,然后显示在数码管上。你想想看,电梯每经过一层,传感器就会产生一个脉冲信号。单片机收到这个信号,就知道电梯到哪一层了。

我在项目中遇到过一个问题:电梯有时候会在同一层反复开关门,这时候传感器会误触发。嗯,这个坑我后面会专门讲怎么避。

项目的主要功能模块包括:

  • 信号采集模块:用传感器检测电梯位置变化
  • 主控模块:STM32或51单片机处理数据
  • 显示模块:数码管显示当前楼层
  • 按键模块:用于设置楼层数或复位

项目技术指标:

  • 楼层范围:1-32层(可扩展)
  • 响应时间:≤50ms
  • 显示精度:1层
  • 工作电压:5V DC

1.2 硬件清单详解

做这个项目,硬件你得备齐了。我建议你一次性买好,省得到时候缺东少西。

器件名称 型号推荐 数量 备注
单片机 STM32F103C8T6 / STC89C52 1 新手建议用51,老手直接上STM32
传感器 霍尔传感器 A3144 / 红外对管 2 一个检测上行,一个检测下行
数码管 4位共阴数码管 3641AS 1 显示楼层号
驱动芯片 74HC595 / TM1650 1 节省IO口
按键 轻触开关 6x6mm 3 设置、加、减
电阻电容 10kΩ、100nF等 若干 上拉、滤波用
电源 5V/1A 适配器 1 或者用USB供电

我的建议:如果你手头有现成的开发板,比如正点原子的Mini板,那直接拿来用就行。我当年就是拿一块51开发板改的,省了不少钱。

1.3 开发环境安装与配置

开发环境这块,我主要讲两种:Keil和IAR。我个人习惯用Keil,因为上手快,资料多。但IAR的编译优化确实更好,看个人喜好。

1.3.1 Keil MDK 安装步骤

  1. 下载安装包:去Keil官网下载MDK-ARM版本,约500MB
  2. 安装过程:一路Next就行,注意安装路径不要有中文
  3. 破解激活:这个你懂的,用注册机生成License
  4. 安装器件包:打开Pack Installer,安装STM32F1系列包

注意:我曾经遇到过一个问题——安装完Keil后,编译总是报错找不到头文件。后来发现是器件包没装全。所以记得一定要把对应的芯片包装上。

1.3.2 IAR EWARM 安装步骤

  1. 下载IAR:推荐8.32版本,稳定好用
  2. 安装:同样注意路径不要有中文
  3. 注册:用注册机生成注册码
  4. 配置工程:新建工程时选择对应芯片型号

为什么会推荐这两个IDE?因为它们的调试功能真的很强。你可以单步执行、看变量值、设断点。我刚开始学的时候,就是靠单步调试一点点搞明白程序怎么跑的。

1.3.3 第一个测试工程

装好环境后,咱们写个最简单的程序测试一下。以STM32为例:

#include "stm32f10x.h"

void delay(uint32_t count) {
    while(count--);
}

int main(void) {
    // 开启GPIOB时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
    // 配置PB0为推挽输出
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
    
    while(1) {
        GPIO_SetBits(GPIOB, GPIO_Pin_0);  // 点亮LED
        delay(500000);
        GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 熄灭LED
        delay(500000);
    }
}

这段代码就是让LED灯闪烁。你把它下载到板子上,如果灯能闪,说明环境配置成功了。

小技巧:第一次下载程序时,记得检查一下Boot0和Boot1的跳线设置。我刚开始就因为这个折腾了半天,后来才发现是跳线没插对。

1.4 开发流程概览

整个项目的开发流程,我建议按这个顺序来:

  1. 硬件搭建:先搭好最小系统,再逐步添加外设
  2. 驱动编写:写数码管驱动、传感器驱动
  3. 逻辑实现:实现楼层计数逻辑
  4. 联调测试:软硬件联合调试
  5. 优化完善:处理边界情况,增加容错

你想想看,如果一上来就把所有东西都焊好,出了问题你都不知道是硬件还是软件的问题。所以我的习惯是:分模块调试,逐个击破

本章小结:

  • 了解了电梯楼层计数器的基本功能
  • 掌握了所需硬件清单和选型要点
  • 完成了Keil/IAR开发环境的安装
  • 跑通了第一个测试程序

好了,环境搭好了,下一章咱们就开始动手写代码。记住,做嵌入式开发,动手比看书重要得多。有问题随时在群里问我,我看到就会回。