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

news2025/1/19 7:20:49

在科技的浩瀚宇宙中,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.coloradmin.cn/o/2278826.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 音视频入门到实战专栏(视频篇)视频编解码 MPP

文章目录 一、MPP 介绍二、获取和编译RKMPP库三、视频解码四、视频编码 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;本篇将介绍如何调用alsa api来进行音频数据的播放和录制。 一、MPP 介绍 瑞芯微提供的媒体处理软件平台…

ScratchLLMStepByStep:训练自己的Tokenizer

1. 引言 分词器是每个大语言模型必不可少的组件&#xff0c;但每个大语言模型的分词器几乎都不相同。如果要训练自己的分词器&#xff0c;可以使用huggingface的tokenizers框架&#xff0c;tokenizers包含以下主要组件&#xff1a; Tokenizer: 分词器的核心组件&#xff0c;定…

深度学习项目--基于LSTM的火灾预测研究(pytorch实现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 LSTM模型一直是一个很经典的模型&#xff0c;这个模型当然也很复杂&#xff0c;一般需要先学习RNN、GRU模型之后再学&#xff0c;GRU、LSTM的模型讲解将…

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频&#xff1f;LLMComfyUI混元视频 实现流程图&#xff08;重点&#xff09;1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…

SpringBoot的Bean-中级-作用域

5个作用域&#xff1a; 初级演示的是第一种默认的singleton&#xff1a;SpringBoot的Bean-初级获取bean对象-CSDN博客 中级-1&#xff1a;Lazy注解使其在使用的时候再实例化 中级-2&#xff1a;Scope("prototype")使其每次需要注入的时候都实例化新的对象 测试程序&…

放大芯片参数阅读

一、芯片的增益能力 1. GBW&#xff08;增益带宽积&#xff09; 例如&#xff0c;GBW (typ) 1 MHz。 增益带宽积&#xff08;Gain Bandwidth Product&#xff09;是一个关键参数&#xff0c;用于计算在特定频率下的最大增益。 定义公式为&#xff1a; 增益带宽G…

蓝桥杯算法日常|枚举[*找到最多的数]

**找到最多的数** 重点疑问总结&#xff1a; 1、数组输入输出c一般会采用那种方便的方式&#xff1f;&#xff1f; 用的就是我想的那种&#xff0c;就是用的最大范围定义的。 2、怎样方便给数组中每个数出现的次数计数&#xff1f;&#xff1f; 刚开始想的是&#xff1a;每个数…

Docker安装PostGreSQL docker安装PostGreSQL 完整详细教程

Docker安装PostGreSQL docker安装PostGreSQL 完整详细教程 Docker常用命令大全Docker 运行命令生成Docker 上安装 PostGreSQL 14.15 的步骤&#xff1a;1、拉取 PostGreSQL 14.15 镜像2、创建并运行容器3、测试连接4、设置所有IP都可以运行连接进入容器内 修改配置文件关闭容器…

基于机器学习随机森林算法的个人职业预测研究

1.背景调研 随着信息技术的飞速发展&#xff0c;特别是大数据和云计算技术的广泛应用&#xff0c;各行各业都积累了大量的数据。这些数据中蕴含着丰富的信息和模式&#xff0c;为利用机器学习进行职业预测提供了可能。机器学习算法的不断进步&#xff0c;如深度学习、强化学习等…

Go 语言 select 的实现原理

介绍 select是Go在语言层面提供的I/O多路复用的机制&#xff0c;其专门用来让Goroutine同时等待多个channel是否准备完毕:可读或可写。在Channel状态改变之前&#xff0c;select会一直阻塞当前线程或者goroutine。 特性&#xff1a; case 必须是一个通信操作&#xff0c;主要是…

Java 视频处理:基于 MD5 校验秒传及 ffmpeg 切片合并的实现

本文介绍两种网络技术实现方法。一是 MD5 校验秒传&#xff0c;服务器端用数据库记上传文件 MD5 值及存储路径&#xff0c;Java 代码接收客户端 MD5 值并查询校验&#xff0c;返回状态码。二是用 ffmpeg 切片视频成 m3u8 上传&#xff0c;异步合并文件实现视频按需加载。 1. …

一文读懂iOS中的Crash捕获、分析以及防治

Crash系统性总结 Crash捕获与分析Crash收集符号化分析 Crash类别以及解法分析子线程访问UI而导致的崩溃unrecognized selector send to instance xxxKVO crashKVC造成的crashNSTimer导致的Crash野指针Watch Dog超时造成的crash其他crash待补充 参考文章&#xff1a; 对于iOS端开…

RK3576 Android14 状态栏和导航栏增加显示控制功能

问题背景&#xff1a; 因为RK3576 Android14用户需要手动控制状态栏和导航栏显示隐藏控制&#xff0c;包括对锁屏后下拉状态栏的屏蔽&#xff0c;在设置功能里增加此功能的控制&#xff0c;故参考一些博客完成此功能&#xff0c;以下是具体代码路径的修改内容。 解决方案&…

【Rust自学】13.5. 迭代器 Pt.1:迭代器的定义、iterator trait和next方法

13.5.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发&#xff0c;而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中&#xff0c;我们会讨论 Rust 的一…

LabVIEW 蔬菜精密播种监测系统

在当前蔬菜播种工作中&#xff0c;存在着诸多问题。一方面&#xff0c;播种精度难以达到现代农业的高标准要求&#xff0c;导致种子分布不均&#xff0c;影响作物的生长发育和最终产量&#xff1b;另一方面&#xff0c;对于小粒径种子&#xff0c;传统的监测手段难以实现有效监…

2024年年终总结——坎坷与坚持,焦虑与收获

不知不觉间&#xff0c;2024年已经悄然过去&#xff0c;回望这一年的时间&#xff0c;一时间竟感觉混混沌沌无法形容&#xff0c;选择一些时间坐下来让自己简单回忆一下自己的2024。 先简单回望一下24年一整年的工作情况&#xff1a; 24年一开始&#xff0c;工作最期待的的节点…

无人机技术架构剖析!

一、飞机平台系统 飞机平台系统是无人机飞行的主体平台&#xff0c;主要提供飞行能力和装载功能。它由机体结构、动力装置、电气设备等组成。 机体结构&#xff1a;无人机的机身是其核心结构&#xff0c;承载着其他各个组件并提供稳定性。常见的机身材料包括碳纤维、铝合金、…

springboot基于微信小程序的传统美食文化宣传平台小程序

Spring Boot 基于微信小程序的传统美食文化宣传平台 一、平台概述 Spring Boot 基于微信小程序的传统美食文化宣传平台是一个集传统美食展示、文化传承、美食制作教程分享、用户互动交流以及美食相关活动推广为一体的综合性线上平台。它借助 Spring Boot 强大的后端开发框架构…

Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅

引言&#xff1a;音浪太强&#xff0c;我稳如老 HAL&#xff01; 如果有一天你的耳机里传来的不是《咱们屯里人》&#xff0c;而是金属碰撞般的杂音&#xff0c;那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果&#xff01;在 Android 音频架构中&#xff0c…

51.WPF应用加图标指南 C#例子 WPF例子

完整步骤&#xff1a; 先使用文心一言生成一个图标如左边使用Windows图片编辑器编辑&#xff0c;去除背景使用正方形&#xff0c;放大图片使图标铺满图片使用格式工程转换为ico格式&#xff0c;分辨率为最大 在资源管理器中右键项目添加ico类型图片到项目里图片属性设置为始终…