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

相关推荐
雅斯驰14 小时前
AES-128加密+滚动码认证:ATA5702W如何防御中继攻击与信号重放
运维·单片机·嵌入式硬件·物联网·自动化
iCxhust14 小时前
微机原理课程设计大综合---计数器
汇编·单片机·嵌入式硬件·课程设计·微机原理
搁浅小泽16 小时前
PCBA焊点的检测方法
单片机·嵌入式硬件·可靠性工程师
Deitymoon18 小时前
STM32——PWM控制舵机
stm32·单片机·嵌入式硬件
菜鸟的日志19 小时前
【嵌入系统】嵌入式学习笔记(一)
windows·笔记·嵌入式硬件·学习·ubuntu·操作系统
电子科技圈19 小时前
四大“门派”围攻边缘及端侧AI SoC市场“光明顶”
人工智能·嵌入式硬件·mcu·物联网·网络安全·音视频·语音识别
CHINA红旗下19 小时前
串口的使用
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑20 小时前
嵌入式测试学习第2天:欧姆定律 + 功率计算 + 电路单位换算
单片机·嵌入式硬件
BT-BOX20 小时前
Multisim 14.3 安装与汉化指南(附下载链接)
嵌入式硬件·物联网
不断提高21 小时前
别再写 while(1) 死循环了,嵌入式开发该换个活法
c语言·嵌入式硬件·嵌入式·状态模式