当前位置: 首页 > java >正文

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

  • 段选:显示具体数字

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

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

http://www.xdnf.cn/news/19767.html

相关文章:

  • 学习React-8-useImmer
  • TDK InvenSense CH201距离传感器
  • 还在从零开发AI应用?这个项目直接给你500个现成方案!!!
  • Autosar之Det模块
  • 智慧工地如何撕掉“高危低效”标签?三大社会效益重构建筑业价值坐标
  • 贝叶斯定理
  • WAF与CDN在网络安全中的协同作用
  • GitLens VS Code插件测评:助力代码协作高效查提交记录,轻松解决分支管理与代码冲突
  • `<meter> ` 元素 无需 JavaScript/CSS 实现密码强度提示
  • esp32小智ai对话机器人
  • 【字节拥抱开源】 UXO 团队开源 USO: 通过解耦与奖励学习实现的统一风格与主题驱动生成
  • 万和电气卢宇聪:在“慢周期”做本质的事
  • GoLand IDE 无法识别 Go 工作区中的引用,如何解决?
  • 5.kafka集群安装
  • 区间DP .
  • Android U Lmkd源码解析
  • maven 常用指令
  • 二叉树的非递归遍历 | 秋招面试必备
  • Redis分布式缓存
  • RabbitMQ消息堆积问题排查:concurrentConsumers 配置的坑与解决方案
  • js设计模式-职责链模式
  • More Effective C++ 条款24:理解虚拟函数、多继承、虚继承和RTTI的成本
  • VMWare ubuntu24.04安装(安装ubuntu安装)
  • 复杂PDF文档如何高精度解析
  • css3元素倒影效果属性:box-reflect
  • IsaacLab训练机器人
  • uni-app 实现做练习题(每一题从后端接口请求切换动画记录错题)
  • 国内免费低代码软件精选:四款工具助你快速开启数字化转型之路
  • 力扣72:编辑距离
  • windows docker(二) 启动存在的容器