单片机第一季:零基础1

news2024/11/16 19:45:59

目录

1,第一章

2,第二章


1,第一章

单片机是全球用量最大的CPU,是物联网节点设备主控CPU,单片机是其他物联网编程技术的基础,通过学习单片机学习编程语言、调试技巧、工具使用等;

51单片机最简单、最典型、用的最广、学习成本最低;

51单片机的内核是免费的,典型应用如:电容触摸IC、Wifi芯片(ESP8266)、zigbee无线通信芯片;

本学习过程使用的开发板为普中科技的开发板,包括LED、静态数码管、动态数码管、按键、LED点阵、蜂鸣器、电机、RS232、温度传感器、红外遥控等;

单片机是低层次的嵌入式设备,嵌入式是单片机的高级延伸和必然趋势;

物联网分为三层:底层(第一层)是感知层,感知层主要器件是传感器(譬如光传感器、PM2.5传感器、电容触摸传感器等···),感知层的主要作用就是使用传感器收集信息,感知层收集到信息后发给传输层(第二层),传输层核心是无线网络(包括wifi、4G、蓝牙、zigbee····),传输层的主要目的就是将感知层信息传输出去给上层应用层(第三层),应用层其实就是所谓的云服务器(云计算、大数据)。应用层通过大数据分析、云计算等手段最终得到结论,再通过传输层发出操作指令给底层去执行。

单片机是物联网感知层的核心;

跟着51从零开始学简单C语言,找本标准C语言的书系统学习C语言,推荐:the C Programming Language译作《C程序设计语言》,跟着STM32继续深入学习复杂C语言语法特性,嵌入式阶段《C语言高级专题》深度学习gcc;

学习C语言原则:以用促学;

2,第二章

电路发展变化的趋势:

功率,电子设备越来越省电,待机时间越来越长,工作电压越来越低;

体积,体积越来越小;

功能,功能越来越强大;

微器件的出现,电路的核心:开关控制、倍率控制,电子管、晶体管等;

IC(integrated circuit,集成电路),就是使用微器件为积木,去搭建具备一定功能的一个电路板;

以前没有微器件的时候,必须很大一块电路板才能实现一个电路功能(譬如一个加法器,完成加法运算)。然后有了微器件之后,这个电路板的体积变小了,越来越小,最后小到mm级别甚至更小,我们就把这个电路做在一起,用塑料外壳封装起来就形成了大家看到的IC芯片;

芯片(IC、集成电路)其实就是:里面是电路,外面的壳就是绝缘体壳,里面的电路通过外壳上引出来的一些引脚(金属材料的)来与IC外部接轨;

IC有多少个引脚,每一个引脚的作用是干嘛的,是IC设计制造的时候就已经决定的,我们拿到IC使用时要去读IC的数据手册来知道这个引脚怎么用;

CPU就是一块超大规模集成电路,CPU的本质就是电路;

CPU的工作原理:
(1)CPU通过总线从存储器取出指令到内部,然后译码,然后执行
(2)一条指令包括:指令码+数据
(3)执行指令反应为一个控制操作或者一个数学运算
(4)给单片机编程其实就是给CPU写指令序列

计算机系统三大组成部分:CPU、内部存储器、IO
(1)单片机属于计算机的一种
(2)IO就是input/output,也就是输入输出。譬如键盘、鼠标、触摸屏等就是输入设备,而LCD显示器、声卡等就是输出设备。

单片机的结构框图分析
(1)我们来看单片机这个计算机系统的结构框图。
(2)框图中的方块是组成部件、箭头表示总线Bus。
(3)CPU处于单片机系统的核心位置,别的模块都通过总线和CPU进行关联。别的模块之间一般没有总线直接相连,有时候2个互相有关系的模块也会有总线直接相连。
(4)IO其实就是芯片上的引脚,不同的单片机型号有不同的IO数量和定义。

如何定义单片机:
(1)单片机就是一台微型计算机。
(2)台式电脑或者笔记本电脑(这种计算机叫PC)也是一种计算机系统,这种计算机系统由很多个零部件组成。这些零部件由不同的厂商生产,可以去组合组装成一台电脑。
(3)单片机这台计算机的所有零件全部做在了一个IC内部,并且出厂前被塑料壳封装起来了。传统计算机中的主要部件单片机都有,都集成到内部去了。

