【单片机day01】
什么是嵌入式?
以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统
- 以应用为中心:消费电子(手机、蓝牙耳机、智能音响)、医疗电子(心率脉搏、呯吸机),无人机(大疆DI),机器人(人形四足机器人)
- 计算机技术:
- 计算机五大组成:运算器(数据运算)、控制器(指令控制)、存储器(内存 外存)、输入设备(鼠标、键盘、摄像头)、输出设备(显示器)
- 软件:编程语言(C/C++)、操作系统(Linux 文件、多任务、网络)、数据结构、数据库
- 硬件:
- 51单片机:硬件概念(定时器、PWM、中断)、原理图、寄存器、外设操作(LED、按键、数码管、蜂鸣器、传感器)
- STM32:库开发(标准库、HAL库)
- ARM:英国公司 设计处理器芯片方案,SAMSUNG、ATMEL、NXP->ARM芯片方案->开发板(ARM)
- CortexA:应用高端领域,处理复杂任务,用来跑操作系统(Linux 文件系统 多任务调度 网络)
- CortexR:应用实时控制领域,实时性要求高(汽车电子)
- CortexM:应用微控制器领域,MCU单片机(IOT物联网智能家居控制领域)
- 计算机五大组成:运算器(数据运算)、控制器(指令控制)、存储器(内存 外存)、输入设备(鼠标、键盘、摄像头)、输出设备(显示器)
- 软硬件可裁剪:加入需要的硬件/软件功能,将不需要的硬件/软件裁剪掉(低功耗、低成本)
- 计算机:
- 通用型计算机:PC、平板、手机
- 专用型计算机:无人机,完成某项特定功能而设计计算机
51单片机
1980年,由Intel公司MCS-51系列:8051型号单片机(工业控制领域),由MCU转型到CPU
Atmel(AT89C51)、Philip(P89V51系列单片机,增强型单片机 ISP在线编程)、STC 宏晶半导体(STC89C51 STC89C52 STC89C52RC)
相关概念
- CPU:Central Processing Unit(中央处理器)数据运算、指令处理,CPU性能越高,完成指令处理和数据运算的速度越快
- MCU:Micro Ctronler unit(微控制器),集成度比较高,将所有功能集成到芯片中(CPU、RAM、ROM、定时器、UART、O),简单控制,成本低
- MPU: Micro Processing Unit(微处理器),集成度低,只有一块单独的CPU,需外接外设、存储模块,复杂应用领域,跑Linux操作系统,成本高
- GPU:Graphics Processing Unit(图形处理器),图形处理、图形渲染(GPU性能越好,图形显示的质量越好)
- NPU:NeuralProcessing Unit(神经网络处理器),A|推理、硬件加速,神经网络处理(卷积运算)->华为Mate60 达芬奇NPU AI自动优化照片
- FPU:Floating Point Unit(浮点数运算单元),完成浮点数的运算和处理(完全遵循IEEE 754),大部分集成在CPU内部
- SOC:System On Chip(片上系统),集成度比较高,将多个芯片集成到一块芯片上(存储芯片、外设芯片)
RAM和ROM
- 外存:主要存放程序、代码、指令,掉电数据不丢失,读写速度慢,价格便宜(移动硬盘 1T 300)
- 内存:主要存放程序运行过程中的临时变量、掉电数据丢失,读写速度快,价格易贵(内存条 16G 300)
- ROM:Read-Only Memory,只读存储器,存放单片机程序,指令,掉电数据不丢失
- RAM:Random Access Memory,随机访问存储器,存放临时变量、临时数据,掉电数据丢失
单片机内部结构
CPU、RAM、ROM、Timer、PWM、IO、中断、UART
三大总线:
- 地址总线:用来寻找RAM中的地址,寻址的最大范围是2^8,256byte, 是单向的。用于指定存储单元或IO端口的地址
- 数据总线:通过地址总线去获取数据,数据交互是双向的,用于CPU与内存/外设之间的数据交换
- 控制总线:时序控制、IO控制。传输控制信号,如读写信号、终端请求、时钟等。
单片机RAM大小:一般只有几百字节到几十kb。8051单片机只有128B/256B RAM,而现代ARM Cortex-M系列MCU有几KB到击败KB RAM。
原理图
- MCU单片机芯片:STC89C52RC、DIP40 封装:双列直插式,40个引脚,划分成4组(端口 寄存器 unsigned char P2;)
- 网络编号:在实际电路中的一个编号,避免物理连线,相同网络的编号的引脚在实际电路中是彼此互通
LED模块:
- 发光二极管:具有单向导通性,分为共阳极和共阴极二极管
- 单向导通性:阳极接高电平,阴极接低电平。电流从阳极到阴极流动,LED灯就会被点亮
- 共阳极发光二极管特性:
- 所有阳极接电源正极VCC,阴极接单片机的引脚,点亮方式:给阴极输入低电平,低电平点亮。
- 共阴极发光二极管特性:
- 所有阴极接地GND,阳极接单片机的引脚,点亮方式:给阳极输入高电平,高电平点亮。常用于共阴数码管
位运算
- | :将二进制中的对应位的bit进行比较,有1则1,全为0才是0
应用场景:指定位置1
- & :将二进制中的对应位的Bit进行比较,全为1则为1,有0则0
应用场景:指定位清0
- ^ :将对应的Bit进行比较,相同为0,相异为1。
单片机的程序创建、编写、编译、下载流程:
- 安装Keil4软件
- 点击"Project" -> "New Project" -> 选择路径 (为工程起一个名字)
- 选择单片机芯片型号:Atmel->AT89C51,点击"否",不拷贝启动代码
- 向Group中添加C语言文件: 点击左上方text按钮,ctrl + S将文件保存到工程对应的目录(为文件起一个名字,如 main.c),双击左侧Grpup,点击Add 将文件加入到对应的Group下
- 编写单片机程序:
- #include <reg51.h>, 加入51单片机头文件
- 需要加入while(1)避免程序跑飞
- 编译单片机程序:
- 点击"Target Options"按钮,点击"Output"选项中的"Create HEX FILE"选项,生成hex文件
- 点击左上方"Build"编译单片机工程
- 会在对应目录下生成xxx.hex十六进制文件
- 下载单片机程序:
- 打开ISP软件,连接串口线
- 选择单片机芯片型号:STC89C52/C51/C52RC
- 根据串口识别的端口号,选择对应的端口 COM4
- 选择"打开程序文件" -> 对应目录下的hex文件
- 点击"下载/编程"按钮,将单片机复位后程序即可下载到单片机ROM中
数码管
数码管:51单片机搭载一个4位共阴极数码管,每一位数码管可以显示一些独立数值,数码管同一时刻只能显示一位
分类:共阴极(高电平点亮)、共阳极(低电平点亮)
位选:选中某一位数码管(将P1寄存器对应bit位置1)
段选:显示具体数字
静态显示:单片机控制一个数码管,直接输出段码。
动态显示:多位数码管共享段线,通过 段选 + 位选,快速轮流点亮不同位。