从玩具到工业控制--51单片机的跨界传奇【3】

在科技的浩瀚宇宙中,51 单片机就像一颗独特的星辰,散发着神秘而迷人的光芒。对于无数电子爱好者而言,点亮 51 单片机上的第一颗 LED 灯,不仅仅是一次简单的操作,更像是开启了一扇通往新世界的大门。这小小的 LED 灯,宛如黑暗中的启明星,承载着我们对电子技术的好奇与憧憬,照亮了我们探索科技未知领域的道路 。在接下来的篇章里,让我们一同回溯这段充满挑战与惊喜的旅程,看看这颗 LED 灯如何点燃了我们心中对技术追求的熊熊烈火。

一,单片机的内部结构和工作原理

在单片机入门阶段,我们只需要对其结构有个大概的了解就足够了,等后期随着单片机的深入学习,我们再回头来对其结构进行深入的了解。我在这里也是给大家进行简单的讲解,不会太过深入,防止大家失去学习的信心。如图所示:

FLASH就相当于硬盘SRAM就相当于内存。对于硬盘和内存的概念我就默认大家熟知了,不懂的朋友们可以自行搜索一下这个视频 <内存和硬盘的区别>进行了解。前面,咱们讲过单片机就是一种集成电路,其实在单片机的内部就是如上图所示的结构。单片机内核就是CPU处理器我们写的程序最终被存放在FLASH程序存储器里面我们创建的变量被存储在SRAM数据存储器里面。当单片机开始运行的时候,单片机就会从FLASH程序存储器里面调取运行指令,这里告诉大家:FLASH程序存储器是只读存储器,在单片机运行的过程中,产生的一切数据不会再放入FLASH里面,而是存放在数据存储器里面,就是为了防止程序发生错误,引起单片机的工作异常CPU会根据指令进行运算,会从数据存储器里面调用数据。数据存储器就是CPU用来调取和存放数据,存放中间计算结果的地方SRAM掉电就会丢失数据,所以为了防止这种情况的发生,一般都会配有看门狗来进行监管,当看门狗检测到电压低于某一个范围时,就会立马读取SRAM里面的数据进行存储。然后,CPU把计算的数据再发送给寄存器(GPIO外设),寄存器根据数据再输出1或0,各个引脚再根据1或0输出对应的高低电平,来控制外围设备,读取外部数据也是如此,通过引脚的高低电平变化,寄存器来进行的1或0的数据存储,再发给CPU根据指令进行处理我们操作单片机,其实本质上就是操作各个引脚对应的寄存器。大家进行简单的了解即可。

二,单片机的引脚介绍

我们就以我们要讲解的DIP封装的51单片机来展示其它封装的单片机会多出来4个引脚,多出来的引脚时P4口引脚,这不影响我们的单片机的讲解。如图所示:

 我们从外观上可以看到上面,有个半圆的缺口。在所以的单片机里面,半圆缺口左边对应单片机的第一号引脚,逆时针依次排号。

20号引脚和40号引脚分别为单片机的GND和VCC

51单片机有4组I/O,分别为P0,P1,P2和P3,每组对用8个引脚,也就是说,我们控制这32个引脚来进行外围设备的控制。大家可以看到有些引脚会有个表示,比如T2/P1.0,带有‘ / ’表示这个引脚的功能是可以复用的,也就是说这个引脚有两个功能。没标识的引脚就是普通的I/O口。

T2,T0,T1这些为定时器或计数器引脚(后面会讲解的)。

RXD和TXD为单片机的串口通信引脚,也是我们的程序下载引脚。

INT0和INT1为外部中断引脚。

XTAL1和XTAL2为单片机的外部晶振引脚。

WR(写信号)和 RD(读信号)引脚主要用于外部数据存储器(如 RAM)和 I/O 接口芯片的读写控制。它们是实现单片机与外部设备之间数据传输的关键信号引脚。

EA 引脚用于控制单片机是访问内部程序存储器还是外部程序存储器。这是 51 单片机程序存储选择的关键引脚,当 EA 引脚接高电平时,单片机先从内部程序存储器读取程序指令。如果程序计数器(PC)的值超过了内部程序存储器的容量范围(对于 8051 单片机,内部程序存储器一般为 4KB),那么它会自动转向外部程序存储器读取剩余的程序指令。当 EA 引脚接低电平时,单片机忽略内部程序存储器,直接从外部程序存储器读取所有的程序指令。这种方式适用于程序代码量较大,需要外部扩展大容量程序存储器(如 EPROM、Flash 等)的情况。由于现在我们的单片机都有内部的ROM所以我们不需要读取外部ROM,所以我们直接接高电平就OK了。

