嵌入式系统与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)

段选

静态显示、动态显示

相关推荐
金色天际线-13 小时前
Linux 文本处理四剑客:cut, sort, uniq, tr
linux·运维·服务器
kebeiovo14 小时前
Linux 环境配置 Boost 库详细步骤
linux·运维·服务器
mljy.15 小时前
Linux《进程信号(上)》
linux
泽虞15 小时前
《LINUX系统编程》笔记p8
linux·运维·服务器·c语言·笔记·面试
正在努力的小河18 小时前
Linux并发与竞争
linux·运维·服务器
三坛海会大神55518 小时前
正则表达式与grep文本过滤详解
linux·运维·正则表达式
码农hbk20 小时前
Linux signal 图文详解(二)信号发送
linux·服务器
東雪蓮☆21 小时前
Shell 编程 —— 正则表达式与文本处理实战
linux·运维·服务器
Gary Studio21 小时前
Linux-驱动积累
linux