单片机原理及应用(基于C51+Proteus仿真)课件 李方文 第5-10章 AT89S51单片机的中断系统-AT89S51单片机外围接口技术_第1页
单片机原理及应用(基于C51+Proteus仿真)课件 李方文 第5-10章 AT89S51单片机的中断系统-AT89S51单片机外围接口技术_第2页
单片机原理及应用(基于C51+Proteus仿真)课件 李方文 第5-10章 AT89S51单片机的中断系统-AT89S51单片机外围接口技术_第3页
单片机原理及应用(基于C51+Proteus仿真)课件 李方文 第5-10章 AT89S51单片机的中断系统-AT89S51单片机外围接口技术_第4页
单片机原理及应用(基于C51+Proteus仿真)课件 李方文 第5-10章 AT89S51单片机的中断系统-AT89S51单片机外围接口技术_第5页
已阅读5页,还剩266页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5AT89S51单片机的中断系统

本章主要内容1、了解单片机中断的概念(理解)2、理解单片机的几个中断源(理解)3、掌握外部中断结构及控制(运用)4、掌握单片机的中断函数(运用)5、掌握中断的编程方法,会举一反三(运用)5.1中断概述1、中断的概念及处理过程主程序断点继续执行主程序响应该中断请求RETI中断服务程序1、断点:就是主程序被打断的位置,即PC的值,在跳转的时候需要入栈,待返回的时候再出栈,这个由系统自动完成。2、中断与子程序的最主要区别:子程序是预先安排好的,中断是随机发生的。2、中断的几个概念中断源:能够引发中断的设备或原因中断请求:能够提示中断到来的一种标志中断响应:对中断请求的开放或屏蔽中断处理:处理具体的中断中断返回:返回到断点处2、中断的几个概念中断源:能够引发中断的设备或原因中断请求:能够提示中断到来的一种标志中断响应:对中断请求的开放或屏蔽中断处理:处理具体的中断中断返回:返回到断点处中断嵌套中断优先级(也称为中断优先权)5.2AT89S51单片机的中断源1、AT89S51单片机的中断源MCS-51单片机是一个多中断源的单片机,以AT89S51单片机为例,共5个中断源,分别是外部中断2个,定时/计数中断2个和串行中断1个。每个中断源都可以选择两个优先级。1、AT89S51单片机的中断源(1)外部中断源2个(外部中断0,外部中断1)由(P3.2)端口线引入,低电平或下降沿引起。

