绪论+8051单片机——嵌入式系统学习笔记(边学边记版)

目录

Chapter1  绪论

一、如何学习嵌入式系统

二、嵌入式系统的概念

Chapter 2 Principles and Application of Microcontroller

一、Introduction to Course Design of MCU

二、Introduction to 8051 MCU

1.8051单片机的内部结构

2.Pinout Description of 8051MCU

3.Input/Output Ports of 8051MCU

4.Memory Organization

5.Counters and Timers

6.URAT——串行通讯接口

Chapter1  绪论

一、如何学习嵌入式系统

1.需具备的知识:C/C++语言、微机原理与接口技术、计算机操作系统。

例如:应用程序如何调用操作系统的功能?

2.学习路线一: 从硬件到软件(例如:基于C语言首先从51单片机或者Arduino入手,然后开始嵌入式的裸机编程,再学习STM32或者其他ARM编程,之后学习嵌入式Linux,掌握一个应用开发工具例如Qt)

学习路线二:侧重嵌入式软件(适合于喜欢软件方面的开发),即基于C/C++从Android开发或者QT编程入手,学习嵌入式Linux。

3.课程内容

(1)Chapter1 绪论

(2)Chapter2 单片机原理与应用(8051单片机)

(3)Chapter3  嵌入式微处理器

(4)Chapter4 嵌入式存储系统

(5)Chapter5 嵌入式接口设计

-----3、4、5这三章主要是介绍嵌入式的硬件系统,以ARM为例-----

(6)Chapter6 嵌入式操作系统

(7)Chapter7 嵌入式系统设计方法

二、嵌入式系统的概念

1.嵌入式系统的定义

嵌入式系统是以应用为中心、以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。是将应用程序、操作系统和计算机硬件集成在一起的系统。

2.嵌入式系统的特点

  • 专用的计算机系统
  • 实时性(硬实时、软实时:以后果严重性来区分的)
  • 代码固化(非易失性存储器)
  • 可靠性要求高
  • 操作系统的支持
  • 专门的开发工具、环境和方法
  • 知识集成系统

3.嵌入式系统的组成

嵌入式系统的组成结构分为4层,包括:硬件层、中间层、软件层、功能层。 

---------举个栗子------------

对于离子色谱分析仪来说,嵌入式计算机板卡等属于硬件层;其开机引导程序属于中间层;采用的Linux操作系统属于软件层;针对仪器设计的嵌入式应用软件属于功能层。

 4.嵌入式系统的分类

(1)按嵌入式微处理器的位数分

可分为4位、8位、16位、32位、64位。


(2)按实时性分

可分为嵌入式实时系统与嵌入式非实时系统,其中嵌入式实时系统又可细分为硬实时系统和软实时系统。

硬实时与软实时的区分:以所产生后果的严重性来区分,即若响应时间不能满足,产生的后果不严重的是软实时,而产生严重后果的是硬实时。


(3)按嵌入式软件结构分!!!

  • 循环轮询系统:是最简单的软件结构,程序依次检查系统的每个输入条件,如果条件成立就执行相应的处理。
  • 前后台系统:属于中断驱动机制,采用中断方式响应事件,响应速度极快,适合多个硬件执行。

949b7da6320549849fbbd65c6474d0c3.jpg

  • 多任务系统:多任务系统的软件有多个任务、多个中断服务程序以及嵌入式操作系统组成,有利于降低系统的复杂度,保证系统的实时性和可维护性。

0ea15a51d4b34c538e3abc8e1a9a87fd.jpg

Chapter 2 Principles and Application of Microcontroller

本章将完成第一个课程设计——二自由度自动进样器控制系统的设计,采用英文教材

一、Introduction to Course Design of MCU

1.产品结构介绍

5c7f0200164d4268ba4434cf014866bf.jpg

 2.功能要求

  1. 转盘根据需要转动到指定位置
  2. 针头可上下移动,具有限位功能
  3. 控制蠕动泵转动,用于进样
  4. 与色谱仪进行通讯,可接受命令,也可反馈进样器的状态
  5. 具备针头清洗功能

3.信号设计 

4dde1e853f7845a38a1994e57ae7aede.png

二、Introduction to 8051 MCU

1.8051单片机的内部结构

在学习内部结构之前,我们首先要回顾两个知识点

(1)计算机的三大组成:CPU、存储器、接口。

(2)四大接口:I/O接口、中断控制器、串行通讯接口(也称串口)、定时器(也称计数器)

c673b2e0ad2549a08d40aeb1c99d0e42.jpg

---------第一大部分CPU-----------

CPU:8051单片机的CPU采用的是8位CPU,指内部运算器是8位的,即可以将两个8位的二进制数进行运算。

OSC晶体振荡器:提供相应的工作频率,对于8051来说,一般是低于24MHz

---------第二大部分存储器--------

RAM/Data Memory 数据存储器:128字节

