第七章单片机应用系统设计概述 71单片机应用系统设计概述 7.11单片机应用系统的分类 按照单片机系统扩展与系统配置的状况,单片机应用系统可分为最小系统、典型应 用系统和增强应用系统等。 1最小应用系统 最小应用系统是指能维持单片机运行的最简配置系统。这种系统结构简单、成本低 廉,常构成一些简单的控制系统,如开关状态的输入/输出控制、时序控制等 这种应用系统的硬件电路构成很简单,对于片内有 EPROM的单片机,只要配上晶 振、复位电路和电源就可以构成最小应用系统。而对于片内无 EPROM的单片机,其最 小应用系统除了配置晶振、复位电路和电源外,还需扩展程序存储器。图7-1所示是8031 的最小系统 最小应用系统的功能完全取决于单片机芯片技术水平 TALI 20p XTAL2 74ts373 2716 IHRESET ALE 图7-18c31的最小系统 2典型应用系统 典型应用系统是指单片机要完成一般工业测、控功能所必须具备的硬件结构系统。 它包括系统扩展与系统配置两部分内容。 系统扩展是指在单片机内部程序存储器(ROM/ EPROM)、数据存储器(RAM及输入 /输出(/O口等部分不能满足系统要求时,需在片外扩展的部分。扩展多少,视系统 要求而定。 系统配置是指单片机为满足应用要求所应配置的基本外部设备,如键盘、显示器等。 单片机典型应用系统如图7-2所示
- 1 - 第七章 单片机应用系统设计概述 7.1 单片机应用系统设计概述 7.1.1 单片机应用系统的分类 按照单片机系统扩展与系统配置的状况,单片机应用系统可分为最小系统、典型应 用系统和增强应用系统等。 1 最小应用系统 最小应用系统是指能维持单片机运行的最简配置系统。这种系统结构简单、成本低 廉,常构成一些简单的控制系统,如开关状态的输入/输出控制、时序控制等。 这种应用系统的硬件电路构成很简单,对于片内有 EPROM 的单片机,只要配上晶 振、复位电路和电源就可以构成最小应用系统。而对于片内无 EPROM 的单片机,其最 小应用系统除了配置晶振、复位电路和电源外,还需扩展程序存储器。图 7-1 所示是 8031 的最小系统。 最小应用系统的功能完全取决于单片机芯片技术水平。 2 典型应用系统 典型应用系统是指单片机要完成一般工业测、控功能所必须具备的硬件结构系统。 它包括系统扩展与系统配置两部分内容。 系统扩展是指在单片机内部程序存储器(ROM/EPROM)、数据存储器(RAM)及输入 /输出(I/O)口等部分不能满足系统要求时,需在片外扩展的部分。扩展多少,视系统 要求而定。 系统配置是指单片机为满足应用要求所应配置的基本外部设备,如键盘、显示器等。 单片机典型应用系统如图 7-2 所示
EPRO 显示 单片机 ROM I/O扩展 图7-2典型应用系统框图 3增强应用系统 增强应用系统是指包含为了加强典型系统的人机对话、与其他设备通讯和系统测控 而增设外设与接口的系统,如图7-3所示 外设增强部分主要是外设接口,通常采用标准外部总线,如RS-232C通用串行接 口、IEEE一488仪器接口和圣特尼克( Centronic)打印机接口等。 外部设备配置的接口可以通过I/O口或扩展的I/O口构成,通常可按打印机、绘 图仪、磁带机和CRT等 口1量接只发判的数想考机有标C总口23C或计标谁接 测控增强部分主要是传感器接口与伺服驱动控制接口。它们直接与工业现场相连 是干扰进入系统的主要渠道,一般都要采取隔离措施。 测控接口一般分为输入采集与输出控制 数字量检测 先电隔腐 模拟量检测一A0D 通 型应用系统 用 干关量检测 光电隔离 外 设 干关量控制 光电隔离 伺服驱 动控制 D/A 测控增强 外设增强 图7-3增强应用系统框图 对于数字量(频率、周期、相位、计数)的采集,其输入比较简单,数字脉冲可直接 作为计数输入、测试输入、I/O口输入或作中断源输入进行事件计数、定时计数,实 现脉冲的频率、周期、相位及计数测量。对于模拟量的采集,需要通过A/D变换后才 能送总线或扩展I/O口,并要配以相应的A/D转换控制信号及地址线。对于开关量
- 2 - 3 增强应用系统 增强应用系统是指包含为了加强典型系统的人机对话、与其他设备通讯和系统测控 而增设外设与接口的系统,如图 7-3 所示。 外设增强部分主要是外设接口,通常采用标准外部总线,如 RS 一 232C 通用串行接 口、IEEE 一 488 仪器接口和圣特尼克(Centronic)打印机接口等。 外部设备配置的接口可以通过 I/O 口或扩展的 I/O 口构成,通常可按打印机、绘 图仪、磁带机和 CRT 等。 通信接口实现系统与外界的数据交换,常用串行标准接口 RS-232C 或并行标准接 口 I IEEE-488 等。飞利浦的某些型号单片机集成有 CAN 总线接口。 测控增强部分主要是传感器接口与伺服驱动控制接口。它们直接与工业现场相连, 是干扰进入系统的主要渠道,一般都要采取隔离措施。 测控接口一般分为输入采集与输出控制。 对于数字量(频率、周期、相位、计数)的采集,其输入比较简单,数字脉冲可直接 作为计数输入、测试输入、I/O 口输入或作中断源输入进行事件计数、定时计数,实 现脉冲的频率、周期、相位及计数测量。对于模拟量的采集,需要通过 A/D 变换后才 能送总线或扩展 I/O 口,并要配以相应的 A/D 转换控制信号及地址线。对于开关量
的采集则一般通过光电隔离输入I/O口或扩展I/O口 应用系统可根据任何一种输入条件或内部运行结果进行输出控制。开关量输出控制 有信号开关阵列、时序开关和逻辑开关等,一般是通过I/O口或扩展I/O口输出。模 拟量的输出常为伺服驱动控制,控制输出通过D/A变换后送入伺服驱动电路 7.12单片机应用系统的构成方式 单片机应用系统有三种结构方式 1专用系统 这种系统的扩展与配置完全是按照应用系统的功能要求设计的。系统硬件只需满足 应用要求,系统中只配备应用软件(固化在ROM或 EPROM中),故系统有最佳配置 系统的软应件资源能得到最充分的利用。但这种系统无自开发能力,要有开发工具的支 持。采用这种结构方式,要求有较强的软硬件开发基础。 专用系统主要用在大批量生产的仪器、设备和家用电器等方面作测控用。一般不需 要很多按键,甚至可以不要 2模块化系统 由于单片机应用系统的扩展与配置具有典型性,可把这些典型配置做成用户系列板 (比如主机板、A/D板、D/A板、A/D/A板、Ⅰ/O板、打印机接口板、通信接口 板等),供用户选择使用。用户可根据应用系统的要求,选择适当的功能模块组合成自 己的测控系统。模块化结构是大、中型应用系统的发展方向,它可以大大减少用户在硬 件开发上投入的力量,且可使硬件开发周期缩到最短。但目前我国单片机应用系统模块 化产品水平尚不高,软硬件配套工作还不完善,有待进一步发展。 3单片单板机系统 受通用CPU单板机(如TP801等)的影响,同时也考虑多种应用目的,国内有用单片 机来构成单片单板机。这种系统的硬件按典型应用系统配置,并配有监控程序,具有自 开发能力。但是,单扳机的固定结构形式常使应用系统不能获得最佳配置(即软硬件资 源不能得到充分利用),产品批量大时,软、硬件资源浪费较大。但这种系统可以减少 研制时的硬件工作量和部分软件工作量,并且具有二次开发能力,故可加速应用系统的 研制速度,缩短开发周期。 713单片机应用系统设计的基本要求 要设计一个最佳的单片机应用系统,设计者必须具备以下几方面的知识和能力。 (1)一定的硬件基础知识。设计者不仅要掌握各种单片机、存储器(如 EPROM、 E2PROM、RAM和I/O接口(如8255、8155、8279及其它功能器件),还要掌握键盘、 开关、检测各种输入量的传感器、控制用的执行装置以及与单片机和各种仪器进行通信 的接口等。 (2)一定的软件设计能力。设计者能根据系统的要求,设计出所需要的程序。比如 数据采样程序、A/D或D/A转换程序、数码转换程序、数字滤波程序、标度变换程 序、键盘处理程序、显示及打印程序以及各种控制算法和非线性补偿程序等等 (3)有综合运用和分析的能力。设计者要能够将一个单片机应用系统的复杂设计任 务划分成许多便于实现的组成部分,尤其是对软件和硬件折衷问题能够恰当地运用。 (4)设计者还要掌握生产过程的工艺性能及被测参数的测量方法,以及被控对象的 动、静态特性等。 对单片机应用系统设计的基本要求:
- 3 - 的采集则一般通过光电隔离输入 I/O 口或扩展 I/O 口。 应用系统可根据任何一种输入条件或内部运行结果进行输出控制。开关量输出控制 有信号开关阵列、时序开关和逻辑开关等,一般是通过 I/O 口或扩展 I/O 口输出。模 拟量的输出常为伺服驱动控制,控制输出通过 D/A 变换后送入伺服驱动电路。 7.1.2 单片机应用系统的构成方式 单片机应用系统有三种结构方式。 1 专用系统 这种系统的扩展与配置完全是按照应用系统的功能要求设计的。系统硬件只需满足 应用要求,系统中只配备应用软件(固化在 ROM 或 EPROM 中),故系统有最佳配置, 系统的软应件资源能得到最充分的利用。但这种系统无自开发能力,要有开发工具的支 持。采用这种结构方式,要求有较强的软硬件开发基础。 专用系统主要用在大批量生产的仪器、设备和家用电器等方面作测控用。一般不需 要很多按键,甚至可以不要。 2 模块化系统 由于单片机应用系统的扩展与配置具有典型性,可把这些典型配置做成用户系列板 (比如主机板、A/D 板、D/A 板、A/D/A 板、I/O 板、打印机接口板、通信接口 板等),供用户选择使用。用户可根据应用系统的要求,选择适当的功能模块组合成自 己的测控系统。模块化结构是大、中型应用系统的发展方向,它可以大大减少用户在硬 件开发上投入的力量,且可使硬件开发周期缩到最短。但目前我国单片机应用系统模块 化产品水平尚不高,软硬件配套工作还不完善,有待进一步发展。 3 单片单板机系统 受通用 CPU 单板机(如 TP801 等)的影响,同时也考虑多种应用目的,国内有用单片 机来构成单片单板机。这种系统的硬件按典型应用系统配置,并配有监控程序,具有自 开发能力。但是,单扳机的固定结构形式常使应用系统不能获得最佳配置(即软硬件资 源不能得到充分利用),产品批量大时,软、硬件资源浪费较大。但这种系统可以减少 研制时的硬件工作量和部分软件工作量,并且具有二次开发能力,故可加速应用系统的 研制速度,缩短开发周期。 7.1.3 单片机应用系统设计的基本要求 要设计一个最佳的单片机应用系统,设计者必须具备以下几方面的知识和能力。 (1) 一定的硬件基础知识。设计者不仅要掌握各种单片机、存储器(如 EPROM、 E2PROM、RAM)和 I/O 接口(如 8255、8155、8279 及其它功能器件),还要掌握键盘、 开关、检测各种输入量的传感器、控制用的执行装置以及与单片机和各种仪器进行通信 的接口等。 (2) 一定的软件设计能力。设计者能根据系统的要求,设计出所需要的程序。比如 数据采样程序、A/D 或 D/A 转换程序、数码转换程序、数字滤波程序、标度变换程 序、键盘处理程序、显示及打印程序以及各种控制算法和非线性补偿程序等等。 (3) 有综合运用和分析的能力。设计者要能够将一个单片机应用系统的复杂设计任 务划分成许多便于实现的组成部分,尤其是对软件和硬件折衷问题能够恰当地运用。 (4) 设计者还要掌握生产过程的工艺性能及被测参数的测量方法,以及被控对象的 动、静态特性等。 对单片机应用系统设计的基本要求:
可靠性要高 这是应用系统最重要的一个基本要求,尤其是在实时控制系统中,可靠性和实时性 是两项极为重要的指标。这是因为一旦系统出故障,将造成整个生产过程的混乱,监视 或指挥系统失灵,从而导致严重后果。因此,在系统设计过程中,对可靠性的考虑应贯 穿于每一个环节。提高系统的可靠性常用的方法有以下几种 (1)采用双机系统 即用两片单片机作为控制系统的核心控制器,以提高系统的可靠性。由于单片机价 格不高,连接方便,故常常使用双机系统。 (2)采用集散式控制系统 集散式控制系统是一种分级分布式控制方案。这种方案采用多个单片机作为前置处 理机,它们分别完成系统的某部分控制功能,系统则用一个主单片机对各个前置机进行 监督和管理。这种分散控制的系统,可使故障对整个系统的影响减至最小。当某一个前 置机出现故障时,它的影响只是局部的,而且它所担负的任务还可由主机或其它前置机 承担。如主机岀现故障,前置处理机仍可以独立地完成对被控对象的控制,这样就大大 地提高了系统的可靠性 MCS-51单片机的多机通信功能,非常适合于构成集散式控制系统。把一个控制系 统划分成多个相对独立的子系统,每一个子系统由一个8031控制。各个子系统经8031 的串行口和主机通信,接受主机的监督、管理。主机除了对各个子系统日常管理外,还 诊断各个子系统是否在正常运转,当发现某一个子系统有故障时,做出应急处理。这种 分布式控制系统在可靠性方面比集中式控制系统有明显的优点。 (3)进行软硬件滤波 在单片机应用系统的输入信号中,一般都含有种种噪声和干扰,它们主要来自被测 信号本身、传感器或外界干扰。为了提髙系统的可靠性,减少各种干扰对系统的影响 常常采用硬件去藕滤波及软件数字滤波来消除干扰的影响。常用的数字滤波方法有中值 滤波、算术平均值滤波和防脉冲干扰平均増值滤波等。 (4)提高元器件的可靠性 1.在系统硬件设计和加工时,力求在满足性能条件下元器件数量最少,尽量采用集 成电路或集成度高的芯片 2.对元器件进行严格的测试、筛选和老化,做到减额使用。经验表明,为了提高应 用系统的可靠性,电容器应在额定电压50%以下使用;电阻器应在额定功率25%以下 使用;电感和铁芯线因应在额定电压60%使用:晶体管应在额定功率20%-30%内使 用。当然,减额使用要视具体条件而定,比如继电器线因减荷则吸力小,使继电器正常 工作失灵,反而降低了可靠性。因此,减额使用要适当,还要视具体条件区别对待之 3.元器件的失效率随温度升高而增大,将元器件降温使用,其失效率可降低几倍到 几十倍 4.设计时对元器件的负载、速度等技术参数应留有一定的安全余量 (5)提高印刷电路板的质量,设计电路板时布线及接地要合理 (6)对供电电源采用抗干扰措施
- 4 - 1. 可靠性要高 这是应用系统最重要的一个基本要求,尤其是在实时控制系统中,可靠性和实时性 是两项极为重要的指标。这是因为一旦系统出故障,将造成整个生产过程的混乱,监视 或指挥系统失灵,从而导致严重后果。因此,在系统设计过程中,对可靠性的考虑应贯 穿于每一个环节。提高系统的可靠性常用的方法有以下几种: (1) 采用双机系统 即用两片单片机作为控制系统的核心控制器,以提高系统的可靠性。由于单片机价 格不高,连接方便,故常常使用双机系统。 (2) 采用集散式控制系统 集散式控制系统是一种分级分布式控制方案。这种方案采用多个单片机作为前置处 理机,它们分别完成系统的某部分控制功能,系统则用一个主单片机对各个前置机进行 监督和管理。这种分散控制的系统,可使故障对整个系统的影响减至最小。当某一个前 置机出现故障时,它的影响只是局部的,而且它所担负的任务还可由主机或其它前置机 承担。如主机出现故障,前置处理机仍可以独立地完成对被控对象的控制,这样就大大 地提高了系统的可靠性。 MCS-51 单片机的多机通信功能,非常适合于构成集散式控制系统。把一个控制系 统划分成多个相对独立的子系统,每一个子系统由一个 8031 控制。各个子系统经 8031 的串行口和主机通信,接受主机的监督、管理。主机除了对各个子系统日常管理外,还 诊断各个子系统是否在正常运转,当发现某一个子系统有故障时,做出应急处理。这种 分布式控制系统在可靠性方面比集中式控制系统有明显的优点。 (3) 进行软硬件滤波 在单片机应用系统的输入信号中,一般都含有种种噪声和干扰,它们主要来自被测 信号本身、传感器或外界干扰。为了提高系统的可靠性,减少各种干扰对系统的影响, 常常采用硬件去藕滤波及软件数字滤波来消除干扰的影响。常用的数字滤波方法有中值 滤波、算术平均值滤波和防脉冲干扰平均增值滤波等。 (4) 提高元器件的可靠性 1. 在系统硬件设计和加工时,力求在满足性能条件下元器件数量最少,尽量采用集 成电路或集成度高的芯片; 2. 对元器件进行严格的测试、筛选和老化,做到减额使用。经验表明,为了提高应 用系统的可靠性,电容器应在额定电压 50%以下使用;电阻器应在额定功率 25%以下 使用;电感和铁芯线因应在额定电压 60%使用;晶体管应在额定功率 20%一 30%内使 用。当然,减额使用要视具体条件而定,比如继电器线因减荷则吸力小,使继电器正常 工作失灵,反而降低了可靠性。因此,减额使用要适当,还要视具体条件区别对待之; 3. 元器件的失效率随温度升高而增大,将元器件降温使用,其失效率可降低几倍到 几十倍; 4. 设计时对元器件的负载、速度等技术参数应留有一定的安全余量。 (5) 提高印刷电路板的质量,设计电路板时布线及接地要合理 (6) 对供电电源采用抗干扰措施
①采用带屏蔽层的电源变压器;②加电源低通滤波器。 (⑦)输入输出通道采取抗干扰措施 ①采用光电隔离电路,这对数字量和开关量的输入输出效果很好 ②采用双绞线,能有效地抗共模干扰。 2.自诊断功能要强 在进行系统整体设计时,一定要考虑系统的故障自动检测和处理的功能。当系统正 常运行时,定时对各模块进行自诊断,并对外界出现的异常情况作出快速应变处理。对 于出现无法解决的情况,应能及时切换后备装置投入工作,或及时报警,以提醒人工干 预。对于集散控制系统,主机除了对各子系统的例行监督管理外,还要诊断各子系统是 否在正常运转,当发现某个系统有故障时,应立即进行处理。 3.操作和维修要方便 在系统的硬件和软件设计时,应考虑操作和维修方便,尽量降低对操作人员的专业 知识的要求,以便于系统的推广。系统的控制面板上开关不能太多、太复杂,操作顺序 应简单明了,输入输出应用十进制表示,功能符号简明直观。结构应规范化、模块化, 并配有现场故障诊断程序。 4.性能/价格比高 个单片机应用系统能否被广泛地采用,关键在于是否有很高的性能/价格比。硬件 软化是提高系统性能/价格比的实用方法。 在系统总体设计时,应尽可能减少硬件成本,能用软件实现的功能尽量用软件实现 在不增加成本的基础上,提高软件和硬件结构的通用性和可扩充性是十分重要的。 上述四点是设计单片机应用系统时应考虑的基本要求。对不同的应用系统还有许多 特定的要求,如精度、速度、体积、重量及监视手段等,这些均须根据具体系统的要求 而定。 7.14单片机应用系统硬件设计 1.应用系统硬件设计内容 个单片机应用系统的硬件设计包括两大部分内容 (1)系统扩展。通过系统扩展,构成一个完善的计算机系统,它是单片机应用系统 中的核心部分。系统的扩展方法、内容、规模与所选用的单片机系列,以及供应状态有 关。不同系列的单片机,内部结构、外部总线特征均不相同。扩展部分设计包括存储器 扩展和接口扩展。存储器的扩展指 EPROM、 EEPROM和RAM的扩展,接口扩展是指 8255、8155、8279以及其它功能器件的扩展。关于系统扩展,在此不做专门论述 (2)各功能模块的设计。如信号测量功能模块、信号控制功能模块、人机对话功能 模块、通讯功能模块等,根据系统功能要求配置相应的AD、D/A、键盘、显示器、打 印机等外围设备。 2单片机应用系统硬件设计应遵循的基本原则 为使硬件设计具有先进性、合理性,应注意以下一些原则: (1)尽可能选择典型电路,尤其是要优先选用符合单片杋常规用法的标准化、模块 化的典型申路。这样可提高设计的成功率和结构的灵活性。 (2)系统的扩展及各功能模块的设计应充分淸足应用系统的功能要求,并留有适当
- 5 - ①采用带屏蔽层的电源变压器; ②加电源低通滤波器。 (7) 输入输出通道采取抗干扰措施 ①采用光电隔离电路,这对数字量和开关量的输入输出效果很好; ②采用双绞线,能有效地抗共模干扰。 2.自诊断功能要强 在进行系统整体设计时,一定要考虑系统的故障自动检测和处理的功能。当系统正 常运行时,定时对各模块进行自诊断,并对外界出现的异常情况作出快速应变处理。对 于出现无法解决的情况,应能及时切换后备装置投入工作,或及时报警,以提醒人工干 预。对于集散控制系统,主机除了对各子系统的例行监督管理外,还要诊断各子系统是 否在正常运转,当发现某个系统有故障时,应立即进行处理。 3.操作和维修要方便 在系统的硬件和软件设计时,应考虑操作和维修方便,尽量降低对操作人员的专业 知识的要求,以便于系统的推广。系统的控制面板上开关不能太多、太复杂,操作顺序 应简单明了,输入输出应用十进制表示,功能符号简明直观。结构应规范化、模块化, 并配有现场故障诊断程序。 4.性能/价格比高 一个单片机应用系统能否被广泛地采用,关键在于是否有很高的性能/价格比。硬件 软化是提高系统性能/价格比的实用方法。 在系统总体设计时,应尽可能减少硬件成本,能用软件实现的功能尽量用软件实现。 在不增加成本的基础上,提高软件和硬件结构的通用性和可扩充性是十分重要的。 上述四点是设计单片机应用系统时应考虑的基本要求。对不同的应用系统还有许多 特定的要求,如精度、速度、体积、重量及监视手段等,这些均须根据具体系统的要求 而定。 7.1.4 单片机应用系统硬件设计 1.应用系统硬件设计内容 一个单片机应用系统的硬件设计包括两大部分内容: (1) 系统扩展。通过系统扩展,构成一个完善的计算机系统,它是单片机应用系统 中的核心部分。系统的扩展方法、内容、规模与所选用的单片机系列,以及供应状态有 关。不同系列的单片机,内部结构、外部总线特征均不相同。扩展部分设计包括存储器 扩展和接口扩展。存储器的扩展指 EPROM、EEPROM 和 RAM 的扩展,接口扩展是指 8255、8155、8279 以及其它功能器件的扩展。关于系统扩展,在此不做专门论述。 (2) 各功能模块的设计。如信号测量功能模块、信号控制功能模块、人机对话功能 模块、通讯功能模块等,根据系统功能要求配置相应的 A/D、D/A、键盘、显示器、打 印机等外围设备。 2 单片机应用系统硬件设计应遵循的基本原则 为使硬件设计具有先进性、合理性,应注意以下一些原则: (1) 尽可能选择典型电路,尤其是要优先选用符合单片机常规用法的标准化、模块 化的典型电路。这样可提高设计的成功率和结构的灵活性。 (2) 系统的扩展及各功能模块的设计应充分满足应用系统的功能要求,并留有适当
的余地,以便进行二次开发。 (3)硬件设计要结合应用软 考虑。硬件电路结构与软件方案会产生相互 影响,综合考虑的原则是;能用软件实现的功能尽可能由软件来实现,以便简化硬件电 路,但必须注意系统对速度与实时性的要求。 4)应用系统中相关的器件要尽可能做到性能匹配,例如选用晶振频率较髙时,存 储器的存取时间有限,应该选择允许存取速度较高的芯片;选择CMOS芯片单片机构 成低功耗系统时,系统中的所有芯片都应该选择低功耗的产品。 (5)在申路设计时,要充分考虑应用系统各部分的驱动能力。驱动能力不足时,系 统工作不可靠甚至无法工作,而这种不可靠很难通过一般的测试手段来确定。因此,要 重视这一问题 (6)可靠性与系统的抗干扰设计应贯穿在应用系统设计的全过程,它包括芯片、器 件的选择,去噪滤波、印刷电路板布线、通道隔离等。 (⑦)设计时要尽可能掌握最新器件与最新技术,并把它们用于设计中。因为电子技 术发展很快,各种新器件层出不穷,各种实用的新技术日新月异,只有时刻跟踪其发展 动态,才能使设计出的系统具有最先进的性能。 7.1.5应用系统的软件设计 在考虑应用系统的总体设计时,软件设计和硬件设计应统一考虑,同时进行。当系 统的硬件电路设计定型后,软件的任务也就明确了。 1.应用系统软件的功能 系统中的应用软件是根据系统功能要求设计的,软件设计得如何,将决定整个系统 的效率和系统性能的优劣。一般地讲,软件的功能可分为两大类 (1)执行软件,它能完成各种实质性的功能。如测量、计算、显示、打印、输出控 制等。 (2)监控软件,它是专门用来协调各执行模块和操作者的关系,起组织调度的作用。 2.应用系统软件设计原则 应用系统的功能相差很大,程序编制者风格各异,因此应用软件的设计因系统而异, 因人而不同。但优秀的系统软件还是有其共同的特点和规律的。在进行程序设计时应注 意以下原则: (1)根据软件功能要求,将软件分解为几个相对独立的任务,并根据这些任务的联 系和时间关系,设计一个合理的软件结构 点()培养结构化程序设计风格,各功能程序实行模块化、子程序化。这样较便于调 链接,也便于移植、修改 (3)建立正确的数学模型。根据功能要求,描述出各个输入变量和输出变量之间的 数学关系,这就是建立数学模型。在单片机应用系统中,数学模型的正确程度,是系统 性能好坏的决定因素。数学模型是随系统功能的不同而异的。例如,在测量系统中,从 模拟输入通道得到的温度、流量、压力等现场信息与该信号对应的实际值往往存在非线 性关系,则需要进行线性处理。为了削弱或消除干扰信号的影响,提髙系统精度,常采 用算术平均法、中值法等数字滤波方法 )应绘制出程序流程图。这不仅是程序设计的一个重要组成部分,而且是决定成 败的关键部分,设计者千万不可轻视这一步。 (5)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等,尤其 要注意片内RAM的分配。 (6)软件抗干扰设计,这是提高单片机应用系统可靠性的有力措施
- 6 - 的余地,以便进行二次开发。 (3) 硬件设计要结合应用软件方案一并考虑。硬件电路结构与软件方案会产生相互 影响,综合考虑的原则是;能用软件实现的功能尽可能由软件来实现,以便简化硬件电 路,但必须注意系统对速度与实时性的要求。 (4) 应用系统中相关的器件要尽可能做到性能匹配,例如选用晶振频率较高时,存 储器的存取时间有限,应该选择允许存取速度较高的芯片;选择 CMOS 芯片单片机构 成低功耗系统时,系统中的所有芯片都应该选择低功耗的产品。 (5) 在电路设计时,要充分考虑应用系统各部分的驱动能力。驱动能力不足时,系 统工作不可靠甚至无法工作,而这种不可靠很难通过一般的测试手段来确定。因此,要 重视这一问题。 (6) 可靠性与系统的抗干扰设计应贯穿在应用系统设计的全过程,它包括芯片、器 件的选择,去噪滤波、印刷电路板布线、通道隔离等。 (7) 设计时要尽可能掌握最新器件与最新技术,并把它们用于设计中。因为电子技 术发展很快,各种新器件层出不穷,各种实用的新技术日新月异,只有时刻跟踪其发展 动态,才能使设计出的系统具有最先进的性能。 7.1.5 应用系统的软件设计 在考虑应用系统的总体设计时,软件设计和硬件设计应统一考虑,同时进行。当系 统的硬件电路设计定型后,软件的任务也就明确了。 1.应用系统软件的功能 系统中的应用软件是根据系统功能要求设计的,软件设计得如何,将决定整个系统 的效率和系统性能的优劣。一般地讲,软件的功能可分为两大类: (1) 执行软件,它能完成各种实质性的功能。如测量、计算、显示、打印、输出控 制等。 (2) 监控软件,它是专门用来协调各执行模块和操作者的关系,起组织调度的作用。 2.应用系统软件设计原则 应用系统的功能相差很大,程序编制者风格各异,因此应用软件的设计因系统而异, 因人而不同。但优秀的系统软件还是有其共同的特点和规律的。在进行程序设计时应注 意以下原则: (1) 根据软件功能要求,将软件分解为几个相对独立的任务,并根据这些任务的联 系和时间关系,设计一个合理的软件结构。 (2) 培养结构化程序设计风格,各功能程序实行模块化、子程序化。这样较便于调 试、链接,也便于移植、修改。 (3) 建立正确的数学模型。根据功能要求,描述出各个输入变量和输出变量之间的 数学关系,这就是建立数学模型。在单片机应用系统中,数学模型的正确程度,是系统 性能好坏的决定因素。数学模型是随系统功能的不同而异的。例如,在测量系统中,从 模拟输入通道得到的温度、流量、压力等现场信息与该信号对应的实际值往往存在非线 性关系,则需要进行线性处理。为了削弱或消除干扰信号的影响,提高系统精度,常采 用算术平均法、中值法等数字滤波方法。 (4) 应绘制出程序流程图。这不仅是程序设计的一个重要组成部分,而且是决定成 败的关键部分,设计者千万不可轻视这一步。 (5) 要合理分配系统资源,包括 ROM、RAM、定时器/计数器、中断源等,尤其 要注意片内 RAM 的分配。 (6) 软件抗干扰设计,这是提高单片机应用系统可靠性的有力措施
(7)采取必须的软件加密措施。 7.251系列单片机高级语言c51程序设计基础 721C语言的特点 (1)语言简洁,使用方便灵活 C语言的规模较小,关键字只有32个,9种控制语句。书写形式比较自由,表示方 法简洁,使用一些简单的方法就可以构造出相当复杂的语句类型和程序结构。 (2)可移植性好 在不同的机器上80%得代码是相同的。 (3)表达能力强、方式灵活。 具有丰富的数据结构类型和运算符。利用C语言提供的运算符可以组成各种表达式, 还可以采用多种方法来获得表达式的值,从而使用户在程序设计时具有较大的灵活性 (4)可以进行结构化程序设计 C语言是一种结构化程序设计语言,即程序的逻辑结构可以顺序、选择、循环三种 基本结构组成。便于采用自顶向下的、逐步细化的结果化程序设计技术。用C语言编制 的程序具有容易理解、便于维护的优点。 (5)可以进行模块化程序设计。 C语言是以函数作为程序设计的基本单元的,编译器提供函数库供编程者调用,用 户可以自己编写特殊需要的函数,每一个函数即相当于一个程序模块,因此C语言可以 很容易地进行模块化设计。便于多人同时进行集体性开发。 (6)可以直接操作计算机硬件 C语言具有直接访问计算机物理地址的能力,C51编译器可以直接对51单片机的内 部特殊功能寄存器和IO口进行操作,可以直接访问片内片外存储器,还可以进行位操 作 7)生成的目标代码质量高。 汇编语言程序目标代码的效率是最髙的,对于同一个问题,C仅比汇编的低10%左 722C51对C语言的扩展 1标识符和关键字 C语言的标识符是用来表示源程序中某个对象名字的,这些对象可以是函数、变量、 常量、数据类型、存储方式等等。一个标识符由字符串、数字和下划线组成,开头必须 是字符或下划线。C51编译器规定的标示符长度为255个,但只有前32个有效。C语 言对于大小写敏感 关键字是一类固定名称和特定含义的特殊标识符,有时又称保留字。如int、for do等等。 C51编译器除了支持 ANSI C标准的关键字之外,还扩展了如下关键字
- 7 - (7) 采取必须的软件加密措施。 7.2 51 系列单片机高级语言 C51 程序设计基础 7.2.1 C 语言的特点 (1) 语言简洁,使用方便灵活 C 语言的规模较小,关键字只有 32 个,9 种控制语句。书写形式比较自由,表示方 法简洁,使用一些简单的方法就可以构造出相当复杂的语句类型和程序结构。 (2)可移植性好 在不同的机器上 80%得代码是相同的。 (3) 表达能力强、方式灵活。 具有丰富的数据结构类型和运算符。利用 C 语言提供的运算符可以组成各种表达式, 还可以采用多种方法来获得表达式的值,从而使用户在程序设计时具有较大的灵活性。 (4) 可以进行结构化程序设计。 C 语言是一种结构化程序设计语言,即程序的逻辑结构可以顺序、选择、循环三种 基本结构组成。便于采用自顶向下的、逐步细化的结果化程序设计技术。用 C 语言编制 的程序具有容易理解、便于维护的优点。 (5) 可以进行模块化程序设计。 C 语言是以函数作为程序设计的基本单元的,编译器提供函数库供编程者调用,用 户可以自己编写特殊需要的函数,每一个函数即相当于一个程序模块,因此 C 语言可以 很容易地进行模块化设计。便于多人同时进行集体性开发。 (6) 可以直接操作计算机硬件。 C 语言具有直接访问计算机物理地址的能力,C51 编译器可以直接对 51 单片机的内 部特殊功能寄存器和 I/O 口进行操作,可以直接访问片内片外存储器,还可以进行位操 作。 (7) 生成的目标代码质量高。 汇编语言程序目标代码的效率是最高的,对于同一个问题,C 仅比汇编的低 10%左 右。 7.2.2 C51 对 C 语言的扩展 1 标识符和关键字 C 语言的标识符是用来表示源程序中某个对象名字的,这些对象可以是函数、变量、 常量、数据类型、存储方式等等。一个标识符由字符串、数字和下划线组成,开头必须 是字符或下划线。C51 编译器规定的标示符长度为 255 个,但只有前 32 个有效。C 语 言对于大小写敏感。 关键字是一类固定名称和特定含义的特殊标识符,有时又称保留字。如 int、for 、 do 等等。 C51 编译器除了支持 ANSI C 标准的关键字之外,还扩展了如下关键字
表7-1C51缡译的扩展关键字 关键字 位标量声明 声明一个位标量或位类型的函数 sbit 位变量声明 声明一个可位寻址变量 特殊功能寄存器声明 声明一个特殊功能寄存器(8位 sfrl 特殊功熊寄存器声明 声明一个16位的特殊功能存器 存储器类型说明 直授寻址的8051内都数据存储器 bate 存储器类型说明 可位寻址的8051内部数据存儲器 idata 存储器类型说明 间接寻址的8051内部数据存储器 存储器类壅说明 “分页”寻址的8051外部数据存储器 xdata 存储器类型说明 8051外部数据存储器 code 存储器类型说明 8051程序存储器 Interrupt 中断函数声明 定义一个中断函数 rnr再人函数声明 定义一个再人函数 寄存器组定义 定义8051的工作寄存器组 2变量的数据类型 数据类型 (1)char字符型 用于存放单字节的数据,分有符号与无符号,默认为有符号, signed char,-128-1 0~255。 (2)int整数型 signed int和 unsigned int。默认为有符号,长度为双字节,范围-32768~32767, 0-65535 (3)Iong长整型 signed long和 unsigned long。默认为有符号,长度为四个字节,范围 -2147483648-2147483647,0~4294967295。 (4) float浮点型 占用四个字节,约1038~1038。 (5)*指针型 指针型数据不同于上述四种基本数据类型,它本身是一种变量,但这个变量中存储 的是量一个数据的地址。指针变量也有数据类型,它的数据类型表示该指针指向地址中 数据的类型。使用指针型变量可以方便的对单片机的各部分物理地址进行直接操作 (6)bit位标量 C51的一种扩充的数据类型。利用它可以定义一种位标量。但不能定义指针与数组。 值域为0、1。 (7)sfr特殊功能寄存器 C51的一种扩充的数据类型。利用它可以访问51系列单片机内部的所有特殊功能寄 存器,如定时器方式寄存器TMOD,中断允许控制寄存器IE等,sfr型数据占用一个字 节的内存单元。值域为0-255。 定义sfrP0=0x80;/*定义I/O口PO,其地址位80H*/ 关键字后必须是一个名字,名字可以任取,但最好符合一般的习惯,等号后边必须
- 8 - 2 变量的数据类型 数据类型 (1) char 字符型 用于存放单字节的数据,分有符号与无符号,默认为有符号,signed char, -128~127, 0~255。 (2) int 整数型 signed int 和 unsigned int。默认为有符号,长度为双字节,范围-32768~32767, 0~65535 (3) long 长整型 signed long 和 unsigned long 。 默 认 为 有 符 号 , 长 度 为 四 个 字 节 , 范 围 -2147483648~2147483647,0~4294967295。 (4) float 浮点型 占用四个字节,约 10-38 ~1038 。 (5) * 指针型 指针型数据不同于上述四种基本数据类型,它本身是一种变量,但这个变量中存储 的是量一个数据的地址。指针变量也有数据类型,它的数据类型表示该指针指向地址中 数据的类型。使用指针型变量可以方便的对单片机的各部分物理地址进行直接操作。 (6) bit 位标量 C51 的一种扩充的数据类型。利用它可以定义一种位标量。但不能定义指针与数组。 值域为 0、1。 (7) sfr 特殊功能寄存器 C51 的一种扩充的数据类型。利用它可以访问 51 系列单片机内部的所有特殊功能寄 存器,如定时器方式寄存器 TMOD,中断允许控制寄存器 IE 等,sfr 型数据占用一个字 节的内存单元。值域为 0-255。 定义 sfr P0 = 0x80; /* 定义 I/O 口 P0,其地址位 80H*/ 关键字后必须是一个名字,名字可以任取,但最好符合一般的习惯,等号后边必须
是常数,而且必须是特殊功能寄存器的地址。80H-FFH。 表2-5MCS51特殊功能寄存器一览表 SFR 位地址/位定义 字节地址 FOH D PSw AC PXO B BOH P3. P3 P3.5 P3.2 P3 ETo ACH SBU 98H SM2 REN THO 8CH 8AH TMOD GATE GATE C/T 89H 8A 89 88 IEl IT1 PCONSM GFO IDI 87H (8)sfr1616位特殊功能寄存器 占用两个字节的内存单元。值域为065535。用于定义16位的寄存器。 (9)sbit可寻址位 C51的一种扩充的数据类型。利用它可以访问51单片机内部RAM中的可寻址位或特 殊功能寄存器中的可寻址位。使用方法有三种: I sbit位变量名〓位地址;将绝对地址赋予位变量,位地址必须位于80H~FFH之间。 例如 sbit OV=0xD2 sbit CY=OxD7 2sbit位变量名=特殊功能寄存器名^位位置 当可寻址位位于特殊功能寄存器中时可以采用这种方法,“位位置”是一个0~7之间 的常数。例如PSW程序状态字寄存器
- 9 - 是常数,而且必须是特殊功能寄存器的地址。80H~FFH。 (8) sfr16 16 位特殊功能寄存器 占用两个字节的内存单元。值域为 0-65535。用于定义 16 位的寄存器。 (9) sbit 可寻址位 C51 的一种扩充的数据类型。利用它可以访问 51 单片机内部 RAM 中的可寻址位或特 殊功能寄存器中的可寻址位。使用方法有三种: 1 sbit 位变量名 = 位地址; 将绝对地址赋予位变量,位地址必须位于 80H~FFH 之间。 例如: sbit OV = 0xD2; sbit CY = 0xD7; 2 sbit 位变量名 = 特殊功能寄存器名^位位置 当可寻址位位于特殊功能寄存器中时可以采用这种方法,“位位置”是一个 0~7 之间 的常数。例如 PSW 程序状态字寄存器
sfr psw=oxdo: sbit ov= psw2 sbit Cy PSwa7 3sbit位变量名=字节地址^位位置 以一个常数(字节地址)作为基地址,该常数必须在80H-FFH之间。“位位置”是一个0-7 之间的常数。例如 sbit ov= oxdoc2 sbit CY=OxDO 7 3变量的存储模式 变量是一种在程序执行过程中能不断变化的量。它有数据类型、存储类型、存储器 模式、和有效范围四种属性。C语言规定每个变量必须有一个标识符作为变量名,在使 用一个变量前,必须先对变量进行定义,指出其数据类型和存储模式。以便编译系统为 其分配存储单元。在C51中对变量进行定义的格式如下: 存储类型数据类型储器类型变量名表 变量的存储模式是指变量的存储类型与存储器类型 存储类型指明变量的存储区域,而变量的存储类型和变量在程序中说明的位置决定 了它的作用范围。存储类型含义与C语言相同。 存储类型有四种:auto型、 extern型、 statIc型、 register型,缺省为auto型 C51编译器还允许说明变量的存储器类型。C51编译器完全支持51系列单片机的硬 件结构,可以访问其硬件系统的所有部分。 存储器类型 data 直接访问内部数据存储器(128字节),访问速度最快 bdata 可位寻址内部数据存储器(16字节),允许位与字节混合访问。 idi ata 间接访问内部数据存储器(256字节),允许访问全部内部地址。 pdata 分页访问外部数据存储器(256字节),用MOVX@Ri指令访问。 xdata 外部数据存储器(64K),用MOⅤX@DPTR指令访问。 code 程序存储器(64K),用MOvC@A+DPTR指令访问。 int bdata ibase: /*在位寻址区定义一个整型变量 ibase/ char bdata bary[4]/“在位寻址区定义一个数组aray[4]*/ 使用关键字sbit可以独立访问可位寻址对象中的某一位。例如: sbit mybitO=ibase"0 sbit mbit 15=ibase"15: sbit Ary07=bary[0]7 sbit Ary 37=bary[3]7, 采用这种方法定义可位寻址变量时要求基址对象的存储器类型为 bdata,操作符“”后 面的位位置的最大值取决于指定的基址类型,对于char来说是0~7;对于int来说是0~15; 对于long来说是0~31。 定义变量时如果省略了“存储器类型”,则按编译模式SAML, COMPACT, LARGE所规 定的默认存储器类型确定变量的存储区域,(抑 ragma预编译命令,可以指定函数的默 认存储器模式。)C51编译器的三种存储器模式(默认的存储器类型)对变量的影响如下: SMALL变量被定义在8051单片机的内部数据存储器中,因此对这种变量的访
- 10 - sfr PSW = 0xD0; sbit OV = PSW^2; sbit CY = PSW^7; 3 sbit 位变量名 = 字节地址^位位置 以一个常数(字节地址)作为基地址,该常数必须在 80H~FFH 之间。“位位置”是一个 0~7 之间的常数。例如: sbit OV = 0xD0^2; sbit CY =0xD0^7; 3 变量的存储模式 变量是一种在程序执行过程中能不断变化的量。它有数据类型、存储类型、存储器 模式、和有效范围四种属性。C 语言规定每个变量必须有一个标识符作为变量名,在使 用一个变量前,必须先对变量进行定义,指出其数据类型和存储模式。以便编译系统为 其分配存储单元。在 C51 中对变量进行定义的格式如下: [存储类型] 数据类型 [存储器类型] 变量名表; 变量的存储模式是指变量的存储类型与存储器类型 存储类型指明变量的存储区域,而变量的存储类型和变量在程序中说明的位置决定 了它的作用范围。存储类型含义与 C 语言相同。 存储类型有四种:auto 型、extern 型、static 型、register 型,缺省为 auto 型。 C51 编译器还允许说明变量的存储器类型。C51 编译器完全支持 51 系列单片机的硬 件结构,可以访问其硬件系统的所有部分。 定义变量时如果省略了“存储器类型”,则按编译模式 SAMLL, COMPACT,LARGE 所规 定的默认存储器类型确定变量的存储区域,(#pragma 预编译命令,可以指定函数的默 认存储器模式。)C51 编译器的三种存储器模式(默认的存储器类型)对变量的影响如下: 1 SMALL 变量被定义在 8051 单片机的内部数据存储器中,因此对这种变量的访