ALE 引脚主要用于在访问外部存储器时,锁存低 8 位地址信号。在 51 单片机访问外部存储器(包括数据存储器和程序存储器)的过程中,地址总线是分时复用的,它既用于传输地址信息又用于传输数据信息。当单片机访问外部存储器时,P0 口会先输出低 8 位地址信息,此时 ALE 引脚会输出一个正脉冲。这个正脉冲可以被外部的地址锁存器(如 74LS373)用来锁存 P0 口输出的低 8 位地址,使得地址信息在数据传输阶段能够保持稳定。现在,单片机内部都自带丰富的RAM,不再需要扩展RAM,所以这个引脚用处不大。

PSEN 引脚是程序存储器读选通信号,用于控制对外部程序存储器的读取操作。它是单片机从外部程序存储器读取指令时的关键控制信号。当单片机从外部程序存储器读取指令时,PSEN 引脚会输出一个低电平脉冲。这个低电平信号用于选通外部程序存储器,使其将存储的程序指令输出到数据总线上,然后单片机就可以从数据总线上读取这些指令并执行。

P0口比较特殊,它要接上拉电阻才能驱动,至于什么是上拉电阻? 它是怎样的电路? 我们都会在数码管那个章节讲到的。

总结:以上引脚大家先做了解就足够了,后面学习到的时候,我都会进行详细的讲解的。

三,最小系统单片机的电路介绍

最小的单片机系统是由电源,主控芯片,晶振电路和复位电路组成的。先给大家看电路图:

 复位电路的作用:

  • 系统初始化
    • 复位电路的主要作用是使单片机内部的各个寄存器和电路恢复到初始状态。当单片机复位时,程序计数器(PC)被清零,这意味着单片机从程序存储器的起始地址(对于 51 单片机来说,一般是 0000H)开始执行程序。同时,其他特殊功能寄存器(SFR),如累加器 A、寄存器 B、PSW(程序状态字)等也会被初始化为固定的值。
    • 例如,PSW 寄存器在复位后被设置为 00H,这使得单片机进入初始的工作状态,如默认选择工作寄存器组 0。这种初始化功能确保了每次单片机上电或者手动复位后,系统都能以一个确定的、一致的状态开始运行,就像将系统进行了一次 “归零” 操作。
  • 解决程序异常情况
    • 比如,在一个工业控制环境中,周围可能存在较强的电磁干扰。当干扰导致单片机程序出错时,按下复位按钮,复位电路就能让单片机重新启动,避免了设备长时间故障,保障了系统的可靠性和稳定性。
    • 在单片机运行过程中,可能会由于干扰、程序错误或者其他突发情况导致系统出现异常。例如,程序进入了死循环,或者数据被错误地修改,导致系统无法正常工作。此时,复位电路可以通过外部复位信号(如手动复位按键)使单片机重新复位,恢复到正常的工作状态。

晶振电路的作用:

  • 提供时钟信号
    • 晶振电路为单片机提供了稳定的时钟信号。51 单片机内部的各种操作,如指令执行、数据传输、定时器 / 计数器工作等,都需要时钟信号来进行同步。时钟信号就像是单片机的 “心跳”,它决定了单片机的工作速度和时序。
    • 例如,51 单片机的一个机器周期是由 12 个时钟周期组成的。晶振频率的高低直接影响了单片机的机器周期时间。如果晶振频率为 12MHz,那么一个机器周期就是 1 微秒()。这种精确的时钟信号使得单片机能够按照设计好的时序和速度来执行程序指令。
  • 保证系统时序稳定
    • 单片机在与外部设备通信或者进行内部模块之间的协同工作时,需要严格的时序控制。晶振电路提供的稳定时钟信号是保证这些时序的基础。
    • 例如,在使用 51 单片机的定时器 / 计数器功能时,定时器的计数频率是由晶振频率经过内部时钟分频电路得到的。如果晶振频率不稳定,定时器的定时精度就会受到影响,进而导致与定时器相关的功能(如定时采样、定时控制等)出现错误。稳定的晶振电路可以确保这些功能的准确性和可靠性。

四,成为“点灯大师”

讲解了那么多的单片机的基础知识了,也该进行实操了。今天,咱们就来点亮人生中的第一颗LED灯。在点灯之前,咱先认识一下LED电路。