由(P3.3)端口线引入,低电平或下降沿引起。(2)内部中断源3个(2个定时器/计数器中断,1个串行中断

T0(P3.4):定时/计数器0中断,由T0回零溢出引起(中断标志位为TF0)。

T1(P3.5):定时/计数器1中断,由T1回零溢出引起(中断标志位为TF1)。

RXD/TXD(P3.0,P3.1):串行中断,完成一帧字符发送/接收引起(中断请求标志为TI、RI,由或门申请中断请求)。

5.3AT89S51单片机的中断控制1、外部中断源的特点(1)外部中断源2个(外部中断0,外部中断1)由(P3.2)端口线引入,低电平或下降沿引起。

由(P3.3)端口线引入,低电平或下降沿引起。2、外部中断的发生及处理过程

一个外部中断从其发生到被响应处理,需要解决以下几个问题:(1)选择什么样的信号触发中断(2)符合条件的信号到来时,有什么中断请求标志(3)中断的开放或屏蔽怎么设置?(4)优先级别高低如何区分?3、中断控制(1)定时器控制寄存器TCON(88H,可以位寻址)

定时/计数控制外部中断控制外部中断请求触发方式控制位IT0(IT1)=1时,外部中断为下降沿触发方式;IT0(IT1)=0时,外部中断为电平触发方式。解决:有效信号的选择3、中断的控制(1)定时器控制寄存器TCON(88H,可以位寻址)

分别为外部中断0和外部中断1的中断请求标志位。当CPU采样到对应端口出现有效中断信号时,IE0(IE1)位由硬件置“1”。在CPU响应中断后转向中断服务程序时,再由硬件自动清“0”。

解决:如何知晓中断到来(中断请求标志信号)3、中断的控制(1)定时器控制寄存器TCON(88H,可以位寻址)

思考:设置外部中断0下降沿触发,外部中断1低电平触发,如何写?3、中断控制(2)中断允许控制寄存器(IE)(0A8H,可以位寻址)

解决:中断的开放或屏蔽怎么设置?中断总允许控制位串行中断允许控制位外部中断0允许控制位外部中断1允许控制位定时/计数器T1允许控制位定时/计数器T0允许控制位IED7D6D5D4D3D2D1D0EA--ESET1EX1ET0EX0位地址AFH

ACHABHAAHA9HA8H3、中断控制(2)中断允许控制寄存器(IE)(0A8H,可以位寻址)

思考2:设置外部中断1允许,外部中断0屏蔽,如何写?思考3:如果写IE=0x83,则哪些中断源允许中断?IED7D6D5D4D3D2D1D0EA--ESET1EX1ET0EX0位地址AFH

ACHABHAAHA9HA8H3、中断控制(3)中断优先级控制寄存器(IP)(0B8H,可以位寻址)

解决:优先级别高低如何区分?串行中断优先级控制位外部中断0优先级控制位外部中断1优先级控制位定时/计数器T1优先级控制位定时/计数器T0优先级控制位IPD7D6D5D4D3D2D1D0---PSPT1PX1PT0PX0位地址

0BCH0BBH0BAH0B9H0B8H3、AT89S51单片机的中断优先级中断源中断标志缺省优先级外部中断0IE0最高↓↓↓最低定时器/计数器T0TF0外部中断1IE1定时器/计数器T1TF1串行口中断TI,RI思考:当人为设置优先级后,各中断源最终的优先级如何确定?IP=0x16,请写出各个中断源的优先级从高到低分别是什么IPD7D6D5D4D3D2D1D0---PSPT1PX1PT0PX0位地址

0BCH0BBH0BAH0B9H0B8H4、AT89S51单片机中断系统的结构控制位为15.4AT89S51单片机中断应用1、中断函数

C51中定义了中断函数,由于C51编译器在编译时对声明为中断服务程序的函数自动添加相应现场保护、阻断其他中断、返回时自动恢复现场等处理的程序段,因而在编写中断函数时可不必考虑这些问题,减小编写中断服务程序烦琐程度。HUANGHES&TUNIVERSITY1、中断函数

中断服务函数的一般形式为:

函数类型函数名(形式参数表)interruptnusingn

关键字interrupt后面的n是中断号,对于8051单片机,n的取值为0~4,关键字using后面的n专门用来选择4个工作寄存器区。using是一选项,如不选,中断函数中的所有工作寄存器内容将被保存到堆栈中。voidLED()interrupt2//中断号n=2,

HUANGHES&TUNIVERSITY1、中断函数

编写中断程序,应遵循以下规则:(1)中断函数没有返回值,建议将中断函数定义为void类型,明确说明无返回值。(2)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。(3)任何情况下都不能直接调用中断函数.

voidLED(

)interrupt2//中断号n=2,HUANGHES&TUNIVERSITY2、中断编程的步骤

包含主程序和中断子程序(1)主程序:初始化中断相关的SFR(方式选择、中断允许、优先级设置等);主状态描述。(2)中断子函数:描述中断处理工作HUANGHES&TUNIVERSITY3、应用举例

【例5-1】AT89S51单片机P3.2外接一个按键,单片机P2口接8个共阳LED,初始8个LED呈流水灯状态,当按键按下,LED闪烁3次返回。

HUANGHES&TUNIVERSITY

3、应用举例

HUANGHES&TUNIVERSITY3、应用举例

参考程序如下:

#include<reg51.h> #include<intrins.h>#defineucharunsignedcharvoiddelay(unsignedinti) //延时{ unsignedintj; for(;i>0;i--) for(j=0;j<333;j++) {;}}HUANGHES&TUNIVERSITY3、应用举例

voidmain(){ IT0=1; //外部中断0跳沿触发 EA=1; //总中断开启 EX0=1; //允许外部中断0 P2=0xfe; //设置初值 while(1) { delay(300); P2=_crol_(P2,1); //流水灯 }}HUANGHES&TUNIVERSITY3、应用举例

voidinter0()interrupt0 //中断子程序{ ucharm; for(m=0;m<3;m++) //循环3次 { P2=0xff; delay(200); P2=0x00; delay(200); } P2=0xfe;

//返回初值}HUANGHES&TUNIVERSITY两个外中断的应用当需要多个中断源时,只需增加相应的中断服务函数即可。【例2】如图所示,在单片机P2口上接有8只LED。在P3.2接有一只按钮开关K1,在P3.3接有一只按钮开关K2。要求K1和K2都未按下时,P1口的8只LED呈流水灯显示,仅K1(P3.2)按下再松开时,上下各4只LED交替闪烁5次,然后再回到流水灯显示。如果按下再松开K2(P3.3)时,P1口的8只LED全部闪烁5次,然后再回到流水灯显示。设置两个外中断的优先级相同。HUANGHES&TUNIVERSITYHUANGHES&TUNIVERSITY#include<reg51.h>#defineucharunsignedcharvoidDelay(unsignedinti)//延时函数Delay(),i为形式参数,不能赋初值{ucharj;for(;i>0;i--) {for(j=0;j<125;j++) {;} }} //空函数HUANGHES&TUNIVERSITYvoidmain() //主函数{uchardisplay[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水灯显示数据数组 unsignedinta;for(;;){EA=1; //总中断允许EX0=1;//允许外部中断0中断EX1=1; //允许外部中断1中断IT0=1; //选择外部中断0为跳沿触发方式IT1=1; //选择外部中断1为跳沿触发方式IP=0; //两个外部中断均为低优先级for(a=0;a<9;a++){Delay(300); //延时P2=display[a];} //将已经定义的流水灯显示数据送到P1口}

}

voidK1()interrupt0//外中断0中断服务函数{ucharm;for(m=0;m<5;m++) //闪烁显示10次{P2=0x0f;//全灭Delay(300);//延时P2=0xf0; //全亮Delay(300);}//延时}voidK2()interrupt2//外中断1中断服务函数{ucharm;for(m=0;m<5;m++)//闪烁显示10次{P2=0xff;//全灭Delay(300); //延时P2=0;//全亮Delay(300);}//延时}

6AT89S51单片机的定时器/计数器6.1定时/计数的基本概念1.基本概念(1)计数:其实质就是对外部输入脉冲的个数进行计量。(2)定时:8051单片机的定时器和计数器是一个部件,只不过计数器记录的是外部脉冲,而定时器则是由单片机内部提供一个非常稳定的计数源进行定时的。(3)定时的种类

软件定时:利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。定时时间不宜过长。

硬件定时:利用硬件电路实现定时。其特点是不占用CPU时间,通过改变电路元器件参数来调节定时,但使用不够灵活方便。对于时间较长的定时,常用硬件电路来实现。

可编程定时器:通过专用的定时器/计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。

MCS-51单片机内部有3个16位可编程的定时器/计数器,均可作定时器用也可计数器,T0、T1均是二进制加法计数器。计数器:对引脚T0(P3.4)和T1(P3.5)输入的外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。

定时器:对系统晶振振荡脉冲的12分频输出进行计数,也即是对机器周期个数进行计算。思考:计数脉冲的频率有没有要求?

计数脉冲的最高频率一般为振荡频率的1/24。2、AT89S51单片机的定时器/计数器T0、T1

6.2定时器/计数器的结构及控制1、在TMOD里设置是定时还是计数及其方式3、在TCON里设置开始启动定时/计数4、定时/计数溢出时,TF标志位被置11、定时/计数器的结构2、设置初值(1)控制寄存器TCON(88H)TF1TR1TF0TR0IE1IT1IE0IT0TF0/TF1:T0/T1计数溢出标志位。可用于申请中断或供CPU查询。=1:计数溢出;=0:计数未满。用于控制定时/计数器(定时/计数启动,溢出标志)用于中断(中断请求标志,中断触发方式)2、定时/计数器的控制TR0/TR1:T0/T1启停控制位。

=1:启动计数;=0:停止计数。

C/:定时方式/计数方式选择位。

=1:选择计数器工作方式,对T0/T1引脚输入的外部负脉冲计数;

=0:选择定时器工作方式,对机器周期脉冲计数定时(2)工作方式寄存器TMOD(89H,不可位寻址)GATEC/TM1M0GATEC/TM1M0

T1T02、定时/计数器的控制M1,M0:工作方式选择位。4种工作方式,特点不同,计数模值不同问:如果用T0的计数,方式1,怎么设置TMOD?TMOD=0x若GATE=0=1恒=1,与INT0无关只需使TR0=1即可启动定时/计数若GATE=1=0INT0必须为1同时还必须

使TR0=1GATE:门控位,定时器/计数器的启/停可由软件与硬件两者控制

=0:软件控制,只由TCON中的启/停控制位TR0/TR1控制定时器/计数器的启/停。

=1:硬件控制,由外部中断请求信号/

和TCON中的启/停控制位TR0/TR1组合状态控制定时器/计数器的启/停。

AT89S52单片机的定时器/计数器T0、T1共有四种工作模式,现以T0为例加以介绍,T1与T0的工作原理相同.1.工作方式0(M1M0=00,13位定时器/计数器)由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。

计数范围:1--8192

定时范围:1T—8192T3、定时/计数器的工作方式2.工作方式1(M1M0=01,16位定时器/计数器)由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。

计数范围:1-65536定时范围1T-65536T3.工作方式2(M1M0=10,自动重装计数初值的8位定时器/计数器)

16位定时器/计数器被拆成两个8位寄存器TH0和TL0,以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。

计数范围:1-256定时范围:1T-256T4.工作方式3(M1M0=11,仅适用于T0,为2个8位定时器和1个计数器)TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1。

方式3只适用于T0,T1不能工作在方式3(此时T1可作为串口波特率产生器)。T1方式3时相当于TR1

=

0,停止计数。6.3定时器/计数器T0、T1的编程应用

1.定时器T0/T1中断申请过程(1)在已经开放T0/T1中断允许且已被启动的前提下,T0/T1加1计满溢出时TF0/TF1标志位自动置“1”

;(2)CPU检测到TCON中TF0/TF1变“1”后,将自动转到中断向量处,执行中断服务程序;(3)TF0/TF1标志位由硬件自动清“0”,以备下次中断申请。2.定时器/计数器初始化的步骤

(1)写TMOD,设置定时器/计数器的工作方式;

(2)计算定时器/计数器的初值,写入TH0/TH1、TL0/TL1。

(3)设置IE、IP,以开放相应的中断和设定中断优先级。

(4)启动定时/计数器

3.计数器初值的计算

方法:用最大计数量减去需要的计数次数。即:x=M

C其中:x--计数器需要预置的初值;M--计数器的模值(最大计数值)方式0时,M=213;方式1时,M=216;方式2,3时,M=28;

C--计数器计满回0所需的计数值,即设计任务要求的计数值。例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机T0的工作方式1来控制,则应当预置的初值为:

x=M

C=216

12=65524,TH0=65524/256=0FFH,TL0=65524%256=0F4HHUANGHES&TUNIVERSITY4.定时器初值的计算

定时时间的计算公式为:

t=(M

x)*T

(或x=M

t/T

)其中:t——定时器的定时时间,即设计任务要求的定时时间;

T——即单片机的机器周期;

M——计数器的模值;x——定时器需要预置的初值。若设初值x=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式0:Tmax=213×1

s=8.192ms工作方式1:Tmax=216×1

s=65.536ms工作方式2和3:Tmax=28×1

s=0.256ms

【例6-1】在AT89S51单片机的P1.0口接1个发光二极管,电路原理如图6-3所示。编程实现发光二极管以1S为间隔闪烁(单片机晶振为12MHz)。

分析:1、设置TMOD:T0方式1,M1M0=01,C/T=0TMOD=000000012、设置初值:由于1S超过了定时器的最长定时时间,可以采取多次定时的方式。先根据5ms进行设置.3、每次定时时间到,次数变量加1.4、设置IE,IP等。#include<reg51.h>sbitled=P1^7;voidmain(){ TMOD=0x01; //定时器T0为方式1 TH0=(65536-5000)/256; //设置定时器初值,5ms定时 TL0=(65536-5000)%256;P1=0xfe; //LED灯点亮 EA=1; //开总中断 ET0=1; //开定时器T0中断 TR0=1; //最后启动定时器T0

while(1); //循环等待 { ; }}voidled()interrupt1//T0中断程序{

TH0=(65536-5000)/256;//重置初值

TL0=(65536-5000)%256;i--;if(i<=0){P1=~P1;//P1口按位取反i=200;//重置循环次数}}【例6-4】AT89S51单片机P1口外接8只LED,定时器T0采用计数模式,用方式2中断,引脚P3.4上外接按钮开关,作为计数信号输入。按4次开关后,P1口上的8只LED闪烁5次。分析:1、P3.4引脚对应T0,T0工作在计数方式2,TMOD=000001102、计数4次可以引发中断,初值TH0=TL0=0xfc3、每次中断时,LED闪烁5次。#include<reg51.h>#defineucharunsignedchar

voiddelay(unsignedchari){ unsignedintj; for(;i>0;i--) for(j=0;j<333;j++);}voidmain(){P1=0xff; EA=1; TMOD=0x06; TH0=0xfc; TL0=0xfc; ET0=1; TR0=1; while(1);}voidtimer1()interrupt1using1{uchari; TR0=0; for(i=0;i<8;i++) { P1=~P1; delay(500); } TR1=0;}

7AT89S51单片机的串行口7.1串行通信概述1.通信通信:单片机与外界进行信息交换统称为通信。8051单片机的通信方式有两种:并行通信:数据的各位同时发送或接收。特点是传送速度快、效率高,但成本高。适用于短距离传送数据。计算机内部的数据传送一般均采用并行方式。串行通信:数据一位一位顺序发送或接收。特点是传送速度慢,但成本低。适用于较长距离传送数据。计算机与外界的数据传送一般均采用串行方式。

2.数据通信的制式单工方式:数据仅按一个固定方向传送;半双工方式:数据可实现双向传送,但不能同时进行;全双工方式:允许双方同时进行数据双向传送;多工方式:在同一线路上实现资源共享。

3.串行通信的分类

串行数据通信按数据传送方式可分为异步通信和同步通信两种形式:同步方式:以数据块为单位进行数据传送,包括同步字符、数据块和校验字符CRC。优点是数据传输速率较高,缺点是要求发送时钟和接收时钟保持严格同步。数据格式如下图所示。异步方式:以字符为单位进行数据传送,每一个字符均按固定的字符格式传送,又被称为帧。优点是不需要传送同步脉冲,可靠性高,所需设备简单;缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。4、波特率

波特率用来衡量串行通信系统中数据传输的快慢程度。数字通信所传输的是一个接一个按节拍传送的数字信号单元。波特率是指每秒钟传送信号的数量,单位为波特B(Baud)。每秒钟传送二进制数的信号数(即二进制数的位数)定义为比特率,单位是bps(bitpersecond)或写成b/s(位/秒)。在单片机串行通信中,传送的信号是二进制信号,因此波特率与比特率数值上相等,单位采用bps。

通信双方每秒钟所传送数据的速率是240字符/秒,每一字符包含10位(1个起始位、8个数据位、1个停止位),则波特率为240×10=2400b/s=2400B

在串行通信中,相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。7.2AT89S51单片机串行口

AT89S51单片机内部有一个全双工的串行通信口(P3.0、P3.1),既可作UART(通用异步接收/发送器)用,也可作同步移位寄存器使用.有两个物理上独立的接收、发送缓冲器SBUF(特殊功能寄存器),可同时收发数据。发送缓冲器只写不读,接收缓冲器只读不写,两个缓冲器共用一个特殊功能寄存器字节地址(99H)。1、结构2、控制(1)串行口控制寄存器SCON

用于定义串行口工作方式和实施接收/发送控制,字节地址为98H,可按位寻址1)SM0,SM1:串行口工作方式控制位,SM0、SM1的4种组合控制了串行口的4种工作方式。(2)SM2—多机通信控制位

SM2位主要用于方式2或方式3。2)SM2

