第 15章 MCS-51单片机应用系统的设计、开发与调试
15.1 MCS-51 单片机应用系统的设计的步骤设计一个单片机测控系统,一般可分为 四个步骤,
( 1)需求分析,方案论证和总体设计阶段需求分析,被测控参数的形式(电量、非电量、模拟量、数字量等)、被测控参数的范围、性能指标、
系统功能、工作环境、显示、报警、打印要求等。
方案论证,根据要求,设计出符合现场条件的软硬件方案,又要使系统简单、经济、可靠,这是进行方案论证与总体设计一贯坚持的原则 。
( 2)器件选择,电路设计制作,数据处理,软件的编制阶段。
( 3)系统调试与性能测定。
( 4)文件编制
15.2 应用系统的硬件设计
(1)单片机系统的扩展部分设计包括存储器扩展和 I/O接口扩展。存储器的扩展指
EPROM,EEPROM和 RAM的扩展,I/O接口扩展是指 8255、
8155,8279以及其它 I/O功能器件的扩展。它们都属于单片机系统扩展的内容。前面已作介绍。
(2)各功能模块的设计如信号测量功能模块、信号控制功能模块、人机对话功能模块、通讯功能模块等,根据系统功能要求配置相应的 A/D,D/A、键盘、显示器、打印机等外围设备。
1.尽可能采用功能强的芯片。
(1)单片机可考虑优先选用片内带有闪烁存储器的产品。例如 ATMEL公司的 89C51/89C52/89C55。
使用此类芯片,可使单片机扩展程序存储器的工作省去,从而减少芯片的数目,缩小体积。
(2) EPROM空间和 RAM空间。目前 EPROM容量越来越大,一般尽量选用容量大的 EPROM。
(3) I/O端口。
(4) A/D和 D/A通道。
2.以软代硬。
3.工艺设计。
15.3 应用系统的软件设计
( 1)根据软件功能要求,将系统软件分成若干个相对独立的部分。
( 2)各功能程序实行模块化、子程序化。既便于调试、链接,又便于移植、修改。
( 3)在编写应用软件之前,应绘制出程序流程图。
这不仅是程序设计的一个重要组成部分,而且是决定成败的关键部分。
( 4)要合理分配系统资源,包括 ROM,RAM、定时器
/计数器、中断源等。其中最关键的是片内 RAM分配。对 8031来讲,片内 RAM指 00H~ 7FH单元,这
128个字节的功能不完全相同,分配时应充分发挥其特长,做到物尽其用。
15.4 MCS-51单片机系统举例介绍一些基本的单片机应用系统,供设计时参考。
15.4.1 8031的最小系统
8031无片内程序存储器,因此,其最小应用系统必须在片外扩展 EPROM,必须有复位及时钟电路。图 15-1
为 8031外扩程序存储器的最小应用系统。该系统仅完成数字量的输入和输出控制。
15.4.2 89C51的最小系统
15.4.3 以单片机为核心的数据采集系统一、数据采集系统的组成数据采集系统一般由信号调理电路、多路切换电路、
采样保持电路,A/D,CPU,RAM,EPROM组成。其原理框图如图 15-3所示。
1,信号调理电路是 传感器与 A/D之间的桥梁,是测控系统中重要组成部分。主要功能:
( 1)目前标准化工业仪表通常采用 0~ 10mA,4~ 20
mA信号,为了和 A/D的输入形式相适应,经 I/V转换器变换成电压信号。
( 2)某些测量信号可能是非电量,这些非电压量信号必须变为电压信号,还有些信号即使是电压信号,
也必须经过放大、滤波,这些处理包括信号形式的变换、量程调整、环境补偿、线性化等。
( 3)某些恶劣条件下,共模电压干扰很强,如共模电平高达 220V,不采用隔离的办法无法完成数据采集任务,因此,必须根据现场环境,考虑共模干扰的抑制,甚至采用隔离措施,包括地线隔离、路间隔离等等 。
综上所述,非电量的转换、信号形式的变换、放大、
滤波、共模抑制及隔离等等,都是信号调理的主要功能。
信号调理电路包括电桥、放大、滤波、隔离等电路。
根据不同的调理对象,采用不同的电路。电桥电路的典型应用之一就是热阻测温。
信号放大电路通常由运放承担,运放的选择主要考虑精度要求(失调及失调温漂),速度要求(带宽、
上升率),幅度要求(工作电压范围及增益)及共模抑制要求。
滤波和限幅电路通常采用二极管、稳压管、电容等器件。用二极管和稳压管的限幅方法会产生一定的非线性且灵敏度下降,这可以通过后级增益调整和非线性校正补偿。
2,多路切换电路
3,采样保持电路( S/H)
4,模 -数转换( ADC)
二、数据采集系统设计中的地址空间分配与总线驱动有时要扩多片存储器芯片,要解决两个问题:
(1)如何把两个 64K存储器空间分配给各个芯片 ;
(2)如何解决对多片芯片的驱动问题。
1,地址空间的分配图 15-4是一个全地址译码的系统实例。各器件芯片所对应的地址如表 15-1所示。
器件 地址线 (A15-A0) 片内地址单元数地址编码
6264 0 0 0×××××
××××××××
8K 0000H-1FFFH
8255(1) 0 0 1 1 1 1 1 1
1 1 1 1 1 1××
4 3FFCH-3FFFH
8155 RAM 0 1 0 1 1 1 1 0
××××××××
256 5E00H-5EFFH
I/O 0 1 0 1 1 1 1 1
1 1 1 1 1×××
6 5FF8H-5FFDH
0832 0 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 7FFFH
2764 1 0 0×××××
××××××××
8K 8000H-9FFFH
表 15-1 各扩展芯片的地址
2.总线的驱动常用的单向总线驱动器为 74LS244。图 15-6为
74LS244引脚和逻辑图。 8个三态线驱动器分成两组,分别由 1和 2控制。
常用的双向驱动器为 74LS245,图 15-7为其引脚和逻辑图,16个三态门每两个三态门组成一路双向驱动。
( 1) 直流负载下 驱动器 驱动能力的估算驱动器驱动能力主要取决于高电平输出时驱动器能提供的最大电流和低电平输出时所能吸收的最大电流。
现设 IOH为驱动器在高电平输出时的最大输出电流,
IIH为每个同类门负载所吸收的电流。 IOL为驱动器在低电平输出时的最大吸入电流,IIL为驱动器需要为每个同类门提供的吸入电流。显然,如下关系满足时才能使驱动器可靠工作。
若,IOH =15mA,IOL=24 mA,IIH=0.1 mA和 IIL=0.2 mA,
求得 N1=150和 N2=120。因此,驱动器的实际驱动能力应为 120个同类门。
( 2)交流负载下驱动能力的估算总线上传送的数据是脉冲型信号,在同类门负载为容性(分布电容造成)时,就必须考虑电容的影响。若,CP为驱动器的最大驱动电容,Ci(
i=1,2,…,N)为每个同类门的分布电容。为了满足同类门电容的交流效应,驱动器负载电路应满足如下关系:
31Ni iC
若,Cp=15μF,Ci不大于 0.3μF,则根据上式可求得 N3=50。
15.3.4 应用设计例 1-水温控制系统的设计
( 1)温度控制的设定范围为 35~85 ℃,最小分辨率为 0.1℃ 。
( 2)偏差 ≤ 0.6℃,静态误差 ≤ 0.4℃ 。
( 3)实时显示当前的温度值。
( 4)命令按键 5个,复位键,功能转换键,加 1键,减 1
键。
一、硬件电路设计硬件电路从功能模块上来划分有:
(1) 主机电路
(2) 数据采集电路
(3) 键盘、显示电路
(4) 控制执行电路
1.硬件功能结构框图硬件功能结构框图如图 15-9所示。
2.数据采集电路的设计主机采用 89C51,系统时钟采用 12MHz,内部含有 4K
字节的闪烁存储器。无须外扩程序存储器。
数据采集电路主要由温度传感器,A/D转换器、放大电路等组成,见图 15-10。
3.控制执行电路的设计由单片机的输出来控制风扇或电炉。设计中要采用光电耦合器进行强电和弱电的隔离,但还要考虑到输出信号要对可控硅进行触发,以便接通风扇或电炉电路,所以可控硅选用了既有光电隔离又有触发功能的 MC3041(请见 12.2.3小节的介绍)。其中使用 P1.0控制电炉电路,P1.1控制风扇电路,如图
15-11所示。
4.键盘与显示器电路的设计键盘共有 4个键,采用软件查询和外部中断相结合的方法来设计,当某个键按下时,低电平有效。 4个键 K1~K4的功能定义如表 15-1所示。
按键 键名 功能
K1 复位键 使系统复位
K2 功能转换键 按键按下,L1亮,显示温度设定值,按键松开,L1不亮,显示当前的温度值
K3 加 1键 设定的温度值加 1
K4 减 1键 设定的温度值减 1
表 15-1 4个键 K1~K4的定义按键 S2与 INT0* (P3.2)相连,采用外部中断方式,且优先级定为高优先级。 K3和 K4分别与 P1.7和
P1.6相连,采用软件查询方式,K1为复位键,与 RC
构成复位电路。
显示电路部分利用串行口来实现 3位 LED的共阳静态显示,显示内容为温度的十位、个位以及小数点后的一位。利用串行口实现 LED的共阳静态显示的工作原理及软件编程请见 10.3.2小节的有关内容。
二、软件设计模块化设计,三大模块,主程序模块、功能实现模块和运算控制模块 。
1.主程序模块主程序流程如图 15-12所示。在主程序中首先给定
PID算法的参数值,然后通过循环显示当前温度,以等待中断,并且使键盘外部中断为高优先级,以便使主程序程序能实时响应键盘处理。软件设定定时器 T0为
5s定时,在无键按下时,应每隔 5s响应一次,以用来采集温度传感器并经 A/D转换的温度信号。设置定时器
T1为嵌套在 T0之中的定时中断,初值由 PID算法子程序提供,以用来执行对电炉或风扇的控制。
2.功能实现模块
(1)T1中断子程序
(2)键盘中断子程序
T0中断子程序
3.运算控制模块
( 1)标度变换子程序
( 2) PID算法子程序一、基本工作原理及功能仪器包括两部分:( 1)流量计部分,有时称流量变送器;( 2)流量计的附加装置,通常称为流量积算仪。整机原理框图如图 15-13所示。
15.3.5 应用设计例 2-智能涡街流量计的设计二、硬件设计
1.变送器从传感器的角度分析,压力式涡街流量计是一个压电测试系统。变送器的电子线路部分由完整的压电传感器的信号调理电路组成,其中包括电荷放大级、
失调放大级、低通滤波器及施密特整形电路等。电荷放大级属于静电测试系统,为仪表的核心部分,应该采用高输入阻抗、高增益、低漂放大器。
2.单片机系统结构及其硬件配置根据设计要求,单片机应用系统包括:①接受变送器送来的与流量成正比的脉冲,并对其定时、计数的电路;②显示器与键盘接口电路;③温度、压力传感器送来的两路信号的数据处理转换电路;④
TPμP16打印机接口及报警二极管指示电路;⑤与流量成正比的控制电流的转换驱动电路;⑥外部存储器的扩展电路。单片机系统的整体框图如图 15-14
所示,现将其中主要电路介绍如下:
( 1)显示器 /键盘接口
( 2)打印机接口
( 3) A/D与 D/A转换器与单片机的接口
3,外部存储器的扩展
( 1)程序存储器的扩展
( 2)数据存储器的扩展程序设计
1.主程序
2.中断服务程序图 15-20
3.功能块程序图 15-21
15.4.1 仿真开发系统简介一、仿真开发系统的功能应具有如下最基本的功能:
( 1)用户样机硬件电路的诊断与检查
( 2)用户样机程序的输入与修改
( 3)程序的运行、调试(单步运行、设置断点运行)、排错、状态查询等功能;
( 4)将程序固化到 EPROM芯片中。
不同的仿真开发系统都必须具备上述基本功能,但对于一个较完善的仿真开发系统还应具备:
15.4 单片机应用系统的开发和调试
( 1) 有较全的开发软件。
( 2)有跟踪调试、运行的能力。
( 3)为了方便模块化软件调试,还应配置软件转储、
程序文本打印功能及设备。
二、仿真开发系统的种类
1.通用机仿真开发系统
2.软件模拟开发系统
15.4.2 用户样机开发调试过程一、用户样机软件的设计、调试用户样机软件设计、调试的过程如图 15-23所示,
可为以下 4个步骤,
第一步,建立用户源程序。用户通过开发系统的键盘,CRT显示器及开发系统的编辑软件 WS,按照汇编语言源程序所要求的格式、语法规定,把源程序输入到开发系统中,并存在磁盘上。
第二步,在开发系统机上,利用汇编程序对第一步输入的用户源程序进行汇编,直至语法错误全部纠正为止。如无语法错误,则进入下一个步骤。
第三步,动态在线调试。这一步对用户的源程序进行调试。上述的第一步、第二步是一个纯粹的软件运行过程,而在这一步,必须要有在线仿真器配合,才能对用户源程序进行调试。用户程序中分为与用户样机硬件无联系的程序以及与其样机紧密关联的程序。
第四步,将调试完毕的用户程序通过 EPROM编程器
(也称 EPROM写入器),固化在 EPROM中。
15.4.3 用户样机硬件调试
1.静态调试静态调试工作分为 两步,
第一步 是在用户样机加电之前,先用万用表等工具,
根据硬件逻辑设计图,仔细检查样机线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,
应特别注意电源系统的检查,以防止电源的短路和极性错误,并重点检查系统总线(地址总线、数据总线、
控制总线)是否存在相互之间短路或与其它信号线的短路。
第二步 是加电后检查各芯片插座上有关引脚的电位,
仔细测量各点电平是否正常,尤其应注意 8031插座的各点电位,若有高压,与在线仿真器联机调试时,
将会损坏在线仿真器。
具体步骤如下:
(1)电源检查
(2)各元器件电源检查
(3)检查相应芯片的逻辑关系
2.联机仿真、在线动态调试
(2)检查 RAM存储器检查 RAM存储器可编译程序,将 RAM存储器进行写入,再读出,将写入和读出的数据进行比较,发现错误,立即停止。将存储器芯片插上,执行如下程序:
MOV A,#00H
MOV DPTR,#RAM ;首地址
LOOP,MOVX @DPTR,A
MOV RO,A
MOVX A,@DPTR
CLR C
SUBB A,R0
JNZ LOOP1
INC DPTR
MOV A,RO
INC A
SJMP LOOP
LOOP1:出错停止
(3)检查 I/O扩展接口若外设端口连接一片 8255,端口地址为 B000~
B003H,A口为方式 0输入,B口,C 口都为方式 0输出,
则可用下述程序进行检查:
MOV DPTR,#0B003H
MOV A,#90H ; 90H为方式控制字
MOVX @DPTR,A
NOP
MOV DPTR,#0B000H
MOVX A,@DPTR ;将 A口输入状态读入累加器 A,单步;执行完此步后暂停,;检查 PA口外部开关状态同 A中相应;位状态是否一致
CLR C
MOV A,#01H
INC DPTR
LP,MOVX @DPTR,A ;将 01H送 B口,此指令执行完后,暂;停。看 B口连接的发光二极管状态,;第 0位是否是高电平
RLC A ;将 1从 0位移到第 1位
JNZ LP
INC DPTR
RLC A
LP1,MOVX @DPTR,A ;将 01H送 C口,此指令执行;完后,看 C口第 0位输出状态
RLC A
JNZ LP1
对锁存器和缓冲器,可直接对端口进行读写,
不存在初始化的问题。
The end