第二讲 系统框架结构.docx
- 文档编号:23465242
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:15
- 大小:103.30KB
第二讲 系统框架结构.docx
《第二讲 系统框架结构.docx》由会员分享,可在线阅读,更多相关《第二讲 系统框架结构.docx(15页珍藏版)》请在冰豆网上搜索。
第二讲系统框架结构
第二讲系统框架结构
1.硬件结构设计
1.1硬件系统的组成部分
按照功能部件分类,单片机应用系统一般由五个基本部分组成:
(1)控制主机是整个系统得核心,它由单片机(MCU—microcontrollerunit)和数据存储器RAM,程序存储器ROM组成。
新型单片机尽可能地将RAM和ROM集成到MCU芯片内部,以简化系统提高系统抗干扰能力。
比如我们现在常用的MCS51系列单片机AT89C51、52、55分别自带256字节的RAM和4K,8K,20K的程序存储器,不用进行扩展一般就足够用了。
(2)输入接口主要包括开关量接口和模拟量接口两类,有时候为连接特殊的输入信号,比如频率信号、脉冲宽度信号、相位差信号等,需要连接一些特殊的接口,如中断输入接口,计数器接口,移位寄存器接口等。
(3)输出接口也包括开关量接口和模拟量接口两类,有时也需要输出一些特殊信号比如音频输出,PWM所输出等。
这些特殊信号有时可以用开关量或模拟量接口通过软件编程来实现,有时需要设计专门硬件电路。
(4)用户界面是控制系统不可缺少的部分。
在大型计算机控制系统中,常用的用户界面包括CRT、键盘、鼠标、触摸屏等。
这些界面信息量大,操作灵活,但占用的软硬件资源比较多,不适合像温控器这样小型系统应用。
小型系统常用数码管LED、微型液晶显示器LCD、发光二极管指示灯、按钮、开关等简单的用户界面设备。
这些设备通常只需要开销几个I/O口和较短的驱动软件。
有些应用系统没有用户界面。
比如箱内安装式或网络节点式的温控器。
这些设备通常带有一个可插入的通用编程器(相当于外接用户界面),或者是通过网络接口与普通的PC机相连,利用PC机的CRT和键盘、鼠标作为用户界面,这种模式已经成为下一代产品的主流模式。
(5)网络通讯接口并不是系统必不可少的组成部分,但带有网络接口的设备会给使用者带来很大的方便。
最常见的通讯接口是RS232串行通讯接口。
这种接口的性能不是最好的,但几乎世界所有公司的产品都支持RS232通讯标准,它的通用性最强,应用得也就最广泛。
更高级的产品带有RS484、RS488或CAN总线等新型通讯接口,这些接口实现的通讯距离更长,速度更快,可靠性更高,而且便于实现多机网络通讯,代表着未来的发展方向。
1.2需求分析
硬件设计的首要工作是根据需求确定需要的接口类型、数目。
(1)总线选择
任何微机系统中都是通过总线来将各种元件集成到一起。
总线就是一组公用的信号线。
所有的芯片都以同样的方式连接在这一组信号线上,同过总线控制逻辑来完成对不同芯片的数据存取。
总线可以大大减少微处理器的引脚和系统结构。
总线有两种基本类型,并行总线和串行总线。
在并行总线结构中,总线的每个组件都有自己的信号路径。
可能有16条地址线、8条数据线、一条时钟线和各种其它控制信号。
通过总线发送的地址或数据值会通过所有并行线路同时传送。
在总线上,如果组成一个字节的所有n个数据位,同时通过n根导线传送的话,就是并行总线;如果组成一个字节的n位数据是按时间上的先后顺序一位一位的传送,就是串行总线。
并行总线的优点是数据的传送速度快,我们把能够同时传递n位数据的并行总线称为n为总线,如早期的8086微处理器采用8位数据总线;80286采用的是16位的数据总线。
586采用的是64位的数据总线。
并行总线的缺点是集成电路的管脚多,线路复杂,设计、制造和调试都比较困难,抗干扰性能较差,只能在短距离内传送数据。
·并行接口总线的分布阻抗产生的串扰将随数据传输速率的提高而加大,因此不得不采取减少距离或保持适当传输速率的方法来保证信号质量。
·并行接口总线的安装结构复杂,40线、68线以至更多电缆线的互连、延伸会有一定的困难。
·并行接口总线连接器占据的空间较大,随着磁盘驱动器及其它外设尺寸的减少而变得更加突出。
串行总线的优点是导线根数少,接线简单。
缺点是传送数据的速度比并行总线要慢得多。
串行总线的速度通常用每秒允许传送的最大数据位表示。
比如24Mbit表示每秒可以传递24兆位的数据,如果数据是8位的,那么意味着可以传递3兆字节。
由于实验室目前能够提供比较好的并行总线的实验条件,因此在设计中要求大家采用并行总线的总线结构。
具体工程实践中,大家可以根据系统的要求和特点选择相应的总线结构。
(2)主控芯片的选择
目前市场上有多种单片机可供选择。
具体选用哪一种单片机,往往不是取决于单片机的性能差别,而取决于我们手中拥有的开发手段。
目前实验室中的开发系统适用于开发MCS51系列的单片机,所以我们选择8031作为系统的主控芯片。
MCS-51系列单片机是美国Intel公司1980年推出的高性能8位单片机,8031的片内RAM容量为128B,有2个16位的定时/计数器,一个双向通讯的的串行通讯接口,及外部中断等。
他没有程序存储器,因此必须通过总线扩展。
程序存储器的选择主要考虑的是存储器的容量。
目前市售的存储器有8K、16K、32K、64K等多中规格例如2764、27128、27256、27512等。
一般温控器这样的系统软件开销不大,所以选择2764就可以满足要求。
温控器的用户界面我们选择液晶显示器作为显示元件,并设计4*4键盘可用于设置及查询等。
除此之外,控制面板上一般还可以设置几个指示灯,分别显示当前温度超过上限、超过下限还是在控制范围之内,以及显示故障情况。
温控系统来自传感器的是微弱的电信号,经变送器放大后变成模拟电压信号传到计算机,这个信号必须经过A/D转换芯片变成数字信号送入主控芯片。
选择A/D转换芯片最重要的是分辨率和速度两个技术指标。
本设计中温度范围为20~100℃,给定的误差范围为±0.5℃,所以采用8位A/D转换器即可以满足设计要求。
在采样频率很高的时候,A/D转换芯片的转换时间是一个需要考虑的另一个关键指标,在温控系统中由于温度变化缓慢,所以可以不用考虑。
我们的系统中设计有ADC0804,完全满足要求可供使用。
温控系统的输出也是模拟信号,这个信号需要通过D/A转换来获得。
对于温控任务,D/A转换的要求很低,最廉价的D/A转换芯片一般也都能满足要求,我们的实验系统中采用的是DAC0832。
1.3最小系统设计
1.3.151系列单片机的总线结构
MCS51系列单片机的三总线的组织方法有其自己的特点。
包括两方面:
(1)单片机的数据总线(8位)和他的地址总线(16位)的低8位通常是复用的。
何时作为数据总线,何时作为地址总线由输出信号ALE来保持同步,当ALE输出为高电平时,这8条线是输出的是地址低8位,当ALE为低电平时,输出的是数据。
这样一来在扩展外围芯片时,电路中就必须增加一个8位的锁存器(如74LS373),利用ALE信号的下降沿将低位地址锁存在锁存器中,从而同时获得16位地址和8位数据。
复用的方式节省了引脚数目,但增加了外围芯片,且数据传输速度有所下降。
(2)在处理器的结构方面,通用计算机及微处理器采用“普林斯顿结构”,也称“冯.诺曼结构”,而51单片机信号处理器则采用哈佛结构。
一般微机通常只有一个地址空间,即ROM和RAM的地址同在一个队列里分配不同的地址空间。
CPU访问存储器时,用同类访问指令,可以是ROM也可以是RAM。
此种存储结构称为“普林斯顿结构”。
由于指令和数据都是二进制码,指令和操作数的地址又密切相关,因此,当初选择这种结构是自然的。
但是,这种指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。
51系列单片机的存储器在物理结构上分程序存储器空间和数据存储器空间,这种程序存储器和数据存储器分开的结构形式,称为“哈佛结构”。
优点是16位地址总线可以访问两个64K的存储空间(64KBROM程序存储器和64KBRAM数据存储器)。
为防止混淆,硬件电路结构中设计有不同的控制信号线:
RD与WR专门用于访问数据空间,另设一个PSEN信号作为程序存储器的读信号。
1.3.2读写时序
这里我们重点回顾一下访问外部数据存储器RAM的时序,需要强调的是扩展的各种外围芯片,单片机均作为外部数据存储器进行访问。
这里包括从RAM中读和写两种操作时序。
这时所用的控制信号有ALE和RD(读)或WR(写)。
此外,还要用到P0口和P2口:
P0口分时用做低8位地址和数据总线,P2口用做高8位地址线。
(1)读片外RAM操作时序
下面我们以MOVXA,@DPTR指令为例说明读片外RAM的操作时序。
8051单片机若外扩一片RAM,应将它的引脚与RAM芯片WE连接,RD引脚与芯片OE/RD引脚连接。
ALE信号用于锁存低8位地址。
ALE信号由低变高①,开始了读RAM周期。
然后CPU把低8位地址送到P0口总线上,把高8位地址送上P2口。
ALE的下降沿②用来把低8位地址信息锁存在外部锁存器74LS373内③。
然后,P0口总线变成高阻悬浮状态④。
此后,RD信号变为有效⑤,片外RAM略过片刻后把数据送上P0口总线⑥,当RD回到高电平后⑦,P0总线变为悬浮状态。
至此读片外RAM周期结束。
(2)写片外RAM操作时序
向片外RAM写(存)数据,是8051执行MOVX@DPTR,A指令后产生的动作。
这条指令执行后,在8051的WR引脚上产生WR信号有效电平,此信号使RAM的WE端被选通。
写片外RAM的时序如图3所示。
开始的过程与读过程类同。
但写的过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0总线上送完低8位地址后,就将数据送到P0总线③,此间,P0总线上不出现高阻悬浮状态。
然后,写控制信号WR有效,选通片外RAM,稍过片刻,P0上的数据就写到RAM内了。
总结上述操作时序,51系列单片机读写操作的特点,关键在于RD和WR的上跳和下跳沿:
写入时扩展芯片可以利用WR的下跳和上跳沿把数据锁存到内部
读出时扩展芯片在接收到RD下跳沿时打开三态门,RD为上跳沿时关闭三态门。
1.3.3地址译码
在大多数实际应用系统中,单片机需要扩展多个外围芯片,如何使单片机数据总线分时地与各外围芯片进行数据传送而不发生冲突,这是每一个设计者都面临的问题。
通常我们通过片选信号将各芯片区分开来:
当片选为高时,芯片内部的总线与外部总线是不通的,总线上的任何操作都不会对它的内部存储器产生影响,当CS为低时,微处理器才能对它进行读写操作。
片选信号的产生方法,有如下两种方法。
1)用线选法扩展
线选法是把单根的高位地址线直接接到存储器芯片的片选端,一根引脚对应一个片选。
它的优点是连线简单,不需专门设计逻辑电路,但它的地址空间有重叠,且利用率低。
所以我们主要介绍译码法。
2)用译码法扩展RAM
译码法就是利用译码电路对单片机的某些高位地址线进行译码,其译码输出作为存储器(或I/O口)的片选信号。
这种方法存储空间连续,能有下利用存储空间,适用于多存储器、多I/O扩扩展。
地址译码法必须采用地址译码器,常用的译码器有74LS138和74LS139等。
我们选用的是74LS138,它有A,B,C三个输入端和Y0~Y78个输出端,无论输入为何值,8个输出端中只有一个低电平,其余均为高电平。
我们把A,B,C三个输入端分别地址线A13、A14、A15,则Y0~Y7对应的地址空间如图所示。
这样我们可以把64K的寻址空间划分为8个地址段,每段8K字节。
译码后每个地址空间的起始地址为片选的基地址,芯片内部由地址线直接给定的地址为片内地址,因此任意外围芯片的任意存储单元的地址,都可以由片选基地址和片内地址相加获得。
即:
寻址地址=片选基地址+片内地址。
1.3.4外围芯片的连接
总线结构确定之后,硬件设计的关键就是仔细阅读要扩展的每个外围芯片的使用说明,搞清楚每个引脚的作用,那些连接总线间的连接方式已经高度标准化,一般只要将微处理器和各芯片的地址线A0,A1,A2,……;数据线D0,D1,D2,……;控制线WR,RD一对一的连接起来,然后选定每个芯片的基地址,将地址译码获得的相应片选线与之连接起来就可以了。
现已可编程并行接口芯片8255的扩展,为例加以说明。
8255共有40个管脚。
其中24个是它的3个8位I/o口,分别称为A口、B口和C口。
8根数据总线D0~D7,两根数据总线A0,A1,说明它有4个内部地址单元。
四根控制线分别为复位线RESET,写入线WR,读出线RD以及片选线CS。
剩下两根分别为电源线和地线。
8255的连接非常简单,只要将数据线、地址总线以及WR和RD分别连接到同名的管脚上即可。
片选线CS可以接在译码器的任意一个输出上,比如当接到Y1端时,8255的基地址为2000H,通过2000H,2001H,2002H,和2003H,可以分别读写它的A口、B口C口和控制口。
在16位地址总线中,连接8255只用了最低的2位和最高的3位,而与中间各位完全无关。
实际上,当你读写2000H~3FFFH之间任意一地址时,访问的都是这片8255,比如地址3007H地址与2003H是完全等价的,同学们可以自己分析原因。
8255的复位端RESET可以连接在单片机的一个I/O端口上(软件复位)或连接于RC复位电路,实现上电复位(硬件复位)。
2控制软件的整体框架结构
2.1控制软件的结构特点
控制系统的软件与同学们所熟悉的运算软件在整体结构上有很大不同,主要的区别在于运算程序通常都是“单进程”的,而所有的控制软件都是多进程的,即所谓“实时多任务系统”。
所谓实时性,是指微机必须在一定的时间限制内,及时地完成一系列的软件处理过程。
例如,设备中有一个紧急停止开关,无论何时只要这个开关按下,计算机必须立即作出适当的反应,否则就可能造成重大的事故。
实时的另一个含义是计算机内运算所引用的时间变量,必须与实际的时间一致。
比如在温度控制中,对象的实际温度是随着真实的时间坐标变化着的过渡过程,要想准确地反映和控制它,计算机内的时间坐标必须和真实的时间完全一致,才能进行准确的控制。
这与我们熟悉的时间过程仿真软件有根本区别。
所谓多任务,指的是计算机必须“同时”处理多项任务。
比如,一个简单的温控器也需要同时监视着键盘、传感器输入、串行通讯多个输入信号,并且要同时管理显示输出、模拟输出、报警输出等多个输出信号。
类似这种“实时多任务”的工作,如果让我们人类来完成,是没有任何困难的,因为我们的大脑和神经,相当于一台并行计算机,它适合于同时处理多项任务。
而我们目前用于控制的计算机(包括单片机)都是串行计算机。
这种计算机任何时刻都只能处理单一的一个指令,要想用它来完成实时多任务的控制功能,只能靠软件结构的设计来解决。
因为计算机的运算速度是非常快的,快到了许多任务可以在一瞬间就完成的程度,这个一瞬间无论是对于事情的发展过程来说,还是对我们人的感觉来说,都是那样的短,以至于可以近似地认为就是同时一样。
而在整个程序的运行过程中,这种一瞬间的处理过程周期性地,非常频繁地发生,频繁得无论对于事物的发展过程来说,还是对我们人的感觉来说,都好像从来没有发生过间断一样。
控制系统软件就是依据这样的思想来构成同时处理多项任务的过车观念的。
解决实时多任务问题的基本技术有两个。
一个叫“分时”,一个叫“中断”。
所谓“分时”,指的是把CPU的运算时间分成几个较小的“时间片”,每个时间片里运行一个“进程”,各进程完全平等,CPU轮流对它们进行处理,由于时间片很短小,所以看上去每个进程都在连续运行。
这种技术实现起来比较复杂,特别是各进程之间信息的交互需要复杂的技术,还要求计算机有很高的运算速度,所以目前只有在较大型的计算机中采用。
PC机目前的Win32操作系统就是采用这种技术来实现多任务并行的。
所谓“中断”,指的是CPU以一个进程为主要任务。
当有其他事件发生时,CPU中断当前进程,运行处理相应事件的进程,处理完成后再回到主进程继续运行。
这是目前应用最广泛的处理技术,所有的单片机都采用这种技术来实现多任务控制。
把每一个任务都接入一个中断源显然是不现实的,取而代之的方法是设置一个各项任务公用的定时中断。
所谓定时中断就是由系统的硬件计时器控制着,每间隔一定的时间,就对CPU申请一次中断,执行一次中断服务程序。
在中断服务程序中,每项任务都有相应的模块程序,每个程序在每次中断中都被扫描,并作出相应的处理。
实际的单片机应用程序都具有这样的结构。
它主要由背景程序和定时中断服务程序两大部分所组成。
背景程序由初始化程序和监控程序所组成。
初始化程序完成系统中各硬件和接口的上电复位和运行条件设定。
监控程序也称为操作系统程序,计算机与操作的人之间的交互是通过它来实现的。
定时中断程序中含有多个功能模块。
每个功能模块完成某一个明确的任务。
实现具体的某项功能,如测量、计算、显示、键盘扫描,控制输出等。
应用系统中除监控之外的绝大部分控制任务都要在定时中断中完成。
由此可知,定时中断是实时多任务系统中必不可少的组成部分。
在同学们将来的实践中,你们会发现,从事软件编程的时间越长,经验越多,你就越是愿意把更多的任务放到定时中断服务程序中去完成。
这不仅是因为定时中断可以及时处理许多任务,还有抗干扰方面的考虑。
因为与背景程序相比较,定时中断服务程序具有更好的抗干扰能力。
要把一个功能模块放到定时中断中去执行也是有条件的,那就是这些程序必须能够在很短的时间之内完成。
这个时间,必须远远小于定时中断产生的周期。
定时中断产生的周期也是有限制的,它必须使中断中处理的每一个过程都近似于连续运行。
不同的过程对这个周期的要求是不同的,下表列出了几种过程对中断周期的要求。
伺服控制系统(伺服电机、伺服阀等)<=1ms
I/O口管理(键盘扫描,输出口刷新等)≤10ms
压力控制、流量控制0.5~1s
温度控制30s~数分钟
由表中数据可以看出,他们之间的差别是非常大的。
有时候很难用一个定时中断程序满足系统中所有的过程的要求。
在这种情况下,可以设置两级周期不同的定时中断,在其中分别安排不同的功能模块。
有些过程的变化速度是非常快的,一旦发生必须立即响应。
比如串口通讯,一旦有字节信息到来,CPU必须立即将其取出并处理,否则接下来的信息就会把原来的覆盖掉,从而造成通讯错误。
这类的过程需要在程序中设置专门的中断服务程序来控制。
2.2定时中断产生的机理和编程方法
不同微处理器定时中断的设置方法都是大同小异的。
我们这里重温一下MCS51单片机的中断产生机理和具体的编程方法。
MCS51单片机内有2个16位定时/计数器T0和T1,其中T1通常作为串行通讯的时钟信号,所以经常用T0来产生定时中断。
单片机内部产生定时中断的逻辑线路如下图所示。
单片机内部的系统时钟为T0提供稳定的时钟脉冲,时钟脉冲的频率为单片机系统晶体振荡频率的1/12。
如果逻辑开关tr0置位,T0就开始计数。
T0可以由控制变量设置为不同的工作模式。
当设置为模式1时,T0为一个16位的加计数器,每有一个脉冲输入,它的计数值就增1。
当计数器的计数值达到FFFFH时(16位二进制数的最大值65535),再来一个脉冲计数器就会溢出,计数值重新变为0,同时在溢出端输出一个负脉冲。
如果此时逻辑开关et0和ea都置位,就会使CPU产生一次定时中断,即中止正在运行的程序,转去执行定时中断服务程序。
如果系统的晶体振荡频率为11.059MHz,则每个时钟周期为
在不加任何干预的情况下,每65535×1.085=71106μs将产生一次中断。
如果觉得这个周期太长,可以通过预置计数初值的方法改变中断周期。
即在每一次中断发生时,立即向计数器中写入一个16位二进制数,我们成其为中断时间常数TINT。
显然如果从这个数开始计数,只需经过65535-TINT微秒的时间,计数器就会溢出产生中断了。
这种方法理论上可以实现任意长短的中断。
用这样的办法产生的定时中断周期其实是不准的:
这是由于从计数器溢出到CPU响应中断并跳转到中断服务程序需要时间,进入中断后保护现场也需要时间,这就使实际的中断周期比计算值要长一点。
在汇编语言编程时这个误差是可控的,因此可以采用在时间常数上加上一个常数修正量来校准中断周期,但采用C51编程时,我们无法预先算出修正时间,所以必须采用与计数值叠加的方法来解决。
根据以上原理,我们知道,要想使MCS51单片机产生定时中断,需要完成以下几个步骤:
(1)设定计数器工作方式,对寄存器TMOD和TCON等赋值;
工作模式可以直接向TMOD中写入相应数据来设定。
采用模式1时,写入的控制字应为01H。
即:
TMOD=TMOD&0xF0
TMOD=TMOD|0X01
想一想为什么不用TMOD=0x01?
(2)写入时间常数;
在写入前应计算所需的时间常数。
例如,设系统晶振频率为11.059MHz(即时钟周期为1.085微秒),要求定时中断周期为10ms,则时间常数应为:
TINT=65536-10,000/1.085=65536-9217=56319
则相应的设置指令为:
TL0=TINT%256
TH0=TINT/256
入前所述,为修正误差,中断程序中写入的时间常数需加上计数器的当前值,即
TINT=TINT+TL0
(3)开计数器T0逻辑开关TR0TR0=1
(4)开计数器T0溢出中断开关ET0ET0=1;
(5)开总的中断开关EAEA=1。
定时中断是每个控制软件都必不可少的,所以应熟记上述内容。
2.3操作系统
操作系统其实就是一个命令解释程序。
他把操作者通过键盘、鼠标、按钮、通讯接口传入计算机中的指令代码,解释成为对应得作业顺序,通过程序执行一定的功能,然后将结果通过CRT、指示灯、数码管等显示出来。
实现所谓的人机对话。
在单片机系统中,操作系统也被称为监控系统。
他们的结构通常非常简单,而且无论采用什么设备作为输入,这种程序的结构都是固定不变的。
上图是操作系统的基本结构框图。
图中中路表示复合指令的操作过程。
多重复合指令的用途是用较少的指令形成较复杂的操作。
巧妙组合可以形成很复杂的散转结构,但不论多么复杂,其基本结构都是相同的。
C51语言中通常采用switch语句实现散转结构。
2.4C51单片机控制语言编程
2.4.1采用C51语言的理由
(1)显著提高编程效率
(2)可移植、可重用
(3)通用性强,便于学习掌握
与汇编语言相比的不足之处
(1)代码大占用硬件资源多
(2)速度慢
(3)调试时不容易发现错误
2.4.2C51与ANSYC语言的差别
语法,语句,函数基本完全相同
最大的不同在于变量在存储器中的分配:
ANSYC的变量定义语句
Externintindex;
PC机只有一种存储器,程序和数据全部在这个存储器中,MCS51单片机有多种存储器,经常需要制定变量放在哪个存储器中。
51单片机的存储器
定义时,有3个特殊变量数据类型
Sfr单字节特殊寄存器
例如sfrP0=0x80;
Sfr16双字节特殊寄存器
例如sfrT2=0xCC;
Sbit特殊位变量
例如RI=0x98;
这些特殊寄存器的名字一般都在rsg51.H文件中预定义了,可以直接使用。
使用C51定义变量时须注意
(1)时刻记住空间有限
(2)尽可能少用全局变量和静态变量
(3)不十分必要时不要采用现成的库函数
(4)出现问题时要注意变量分析
其他部分与C语言一致,自己阅读和复习
2.4.3KeilC51程序组织
KeilC51并不是面向对象的程序设计的专门语言,但我们仍可以参照这种思想和方法。
设备,单一的设备,单一的功能、同一类功能都可以视为对象例如,液晶显示器可以看作一个对象,键盘,A/D与D/A,直接数字控制算法都可以看作是一个对象。
对象包括数据(属性)和方法(函数)。
封装就是将一个对象的数据和方法全部放在一个程序模块中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二讲 系统框架结构 第二 系统 框架结构