当串口以方式2或方式3接收时,如SM2=1,则只有当接收到的第9位数据(RB8)为“1”时,才使RI置“1”,产生中断请求,并将收到的前8位数据送入SBUF;当收到的第9位数据(RB8)为“0”时,则将收到的前8位数据丢弃。

当SM2=0时,则不论第9位数据是“1”还是“0”,都将接收的前8位数据送入SBUF中,并使RI置“1”,产生中断请求。

方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。

方式0时,SM2必须为0。3)REN—允许串行接收位,由软件置“1”或清“0”。

REN=1,允许串行口接收数据。 REN=0,禁止串行口接收数据。 4)TB8—发送的第9位数据在方式2和方式3时,TB8是要发送的第9位数据,其值由软件置“1”或清“0”。

在双机串行通信时,TB8一般作为奇偶校验位使用;也可在多机串行通信中表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。

5)RB8—接收的第9位数据在方式2和方式3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。6)TI—发送中断标志位7)RI—接收中断标志位(2)特殊功能寄存器PCON

4种工作方式由特殊功能寄存器SCON中SM0、SM1定义。(1)方式0

方式0为同步移位寄存器输入/输出方式。以8位数据为1帧,没有起始位和停止位,先发送或接收最低位。波特率是固定的,为fosc/12。3、工作方式串行口在方式0下的工作并非是一种同步通信方式,经常配合“串入并出”“并入串出”移位寄存器一起使用,以达到扩展一个并行口的目的。(2)方式1波特率可变的8位异步通信方式,发送/接收数据的格式:一帧信息包括1个起始位0,8个数据位和1个停止位1。

