【51单片机】快速入门
动手实践 > 理论空谈!从点亮LED开始,逐步扩展功能,2周可入门基础。
一、51单片机基础概念
-
什么是51单片机?
-
基于Intel 8051架构的8位微控制器,广泛用于嵌入式开发。
-
核心特性:4KB ROM、128B RAM、32个I/O口、定时器、串口等。
-
常见型号:STC89C52、AT89S52、STC12C5A60S2(增强型)。
-
-
硬件准备
-
开发板:推荐STC89C52RC最小系统板(价格低、资源全)。
-
下载器:USB-TTL(如CH340芯片)或专用STC下载器。
-
软件工具:Keil C51(编程)、STC-ISP(程序下载)、Proteus(仿真)。
-
二、C语言基础与单片机编程
-
C语言核心知识点
-
变量与数据类型:
bit(位变量)、sbit(特殊功能位)、unsigned char(0~255)。 -
位操作:
P1 |= 0x01;(置位)、P1 &= ~0x01;(清零)。 -
函数与中断:中断服务函数格式
void Timer0_ISR() interrupt 1。
-
-
开发流程
-
创建Keil工程:选择单片机型号(如STC89C52),配置晶振频率(11.0592MHz)。
-
编写代码:包含头文件
#include <reg52.h>,控制I/O口。 -
编译生成HEX:确保无错误后生成
.hex文件。 -
烧录程序:通过STC-ISP选择HEX文件,冷启动下载。
-
三、基础实验与代码示例
1. LED闪烁(GPIO控制)
#include <reg52.h>
sbit LED = P1^0; // 将LED连接到P1.0引脚void delay(unsigned int ms) {unsigned int i, j;for (i=0; i<ms; i++)for (j=0; j<114; j++);
}void main() {while(1) {LED = 0; // LED亮(低电平驱动)delay(500);LED = 1; // LED灭delay(500);}
}
2. 按键检测(输入控制)
sbit KEY = P3^2; // 按键接P3.2(外部中断0引脚)
sbit LED = P1^0;void main() {IT0 = 1; // 设置外部中断0为边沿触发EX0 = 1; // 开启外部中断0EA = 1; // 全局中断使能while(1);
}void Key_ISR() interrupt 0 {LED = ~LED; // 按键按下时切换LED状态
}
四、进阶功能学习
1. 定时器配置(模式1)
void Timer0_Init() {TMOD |= 0x01; // 定时器0,模式1(16位)TH0 = 0xFC; // 初值,定时1ms(12MHz晶振)TL0 = 0x18;ET0 = 1; // 开启定时器0中断TR0 = 1; // 启动定时器EA = 1;
}void Timer0_ISR() interrupt 1 {static unsigned int count = 0;TH0 = 0xFC; // 重装初值TL0 = 0x18;if (++count >= 1000) {count = 0;LED = ~LED; // 1秒翻转一次LED}
}
2. 按键检测(输入控制)
sbit KEY = P3^2; // 按键接P3.2(外部中断0引脚)
sbit LED = P1^0;void main() {IT0 = 1; // 设置外部中断0为边沿触发EX0 = 1; // 开启外部中断0EA = 1; // 全局中断使能while(1);
}void Key_ISR() interrupt 0 {LED = ~LED; // 按键按下时切换LED状态
}
四、进阶功能学习
1. 定时器配置(模式1)
void Timer0_Init() {TMOD |= 0x01; // 定时器0,模式1(16位)TH0 = 0xFC; // 初值,定时1ms(12MHz晶振)TL0 = 0x18;ET0 = 1; // 开启定时器0中断TR0 = 1; // 启动定时器EA = 1;
}void Timer0_ISR() interrupt 1 {static unsigned int count = 0;TH0 = 0xFC; // 重装初值TL0 = 0x18;if (++count >= 1000) {count = 0;LED = ~LED; // 1秒翻转一次LED}
}
2. 串口通信(UART)
void UART_Init() {SCON = 0x50; // 模式1,允许接收TMOD |= 0x20; // 定时器1模式2(8位自动重载)TH1 = 0xFD; // 波特率9600(11.0592MHz)TL1 = 0xFD;TR1 = 1;ES = 1; // 开启串口中断EA = 1;
}void UART_ISR() interrupt 4 {if (RI) {RI = 0;SBUF = SBUF + 1; // 回传接收到的字符+1}
}
五、调试与问题排查
-
调试技巧
-
万用表检测:测量电源电压(5V)、引脚电平。
-
串口调试:通过
printf函数输出变量值(需重定向putchar)。 -
断点调试:在Keil中设置断点,观察寄存器值。
-
-
常见问题
-
程序不运行:检查晶振是否起振、EA引脚是否接高电平。
-
外设不响应:确认外设供电、初始化代码是否遗漏。
-
中断不触发:检查中断使能位(EA、EXx)、触发方式设置。
-
六、学习资源推荐
-
书籍:《51单片机C语言程序设计经典实例》(适合实战)。
-
视频教程:B站“江科大自化协”51单片机系列(免费、系统)。
-
开源项目:GitHub搜索“51单片机项目”,如智能家居控制系统。
七、学习路线建
-
第一阶段:GPIO控制 → 定时器 → 中断 → 串口。
-
第二阶段:ADC/DAC → PWM → 外部存储器(如EEPROM)。
-
第三阶段:RTOS移植(如Small RTOS51)或复杂项目开发。
通过以上步骤,可在1-2周内掌握51单片机基础,1个月内完成综合性项目(如温湿度监测系统)。
相关文章:
【51单片机】快速入门
动手实践 > 理论空谈!从点亮LED开始,逐步扩展功能,2周可入门基础。 一、51单片机基础概念 什么是51单片机? 基于Intel 8051架构的8位微控制器,广泛用于嵌入式开发。 核心特性:4KB ROM、128B RAM、32个…...
leetcode707----设计链表【链表增删改打印等操作】
目录 一、题目介绍 二、单链表 2.1 创建链表类 2.1.1 定义链表节点结构体代码块 2.1.2 MyLinkedList类的构造函数 2.1.3 私有成员变量 2.2 接口1:获取第下标为index的节点的值 2.3 接口2:头部插入节点 2.4 接口3:尾部插入节点 2.5 接…...
【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝
【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝 问题展示解决办法 问题展示 在使用docker中的consul服务的时候,通过命令行注册相应的服务(比如cloudwego项目的demo_proto以及user服务)失败。 解决办法 经过分析,是…...
【缓存】缓存雪崩与缓存穿透:高并发系统的隐形杀手
缓存雪崩与缓存穿透:高并发系统的隐形杀手 在高并发系统中,缓存是提升性能的重要手段。然而,缓存使用不当也会带来一系列问题,其中最常见的就是缓存雪崩和缓存穿透。这两个问题如果不加以解决,可能会导致系统崩溃&…...
网络协议 HTTP、HTTPS、HTTP/1.1、HTTP/2 对比分析
1. 基本定义 HTTP(HyperText Transfer Protocol) 应用层协议,用于客户端与服务器之间的数据传输(默认端口 80)。 HTTP/1.0:早期版本,每个请求需单独建立 TCP 连接,效率低。HTTP/1.1&…...
DeepSeek实现FunctionCalling调用API查询天气
什么是FunctionCalling Function Calling(函数调用)是大型语言模型(如 OpenAI 的 GPT 系列)提供的一种能力,允许模型在生成文本的过程中调用外部函数或工具,以完成更复杂的任务。通过 Function Calling&am…...
从 Spring Boot 2 升级到 Spring Boot 3 的终极指南
一、升级前的核心准备 1. JDK 版本升级 Spring Boot 3 强制要求 Java 17 及以上版本。若当前项目使用 Java 8 或 11,需按以下步骤操作: 安装 JDK 17:从 Oracle 或 OpenJDK 官网下载,配置环境变量(如 JAVA_HOME&…...
C#设计模式深度解析:经典实现与现代演进 ——基于《设计模式》的.NET技术实践
一、设计模式与C#语言特性融合 C#凭借其面向对象特性、泛型、委托/事件、LINQ等能力,为设计模式提供了更优雅的实现方式。以下通过典型模式展现其技术融合: 1. 工厂方法模式 泛型约束 public interface IProduct<T> where T : new() {void O…...
原子性(Atomicity)和一致性(Consistency)的区别?
原子性(Atomicity)和一致性(Consistency)是数据库事务ACID特性中的两个核心概念,虽然它们密切相关,但解决的问题和侧重点完全不同。原子性关注事务的操作完整性,而一致性关注数据的逻辑正确性。…...
windows设置暂停更新时长
windows设置暂停更新时长 win11与win10修改注册表操作一致 ,系统界面不同 1.打开注册表 2.在以下路径 \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键新建 DWORD 32位值,名称为FlightSettingsMaxPauseDays 根据需求填写数…...
【Kimi】自动生成PPT-并支持下载和在线编辑--全部免费
【Kimi】免费生成PPT并免费下载 用了好几个大模型,有些能生成PPT内容; 有些能生成PPT,但下载需要付费; 目前只有Kimi生成的PPT,能选择模板、能在线编辑、能下载,关键全部免费! 一、用kimi生成PP…...
一款在手机上制作电子表格
今天给大家分享一款在手机上制作电子表格的,免费好用的Exce1表格软件,让工作变得更加简单。 1 软件介绍 Exce1是一款手机制作表格的办公软件,您可以使用手机exce1在线制作表格、工资表、编辑xlsx和xls表格文件等,还可以学习使用…...
【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 10分钟快速部署Elasticsearch单节点环境1. 系统环境要求1.1 硬件配置推荐1.2 软件依赖 2. Docker部署方案2.1 部署流程2.2 参数说明2.3 性能优化建议 3. 手动部署方案3.1 安…...
7 天精通 DeepSeek 实操手册
挑战目标 从零基础开始,用 7 天时间,精通 DeepSeek 实操。 对零基础的同学来说,要全部完成这个挑战并不容易。因此,我们提供了每天的学习目标和实操任务,并提供三大锦囊助你一臂之力: 针对常见问题的解决…...
过滤器 二、过滤器详解
过滤器生命周期: init(FilterConfig):在服务器启动时会创建Filter实例,并且每个类型的Filter只创建一个实例,从此不再创建!在创建完Filter实例后,会马上调用init()方法完成初始化工作,这个方法…...
【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】
文章目录 前言电脑配置:安装的Deepseek版本:使用的UI框架:体验效果展示:本地部署体验总结 部署过程Ollama部署拉取模型运行模型Openwebui部署运行Ollama服务在Openwebui中配置ollama的服务 后话 前言 deepseek最近火的一塌糊涂&a…...
网络安全学习中,web渗透的测试流程是怎样的?
渗透测试是什么?网络安全学习中,web渗透的测试流程是怎样的? 渗透测试就是利用我们所掌握的渗透知识,对网站进行一步一步的渗透,发现其中存在的漏洞和隐藏的风险,然后撰写一篇测试报告,提供给我…...
将VsCode变得顺手好用(1
目录 设置中文 配置调试功能 提效和增强相关插件 主题和图标相关插件 创建js文件 设置中文 打开【拓展】 输入【Chinese】 下载完成后重启Vs即可变为中文 配置调试功能 在随便一个位置新建一个文件夹,用于放置调试文件以及你未来写的代码,随便命名但…...
【MySQL篇】表的操作
1,创建表 语法: create table ( field1 datatype, field2 datatype, field3 datatype )charset 字符集 collate 校验规则 engine 存储引擎; 说明: field表示列名datatype表示列的类型charset字符集,如果没有指明,则…...
第6_7章_管理权限评估和测试策略
管理权限 权限将受保护的对象与必须评估以决定是否应授予访问权限的策略相关联。 在创建要保护的资源以及要用于保护这些资源的策略后, 您可以开始管理权限。要管理权限,请在编辑资源服务器时单击 Permissions 选项卡。 可以创建权限来保护两种主要类…...
2025年网校系统源码开发趋势:技术革新的教育培训APP搭建实战
2025年,随着AI、大数据、云计算等技术的深度融合,网校教育系统的源码开发也迎来了新的发展趋势。本文将深入探讨这些趋势,并结合教育培训APP的开发实战,展示如何应对未来的技术挑战。 一、2025年网校教育系统源码的技术趋势 AI驱…...
Linux驱动开发实战(一):LED控制驱动详解
Linux驱动开发野火实战(一):LED控制驱动详解 文章目录 Linux驱动开发野火实战(一):LED控制驱动详解引言一、基础知识1.1 什么是字符设备驱动1.2 重要的数据结构read 函数write 函数open 函数release 函数 二…...
PowerShell 执行策略:fnm管理软件安装nodejs无法运行npm,错误信息:about_Execution_Policies
通过fnm管理软件安装NodeJS后添加环境变量依然无法执行npm,提示无法加载文件,错误如下: PowerShell 执行策略简介: PowerShell 执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶…...
论文阅读笔记:Deep Face Recognition: A Survey
论文阅读笔记:Deep Face Recognition: A Survey 1 介绍2 总览2.1 人脸识别组件2.1.1 人脸处理2.1.2 深度特征提取2.1.3 基于深度特征的人脸对比 3 网络结构和损失函数3.1 判别损失函数的演化3.1.1 基于欧式距离的损失3.1.2 基于角度/余弦边距的损失3.1.3 Softmax损失…...
本地dify绑定notion
需要用到 notion 的“集成”功能。对于个人用户来说,选择使用**内部 internal **集成,公司用户可以考虑使用公开 public 集成。 在下面的 notion 集成网站中申请一个新的集成: Notion – The all-in-one workspace for your notes, tasks, …...
k8s中pod的调度策略之pod的亲和性调度与反亲和性调度 一文搞懂 k8s中创建的pod如何调度?
接上文写的Node亲和性调度https://blog.csdn.net/soso678/article/details/144777397 Pod 间的亲和性和反亲和性(Affinity/AntiAffinity)调度 Pod 间亲和性与反亲和性使你可以基于已经在节点上运行的 Pod 的标签来约束 Pod 可以调度到的节点࿰…...
JSON Schema 入门指南:如何定义和验证 JSON 数据结构
文章目录 一、引言二、什么是 JSON Schema?三、JSON Schema 的基本结构3.1 基本关键字3.2 对象属性3.3 数组元素3.4 字符串约束3.5 数值约束 四、示例:定义一个简单的 JSON Schema五、使用 JSON Schema 进行验证六、实战效果6.1 如何使用 七、总结 一、引…...
借DeepSeek的风思考:未来可通过AI+视觉识别技术,实现足球比赛中的教练决策指挥系统,以此提高中国足球冲出亚洲夺取世界杯冠军
国家如此强大,必须需要提升国足冲向世界,一雪前耻的了。现在我脑洞大开,提出以下思路寄望国家重视。具体思考如下: 通过AI视觉识别技术实现足球比赛中的教练决策指挥系统,有潜力提升中国足球的竞争力。但要实现这一目标…...
DeepSeek今日连开3源!针对优化的并行策略,梁文锋本人参与开发
DeepSeek开源周第四天,直接痛快「1日3连发」,且全都围绕一个主题: 优化并行策略。 DualPipe:一种创新的双向流水线并行算法,能够完全重叠前向和后向计算-通信阶段,并减少“流水线气泡”。它通过对称的微批…...
【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现
项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…...
