单片机:新建第一个工程,点亮LED
1. 准备工作
所需材料
-
单片机开发板(如STC89C52、STM32F103C8T6等)
-
USB数据线
-
电脑(安装开发环境)
-
LED灯(如果开发板没有自带)
2. 开发环境搭建
对于51单片机(如STC89C52)
-
安装Keil C51
-
安装STC-ISP下载程序
对于STM32单片机
-
安装Keil MDK
-
安装STM32芯片包
-
安装ST-Link驱动
3. 创建第一个工程(以Keil为例)
步骤1:创建新工程
-
打开Keil → Project → New uVision Project
-
选择工程保存位置,命名(如"LED_Project")
-
选择芯片型号(如STC89C52RC)
步骤2:添加启动文件
- 选择添加标准启动文件(STARTUP.A51)
步骤3:创建源文件
-
File → New → 创建新文件
-
输入代码
-
File → Save As → 保存为main.c
-
右键工程中的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文件
-
点击魔术棒按钮(Options for Target)
-
选择Output选项卡
-
勾选"Create HEX File"
6. 编译与下载
编译工程
- 点击"Build"按钮(或F7)
下载程序
-
连接开发板到电脑
-
打开下载软件(如STC-ISP)
-
选择正确的串口号和单片机型号
-
加载生成的HEX文件
-
点击下载/编程按钮
-
重启开发板(部分需要手动重启)
7. 硬件连接
外部LED连接方法
单片机引脚 → 220Ω电阻 → LED正极 → LED负极 → GND
(共阴接法,单片机输出高电平点亮)
或:
VCC → 220Ω电阻 → LED正极 → LED负极 → 单片机引脚
(共阳接法,单片机输出低电平点亮)
8. 常见问题解决
-
程序无法下载
-
检查USB驱动是否正确安装
-
确认串口号选择正确
-
尝试重启单片机再下载
-
-
LED不亮
-
检查LED极性是否接反
-
检查限流电阻是否合适
-
用万用表测量引脚电压
-
-
Keil编译错误
-
确认芯片型号选择正确
-
检查头文件路径是否正确
-
9. 下一步学习建议
-
尝试让LED闪烁
-
添加按键控制LED
-
学习使用定时器
-
实现流水灯效果
示例:闪烁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"!这是你嵌入式开发之旅的第一步。