大家知道,我们能控制单片机的引脚输出高低电平 ,给引脚为逻辑1,它就会输出高电平,给0就会输出低电平。上图的LED灯是共阳极的,它的正极都接在一起,8颗LED灯分别与单片机的P1口接在一起,每一个引脚对应一颗LED灯。当我们给0时,就会输出低电平,LED就会正向的导通,LED就会亮,反之就灭。我们使用的时STC国产宏晶提供的芯片安装包,接下来我教大家怎么安装STC提供的芯片安装包,我们需要先下载好stc-isp烧录软件,这个文件我放在文章顶部了,各位可以自行下载。进行如下操作:

OK各位,接下来进行代码演示:

#include <STC89C5xRC.H>
void main()
{P10=0;      //STC的头文件里面,我们可以直接进行I/O的操作
}

进行头文件的展示: 

 各位至于Keil5怎么使用,怎么下载我就不再这多讲了,大家可以自行搜索相关视频。接下里看实验现象:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3392.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建一个简单的深度学习模型

构建一个简单的深度学习模型通常包括以下几个步骤&#xff1a;定义模型架构、编译模型、训练模型和评估模型。下面是一个使用Keras&#xff08;TensorFlow的高级API&#xff09;构建和训练一个简单的全连接神经网络&#xff08;也称为多层感知器&#xff0c;MLP&#xff09;的示…

linux下的NFS和FTP部署

