产品选型

51单片机怎么编程 51单片机怎么编程,有什么好的课程?

小编 2025-07-03 产品选型 23 0

51单片机怎么编程,有什么好的课程?

虽然现在stm32单片机很火,很多招聘的公司都要求必须要会stm32,但是我依然建议新手从51开始学起。

这也是当初我自学的路径,51相对简单,新手可以在短时间内学习见到效果,比如说做个流水灯,让数码管显示一些数字之类的。

学习技术过程是非常枯燥的,学着学着容易焦虑和放弃,单片机还好,至少还能控制硬件去完成一些智能的控制。

如果是纯软件更学不进去,学来学去只能在冷冰冰的屏幕面前打印字符。

作为新手,想要学习单片机,第一步先是要把环境搭建起来,哪怕是直接用别人的工程,编译烧录到硬件上看看效果都很有成就感。

这也是很多人忽略的一个过程:培养学习的兴趣。

这点非常重要,你没发现当你对一件事物有兴趣的时候,学起来又轻松又快。

一般单片机的编程语言有两种:

1.C语言

2.汇编

以前我们那些学校相关专业的都是教的汇编,其实汇编我个人认为前期没必要学。

因为我工作了10年了,真正用到汇编的就是移植RTOS的时候,而且和学校那些还不一样。

每个芯片有些指令集是专用的,所以很多人在不同芯片移植实时操作系统的时候会发现还是有很多指令看不懂,这也是正常的。

这些汇编指令,只要你用到的时候去查阅就可以了。

我建议是重点学习一下c语言,这也是作为一个工程师必备的技能,针对单片机c语言入门教程我们也有录了一套,可以直接在小破站搜无际单片机编程看。

单片机编程一般是在Keil开发工具里去写代码,写完以后用Keil来编译代码,生成hex文件,把这个文件下载到单片机里面去执行。

这块的环境搭建比较简单,大家通过视频去看,然后跟着视频操作一遍就会了。

学习单片机最重要的是要有一套开发板,也就是基于单片机开发的硬件。

一般这种硬件都配套了有相应的视频,所以学习门槛还是挺低的。

51的话我建议是选择stc的51单片机,直接通过串口烧录,比较方便。

我刚接触单片机的时候选择不多,我买的是郭老师的开发板,到目前为止我都觉得比较适合新手入门。

课程也比较详细,基本上基础部分电路、单片机、c语言是一起讲的。

学完开发板的内容以后,做个小项目,基本上也算是入门了。

入门以后你的提升方法就不是开发板了,而是做项目,最好是实际工作那些产品。

拿来练练手,自己先想一下功能要怎么实现,然后再看看别人是怎么写的,他这样写有什么优势和缺点。

这就是成长的过程,开发板只能教你学会单片机外设的使用,但是教不会你做项目,实际项目对成本、体积、功耗都有一定的要求。

单片机的产品来来去去其实就是那几个接口,串口、SPI、IIC、ADC、SDIO、FSMC…..

当你做过的产品都玩过这些接口以后,单片机对你来说就只是工具而已。

更重要的还是你的c语言编程的水平和思维。

【51单片机】模块化编程的一般步骤和基础说明

51 单片机的模块化编程是将程序按照功能划分为不同的模块,每个模块具有相对独立的功能,分别放在不同的 .c 文件和 .h 文件中。

以下是进行 51 单片机模块化编程的一般步骤和基础说明:

1. 模块划分:确定程序中的各个功能模块,例如延时函数、数码管显示函数、LCD 显示函数等。每个模块应具有明确的功能和相对独立的代码。

2. 创建 .c 文件**:为每个模块创建一个对应的 .c 文件,用于实现该模块的具体功能。在 .c 文件中编写函数的定义和相关代码。

3. 创建 .h 文件(头文件)**:为每个 .c 文件创建一个同名的 .h 文件。头文件用于声明模块中可供外部调用的函数、变量等。头文件的内容通常使用预处理指令 #ifndef 、 #define 和 #endif 来防止重复包含,例如:

#ifndef __MODULE_H__

#define __MODULE_H__

// 函数声明、变量声明等

#endif

 

4. 在 .c 文件中实现功能**:在对应的 .c 文件中具体实现模块的功能,编写函数的代码逻辑。

5. 在头文件中声明函数和变量**:在 .h 文件中声明在 .c 文件中定义的函数、全局变量等,以便其他文件可以使用这些函数和变量。例如:

void function1(void);

int variable1;

 

6. 在主程序或其他需要使用该模块的文件中包含头文件**:使用 #include "module.h" 语句将所需模块的头文件包含到主程序或其他 .c 文件中,这样就可以调用头文件中声明的函数和使用相关变量。