发送/接收过程:每送出/接收8位数据TI/RI自动置1;需要用软件清零TI/RI。工作时,发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。(3)方式2

串口工作于方式2和方式3时,为9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控为1或0的第9位数据,1位停止位。方式2、方式3帧格式如图所示。

1)方式2发送发送前,先由通信协议由软件设置TB8(如奇偶校验位或多机通信的地址/数据的标志位),然后将要发送的数据写入SBUF,即可启动发送过程。串行口能自动把TB8取出,并装入到第9位数据位的位置,再逐一发送出去。发送完毕,则使TI位置“1”。

852)方式2接收

当SCON寄存器SM0、SM1=10,且REN=1时,允许串行口以方式2接收数据。接收时,数据由RXD端输入,接收11位信息。在接收完第9位数据后,需满足以下两个条件,才将接收到的数据送入接收缓冲器SBUF。

(1)RI=0,意味着接收缓冲器为空。(2)SM2=0或接收到的第9位数据位RB8=1。

当满足上述两个条件时,接收到的数据送入SBUF(接收缓冲器),第9位数据送入RB8,且RI置“1”。若不满足这两个条件,接收的信息将被丢弃。

86(4)方式3

当SM0、SM1两位为11时,串行口被定义工作在方式3。方式3为波特率可变的9位异步通信方式,除了波特率外,方式3和方式2相同。8788单片机和PC机通信时需要考虑波特率的数值,因为PC机串行口的波特率是某些标准的数值(600bps的整数倍),单片机要与PC机正常通信,也需要采用这些特定的波特率。经验证,当时钟频率选用11.0592MHz时,容易获得标准的波特率,所以很多单片机系统选用这个晶振频率。定时器在工作方式2时的常用波特率及初值如表7-3所示。7.3串行口的应用

