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

嵌入式系统与51单片机全解析

、嵌入式:

以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统


二、51单片机:

1980年,由Intel公司MCS-51系列:8051型号单片机(工业控制领域),由MCU转型到CPU
Atmel(AT89C51)、Philip(P89V51系列单片机,增强型单片机 ISP在线编程)、STC 宏晶半导体(STC89C51   STC89C52  STC89C52RC)

三、相关概念:

CPU:Central Processing Unit(中央处理器)数据运算、指令处理,CPU性能越高,完成指令处理和数据运算的速度越快

MCU:Micro Ctronller Unit(微控制器),集成度比较高,将所有功能集成到芯片中(CPU、RAM、ROM、定时器、UART、IO),简单控制, 成本低

MPU:Micro Processing Unit(微处理器),集成度低,只有一块单独的CPU,需外接外设、存储模块,复杂应用领域,跑Linux操作系统,成本高

GPU:Graphics Processing Unit(图形处理器),图形处理、图形渲染(GPU性能越好,图形显示的质量越好)

NPU:Neural Processing Unit(神经网络处理器),AI推理、硬件加速,神经网络处理(卷积运算)-> 华为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控制、中断


六、原理图:

MCU单片机芯片:
STC89C52RC、DIP40 封装:双列直插式,40个引脚,划分成4组(端口 寄存器 unsigned char P2;)

网络编号:在实际电路中的一个编号,避免物理连线,相同网络的编号的引脚在实际电路中是彼此互通

LED模块:

发光二极管:具有单向导通性,分为共阳极和共阴极二极管

共阳极发光二极管的特性:

将所有发光二极管的阳极接到电源正极(VCC),阴极接到单片机的引脚。此时发光二级管阳极会输出高电平(VCC 5V),如果发光二级阴极输出一个低电平(0V), 阳极和阴极之间会形成一个
正向的电压差,满足发光二极管的单向导通性,所以电流就会从阳极流向阴极,发光二级就被点亮



七、位运算:

1、|:将二进制中的对应位的bit进行比较,如果有一个bit为1,结果为1;如果都为0,结果为0;

应用场景:指定位置1
unsigned char t = 0x64;

将bit0和bit7置1:
t |= (1 << 0) | (1 << 7);


2、 &:将二进制中的对应位的bit进行比较,如果全为1,结果为1;如果有一个0,结果为0;

应用场景:指定位清0

unsigned char t = 0xFF;

将bit 0 和 bit7 清0: 
t &= ~(1 << 0);
t &= ~ (1 << 7);


练习:
定义两个变量:
unsigned char a = 0x62;
unsigned char b = 0xFF;

(1)将a转换成二进制,将bit0和bit7置1
// 二进制:0110 0010
// t |= (1 << 0) | (1 << 7);


(2)将b转换成二进制,将高4位清0
// 二进制:1111 1111           
// t &= ~(0x0F << 4);         
// t &= ~(0xF0 << 0);            


3、^:  将对应位的bit进行比较,相同为0,相异为1


八、单片机程序创建、编写、编译、下载流程:

(1)安装Keil4软件

(2)点击"Project"  -> "New Project"  -> 选择路径 (为工程起一个名字)

(3)选择单片机芯片型号:Atmel->AT89C51,点击"否",不拷贝启动代码

(4)向Group中添加C语言文件:  点击左上方text按钮,ctrl + S将文件保存到工程对应的目录(为文件起一个名字,如 main.c),双击左侧Grpup,点击Add 将文件加入到对应的Group下

(5)编写单片机程序:

(1) #include <reg51.h>, 加入51单片机头文件


(2)需要加入while(1)避免程序跑飞


(6)编译单片机程序:

(1)点击"Target Options"按钮,点击"Output"选项中的"Create HEX FILE"选项,生成hex文件

(2)点击左上方"Build"编译单片机工程

(3)会在对应目录下生成xxx.hex十六进制文件


(7)下载单片机程序:

(1)打开ISP软件,连接串口线

(2)选择单片机芯片型号:STC89C52/C51/C52RC

(3)根据串口识别的端口号,选择对应的端口  COM4

(4)选择"打开程序文件" -> 对应目录下的hex文件

(5)点击"下载/编程"按钮,将单片机复位后程序即可下载到单片机ROM中


九、数码管:

数码管:51单片机搭载一个4位共阴极数码管,每一位数码管可以显示一些独立数值,数码管同一时刻只能显示一位

位选:选中某一位数码管(将P1寄存器对应bit位置1)

段选

静态显示、动态显示

http://www.dtcms.com/a/363846.html

相关文章:

  • 3.ImGui-窗体
  • 大模型推理加速深度对比:vLLM vs TensorRT-LLM vs ONNX Runtime,谁是生产环境最优解?
  • 【智能体开发】怎样提升AI智能体的运行速度?
  • 重新审视信任基石:公网IP证书对网络安全生态的影响
  • 多态——面向对象编程的 “灵活密码”
  • p049基于Flask的医疗预约与诊断系统
  • Linux 安装docker-compose安装方法(安装docker compose安装)
  • Android Activity 任务栈详解
  • 一种简单而有效的融合时空特征嵌入的城区多变量长序列风速预测模型
  • 基于Springboot和Vue的前后端分离项目
  • MD5加密算法详解与实现
  • Python-Flask企业网页平台深度Q网络DQN强化学习推荐系统设计与实现:结合用户行为动态优化推荐策略
  • Dockerfile 自动化构建容器镜像
  • OpenStack:典型的面向服务架构(Service-Oriented Architecture, SOA)
  • Java Bitmap 去重:原理、代码实现与应用
  • 广东省省考备考(第九十二天9.2)——言语(刷题巩固第一节课)
  • 从全栈开发到微服务架构:一次真实的Java全栈面试经历
  • 子进程、父进程
  • 高效数据传输的秘密武器:Protobuf
  • Linux系统:进程信号的处理
  • TKDE-2022《Low-Rank Linear Embedding for Robust Clustering》
  • 【机器学习深度学习】向量模型与重排序模型:RAG 的双引擎解析
  • 利用 Java 爬虫获取淘宝商品 SKU 详细信息实战指南
  • keycloak中对接oidc协议时设置prompt=login
  • 机器学习回顾——决策树详解
  • SOL中转转账教程
  • Android Binder 驱动 - Media 服务启动流程
  • TiDB v8.5.3 单机集群部署指南
  • rocketmq启动与测试
  • 数据结构--跳表(Skip List)