内存:内存和CPU接轨比较紧密,内存可以被CPU直接访问,内存可以按照字节为单位来随机访问、程序运行时离不开内存、程序中的变量都是定义在内存中的。内存受限于物理技术和成本,容量比较小而贵;内存速度比外存快很多,CPU的速度比内存的速度快好多。
外存:外存和CPU之间比较远,外存不可以被CPU直接访问,外存一般以块为单位来访问,不能以字节为单位随机访问。外存容量大而便宜,外存速度比内存慢好多。
综合来说,计算机系统是这样工作的:文件和数据不用的时候就放在外存中,要用的时候从外存读取到内存,然后CPU再从内存中读取数据来直接使用。

ROM:
(1)read only memory,只读存储器,意思是只能读不能写。实际上世界上根本不存在真正的只能读不能写的器件,我们ROM这里的只读意思是:程序运行时只能通过程序自己本身的操作去读而不能写。
(2)常见的ROM:单片机中用来存储用户烧录的程序的器件就是ROM,烧录的过程其实就是在写ROM,但是程序运行时是不能修改ROM内容的。烧录程序一般要通过烧录器来完成。
(3)storage,存储器,含义有点像仓库存储东西。ROM就有点类似于仓库,用来存储程序代码。
(4)ROM有点像外存的概念,但是并不完全相等。主要是因为计算机系统有不同的设计方法,譬如PC机和单片机的设计就不相同。PC机中有外存没有ROM,单片机中有ROM没有外存。单片机中程序平时是存储在ROM中,运行时由ROM直接供给CPU。

RAM:
(1)random access memory,随机访问存储器
(2)常见的RAM:从物理上来讲,主要分为SRAM和DRAM,单片机中一般使用的都是SRAM,嵌入式SoC中和PC机中用的都是DRAM
(3)memory,存储器,专指的是计算机的内存

单片机中的ROM和RAM
(1)单片机中的ROM一般是Flash(闪存),有些地方会看到叫flash memory;单片机中的RAM一般都是SRAM;这两个共同构成单片机中的存储体系。
(2)ROM和RAM的协同工作方式是:ROM用来存储用户写好编译好的程序,运行时CPU直接从ROM中读取一条一条的指令来运行,指令运行过程中产生的临时数据放在RAM中。所以基本可以理解为:ROM是单片机用来放程序的,RAM是用来放数据的。

 统一的时钟节拍:
(1)这里有一个概念叫:同步。同步就是好多个独立的部分按照同一个节奏步调来动,以此来实现一个配合。
(2)和同步相对的一个概念叫异步,异步就是各自干各自的。
(3)单片机的各个模块之间是同步工作的,CPU和存储器和IO和单片机中其他东西这些模块之间通过一个统一的节拍来同步工作,这个统一节拍就是单片机的时钟。
(4)这个时钟节拍对单片机很重要,单片机内部在一个时钟节拍中只能做一件事情。所以单片机要发现一些变化或者做一些事情,最小的时间单位就是1个时钟节拍。单片机的时间单位都是时钟节拍的整数倍。
(5)单片机中的CPU、存储器、IO等都是以时钟节拍为动作节拍的,所以单片机是一个同步系统。
(6)时钟周期的长度(时钟节拍的快慢)影响了单片机的速度,所以这个时钟就叫做单片机的主频。主频越高性能越高,一般PC的主频都是2G多3G多,51单片机的主频MHz级别。一般手机CPU的主频也在1G-2G左右。一般高级单片机如STM32的主频在百MHz级别。

外设与内部外设:
什么是外设:
(1)外设英文叫peripheral,全程为外部设备。属于单片机中的模块
(2)单片机中除了三大部件(CPU、IO、存储器)外,还有一些别的东西,譬如串口控制器、譬如I2C控制器等····这些东西就叫外设。
(3)早期单片机功能很弱小,不具备很多功能(譬如中断功能、譬如串口通信功能),那我们用单片机做产品,只能外部扩展一些专用芯片(中断控制有中断控制器芯片,串口通信我们有串口通信芯片)来和单片机结合(做到一块电路板上用导线连接)起来工作。这种产品设计中核心部分就是单片机,外部配合的这些专用芯片就是外部设备,简称外设。
(4)后来随着半导体工业发展进化,集成电路的集成能力变强大了,我们干脆就把一些常用的外设直接集成到单片机里边去了。所以单片机里边就有了一些原来被称为外设的东西,但是叫法名称还是沿用了开始的名称。

