1小时真能学会C语言51单片机吗?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 C语言 正文

准备阶段:你需要什么?(5分钟)

  1. 硬件:

    1小时学会c语言51单片机
    (图片来源网络,侵删)
    • 一块51单片机开发板(推荐带STC89C52或AT89S52芯片的,最常见,资料多)。
    • 一根USB下载线(通常是CH340或PL2303芯片)。
    • 一个LED灯(任何颜色)和一个330Ω电阻(用于限流,保护LED和单片机引脚)。
    • 杜邦线若干。
  2. 软件:

    • Keil C51 (μVision): 这是51单片机最经典、最主流的开发环境,你可以从官网下载评估版(有2K代码限制,足够我们学习)。
    • STC-ISP: 这是由STC官方提供的下载工具,用于把你写好的程序烧录(下载)到单片机里,直接搜索“STC-ISP下载”就能找到官网下载。

第一部分:认识51单片机(10分钟)

想象一下,51单片机就是一个小小的“大脑”。

  • 核心: 中央处理器,负责执行指令。
  • 内存:
    • ROM (程序存储器): 断电后不丢失,用来存放我们写的C程序代码。
    • RAM (数据存储器): 断电后丢失,用来存放程序运行时临时产生的变量。
  • I/O口 (输入/输出端口): 这是单片机与外界沟通的“手”和“脚”,我们就是通过这些“脚”来控制LED灯亮灭的,51单片机通常有4个8位的I/O口,记作 P0, P1, P2, P3。

我们的目标: 让单片机P1.0这个“脚”输出高电平,LED灭;输出低电平,LED亮。


第二部分:点亮一个LED - C语言实战(35分钟)

我们将分三步走:配置硬件 -> 编写代码 -> 下载运行

1小时学会c语言51单片机
(图片来源网络,侵删)

步骤1:硬件连接(5分钟)

按照下面的图示,把你的开发板和元件连接起来:

  • 单片机P1.0引脚 --- 330Ω电阻 --- LED的长脚(阳极)
  • LED的短脚(阴极) --- 开发板上的GND(接地)

简单理解: 当P1.0输出低电平(0V)时,电流从电源经过电阻和LED流到GND,形成回路,LED亮,当P1.0输出高电平(5V)时,LED两端电压差为0,不亮。

步骤2:编写C代码(25分钟)

打开Keil C51软件,创建一个新的工程,然后新建一个C文件(main.c),把下面的代码复制进去。

// 包含51单片机寄存器定义的头文件
#include <reg52.h>
// 主函数,程序从这里开始执行
void main(void)
{
    // 1. 配置P1.0为输出模式
    // 在51单片机中,一个端口有8个引脚,P1是特殊功能寄存器SFR
    // 我们要操作P1.0,所以先读取整个P1端口的当前值,然后修改第0位,再写回去
    // P1 = P1 & 0xFE;  // 这是一种方法,FE的二进制是11111110,与操作后,P1.0被强制置0
    // 更简单、更常用的方法是使用位定义
    sbit LED = P1^0; // 定义一个名为LED的变量,它代表P1.0这个引脚
    // 2. 让LED亮
    // 给LED变量赋值0,就是让P1.0输出低电平
    LED = 0; 
    // 3. 程序停止在这里,保持LED常亮
    // 如果没有这行,程序会继续向下执行,可能会出问题
    while(1)
    {
        // while(1) 是一个死循环,让程序永远停在这里
        // 如果你想让LED闪烁,可以在这里写延时和翻转逻辑
    }
}

代码解释:

1小时学会c语言51单片机
(图片来源网络,侵删)
  1. #include <reg52.h>:这是必须的!它定义了51单片机所有特殊功能寄存器(比如P0, P1, P2, P3等)的地址,没有它,你写的 P1^0 就没有意义。
  2. void main(void):这是C程序的入口,程序启动后会首先执行这里的代码。
  3. sbit LED = P1^0;:这是51单片机C语言特有的语法。sbit 用来定义一个“位”变量。LED = P1^0; 的意思是,我们创建了一个名为 LED 的别名,以后操作 LED 就等同于操作 P1.0 这个引脚,非常直观。
  4. LED = 0;:给 LED 赋值0,就是让P1.0输出低电平,LED灯亮。
  5. while(1):这是一个无限循环,单片机程序一旦运行,就不能停止。while(1) 就起到了让程序“卡住”的作用,防止它跑飞,我们后续的闪烁、读取按键等逻辑都会放在这个循环里。

步骤3:编译和下载(5分钟)

  1. 编译: 在Keil中点击“构建”按钮(一个锤子图标),如果代码没有错误,下方会提示 "0 Error(s), 0 Warning(s)",并在你的工程目录下生成一个 .hex 文件,这就是单片机能读懂的机器码。
  2. 下载:
    • 打开你下载好的 STC-ISP 软件。
    • 点击“打开文件”,找到刚才生成的 .hex 文件。
    • 选择正确的单片机型号(比如STC89C52RC)。
    • 点击“下载/编程”按钮。
    • 关键一步: 点击下载后,立刻按下开发板上的“电源”或“复位”按钮。
    • 如果一切顺利,STC-ISP会提示“完成”,你的开发板上的LED灯就会亮起

第三部分:进阶与总结(5分钟)

恭喜!你已经成功让51单片机执行了你的第一个指令!现在我们稍微修改一下代码,让LED灯闪烁起来,这会让你更有成就感。

#include <reg52.h>
// 定义一个简单的延时函数(不精确,但够用)
void delay(unsigned int time) 
{
    unsigned int i, j;
    for(i = 0; i < time; i++)
        for(j = 0; j < 120; j++);
}
sbit LED = P1^0;
void main(void)
{
    while(1) // 进入无限循环
    {
        LED = 0; // LED亮
        delay(500); // 延时一段时间
        LED = 1; // LED灭 (P1口默认是高电平,也可以不写,但写上更清晰)
        delay(500); // 延时一段时间
    }
}

修改后的代码解释:

  • 我们创建了一个 delay 函数,通过一个简单的空循环来消耗时间,实现延时效果。
  • main 函数的 while(1) 循环里,我们交替执行 LED = 0 (亮) 和 LED = 1 (灭),并在中间调用 delay 函数,这样LED就会闪烁起来。

一小时总结

  • 你学会了什么?

    1. 知道了51单片机开发需要哪些基本软硬件。
    2. 理解了51单片机I/O口的基本概念。
    3. 掌握了点亮LED灯的硬件连接方法。
    4. 最重要的一点: 写出了你的第一段51单片机C代码,并成功编译和下载到硬件中看到了效果。
    5. 通过修改代码,实现了LED闪烁,理解了程序循环和延时的基本用法。
  • 接下来去哪里?

    • 改变连接: 尝试把LED接到P1.1, P1.2等其他引脚,修改代码看看效果。
    • 控制多个LED: 尝试同时控制8个LED,做出流水灯效果。
    • 学习定时器: delay 函数很粗略,学习51单片机的定时器,可以实现更精确的延时和定时任务。
    • 学习中断: 了解中断,让单片机能够“响应”外部事件,比如按键按下。

一小时的时间很短,但这已经为你打开了一扇通往嵌入式世界的大门,保持好奇心,多动手,你很快就能掌握更多有趣的功能!

-- 展开阅读全文 --
头像
织梦免费网站模块下载哪里有?
« 上一篇 03-06
织梦3个栏目图片如何调用?
下一篇 » 03-06

相关文章

取消
微信二维码
支付宝二维码

目录[+]