【例7-1】如图7-4,单片机甲、乙双机串行通信,双机RXD和TXD相互交叉相连,甲机P1口接8个开关,乙机P1口接8个发光二极管。甲机设置为只能发送不能接收的单工方式。要求甲机读入P1口的8个开关的状态后,通过串行口发送到乙机,乙机将接收到的甲机的8个开关的状态数据送入P1口,由P1口的8个发光二极管来显示8个开关的状态。双方晶振均采用11.0592MHz。9091在编程的时候,两个单片机的程序分别编写,然后加载到对应的单片机中仿真即可。程序如下://甲机的发送程序#include<reg51.h>#defineucharunsignedchar#defineuintunsignedint

92voidmain()//主程序{ ucharSEND=0; SCON=0x40; //串口模式1 TMOD=0x20; //T1工作模式2 TH1=0xfd; //波特率9600 TL1=0xfd; PCON=0x00; //波特率不倍增 TR1=1; P1=0xff; while(1) {while(TI==0); TI=0; SEND=P1; SBUF=SEND;}}

93

8单片机并行扩展技术一个完整的MCS-51单片机应用系统,是由系列芯片扩展外围器件组成的。这种通过扩展外围器件形成应用系统的原理和方法,称之为接口技术。接口技术从功能上可分为两大类:单片机自身资源的扩展技术和外部功能器件的扩展技术。本章主要介绍单片机系统的并行扩展。8.1并行扩展技术概述一、单片机系统并行扩展原理三总线:(1)地址总线(AddressBus,AB):传送单片机单向发出的地址信号,以便进行存储单元和I/O接口芯片中的寄存器单元选择。(2)数据总线(DataBus,DB):用于单片机与外部存储器之间或与I/O接口之间双向传送数据。(3)控制总线(ControlBus,CB):是单片机发出的各种控制信号线。

(1)用“地址总线”来确定数据传送对象的唯一性。(2)用“控制总线”来确定传送方向和传送时刻。二、单片机系统并行扩展的方法1.数据线的连接。

在P0口负载能力满足外围电路输入电流要求的情况下,将单片机的P0口和外围器件芯片的数据线对应引脚直接相连即可。否则应在两者之间添加电流驱动器件。2.控制线的连接。

连接到程序存储器件芯片的输出有效信号引脚

连接数据存储器件芯片的

连接数据存储器间芯片和I/O芯片的

端。即在地址编码相同时,用不同的控制信号来区分数据和程序两类存储芯片3.地址线的连接。

地址线连接需满足两个条件:一是要指定某个芯片工作,我们叫做“片选”(选择芯片);二是要指定被选中的芯片内部的存储单元,我们叫做“字选”(选择字节单元),也就是使该芯片的引脚信号有效。常用的存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法),下面分别介绍。1.线选法直接利用单片机某一高位地址线作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只要用某一高位地址线与存储器芯片的“片选”端直接连接即可。

优点:电路简单,不需另外增加地址译码器硬件电路,体积小,成本低。

缺点:可寻址芯片数目受限制。另外,地址空间不连续,存储单元地址不唯一,这会给程序设计带来一些不便。线选法适用于外扩芯片数目不多的单片机系统的系统扩展。

2.译码法使用译码器对AT89S51单片机的高位地址进行译码,将译码器的译码输出作为存储器芯片的片选信号。

三、地址锁存器和地址译码器AT89S51单片机受引脚数的限制,P0口兼用数据线和低8位地址,为了将它们分离出来,需要在单片机外部增加地址锁存器。目前,常用的地址锁存器芯片有74LS373、74LS573等。1、地址锁存器

由LS373功能表知,在拴锁允许控制端LE(引脚11)=高电平时,输出端On的电平随输入端Dn而变化,LE=低电平时,输出端On的电平被保持住(O0)而不再变化。即On“锁存”了LE=0开始瞬间Dn端的数据。我们把P0口和74LS373的Dn端按二进制位从低到高对应连接,地址锁存允许信号ALE和74LS373的拴锁允许控制端LE相连,在P0端口输出低8位地址总线编码数据时,用ALE的下降沿将它们锁存存在74LS373的Dn端。从而实现了分离A0~A7总线数据并锁存的目的。3、地址译码器地址译码器是对地址总线中“字选”所剩余的高位地址线的编码数据进行译码,译出地址线编码所对应的IC芯片。译码器的有效输出是低电平,连接到IC芯片的“片选”引脚。因此,地址译码器也可以理解为“片选译码器”。它可以用普通逻辑门电路组成,也可以使用专用的译码器件。(1)用普通逻辑门电路组成译码电路(2)专用译码器

常用的专用译码器芯片有74LS139(双2—4译码器)、74LS138(3—8译码器)、74LS154(4—16译码器)等【例8-1】试用16KB的存储器芯片,组成容量64KB的存储器区,请问:(1)需用多少个存储器芯片?多少条地址线?其中“字选”用哪些地址线、“片选”用哪些地址线?(2)若用74LS139译码器,试画出译码电路,并标出其输出引脚的选址范围。(3)若该用线选法,能组成存最大的储空间是多少?解:(1)64KB÷16KB=4(片)需要4片16KB的存储器芯片64KB=216

需要16条地址线16KB=214需要条14条“字选”线4片=22

需要2条“片选线” (2)低位14地址线A0~A13为“字选”,高2位地址A15A14线为“片选”。8.2存储器扩展在进行存储器扩展时,要考虑以下几个问题:1.选择合适类型的存储器芯片2.要考虑工作速度匹配3.选择合适的存储容量要根据实际的存储容量需要,选择合适的存储容量。在MCS-51应用系统所需存储容量不变的前提下,若所选存储器本身存储容量越大,则所用芯片数量就越少,所需的地址译码电路就越简单。4.合理分配存储器地址空间的分配要根据外扩存储器的类型,选择合适的地址译码方式,并合理进行地址空间的分配。一、存储器扩展的原则二、Flash存储器的扩展Flash存储器,又叫PEROM(ProgrammableandErasableReadOnlyMemory)存储器,也是一种可在线编程擦除写入的只读存储器件。29C256可作为ROM和RAM两种存储器使用三、静态数据存储器SRAM的扩展【例8-2】编写程序将片外数据存储器中的0x5000~0x50FF的256个单元全部清“0”。参考程序:xdataunsignedchardatabuf[256]_at_0x5000;voidmain(void){ unsignedchari; for(i=0;i<256;i++) { databuf[i]=0}}8.3并行I/O端口扩展