什么叫内部外设:
(1)我为了区分外设,将集成到单片机里边的外设叫做内部外设。
(2)还有外部外设,就是至今仍然没有集成到单片机内部,还在外部的那些外设。

单片机与电路板:
什么是电路板(PCB printed circuit board,印刷电路板)
(1)图片:PCB板 = 基板(绝缘)+电路
(2)作用:PCB的作用就是骨架和连接。最终目的就是把所有的原件按照正确的电路图连接起来形成一个完整的可以工作的电路。
(3)构成和材质,常用的基板材质都是FR4(玻璃纤维),PCB板是由多层构成的(单面板、双面板、四层板、8层板、12层、16层、24层)
(4)印刷电路其实就是在不导电的基板表面按照电路构成来印刷一层导电物质形成电路。最后形成的就是一个里面的芯是不导电的FR4,外面有一层构成了电路的铜(标准术语叫覆铜),为了避免铜氧化或者与外部导电外部还有一层油墨,刷油墨时要露出来焊接点(焊接点一般有2种:一种是插针式、一种是贴片式),焊接点上本来就是铜,但是我们为了方便焊接一般会做镀锡。
(5)PCB板其实就是硬件电路(原件和电路设计)的载体。

什么是芯片:
芯片就是:半导体技术形成的电路,外面的壳是塑料绝缘壳,里面电路通过芯片引脚接出来用于连接外部电路。

芯片方式和电路板方式的关系:
相同点:芯片其实就是一个微型的电路板。这两个东西本身一模一样,早期只有电路板没有芯片,后来半导体工艺发展后有了微型器件,所以人把一些电路利用半导体工艺直接作死到一个芯片中去形成了IC。
我们做一个电子产品究竟应该如何去总体设计?现代的设计方案都是芯片+电路板。能做到芯片里面的都做进去(趋势是越来越进去的多),实在不能做成芯片的就只好放在外面。原来的产品,譬如老式大屁股电视机主板非常大,而新式的智能电视机主板就是一个大芯片+很少的外围设备。
单片机开发板其实就是PCB板主板+单片机芯片+其他芯片+其他外围电路元器件总体构成的。这就是普遍的电子产品的结构。

硬件工程师主要工作职责:
电路图的分析和设计;
原件的选择和参数确定;
PCB的设计和样板焊接、调试;
生产跟踪和问题解决;

软件工程师主要工作职责
初级软件工程师:辅助测试、写代码、维护;
中级软件工程师:独立工作、对产品负责、解bug;
高级软件工程师:需求分析、框架设计、团队管理;

软件工程师成长路线:
学到基础(知识+能力)->找到工作->学习和锻炼->中级->高级/转方向

什么是datasheet:
(1)datasheet就是数据手册,其实就是芯片的文档。
(2)数据手册中描述的都是这个芯片/器件的物理参数、电学参数、时序图、编程需要的信息、别的信息。总的来说这个芯片的所有有用的信息都在数据手册中,使用这颗芯片过程中的任何疑问都可以去datasheet中查询。
(3)我们学习单片机软件开发过程中,要不断去查询各种芯片的数据手册以获取一些有效信息来指导我们。

datasheet谁写的?
datasheet是由芯片厂商提供的。datasheet其实就是芯片的产品说明书。

datasheet从哪里来?
(1)最官方最权威的途径就是到芯片厂商的官方网站去下载;
(2)开发板附带的光盘资料中一般也会有;
(3)将芯片型号信息敲到百度去搜索其数据手册;

datasheet应该怎么使用?
(1)数据手册不是书,更不是教材,数据手册更像是一本字典。所以不是从第一页看到最后一页,更不用试图是记住。
(2)数据手册一定要先浏览一遍。尤其对于刚开始学习的人。浏览的目的是大概知道什么东西在哪里(将来用到时大概知道到哪里去找),里面一些概念基本理解,但是并不是为了记住。
(3)数据手册的正确用法就是:前面先简单看一遍(其中的前面一些可以认真看,后面的了解即可),用到某个具体知识时再根据前面浏览时的了解去具体查找数据手册中相关部分,这时候再去认真看。
 

