【单片机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)

  • 段选: 显示具体数字

  • 静态显示:单片机控制一个数码管,直接输出段码。

  • 动态显示 :多位数码管共享段线,通过 段选 + 位选,快速轮流点亮不同位。

相关推荐
RestCloud3 小时前
企业为何仍困在“数据孤岛”?——从iPaaS重构信息流的实践路径
数据库·api
RestCloud4 小时前
Oracle到ClickHouse:异构数据库ETL的坑与解法
数据库·api
AI小小怪4 小时前
在linux下使用MySQL常用的命令集合
linux·数据库·mysql·oracle
长安城没有风4 小时前
从入门到精通【Redis】安装Redis以及基本全局命令
数据库·redis
@Ryan Ding4 小时前
Jenkins调用Ansible构建LNMP平台
linux·数据库·ansible·jenkins
威风的虫4 小时前
SQLite3 操作指南:SQL 语句与 ORM 方法对比解析
数据库·sql
EndingCoder4 小时前
数据库集成:使用 SQLite 与 Electron
数据库·electron·sqlite·前端框架·node.js
浊尘5 小时前
SQL server实现异地增量备份和全量备份
数据库·sqlserver
小蒜学长5 小时前
基于Hadoop的网约车公司数据分析系统设计(代码+数据库+LW)
java·大数据·数据库·hadoop·spring boot·后端