单片机将片外的并行I/O接口地址和片外的存储器统一编址,就是把片外的I/O端口看成是片外数据存储器的单元。因此片外的I/O接口的扩展方法和片外的数据存储器完全相同,即两者的读写操作时序一致、三总线连接方法相同。一、并行I/O端口的简单扩展

并行I/O端口,是在MCS-51和外部IC芯片之间,以并行传送8位数据的方式,实现输入/输出操作的端口。和存储单元一样,I/O端口有自己的编码地址线、读写控制线和数据线。扩展简单并行I/O端口,就是扩展可以直接操作、能并行输入输出数据、具有一定驱动能力和输出锁存功能的I/O单元。

扩展简单并行I/O端口的方式,通常采用普通的TTL电路和CMOS门电路实现。一、可编程并行I/O端口芯片扩展

并行I/O端口扩展,除了简单扩展方式外,还可以用并行I/O端口的可编程芯片进行扩展。MCS-51单片机常用的两种接口芯片是8255以及8155,本节主要介绍Intel8255A芯片在MCS-51单片机系统中的扩展方法。一、引脚说明●D7~D0—三态双向数据线,与单片机的P0口连接。●/CS*—片选信号线,低电平有效。●/RD*—读信号线,低有效,用来读出82C55端口数据。●/WR*—写信号线,低有效,用来向82C55写入端口数据。●Vcc

+5V电源。●PA7~PA0—

端口A输入/输出线。PB7~PB0—

端口B输入/输出线。●PC7~PC0—

端口C输入/输出线。●A1、A0—地址线,选择82C55内部4个端口。●RESET—复位引脚,高有效①端口PA、PB、PC3个8位并行口PA、PB和PC,它们都可选为输入/输出工作模式.●PA口:1个8位数据输出锁存器和缓冲器;1个8位数据输入缓冲器。●PB口:1个8位数据输出锁存器和缓冲器;1个8位数据输入缓冲器。●PC口:1个8位的输出锁存器;1个8位数据输入缓冲器。通常PA口、PB口作为输入/输出口,PC口既可作为输入/输出口,也可在软件控制下,分为两个4位端口,作为端口PA、PB选通方式操作时的状态控制信号。二、内部结构

②A组和B组控制电路

AT89S51写入的“命令字”控制82C55工作方式的控制电路。A组控制PA口和PC口的上半部(PC7~PC4);B组控制PB口和PC口的下半部(PC3~PC0),并可使用“命令字”来对端口PC的每一位实现按位置“1”或清“0”。

③数据总线缓冲器数据总线缓冲器是一个三态双向8位缓冲器,作为82C55与系统总线之间的接口,用来传送数据、指令、控制命令以及外部状态信息。④读/写控制逻辑电路读/写控制逻辑电路接收AT89S51单片机发来的控制信号RD*、WR*、RESET、地址信号A1、A0。A1、A0共4种组合00、01、10、11,分别选择PA、PB、PC及控制寄存器的端口地址。根据控制信号不同组合,端口数据被AT89S51读出,或者将AT89S51送来的数据写入端口。各端口工作状态与地址信号A1、A0及控制信号关系见表。三、8255A芯片的控制字

AT89S51可向82C55控制寄存器写入两种不同控制字:工作方式选择控制字及端口PC置位/复位控制字。首先来介绍工作方式选择控制字。(1)工作方式选择控制字82C55有3种工作方式:

方式0—基本输入/输出;

方式1—应答输入/输出;

方式2—双向传送(仅PA口有此工作方式)。

3种工作方式由写入控制寄存器的方式控制字决定。方式控制字格式见图8-13。最高位D7=1,为本控制字标志,以便与端口PC口置位/复位控制字相区别(端口PC置位/复位控制字最高位D7

=

0)。3个端口中PC口被分为两个部分,上半部分随PA口称为A组,下半部分随PB口称为B组。其中PA口可工作于方式0、1和2,而PB口只能工作在方式0和1。【例8-3】

AT89S51与8255的连接如图8-14所示。将82C55编程设置为:PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7~PC4)输出,PC口的下半部分(PC3~PC0)输入。

分析:图8-14中8255A只有3条线与AT89S51单片机的地址线相接,片选端与P0.7相连,端口地址选择端A1、A0分别与P0.1和P0.0连接,其他地址线未用。显然,只要保证P0.7为低电平时,即可选中8255A芯片;若P0.1、P0.0再为“00”,则选中8255A的PA口,同理P0.1、P0.0为“01”、“10”、“11”分别选中PB口、PC口及控制口。

若端口地址用十六位表示,其他未用端全为“1”,则8255A的PA、PB、PC及控制寄存器地址分别为0xff7c、0xff7d、0xff7e以及0xff7f。根据图8-13,写入工作方式控制字为10010101B,即为0x95。参考程序如下:#include<absacc.h>#defineCOM8255XBYTE[0xff7f]//0xff7f为8255的控制寄存器地址#defineucharunsignedchar

voidinit8255(void)

{

COM8255=0x95; //方式选择控制字写入8255控制寄存器

}(2)C口按位置位/复位控制字

图8-15为8255的C口按位置位/复位控制字格式。最高位D7=0,为本控制字标志,本控制字可以实现对PC口按位置“1”或清0。【例8-4】如图8-14所示,将82C55编程设置为PC1清0,PC5置1。分析:由图8-15,将PC1口清0,需要设置8255口按位置位/复位控制字为0XXX0010B,可以写出00000010B,即0x02;将PC5口置1,需要设置按位置位/复位控制字为0XXX1011B,可以写出00001011B,即0x0b。参考程序段如下:#include<absacc.h>#defineCOM8255XBYTE[0xff7f]//0xff7f为8255控制寄存器地址……voidinit8255(void){ COM8255=0x02; //置位/复位控制字写入控制端口,PC1=0