原理图:
(1)原理图就电路原理设计图,就是用符号来绘制出的电路连接的逻辑图。我们平时讲的电路图其实就是原理图。原理图不是实物。
(2)原理图由:线条、方框、圆圈、数字、字母等组成。看懂这些符号所对应的电路实物,就能看懂原理图。
(3)原理图中每一个符号表达一种含义,常见的有:
    直线:表示导线,是用来连接原件构成电路的。
    方框:表示器件,如IC、插座、
    常见符号:如电阻、电容、三极管等···
    特殊符号:不常见器件    
(4)原理图中的每一个器件都有一个编号,如IC都用Un(U1、U2等),电容都用Cn(C1、C2)····这个编号在原理图中是唯一的,这个编号用来表示/记录这个元器件。
(5)原理图中芯片类型的器件还会有一个名字,名字一般是器件的型号。
(6)原理图中大多数器件还有一个参数值,譬如电容的容量、电阻的阻值等。
(7)有些器件(IC、插座)有引脚,引脚编号用数字表示。
(8)原理图中有个网络的概念,原理图上2个编号一样的节点其实在逻辑上是连在一起的。网络的发明纯粹是为了方便画图,让图不会导线连接的跟蜘蛛网一样。分析原理图时一定要注意网络,否则看到的可能就是一半的原理图。

PCB图:
(1)硬件工程师在设计产品硬件时的步骤是:先有原理图,然后用原理图画出PCB图
(2)PCB图是原理图和实际器件结合起来后,生成的PCB板的结构图纸,PCB图的作用就是拿给做PCB板的厂商去印刷电路板。
(3)对与软件工程师来说,PCB图完全不用去关注,我们只关注原理图。

BOM表:
(1)BOM就是bills of meterials,就是物料表,物料表是整个电路中用到的所有物料的一张清单。
(2)BOM表是研发部门(硬件工程师)提供,一般是给生产部门来备料、记录用的。
(3)BOM中每个物料的记录和对应就靠物料编号。

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

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

相关文章

【前端笔记】indexDB使用简单介绍

什么是indexDB? IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。该 API 使用索引实现对数据的高性能搜索。虽然 Web Storage 在存储较少量的数据很有用&…

chatgpt赋能python:如何用Python计算圆面积

如何用Python计算圆面积 介绍 圆是几何学中基本的图形之一,圆面积的计算是数学中的基础知识。使用Python编程语言可以快速、简便地计算圆的面积。本文将介绍如何使用Python编写圆面积计算器,并演示计算圆面积的步骤。无需高深的数学知识,只…

IPv6地址分类

一. 前言 IPv6地址分为单播地址,组播地址和任播地址。它们的地址详细分类和地址的范围如下图所示。 二. IPv6地址分类 1. 全球单播地址 类似于IPv4的公网地址,由前缀,子网ID和接口标识组成。 2. 链路本地地址 只能在连接到同一个本地链路的节…

《空指针》Optional解决链式调用NPE问题

