单片机:新建第一个工程,点亮LED

单片机:新建第一个工程,点亮LED

1. 准备工作

所需材料

  • 单片机开发板(如STC89C52、STM32F103C8T6等)

  • USB数据线

  • 电脑(安装开发环境)

  • LED灯(如果开发板没有自带)

2. 开发环境搭建

对于51单片机(如STC89C52)

  1. 安装Keil C51

  2. 安装STC-ISP下载程序

对于STM32单片机

  1. 安装Keil MDK

  2. 安装STM32芯片包

  3. 安装ST-Link驱动

3. 创建第一个工程(以Keil为例)

步骤1:创建新工程

  1. 打开Keil → Project → New uVision Project

  2. 选择工程保存位置,命名(如"LED_Project")

  3. 选择芯片型号(如STC89C52RC)

步骤2:添加启动文件

  • 选择添加标准启动文件(STARTUP.A51)

步骤3:创建源文件

  1. File → New → 创建新文件

  2. 输入代码

  3. File → Save As → 保存为main.c

  4. 右键工程中的Source Group → Add Files → 选择main.c

4. 示例代码

51单片机点亮LED代码

复制代码
#include <REG52.H>  // 包含51单片机寄存器定义头文件

sbit LED = P1^0;     // 定义LED连接到P1.0引脚

void main() {
    while(1) {
        LED = 0;     // 输出低电平,点亮LED(共阳接法)
        // 如果是共阴接法,则用 LED = 1;
    }
}

STM32点亮LED代码(标准库)

复制代码
#include "stm32f10x.h"

void Delay(uint32_t nCount) {
    for(; nCount != 0; nCount--);
}

int main(void) {
    // 使能GPIOB时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    
    // 配置GPIOB Pin0为推挽输出
    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_ResetBits(GPIOB, GPIO_Pin_0);  // 输出低电平,点亮LED
        Delay(0xFFFFF);  // 简单延时
        
        GPIO_SetBits(GPIOB, GPIO_Pin_0);    // 输出高电平,熄灭LED
        Delay(0xFFFFF);
    }
}

5. 工程设置

配置输出HEX文件

  1. 点击魔术棒按钮(Options for Target)

  2. 选择Output选项卡

  3. 勾选"Create HEX File"

6. 编译与下载

编译工程

  • 点击"Build"按钮(或F7)

下载程序

  1. 连接开发板到电脑

  2. 打开下载软件(如STC-ISP)

  3. 选择正确的串口号和单片机型号

  4. 加载生成的HEX文件

  5. 点击下载/编程按钮

  6. 重启开发板(部分需要手动重启)

7. 硬件连接

外部LED连接方法

复制代码
单片机引脚 → 220Ω电阻 → LED正极 → LED负极 → GND
(共阴接法,单片机输出高电平点亮)

或:
VCC → 220Ω电阻 → LED正极 → LED负极 → 单片机引脚
(共阳接法,单片机输出低电平点亮)

8. 常见问题解决

  1. 程序无法下载

    • 检查USB驱动是否正确安装

    • 确认串口号选择正确

    • 尝试重启单片机再下载

  2. LED不亮

    • 检查LED极性是否接反

    • 检查限流电阻是否合适

    • 用万用表测量引脚电压

  3. Keil编译错误

    • 确认芯片型号选择正确

    • 检查头文件路径是否正确

9. 下一步学习建议

  1. 尝试让LED闪烁

  2. 添加按键控制LED

  3. 学习使用定时器

  4. 实现流水灯效果

示例:闪烁LED(51单片机)

复制代码
#include <REG52.H>

void Delay(unsigned int t) {
    while(t--);
}

void main() {
    while(1) {
        P1 = 0x00;      // 所有LED亮
        Delay(60000);   // 延时
        
        P1 = 0xFF;      // 所有LED灭
        Delay(60000);
    }
}

恭喜!你已经完成了单片机开发的"Hello World"!这是你嵌入式开发之旅的第一步。

相关推荐
zcmodeltech18 小时前
工程机械与矿山机械沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的露天开采-井下掘进-智慧矿山全场景联动方案
数据库·stm32·单片机·嵌入式硬件·制造·多分类
云泽80819 小时前
深入浅出 STM32(十五):多通道GPIO驱动的软件抽象与实现
stm32·单片机·嵌入式硬件
嵌入式阿蔡20 小时前
OTA 实战五(收官):量产落地 Checklist —— 版本号 / 防回滚 / 灰度 / 断点续传
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
碧海银沙音频科技研究院21 小时前
基于杰理AC7016C的GTCRN门控卷积神经网络语音增强方法
人工智能·嵌入式硬件·语音识别
遇雪长安1 天前
STM32_BOOT未引出_串口升级系统Bootloader方案
stm32·单片机·嵌入式硬件·bootloader
dcdannycheung1 天前
【无标题】
嵌入式硬件
自小吃多1 天前
Capture软件原理图添加元器件笔记
笔记·嵌入式硬件
tangchao340勤奋的老年?1 天前
AMT630C 开阳电子 RISC‑V 显示 SoC|工业级双屏驱动 MCU,带 CAN 总线,国产 HMI 控制芯片
单片机·嵌入式硬件
youshi66681 天前
stm32-SPI通信协议、软件SPI
stm32·单片机·嵌入式硬件
振南的单片机世界1 天前
EXTI“一线多挂”陷阱:PA0和PB0同时触发,中断函数懵了
arm开发·stm32·单片机·嵌入式硬件