COM8255=0x0b;//置位/复位控制字写入控制端口,PC5=1

……}三、8255A的三种工作方式1)方式0(基本输入/输出方式):不需要任何选通信号,适合于无条件传输数据的设备,数据输出有锁存功能,数据输入有缓冲(无锁存)功能。2)方式1(选通输入/输出方式):A组包括A口和C口的高四位(PC7~PC4),A口可由程序设定为输入口或输出口,C口的高四位则用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低四位(PC3~PC0),功能和A组相同。3)方式2(双向I/O口方式):仅A口有这种工作方式,B口无此工作方式。此方式下,A口为8位双向I/O口,C口的PC7~PC3用来作为输入输出的控制和同步信号。此时,B口可以工作在方式0或方式1。【例8-6】根据图8-19,要求8255PA口方式0输入,PB口方式1输出,PC口的上半部分(PC7~PC4)输出,PC口的下半部分(PC3~PC0)输入,并从PC6脚输出连续的方波信号,频率为1KHz。

分析:根据工作方式,设定工作方式控制寄存器为0x85。PC6口输出1KHz方波,则高低电平持续的时间分别为500us。可以先写一个500us的延时程序delay_500us(),并在函数之前对其进行声明。参考程序:

#include<reg51.h>

#include<absacc.h>

#definePA8255XBYTE[0xff7c]//0xff7c为82C55PA端口地址

#definePB8255XBYTE[0xff7d]//0xff7d为82C55PB端口地址

#definePC8255XBYTE[0xff7e]//0xff7e为82C55PC端口地址

#defineCOM8255XBYTE[0xff7f]//0xff7f为82C55控制端口地址

#defineucharunsignedcharexternvoiddelay_500us();voidinit8255(void)

{

COM8255=0x85; //工作方式控制字写入控制寄存器

}voidmain(void)

{

init8255(void)

for(;;)

{

COM8255=0x0d; //PC5脚为高电平

delay_500us(); //高电平持续500us

COM8255=0x0c; //PC5脚为低电平

delay_500us(); //低电平持续500us

}

}

9单片机串行扩展技术本章讲述的串行I/O总线扩展技术,特指在同一块印制板上,单片机和外围的串行IC芯片之间的数据交换技术,是单片机串行I/O数据交换接口和功能的扩展。本章串行I/O总线扩展技术是该技术共包含三种总线方式:SPI(SerialPeripheralInterface)总线、I2C(ICTOICBUS)总线和One-Wire总线。9.1SPI串行总线技术

串行外设总线SPI(SerialPeripheralInterface)是Motorola公司推出的串行外设总线,是一种高速的,全双工,同步的通信总线,由于其在芯片的管脚上只占用四根线,既节约了芯片的管脚又为PCB的布局节省了空间

带SPI接口的外围器件都有片选端,其特点是数据传送速度较高(可达1.05Mbps),硬件扩展比较简单,软件实现方便。一、SPI总线概述

图9-1中,Master为主器件,Slave为从器件。SCLK为同步时钟信号,由主器件产生,也简称SK;MOSI为主器件输出,从器件输入线,简称SI;MISO为主器件输入,从器件输出线,简称SO;/SS为从器件使能信号,由主器件控制,用来选择和主机通信的外围芯片。SPI系统数据交换的时序信号定义见图9-2。在

信号有效后,SPI芯片被选中,数据传送在MOSI/MISO总线上进行,在SCK的控制下,从高位至低位逐位传送。8位送完,

信号复位,传送结束。需要注意的是,对应不同的芯片,SCK信号的触发方式不同,图9-2中列出了4种形式,选用时需查阅具体SPI芯片的使用说明。另外,若使用的SPI芯片只需单向的数据传送,可省去不用的SI或SO;若只有单个芯片,可将引脚接地,此时SPI和单片机的连接只需2条线。

MCS-51系列单片机中,多数单片机内部没有SPI接口,我们可以用软件控制单片机I/O引脚的电平时序,来模拟3条总线。

TLC549是美国TI推出的一种低价位、高性能的8位A/D转换器,它以8位开关电容逐次逼近方法实现A/D转换,其转换速度小于17µs,最大转换速率为40kHz,内部系统时钟的典型值为4MHz,电源为3~6V。

1、TLC549的引脚及功能二、应用实例REF+:正基准电压输入,2.5V≤VREF+≤Vcc+0.1V。

REF-:负基准电压输入端,-0.1V≤VREF-≤2.5V。

且:(VREF+)-(VREF-)≥1V。VCC:电源,3V≤VCC≤6V。GND:地。:片选端。

DATAOUT:转换结果数据串行输出端,与TTL电平兼容,输出时高位在前,低位在后。

ANALOGIN:模拟信号输入端,0≤VANALOGIN≤Vcc,当VANALOGIN≥VREF+时,转换结果为全“1”(0xff),当VANALOGIN≤VREF-电压时,转换结果为全“0”(0x00)。

I/OCLOCK:外接输入/输出时钟输入端,用于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。

2、TLC549的工作时序(1)串行数据中高位A7先输出,最后输出低位A0;

(2)在

变为低电平后,前一次转换结果的最高有效位(A7)自动置于DATAOUT总线。其余7位(A6~A0)在前7个I/OCLOCK下降沿由时钟同步输出。(5)当

变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB(A7)自DATAOUT端输出,接着要求从I/OCLOCK端输入8个外部时钟信号

第8个I/OCLOCK下降沿后,CS必须为高,或I/OCLOCK保持低电平,这种状态需要维持36个内部系统时钟周期以等待转换工作的完成。

由此可见,在TLC549的I/OCLOCK端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次转换开始。