Optional解决链式调用NPE问题 1.map() public class Main {public static void main(String[] args) {Person person new Person();Info personInfo new Info();int result;// 1.PersonInfo 为空person.setPersonInfo(null);result Optional.ofNullable(person).map(Person…

cpp-httplib

安装 cpp-httplib gitee链接: https://gitee.com/yuanfeng1897/cpp-httplib?_fromgitee_searchv0.7.15版本链接: https://gitee.com/yuanfeng1897/cpp-httplib/tree/v0.7.15把httplib.h拷贝到我们的项目中即可 接入cpp-httplib:header-only&#xff…

Kubernetes 1.27 版本基于(haproxy+keepalived)部署高可用集群

Kubernetes 1.27 版本基于(haproxykeepalived)部署高可用集群 二、系统架构2.1 架构基本需求2.2 架构图 三、环境准备3.1 云服务或虚拟机清单3.2 升级操作系统内核3.3 设置hostname3.4 修改hosts文件映射(注意替换你的规划每一台机器的IP&…

泛型深入~

1:泛型的概述的优势 2:泛型的好处 2:自定义泛型类 2:泛型类的原理 把出现泛型变量的地方全部替换成传输的真实数据类型 3:自定义泛型方法 4:自定义泛型接口 5:泛型通配符,上下限

03-1_Qt 5.9 C++开发指南_Qt核心特点(元对象系统特性:属性系统;信号与槽机制、动态类型转换;元对象特性测试实例)

Qt 是一个用标准 C编写的跨平台开发类库,它对标准 C进行了扩展,引入了元对象系统信号与槽、属性等特性,使应用程序的开发变得更高效。本章将介绍 Qt 的这些核心特点,对于理解和编写高效的 Ot C程序是大有帮助的;还介绍…

Servlet 项目创建和部署

目录 创建步骤: 1.创建项目 ​编辑2. 引入依赖 3.创建目录,复制内容 4.编写代码 5.打包 6.部署 7.验证 简化: 常见报错情况: 1.端口占用 2.路径错误 3.405 4.500 服务器代码抛出异常 5.依赖没下载好 创建步骤: 1.…

标注一致性计算

在统计学中,标注一致性(Inter-annotation agreement, IAA)用于评价独立观察者之间对同一现象进行评估时的一致程度。因此,本文讨论最多的是多位标注员对相同数据进行标注时的一致性评估方法。 一、Kappa统计量 评估一致性最简单…

Mysql高级篇(面试必看)

Mysql高级篇知识点,全篇手打,大家觉得有用的话点一个赞,持续更新 目录 1.Mysql锁的机制:粒度分类,思想分类,实现分类,状态分类,算法分类 2.Mysql的隔离级别:读未提交&…

视觉SLAM学习路线思维导图

整理了一下视觉SLAM学习路线的思维导图,防遗忘,不足的地方也希望各路大神能够不吝赐教。

Nginx(2)静态资源部署

静态资源 静态资源的配置指令静态资源优化配置静态资源压缩Gzip模块配置指令Gzip压缩功能的实例Gzip和sendfile共存问题gzip_static测试使用 静态资源的缓存处理浏览器缓存相关指令 Nginx的跨域问题解决静态资源防盗链防盗链的实现原理防盗链的具体实现 上网搜索访问资源是通过…

Java15——枚举类、注解、作业

1. 枚举类 跳了很多。。。 2. 注解 3. 作业 1. 注意:所有类共享静态属性 所以结果是 9,red 100,red package com.zsq.homework1;public class HM1 {public static void main(String[] args) {Cellphone cellphone new Cellphone();cel…

Java面试题大全(23年整理版)最新全面技巧讲解

程序员面试背八股,可以说是现在互联网开发岗招聘不可逆的形式了,其中最卷的当属 Java!(网上动不动就是成千上百道的面试题总结)你要是都能啃下来,平时技术不是太差的话,面试基本上问题就不会太大…

如何在 MATLAB 中进行图像分割(matlab仿真与图像处理系列第7期)

在 MATLAB 中进行图像分割有多种方法,下面介绍一些常用的方法: 基于阈值的二值化分割这是一种最简单的分割方法,将图像分为两个部分:背景和前景。其主要思想是,选择一个阈值,将图像中的像素值与阈值进行比较,将像素值大于阈值的像素标记为前景(白色),将像素值小于阈值…

自动化测试练手项目推荐

最近收到许多自学自动化测试的小伙伴私信,学习了理论知识后,却没有合适的练手项目。 测试本身是一个技术岗位,如果只知道理论,没有实战经验,在面试中很难说服面试官,比如什么场景下需要添加显示等待&#x…

小白用旧手机搭建web服务器(一):实现局域网访问

1、首先要拥有一部安卓手机 2、下载ksweb 我们需要下载ksweb这款app,这是一位俄罗斯大神制作的,里面集成了Lighttpd、nginx、Apache的服务器,还有mysql服务器等,十分强大。 下载地址:KSWEB_3-93_kill_无ad.apk - 蓝…

大数据技术生态体系

6 大数据技术生态体系 图中涉及的技术名词解释如下: 1)Sqoop:Sqoop 是一款开源的工具,主要用于在 Hadoop、Hive 与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进…

GPIO复用功能1——定时器输入捕获

文章目录 前言定时器输入捕获红外接收的数据分析捕获思路编程实践1.初始化时钟2.初始化GPIO3.配置定时器的时钟基准4.配置输入捕获参数5.中断配置6.中断服务函数7.处理数据帧 实现效果 总结 前言 前面介绍了GPIO的通用输入输出功能,以及其模拟时序的功能&#xff0c…