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 安装步骤
- 下载安装包:去Keil官网下载MDK-ARM版本,约500MB
- 安装过程:一路Next就行,注意安装路径不要有中文
- 破解激活:这个你懂的,用注册机生成License
- 安装器件包:打开Pack Installer,安装STM32F1系列包
注意:我曾经遇到过一个问题——安装完Keil后,编译总是报错找不到头文件。后来发现是器件包没装全。所以记得一定要把对应的芯片包装上。
1.3.2 IAR EWARM 安装步骤
- 下载IAR:推荐8.32版本,稳定好用
- 安装:同样注意路径不要有中文
- 注册:用注册机生成注册码
- 配置工程:新建工程时选择对应芯片型号
为什么会推荐这两个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 开发流程概览
整个项目的开发流程,我建议按这个顺序来:
- 硬件搭建:先搭好最小系统,再逐步添加外设
- 驱动编写:写数码管驱动、传感器驱动
- 逻辑实现:实现楼层计数逻辑
- 联调测试:软硬件联合调试
- 优化完善:处理边界情况,增加容错
你想想看,如果一上来就把所有东西都焊好,出了问题你都不知道是硬件还是软件的问题。所以我的习惯是:分模块调试,逐个击破。
本章小结:
- 了解了电梯楼层计数器的基本功能
- 掌握了所需硬件清单和选型要点
- 完成了Keil/IAR开发环境的安装
- 跑通了第一个测试程序
好了,环境搭好了,下一章咱们就开始动手写代码。记住,做嵌入式开发,动手比看书重要得多。有问题随时在群里问我,我看到就会回。