ROM/Program Memory 程序存储器:4K字节

!!将数据存储器和程序存储器分开接线的体系结构称为哈弗结构(Harvard structure)

External Memory 扩展存储器:是8051单片机对存储器的外部的扩展,通常情况下不在该芯片内

---------第三大部分接口--------

Input/Output ports 输入/输出 接口:8051有4个I/O端口,每个有8个引脚,所以总共有32个输入/输出引线

Timer 定时器/计数器:16位

Serial Input/Output 串行通讯接口

Interrupt Control中断控制:任何一个计算机系统都应具有中断系统,中断系统让CPU有能力去处理多个接口的事件,而且快速响应

2.Pinout Description of 8051MCU

5b62c318a2984fd0b2fa694479269079.jpg

 P0、P1、P2、P3共32个引脚(32)+VCC/GND(2)+外接晶体振荡器信号(2)+复位信号(1)+EA引脚、ALE引脚(3)=40

  • EA引脚:置为1表示内外程序存储器都可以使用
  • ALE引脚:Address Lock Enable地址锁存允许,用于总线外扩。

3.Input/Output Ports of 8051MCU

(1)4个I/O Ports(32lines)

输入/输出端口P0、P1、P2、P3共四个,每个端口有8个引脚

(2)Internal structure of I/O port

输入/输出端口的内部结构图

8d25da04a06c44c2b4d428dd12c85f63.png

可以发现,接口引脚既可以为输入引脚,也可以为输出引脚,可以接不同的外部设备。

引脚的操作可以通过SFR(特殊功能寄存器)来实现。

输入/输出的电路连接

451b7931a3a74ae0b5ec22a604c771d7.png

(3)四个端口的特性

1.P0口

两个功能:(1)数据/地址总线;(2)输入/输出

2.P1口

只能作为输入/输出使用,因此通常优先采用P1口作为IO

3.P2

两个功能:(1)地址总线(高8位);(2)输入/输出

不同在于:P2口具有上拉电阻

4.P3口

两个功能:(1)地址总线(高8位);(2)输入/输出;(3)特殊功能

4.Memory Organization

有两个存储器:程序存储器和数据存储器,其容量都有一定的限制。

(1)程序存储器(4K)

程序存储器是存储指令的可读存储器。97af72a54037494faaa5611a78fb2612.jpg

 (2)数据存储器(128Bytes)

数据存储器是存储变量数据的可读可写存储器。

包括:4组寄存器R0-R7,共32字节;16字节的位寻址存储器;80字节的通用存储器。

32+16+80=128

80~FF的这128个字节我们作为特殊功能寄存器(SFR)来使用,这与0~7F这128字节不同,这其中有一部分与接口连用,有一部分在CPU内用。

但是我们也可以添加额外的内部内存,例如8052d582a15ca8dc4b7fbdd455db8d920854.jpg

 (3)特殊功能寄存器SFR

如上图所示,其中浅蓝色的是已经规定存储内容的,而深蓝色的是还没有规定的闲置区域。

5.Counters and Timers

8051中定时器/计数器有两个Timer0和Timer1。


下面是以T0为例的原理图:

7c29e4d34448427e8115ad89168968e0.jpg

  • 该计数器是+1计数器,即每来一个脉冲,计数器加一,直到最大值
  • 计数器可以是8位/16位/13位的计数器,这由其工作模式所决定的。当是8位时,只需设置TL0(低八位)的初值,当为16位时,则需设置TH0、TL0高八位和低八位的初值
  • 初值的设置

--------举个栗子--------

例如:设置初值为100,为16位的计数器,则65535-100=65435,因此设置高八位TH0=0xFF,低八位TL0=0x9C

  • 信号来源主要有两个:OSC(晶振)、T0(外部接口)
  • 当信号来源的信号稳定时,则计数器可以作为定时器使用
  • 特殊的位C/T、TR0、GATE,TR0=1则开启定时器/计数器;也可以使用外部引脚的INT0信号经GATE选择来控制暂停还是开启

    接下来我们根据流程看一下怎样使用计数器

(1)设定定时器的工作模式(是八位的还是十六位的?信号来源是晶振还是外部接口?如何启动开关?)

定时器的工作模式需要我们先设置一个特殊功能寄存器叫做TMOD,该控制器的低四位控制 Timer0, 高四位控制Timer1。

82f78efb21704ab18d7dc675d4a75611.jpg

T0M0、T0M1控制计数器的位数;

C/T0是信号来源的选择(晶振的信号来源作为定时器使用,外部引脚的信号来源作为计数器使用);

GATE0是决定外部引脚是否决定定时器的启动

  • Timer Working Mode

代码栗子:TMOD=0x01

(2)设置初始值

代码栗子:TH0=0x3c;TL0=0xb0;

(3)开启计数器

其中TR0=1时决定Timer0开启

(4)结束计数器

当计数器计数溢出时,应当结束计数,其中TF0=1时决定Timer0溢出即结束

