目录
Chapter 2 Principles and Application of Microcontroller
一、Introduction to Course Design of MCU
2.Pinout Description of 8051MCU
3.Input/Output Ports of 8051MCU
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)按嵌入式软件结构分!!!
- 循环轮询系统:是最简单的软件结构,程序依次检查系统的每个输入条件,如果条件成立就执行相应的处理。
- 前后台系统:属于中断驱动机制,采用中断方式响应事件,响应速度极快,适合多个硬件执行。
- 多任务系统:多任务系统的软件有多个任务、多个中断服务程序以及嵌入式操作系统组成,有利于降低系统的复杂度,保证系统的实时性和可维护性。
Chapter 2 Principles and Application of Microcontroller
本章将完成第一个课程设计——二自由度自动进样器控制系统的设计,采用英文教材
一、Introduction to Course Design of MCU
1.产品结构介绍
2.功能要求
- 转盘根据需要转动到指定位置
- 针头可上下移动,具有限位功能
- 控制蠕动泵转动,用于进样
- 与色谱仪进行通讯,可接受命令,也可反馈进样器的状态
- 具备针头清洗功能
3.信号设计
二、Introduction to 8051 MCU
1.8051单片机的内部结构
在学习内部结构之前,我们首先要回顾两个知识点
(1)计算机的三大组成:CPU、存储器、接口。
(2)四大接口:I/O接口、中断控制器、串行通讯接口(也称串口)、定时器(也称计数器)
---------第一大部分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
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
输入/输出端口的内部结构图
可以发现,接口引脚既可以为输入引脚,也可以为输出引脚,可以接不同的外部设备。
引脚的操作可以通过SFR(特殊功能寄存器)来实现。
输入/输出的电路连接
(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)
程序存储器是存储指令的可读存储器。
(2)数据存储器(128Bytes)
数据存储器是存储变量数据的可读可写存储器。
包括:4组寄存器R0-R7,共32字节;16字节的位寻址存储器;80字节的通用存储器。
32+16+80=128
80~FF的这128个字节我们作为特殊功能寄存器(SFR)来使用,这与0~7F这128字节不同,这其中有一部分与接口连用,有一部分在CPU内用。
但是我们也可以添加额外的内部内存,例如8052
(3)特殊功能寄存器SFR
如上图所示,其中浅蓝色的是已经规定存储内容的,而深蓝色的是还没有规定的闲置区域。
5.Counters and Timers
8051中定时器/计数器有两个Timer0和Timer1。
下面是以T0为例的原理图:
- 该计数器是+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。
T0M0、T0M1控制计数器的位数;
C/T0是信号来源的选择(晶振的信号来源作为定时器使用,外部引脚的信号来源作为计数器使用);
GATE0是决定外部引脚是否决定定时器的启动
- Timer Working Mode
代码栗子:TMOD=0x01
(2)设置初始值
代码栗子:TH0=0x3c;TL0=0xb0;
(3)开启计数器
其中TR0=1时决定Timer0开启
(4)结束计数器
当计数器计数溢出时,应当结束计数,其中TF0=1时决定Timer0溢出即结束
------------举个栗子--------------
6.URAT——串行通讯接口
首先我们先学习几个定义
(1)异步通讯和同步通讯
就如图中所说:
异步通讯——指的是两个字节传输的间隔不确定。
同步通讯——指的是按块传输,块内部之间各字节的传输间隔是一定的,但是块之间的间隔不确定
简化一点就是说一个是按字节传输,一个是按块传输
(2)波特率
一秒之内所传输的二进制位的个数,可用定时器确定
(3)UART communication format
即异步收发的一个基本格式,包括开始位、数据位、(校验位)、结束位。
(4)UART接口
该接口实现了将并行数据变为串行数据,按着一定的波特率和格式发送出来,经过232/485的驱动电路,将我们所受到的信号转换为标准的信号
接下来我们去学习在单片机中串行通讯接口的工作原理
初始化:设置模式和波特率
此图位UART接口的电路原理图
(1)功能
- 波特率产生装置
- 并行的数据转换串行的格式:并行格式的数据存放在SBUF中,通过TXD转换成串行格式输出,或者将串行数据通过RXD转换为并行格式写入到SBUF
- 接收串行数据位到SBUF
- 发送与接收同时进行
(2)如何计算波特率
其中T1 overflow rate为其溢出率
(3)SCON格式
串行通讯格式的确定是由SCON中的相关位来确定。
首先是串行通讯接口工作模式的确定,如下图所示,常用的是模式1
7.中断系统
首先我们去了解一下8051单片机中断系统的组成以及原理,然后了解针对中断系统如何编程处理中断响应,最后结合课程设计来具体理解
(1)中断系统工作原理图
图中我们可以看出中断的来源有5个来源:
- INT0 、INT1:外部中断,这是P3接口提供的两个特殊引脚,分别在P3.2和P3.3
- Timer0、Timer1:定时器/计数器,若作为计数器使用,则可通过引脚P3.4和P3.5;如果作为定时器使用,则通过内部的CLK
- UART:串口 ,收发信号都会传给R1、T1一个标志位,我们可以使用该标志位作为中断的条件
我们可以通过开关控制是否响应该中断,并且中断是拥有优先级的,因此在使用中断时我们需要编写程序。
EA:是一个总的开关
ET2:这是8052中可能会用到的
ES、ET1、EX1、ET0、EX0:分别控制UART、Timer1、INT1、Timer0、INT0中断的开关
中断优先权
有三个级别,优先级从低到高为:级别2、级别1、Reset
在中断中,优先权从低到高为:UART、Timer1、INT1、Timer0、INT0
(2)响应中断
首先中断产生之后,信号传给CPU,CPU收到之后所进行的过程如下:
- 先结束当前指令
- 将下一条指令的地址放到堆栈中进行保存
- 根据需要,查找向量表,不同的中断需要去到不同的入口地址,寻找中断的处理程序
- 在入口地址处放置跳转指令,跳转到中断处理程序中(需要自己编写)
- 运行中断程序
- CPU在堆栈中将原来的地址取出,并在基础上进行下一条指令
8.单片机功耗管理
有三种工作模式其功耗分别不同:
- Normal Mode普通模式:25mA
- Idle Mode空闲模式:6.5mA——CPU暂停,只有中断系统工作,当产生中断时,VPU被唤醒。适合电池供电场所,对功耗比较敏感的情况下使用
- Power Down Mode掉电模式:40μA ——单片机所以部分都停止工作,只有RESET可唤醒CPU进入正常工作模式,并且从头开始执行,其主要工作是保存RAM中的内容。适用于需很长时间使用的情况
当IDL=1时,CPU--->空闲模式
当PD=1时,CPU--->掉电模式
OK,到这里第一二章就结束啦!!!第三章的内容有点多且重要,所以打算单独出一篇文章!