7. 调用模块功能**:在主程序或其他模块中,根据需要调用相应模块的函数来实现具体功能。

通过模块化编程,可以提高代码的可读性、可维护性和可移植性。各个模块可以独立开发、测试和修改,而不会影响其他部分的代码。同时,也方便多人协作开发,以及在不同项目中复用已有的模块。

例如,假设有一个数码管显示模块,包含数码管显示函数和相关的段码表。以下是示例代码:

数码管显示的 .c 文件( nixie.c ):

#include

#include "delay.h" // 包含延时函数的头文件,因为要使用其中的延时功能

// 数码管段码表

unsigned char NixieTable() = {

0x3F, 0x06, 0x5B, 0x4F,

0x66, 0x6D, 0x7D, 0x07,

0x7F, 0x6F

};

// 数码管显示子函数

void Nixie(unsigned char Location, Number) {

switch (Location) // 位码输出

{

case 1:

P2_4 = 1;

P2_3 = 1;

P2_2 = 1;

break;

case 2:

P2_4 = 1;

P2_3 = 1;

P2_2 = 0;

break;

// 省略其他 case 情况

}

P0 = NixieTable(Number); // 段码输出

delay(1); // 显示一段时间

P0 = 0x00; // 段码清 0,消影

}

 数码管显示的 .h 文件( nixie.h ):

#ifndef __NIXIE_H__

#define __NIXIE_H__

void Nixie(unsigned char Location, Number);

#endif

 在主程序( main.c )中使用该数码管显示模块时,只需包含 nixie.h 头文件,然后就可以调用 Nixie 函数来显示数字:

#include

#include "nixie.h" // 包含数码管显示模块的头文件

void main() {

while (1) {

Nixie(1, 6); // 在数码管的第 1 位置显示 6

}

}

 这样,通过模块化编程,将数码管显示的功能封装在一个模块中,使得主程序更加简洁清晰,易于理解和维护。如果需要修改数码管显示的相关代码,只需在 nixie.c 和 nixie.h 中进行修改,而不会影响到主程序的其他部分。同时,在其他项目中如果也需要使用数码管显示功能,只需将这两个文件添

相关问答

51单片机编程 程序怎么编?

51单片机编程程序怎么编?♣这种技术性问题在今日头条上,几乎没有一个高手给你一个答复。因为学习51单片机编程程序是需要长篇大论,并且用电脑操作截图来说明...

51单片机怎么 在电脑 编程 ?

要在电脑上编程51单片机,可以按照以下步骤进行:1.准备编程工具:首先,需要一个可以编写和烧录单片机程序的集成开发环境(IDE)。常见的IDE有KeiluVision、SD...

51单片机 入门教程?

1、单片机概念:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(singlechipMicrocomput...数字....

树莓派3怎样给 51单片机编程 ?

树莓派运行的是LINUX系统~具体方法请看LINUX下VI的用法和程序转换~VI编辑器用来写C语言程序!程序写完保存成.CPP或者.C网上有将文件编译成HEX的程序然后找ST...

51单片机 编程 嘛?

需要编程。因为51单片机是一种微控制器,需要通过编程来控制其内部的运行逻辑和外部设备的操作。编程可以实现各种功能,如控制LED灯、读取传感器数据、控制电机...

51 系列 单片机 新手用什么语言 编程 ?

51系列单片机初学者可以使用汇编语言或C语言进行编程。汇编语言通常需要对硬件有深入的了解,代码量较多,但可以实现更高效的控制。C语言则更加易学易用,代码量...

怎么用 编程器 读出AT89 C51单片机 程序-ZOL问答

2条回答:【推荐答案】如果下载程序的时候把保密位也置位了,那编程器读出来的都是FF如果没有置位,则可以用编程器自带的软件,通过编程器读出来。

51单片机 可以用python 编程 吗?

不可以。目前支持单片机最好的就是KeilC/C++,用VC++再加上支持库也可以开发STC15单片机。不过还是比较麻烦。用KeilC是最理想的。Python目前只能应用于有操...

ep 51单片机编程 器该如何安装?

ep51编程器不能烧写STC系列如果把监控芯片撬下,换插上40脚的STC单片机就能烧写(注:要用STC_ISP下载软件;先在电脑点击“下载”后插上ep51编程器的USB电...

红外发射模块怎么用 51单片机编程 使用?

用定时器中断来做,例如红外发送引脚连接到P1.0口,计数一下定时初值(让P1.0的翻转频率为38KHZ),进定时器中断就对P1.0取反,这样红外就发送出去了。用定时器中...

猜你喜欢