------------举个栗子--------------

85b0c5921a9e461b8f7b914a6ab40170.jpg

6.URAT——串行通讯接口

首先我们先学习几个定义

(1)异步通讯和同步通讯

a44a0677f492481a9094ee31275969d5.jpg

 就如图中所说:

异步通讯——指的是两个字节传输的间隔不确定。

同步通讯——指的是按块传输,块内部之间各字节的传输间隔是一定的,但是块之间的间隔不确定

简化一点就是说一个是按字节传输,一个是按块传输

(2)波特率

一秒之内所传输的二进制位的个数,可用定时器确定

d5ebfbb60deb42e582df063d74f25277.jpg

(3)UART communication format

即异步收发的一个基本格式,包括开始位、数据位、(校验位)、结束位。

5269134a59284fd7bd07932ddf573eec.jpg

 (4)UART接口

0a0939d3e837441bbe158d17541cdf3a.jpg

 该接口实现了将并行数据变为串行数据,按着一定的波特率和格式发送出来,经过232/485的驱动电路,将我们所受到的信号转换为标准的信号


接下来我们去学习在单片机中串行通讯接口的工作原理

初始化:设置模式和波特率

b6c5e434fce149778b9b12a9890efa49.jpg

 此图位UART接口的电路原理图

(1)功能

  • 波特率产生装置
  • 并行的数据转换串行的格式:并行格式的数据存放在SBUF中,通过TXD转换成串行格式输出,或者将串行数据通过RXD转换为并行格式写入到SBUF
  • 接收串行数据位到SBUF
  • 发送与接收同时进行

(2)如何计算波特率

4e090749f17544c29ab4d2cac103bc69.jpg

 其中T1 overflow rate为其溢出率

(3)SCON格式

串行通讯格式的确定是由SCON中的相关位来确定。

302dc2c9b2734c5e9e743d55b1de811b.jpg

 首先是串行通讯接口工作模式的确定,如下图所示,常用的是模式1

b80e7c55cb814f989df37d0b249bf0bf.jpg

7.中断系统

首先我们去了解一下8051单片机中断系统的组成以及原理,然后了解针对中断系统如何编程处理中断响应,最后结合课程设计来具体理解

(1)中断系统工作原理图

28a207d8d6eb412a88a5b4e3613ccff6.jpg

 图中我们可以看出中断的来源有5个来源

  • INT0 、INT1:外部中断,这是P3接口提供的两个特殊引脚,分别在P3.2和P3.3
  • Timer0、Timer1:定时器/计数器,若作为计数器使用,则可通过引脚P3.4和P3.5;如果作为定时器使用,则通过内部的CLK
  • UART:串口 ,收发信号都会传给R1、T1一个标志位,我们可以使用该标志位作为中断的条件

我们可以通过开关控制是否响应该中断,并且中断是拥有优先级的,因此在使用中断时我们需要编写程序。

3f4f60732a8c4e6fa129f06c37ec373a.jpg

 EA:是一个总的开关

ET2:这是8052中可能会用到的

ES、ET1、EX1、ET0、EX0:分别控制UART、Timer1、INT1、Timer0、INT0中断的开关


中断优先权

有三个级别,优先级从低到高为:级别2、级别1、Reset

cf5bc4c5fba04545874f5c75fc0ff098.jpg

 在中断中,优先权从低到高为:UART、Timer1、INT1、Timer0、INT0

(2)响应中断

首先中断产生之后,信号传给CPU,CPU收到之后所进行的过程如下:

  1. 先结束当前指令
  2. 将下一条指令的地址放到堆栈中进行保存
  3. 根据需要,查找向量表,不同的中断需要去到不同的入口地址,寻找中断的处理程序
  4. 在入口地址处放置跳转指令,跳转到中断处理程序中(需要自己编写)
  5. 运行中断程序
  6. CPU在堆栈中将原来的地址取出,并在基础上进行下一条指令

 351b93e1631a4ab09a83e501c9dbe8fc.jpg

8.单片机功耗管理

fc3e2571245b4f8082e33e70ab4ef7a8.jpg

 有三种工作模式其功耗分别不同:

  • Normal Mode普通模式:25mA
  • Idle Mode空闲模式:6.5mA——CPU暂停,只有中断系统工作,当产生中断时,VPU被唤醒。适合电池供电场所,对功耗比较敏感的情况下使用
  • Power Down Mode掉电模式:40μA    ——单片机所以部分都停止工作,只有RESET可唤醒CPU进入正常工作模式,并且从头开始执行,其主要工作是保存RAM中的内容。适用于需很长时间使用的情况

090f02f806b244ebb09f6c1b890fae3e.jpg

 当IDL=1时,CPU--->空闲模式

 当PD=1时,CPU--->掉电模式

OK,到这里第一二章就结束啦!!!第三章的内容有点多且重要,所以打算单独出一篇文章!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值