目录 NFS应用场景架构通信原理部署权限认证Kerberos5其他认证方式 命令serverclient查看测试系统重启后自动挂载 NFS 共享 高可用实现 FTP对比一些ftp服务器1. **vsftpd (Very Secure FTP Daemon)**2. **ProFTPD (Professional FTP Daemon)**3. **Pure-FTPd**4. **WU-FTPD (Was…

Python操作Excel——openpyxl使用笔记(3)

3 单元格基本操作 3.1 访问单元格和读写其内容 在前面的例子中&#xff0c;已经简单演示过了向单元格中写入和读取数据。这里进一步提供访问单元格的一些方法。和前面一样&#xff0c;使用工作表的索引方式&#xff0c;可以快速定位一个单元格&#xff1a; import openpyxl w…

【漏洞预警】FortiOS 和 FortiProxy 身份认证绕过漏洞(CVE-2024-55591)

文章目录 一、产品简介二、漏洞描述三、影响版本四、漏洞检测方法五、解决方案 一、产品简介 FortiOS是Fortinet公司核心的网络安全操作系统&#xff0c;广泛应用于FortiGate下一代防火墙&#xff0c;为用户提供防火墙、VPN、入侵防御、应用控制等多种安全功能。 FortiProxy则…

一、1-2 5G-A通感融合基站产品及开通

1、通感融合定义和场景&#xff08;阅读&#xff09; 1.1通感融合定义 1.2通感融合应用场景 2、通感融合架构和原理&#xff08;较难&#xff0c;理解即可&#xff09; 2.1 感知方式 2.2 通感融合架构 SF&#xff08;Sensing Function&#xff09;&#xff1a;核心网感知控制…

头盔识别技术

本项目参考b站视频https://www.bilibili.com/video/BV1EhkiY2Epg/?spm_id_from333.999.0.0&vd_source6c722ac1eba24d4cbadc587e4d1892a7 1.下载miniconda 使用 Miniconda 来管理 Python 环境&#xff08;如 yolov8&#xff09;&#xff0c;就可以通过 conda create -n y…

某讯一面,感觉问Redis的难度不是很大

前不久&#xff0c;有位朋友去某讯面试&#xff0c;他说被问到了很多关于 Redis 的问题&#xff0c;比如为什么用 Redis 作为 MySQL 的缓存&#xff1f;Redis 中大量 key 集中过期怎么办&#xff1f;如何保证缓存和数据库数据的一致性&#xff1f;我将它们整理出来&#xff0c;…

PCL 新增自定义点类型【2025最新版】

目录 一、自定义点类型1、前言2、定义方法3、代码示例二、合并现有类型三、点云按时间渲染1、CloudCompare渲染2、PCL渲染博客长期更新,本文最近更新时间为:2025年1月18日。 一、自定义点类型 1、前言 PCL库自身定义了很多点云类型,但是在使用的时候时如果要使用自己定义的…

R语言绘图

多组火山图 数据准备&#xff1a; 将CSV文件同一在一个路径下&#xff0c;用代码合并 确保文件列名正确 library(fs) library(dplyr) library(tidyr) library(stringr) library(ggplot2) library(ggfun) library(ggrepel)# 获取文件列表 file_paths <- dir_ls(path &quo…

ICC和GCC编译器编译Openmp程序的运行区别

1、背景介绍 硬件和隔核设置&#xff1a; Intel E5 V4 14核。 配置 isolcpus2,3,4,5,6,7,8,9,10,11,12,13&#xff0c;隔离了 12 个核心&#xff0c;仅保留核心 0 和核心 1 作为普通调度核心。 操作系统 湖南麒麟3.3-3B OpenMP并行配置&#xff1a; 使用核心 4 到核心 …

改进果蝇优化算法之一:自适应缩小步长的果蝇优化算法(ASFOA)

自适应缩小步长的果蝇优化算法(ASFOA)是对传统果蝇优化算法的一种重要改进,旨在克服其后期种群多样性不足、容易过早收敛和陷入局部最优等问题。有关果蝇优化算法的详情可以看我的文章:路径规划之启发式算法之二十七:果蝇优化算法(Fruit Fly Optimization Algorithm,FOA…

ubuntu22.04安装注意点

换源方式 22.04默认使用/etc/apt/sources.list而非/etc/apt/sources.list.d # 默认注释了源码镜像以提高 apt update 速度&#xff0c;如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse # deb-src https…

C#表达式和运算符

本文我们将学习C#的两个重要知识点&#xff1a;表达式和运算符。本章内容会理论性稍微强些&#xff0c;我们会尽量多举例进行说明。建议大家边阅读边思考&#xff0c;如果还能边实践就更好了。 1. 表达式 说到表达式&#xff0c;大家可能感觉有些陌生&#xff0c;我们先来举个…

LARGE LANGUAGE MODELS ARE HUMAN-LEVEL PROMPT ENGINEERS

题目 大型语言模型是人类级别的提示工程师 论文地址&#xff1a;https://arxiv.org/abs/2211.01910 项目地址&#xff1a;https://github.com/keirp/automatic_prompt_engineer 摘要 通过对自然语言指令进行调节&#xff0c;大语言模型 (LLM) 显示了作为通用计算机的令人印象深…

基础入门-反弹Shell渗透命令Reverse反向Bind正向利用语言文件下载多姿势

知识点&#xff1a; 1、反弹Shell-项目&命令&语言等 2、系统渗透命令-网络&文件&操作等 一、演示案例-反弹Shell-自带命令&语言代码&三方项目 1、反弹Shell的前提条件 已知存在的漏洞利用或执行命令的地方 2、为什么要反弹Shell? 往往由于很多因…

AI在SEO中的关键词优化策略探讨

内容概要 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正逐渐重塑搜索引擎优化&#xff08;SEO&#xff09;行业。AI技术的快速发展使得SEO策略发生了翻天覆地的变化&#xff0c;特别是在关键词优化方面。关键词优化的基本概念是通过选择与用户搜索意图密…

DeepSeek-v3在训练和推理方面的优化

1. 基础架构&#xff1a;MLA&#xff0c;大幅减少了KV cache大小。&#xff08;计算量能不能减少&#xff1f;&#xff09; 2. 基础架构&#xff1a;MoE&#xff0c;同等参数量&#xff08;模型的”能力“&#xff09;下&#xff0c;训练、推理的计算量大幅减少。 3. MoE的load…

【从0带做】基于Springboot3+Vue3的心理健康预约平台

大家好&#xff0c;我是武哥&#xff0c;最近给大家手撸了一个基于SpringBoot3Vue3的心理健康预约平台&#xff0c;可用于毕业设计、课程设计、练手学习&#xff0c;系统全部原创&#xff0c;如有遇到网上抄袭站长的&#xff0c;欢迎联系博主~ 项目演示视频和教程视频 https:…

Mybatis 进阶 / Mybatis—Puls (详细)

目录 一.动态SQL 1.1标签 1.2 标签 1.3标签 1.4标签 1.5标签 1.6标签 mybatis总结&#xff1a; 二.Mybatis-Puls 2.1准备工作 2.2CRUD单元测试 2.2.1创建UserInfo实体类 2.2.2编写Mapper接⼝类 2.2.3 测试类 2.3 常见注解 2.3.1TableName 2.3.2TableField 2.4打印日…

2025.1.16——三、supersqli 绕过|堆叠注入|handler查询法|预编译绕过法|修改原查询法

题目来源&#xff1a;攻防世界supersqli 目录 一、打开靶机&#xff0c;整理已知信息 二、sqlmap解题 step 1&#xff1a;爆数据库 step 2&#xff1a;爆表 二、手工注入解题 step 1&#xff1a;判断注入类型 step 2&#xff1a;判断字段数 step 3&#xff1a;查询数据…