【例9-1】单片机控制串行8位A/D转换器TLC549进行A/D转换,原理电路与仿真结果见图9-5。由电位计RV1提供给TLC549模拟量输入,通过调节RV1上的“+”、“−”端,改变输入电压值。编写程序将模拟电压量转换成二进制数字量,本例用P0口输出控制8个发光二极管的亮与灭显示转换结果的二进制码。参考程序如下:#include<reg51.h>#include<intrins.h> //包含_nop_()函数头文件#defineucharunsignedchar#defineuintunsignedint#defineledP0sbitsdo=P1^0; //定义P1.0与TLC549的SDO脚(即5脚DATAOUT)连接sbitcs=P1^1; //定义P1.1与TLC549的脚连接sbitsclk=P1^2;//定义P1.2与TLC549的SCLK脚(即7脚I/OCLOCK)连接voiddelayms(uintj) //延时函数{ uchari=250; for(;j>0;j--) {while(--i); i=249; while(--i); i=250; }}voiddelay18us(void) 延时约18µs函数{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();nop_();_nop_();}ucharconvert(void){ uchari,temp; cs=0;delay18us();for(i=0;i<8;i++) { if(sdo==1)temp=temp|0x01; if(i<7)temp=temp<<1; sclk=1; _nop_();_nop_();_nop_();_nop_(); sclk=0; _nop_();_nop_();} cs=1; return(temp);}voidmain(){ucharresult;led=0;cs=1;sclk=0;sdo=1;while(1) { result=convert(); led=result; //转换结果从P0口输出驱动LED delayms(1000); }}9.2串行I2C总线接口技术I2C总线(InterIntegrateCircuitBUS,或ICTOICBUS),又叫IIC总线,是Philips公司设计的一种IC芯片之间的全双工同步串行总线技术。和SPI总线相比,它用的通信连线更少,采用2条线实现数据通信。一、I2C串行总线接口基本结构

1.I2C串行总线的特点1)使用2条通信总线交换数据。一条是时钟线SCL,另一条是数据线SDA。数据线SDA上传送数据,数据传送以帧为单位,每帧含一个字节数据和一位应答信号位,数据字节的传送次序为先高位后低位;时钟线SCL提供数据传送的位同步信号。2)2条总线的数据传送都是双向的,挂接在总线上的I2C器件,接口为开漏极形式,须接上拉电阻。3)I2C芯片的寻址方式采用引脚设置、软件寻址,和MSC-51的地址总线无关。“引脚电平”是芯片有3个地址引脚,可接固定的“0”“1”电平而设置成不同的引脚地址。软件寻址指令的编码内容包括“器件标识”、“引脚电平”和“方向位”三部分,如表9-1所示。

2.I2C总线的数据传输协议及方式1.数据位的有效性规定I2C总线数据传送时,每一数据位传送都与时钟脉冲相对应。时钟脉冲为高电平期间,数据线上数据须保持稳定,在I2C总线上,只有在时钟线为低电平期间,数据线上电平状态才允许变化。2.起停控制和应答信号的规定

①“起始”信号(S)——在SCL为高期间,SDA线由高到低的变化表明数据传送开始。②“停止”信号(P)——在SCL为高期间,SDA线由低到高的变化表明数据传送停止。需要说明的是,I2C总线的启动(S)和停止(P)信号,都是由主机发出的。在启动信号出现后,总线就处于“忙”状态;在停止信号发出后,表示该主机放弃总线,总线处于空闲状态。3.数据传送形式

数据传送以数据帧为单位,每帧含1个字节8位数据和1个应答信号位,共9位。帧内字节的传送顺序是先最高位(MSB),依次到最低位(LSB)1)应答信号(A)。应答信号是接收方接收到一个字节数据后,给予发送方的回应,表示接收正常。I2C总线上传送一个字节的数据后,发送方在第9个SCL脉冲高电平期间,释放SDA线(高电平),接收方使该线变为低电平,作为应答信号。发送方在收到应答信号后,才能继续进行后续的数据发送。2)非应答信号(

)。如果接收方未能收到数据字节,在第9个SCL脉冲高电平期间,它将在数据线SDA上发出“非应答”信号,即高电平。发送方在收到该信号后,发出停止信号或新的起始信号。当主机接收来自从机的数据时,在接收最后一个数据帧后,须发出非应答信号,使从机释放SDA线,以便随后主机发出停止信号。(1)总线初始化函数

初始化函数的功能是将SCL和SDA总线拉高以释放总线。参考程序:#include<reg51.h>#include<intrins.h> //包含函数_nop_()的头文件sbitsda=P1^0; //定义I2C模拟数据传送位sbitscl=P1^1; //定义I2C模拟时钟控制位voidinit() //总线初始化函数{ scl=1; //scl为高电平_nop_(); //延时约1µssda=1; //sda为高电平delay5us(); //延时约5µs}

二、I2C总线的信号时序及模拟(2)起始信号S函数。要求一个新的起始信号前总线的空闲时间大于4.7µs,而对于一个重复的起始信号,要求建立时间也须大于4.7µs。图9-12(a)为起始信号的时序波形在SCL高电平期间SDA发生负跳变。起始信号到第1个时钟脉冲负跳沿的时间间隔应大于4µs。起始信号S的函数:voidstart(void) //起始信号函数{scl=1; sda=1;delay5us();sda=0;delay4us();scl=0;}(3)终止信号P函数。图9-12(b)为终止信号P的时序波形。在SCL高电平期间SDA的一个上升沿产生终止信号。终止信号函数:voidstop(void) //终止信号函数{scl=0;sda=0;delay4us();scl=1;delay4us();sda=1;delay5us();sda=0;}(4)应答位函数。发送接收应答位与发送数据“0”相同,即在SDA低电平期间SCL发生一个正脉冲。发送接收应答位的函数:voidAck(void){ uchari;sda=0;scl=1;delay4us();while((sda==1)&&(i<255))i++;scl=0;delay4us();}

(5)非应答位/数据“1”函数。发送非应答位与发送数据“1”相同,即在SDA高电平期间SCL发生一个正脉冲。发送非接收应答位/数据“1”的函数:voidNoAck(void) { sda=1;scl=1;dela

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论