单片机:新建第一个工程,点亮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"!这是你嵌入式开发之旅的第一步。

相关推荐
华芯微特SYNWIT1 小时前
SWM221 Cortex-M0系列MCU环境配置
单片机·嵌入式硬件
普中科技1 小时前
【普中 51-Ai8051 开发攻略】-- 第 12 章 LED 点阵实验-显示字符
单片机·嵌入式硬件·开发板·led点阵屏·普中科技·ai8051u·aicube
进击的小头2 小时前
第11篇:TI DSP芯片中断系统详解:PIE架构、配置实战与实时性优化
单片机·嵌入式硬件
Hello_Embed4 小时前
嵌入式上位机开发入门(二十四):Paho MQTT 嵌入式客户端源码分析
网络·单片机·网络协议·tcp/ip·嵌入式
yrx02030713 小时前
串口空闲中断+DMA接收+环形缓冲区 && 串口DMA发送+环形缓冲区
stm32·单片机
LCG元14 小时前
STM32实战:基于STM32F103的4G模块(EC20)HTTP通信
stm32·嵌入式硬件·http
送外卖的CV工程师15 小时前
STM32+Makefile编译+OpenOCD 烧录调试
stm32·单片机·嵌入式硬件·makefile·调试·烧录·openocd
豆包公子15 小时前
程序流监控:AUTOSAR CP 功能安全在裸机 MCU 上的实现(理论篇)
运维·单片机·嵌入式硬件·安全·车载系统·autosar
编程之升级打怪16 小时前
单片机SPI硬件接口的要点
嵌入式硬件