




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用系统的接口设计第1页,课件共188页,创作于2023年2月学习目标掌握单片机最小系统设计掌握单片机外扩存储器方法掌握单片机接口技术掌握单片机中断及定时器应用了解模数、串口通信第2页,课件共188页,创作于2023年2月3.1最小系统3.2总线及接口扩展3.3内存扩展设计技术3.4LED、数码显示设计3.5键盘接口技术3.6中断、定时接口技术3.7数模(D/A)转换接口设计3.8模数(A/D)转换接口设计3.9串行通信接口设计3.10常见问题主要内容第3页,课件共188页,创作于2023年2月3.1最小系统
什么是单片机最小系统?最小系统是指单片机运行的最基本的硬件,是单片机正常工作的基本保障。为什么要做最小系统?最小系统主要用来判断系统是否可完成正常的启动与运行。第4页,课件共188页,创作于2023年2月MCS51单片机最小系统电路除电源外,主要由三大块组成:复位电路、时钟电路和单片机,如图3.1所示。图3.1MCS-51最小系统第5页,课件共188页,创作于2023年2月3.1.1复位电路单片机系统是由硬件和软件构成的,软件是由程序组成的。程序则由系列指令构成,正常情况下,希望系统运行时是从程序的固定位置(入口处)开始执行,复位的目的就是保证程序从入口处运行,若不能保证复位要求,程序则很可能不从规定处执行,会造成意想不到的问题,如“死机”、“跑飞”。系统为什么要用复位电路?第6页,课件共188页,创作于2023年2月单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。当系统处于正常工作状态时,且振荡器稳定后,从单片机的复位引脚RST输入一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统基本的复位方式有:上电复位和手动按钮复位
第7页,课件共188页,创作于2023年2月(a)上电复位
(b)手动按钮复位
图3.2复位电路说明:复位电路中的器件取值可以根据所使用的时钟电路频率,满足高电平大于两个机器周期(24个振荡周期)。图上给出的值是在6MHz晶振状态下,单片机复位电路的典型值。第8页,课件共188页,创作于2023年2月3.1.2时钟、振荡电路单片机时钟电路是用来配合外部晶振产生单片机工作所需的时钟信号。该电路为单片机提供运行时钟,是控制单片机运行速度的节拍。如果运行时钟为0脉冲,则单片机不工作;若超出单片机的正常工作频率则会使单片机超负荷运行,直至导致芯片发烫、烧毁。单片机时钟电路有内部时钟和外部时钟电路两种。单片机时钟电路的作用是什么?第9页,课件共188页,创作于2023年2月3.2总线及接口扩展
计算机总线是什么?总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。计算机总线传输的信号是电压还是电流信号?一般情况下传输的信号是以电压形式出现的。第10页,课件共188页,创作于2023年2月3.2.1三总线概念
按照计算机所传输的信息种类,计算机的总线可以划分为数据总线DB、地址总线AB和控制总线CB,分别用来传输数据、数据地址和控制信号。第11页,课件共188页,创作于2023年2月图3.3MCS51单片机总线引脚结构第12页,课件共188页,创作于2023年2月3.2.2总线接口常用芯片
74LS373锁存器 8D锁存器 8输入:1D~8D 8输出:1O~8O 输入允许端:OE(1) 输出预选端:G(11)74LS373电平触发,锁存缓冲74LS374上升沿触发74LS273无三态门,用于不需三态场合74LS1383-8译码器74LS2448路单向数据缓冲器74LS2458路双向数据缓冲器 缓冲器:无锁存功能,在外设和CPU之间起缓冲 驱动和隔离作用。总线缓冲器具有三态功能。 锁存器:除具有缓冲功能外还有数据锁存记忆功能。第13页,课件共188页,创作于2023年2月图3.474LS138管脚图第14页,课件共188页,创作于2023年2月74LS138真值表LLLLLLLLCAB第15页,课件共188页,创作于2023年2月74138功能简表E1/E2/E3输出XHXLXXXXH全高,不译码HLL译码,输出低有效第16页,课件共188页,创作于2023年2月74LS373的真值表
H为高电平,L为低电平,Q0为原状态,Z为高阻抗,×为任意值。输出允许有效低电平:LE为高时输出随输入;LE为低时,输出不变; 74LS373锁存器主要用于锁存信息。 常用的锁存器还有74LS374,573,574,Intel8282和8283等使能LE(11)输出允许OE(1)输入输出HLLLHLHHLL×Q0×H×Z第17页,课件共188页,创作于2023年2月图3.574LS373D7~D0为三态门输入端;O7~O0为三态门输出端;GND为接地端;Vcc为电源端;OE为三态门使能端,OE=0,三态门正常输出,OE=1,三态门输出高阻态;LE为8位锁存器的控制端,当LE=1,则输出跟随输入(即锁存器透明),当LE=0,则输出保持不变,即将D7~D0的状态存入O7~O0。第18页,课件共188页,创作于2023年2月表3.274LS373的真值表 表中:H为高电平,L为低电平,Q0为原状态,Z为高阻抗,×为任意值。Dn为输入端;On为输出端;LE为8位锁存器的控制端,当LE=1,则输出跟随输入(即锁存器透明);当LE=0,则输出保持不变74LS373是常用的地址锁存器芯片,共有20个引脚。它实质是一个是带三态缓冲输出的8D触发器,在单片机系统中为了扩展外部存储器,通常需要一块74ls373芯片。
第19页,课件共188页,创作于2023年2月74LS245是常用双向三态总线缓冲、驱动器,可双向传输数据,共有20个引脚。图3.6表3.374LS245真值表/OEDIR操作00B数据到A01A数据到B1ⅹ高阻允许端/OE与方向端DIR共同控制8路A1~A8和8路B1~B8满足表1.3逻辑。第20页,课件共188页,创作于2023年2月发光二极管发光二极管:单向导电性,通过5mA左右电流即可发光,电流越大,亮度越强,但若电流过大会烧毁二极管,一般控制在3~20mA。工作电压:红色发光二极管1.7-2.5V
绿色发光二极管2.0-2.4V
黄色发光二极管1.9-2.4V
蓝/白色发光二极管3.0-3.8V限流电阻二极管串联电阻的目的是为了防止发光二极管和P1.7引脚流过的电流过大,烧毁二极管或单片机,所以该电阻也称为“限流电阻”。限流电阻的选择:假设电源电压为VCC,发光二极管的导通压降为VDD,导通时流过二极管的电流为I,则限流电阻R为:VCC-VDD=IR第21页,课件共188页,创作于2023年2月写地址PO锁存低地址的时序Dn为输入端;On为输出;LE为8位锁存器的控制端,当LE=1,则输出跟随输入(即锁存器透明);当LE=0,则输出保持不变ALE、WR由CPU自动产生;可用wr接138经过控制的le控制转移数据;第22页,课件共188页,创作于2023年2月1、wr控制le的过程;2、ale控制le的过程;3、wr的动态变化;在P0输出数据之后有跳变,有下降的过程;结合54页的时序图可以通过wr控制74138再控制7404输出信号到74373最终控制数据的锁存;4、p0口输出低地址的过程没有被锁存;第23页,课件共188页,创作于2023年2月
3.2.3典型电路图3.7通过74LS245扩展单片机的P0口第24页,课件共188页,创作于2023年2月
3.2.3典型电路2-D出来的LEDC000和ledc800分别控制1-B1,1-B2的LE端子1-A1-B11-B22-A2-B2-C2-D1-C11-C2地址为:OXC000地址为:OXC8001-B1,1-B2的LE口名称改成LEDC000,和LEDC800;2-D作相应改动1为P0口出来的,2为p2口出来的;按照abcd的流向走此例中373锁存的是数据第25页,课件共188页,创作于2023年2月2-D2-A至2-B至2-C(需要辅助单片机的WR【低有效】信号控制138);至2-D输出控制信号;1-A,1-B1,1-C1在2-D的控制下1-B1的LE为高输出信号再为低锁存信号;1-A,1-B2,1-C2类似;地址为:OXC000地址为:OXC8001-B1,1-B2的LE口名称改成LEDC000,和LEDC800;2-D作相应改动所谓外部地址指P2,P0口输出相应值之后,能影响某些器件使之工作在锁存、译码、流向变、公共端电压变化等时间上变化的状态;1-b1的le为高时,wr为低1-b1上恰为数据;第26页,课件共188页,创作于2023年2月C语言程序清单:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintvoidDelay(uintt){ uinti=1141; for(;t>0;t--) for(;i>0;i--);//for(i=1141;i>0;i--)}第27页,课件共188页,创作于2023年2月voidmain(){ ucharxdata*led0=0xc000; ucharxdata*led1=0xc800; //定义两个指针,并给指针赋值 uchari=0x01,j=0; *led0=0xff;//置为高电平; *led1=0xff;//置为高电平; while(1) //循环 { for(j=0;j<8;j++) { _nop_(); *led0=~i;//~为按位取反; Delay(5000); i=(i<<1)|(i>>7);//<<为左移;|为按位或//1111,1100和0000,0001相或得1111,1101; }第28页,课件共188页,创作于2023年2月*led0=0xff; for(j=0;j<8;j++) { _nop_(); *led1=~i; Delay(5000); i=(i<<1)|(i>>7);//<<为左移;|为按位或 } *led1=0xff; }}第29页,课件共188页,创作于2023年2月3.3内存扩展设计技术
单片机的I/O口的数量是有限的,当其数量不够的情况下,我们需要扩展I/O口的数量。为什么要扩展?扩展什么?
第30页,课件共188页,创作于2023年2月3.3.1MCS-51单片机扩展技术51页1、扩展依据地址总线(AddressBus,AB)由P0口和P2口提供,其宽度为两个字节(16位),故可寻址范围为2Byte=64KByte。其中地址总线的低8位A7~A0由P0口经地址锁存器提供,P2口直接提供地址总线的高8位A15~A8。P0口是数据、地址分时复用的,所以P0口输出的低8位地址必须用锁存器进行锁存。由于P2口一直提供高8位地址,故不需要外加地址锁存器。P0、P2口在系统扩展中用作地址线后,便不能再作为一般I/O口使用。16第31页,课件共188页,创作于2023年2月数据总线(DataBus,DB)由P0口提供,其宽度为一个字节(8位)。控制总线(ControlBus,CB)是单片机发出的以控制片外ROM、RAM和I/O口读/写操作的一组控制线。控制总线包括片外系统扩展用控制线和片外信号对单片机的控制线。系统扩展所用控制线包括WR,RD,PSEN,EA和ALE。第32页,课件共188页,创作于2023年2月图3.8单片机三总线示意图第33页,课件共188页,创作于2023年2月2、扩展能力MCS51单片机地址线为16位,因此在片外可扩展的存储器最大容量为64KByte,地址为0x0~0xFFFF。由于对片外数据存储器和程序存储器的访问使用不同的指令及控制信号,所以允许两者地址重合,即对于8051系列单片机来说,片外可扩展的程序存储器与数据存储器的最大容量均为64KB。片外数据存储器地址为0x0~0xFFFF。第34页,课件共188页,创作于2023年2月当片内程序存储器与片外程序存储器的访问使用相同的操作指令,对两者的选择则靠系统控制线来实现。当EA=0时,选择片外程序存储器,即无论片内有无程序存储器,片外程序存储器的地址可从0x0开始进行编址。当EA=1时,选片内程序存储器,若片内程序存储器容量为4KByte,则其地址为0x0~0x0FFF,片外程序存储器地址只能从0x1000开始编址。第35页,课件共188页,创作于2023年2月(3)扩展的实现数据总线以P0口作8位数据的总线。数据总线的数据流是双向的,单片机有入和出。地址总线以P0口的低8位地址加上P2的高8位地址就可以形成16位的地址总线,达到64KByte的寻址能力。地址总线的数据流是单片机发出的,是单向的。第36页,课件共188页,创作于2023年2月控制信号总线ALE:地址锁存信号,用以实现对低8位地址的锁存。
:片外程序存储器选通信号。
:程序存储器选择信号。为低电平时,访问外部程序存储器;为高电平时,访问内部程序存储器。
:片外数据存储器写控制信号。
:片外数据存储器读控制信号。第37页,课件共188页,创作于2023年2月总线驱动在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。在对TTL负载驱动时,只需考虑驱动电流的大小。在对MOS负载驱动时,MOS负载的输入电流很小,更多地要考虑对分布电容的电流驱动。第38页,课件共188页,创作于2023年2月数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245也是三态的,有一个方向控制端DIR。DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。系统总线中地址总线是单向的,因此驱动器可以选用单向的,如74LS244,还带有三态控制,能实现总线缓冲和隔离。第39页,课件共188页,创作于2023年2月4、典型案例图3.9简单I/O接口扩展第40页,课件共188页,创作于2023年2月C语言程序清单:#include<reg52.h>void main(){unsignedchardatatmp1,tmp2=0Xff;unsignedcharxdata*pt1;pt1=0xfeff; //给指针赋地址值0xfeffwhile(1) //循环 { tmp1=*pt1; //从74HC245读入键盘数据
if(tmp1!=tmp2) //判断输入改变时,
{*pt1=tmp1;//从74HC373输出LED显示数据
tmp2=tmp1;//下一次的比较是对按键变化的比//较,所以需要将更新后的按键值最为下一次的比较依据; }}}第41页,课件共188页,创作于2023年2月第42页,课件共188页,创作于2023年2月第43页,课件共188页,创作于2023年2月3.3.2典型应用
图3.11存储器扩展第44页,课件共188页,创作于2023年2月3.4LED、数码显示设计将系统正在运行的状态告诉操作者,需要显示;操作者需要将控制的信息输入到系统,输入的信息成功情况需要显示。常用的显示方式有:LED彩灯显示、数码管显示、液晶显示。为什么需要显示?有哪些显示方式?第45页,课件共188页,创作于2023年2月3.4.1LED显示
图3.121只彩灯闪烁显示电路第46页,课件共188页,创作于2023年2月#include<reg51.h>#defineucharunsignedcharsbitP1_0=P1^0;voiddelay05(){uchari,j,k;for(i=5;i>0;i--)for(j=200;j>0;j--) for(k=250;k>0;k--);}voidmain(){while(1) { P1_0=0; delay05(); P1_0=1; delay05(); }}第47页,课件共188页,创作于2023年2月图3.138只彩灯循环显示电路第48页,课件共188页,创作于2023年2月参考程序:#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintvoidDelay(uintt) //延时函数{ uinti=1141; for(;t>0;t--) for(;i>0;i--);}第49页,课件共188页,创作于2023年2月voidmain(){ uchari=0,j=0x01; while(1) { for(i=0;i<8;i++) //循环8次 { P1=~j; //将j按位取反从P1输出 Delay(5000); j=(j<<1)|(j>>7); } }}第50页,课件共188页,创作于2023年2月3.4.2LED数码管的结构与原理
LED数码管的结构如图3.14所示,图中a-g七个笔段及小数点dp均为发光二极管。如果将所有发光二极管的阳极连在一起作为公共端,称为共阳数码管;如果将所有发光二极管的阴极连在一起作为公共端,称为共阴数码管。第51页,课件共188页,创作于2023年2月(a)共阴极;(b)共阳极;(c)管脚配置图3.14LED显示器共阳数码管的所有发光二极管的阳极均接高电平,所以只要a-g及dp引脚输入低电平,则相应笔段的发光二极管发光;共阴极数码管的所有发光二极管的阴极均接地,所以只要a-g及dp引脚输入高电平,则相应笔段的发光二极管发光。第52页,课件共188页,创作于2023年2月表3.4LED显示器的字段码显示字符共阴极字码段共阳极字码段显示字符共阴极字码段共阳极字码段00X3f0Xc090X6f0X9010X060Xf9A0X770X8820X5b0Xa4B0X7c0X8330X4f0Xb0C0X390Xc640X660X99D0X5e0Xa150X6d0X92E0X790X8660X7d0X82F0X710X8e70X070Xf8P0X730X8c80X7f0X80熄灭0X000Xff第53页,课件共188页,创作于2023年2月3.4.2数码管静态显示
在静态方式下,共阴极或共阳极公共端连接在一起接地或+5V;每一位显示器的字段控制线是独立的。当显示某一字符时,该位的各字字段线和字位线的电平不变,也就是各字段的亮灭状态不变。静态显示方式编程简单,但占用I/O口线多,适合于显示器位数较少的场合。第54页,课件共188页,创作于2023年2月图3.15四位静态LED显示器电路静态数码显示每一个数码管的显示笔画都要占用单独的具有锁存功能的I/O接口。即需N×8个I/O控制线第55页,课件共188页,创作于2023年2月静态显示数码管相应笔段一直处于点亮状态,因此功耗大,而且占用硬件资源多,几乎只能用在显示位数极少的场合。优点:LED亮度高,可用在室外显示场合。程序工作量小。第56页,课件共188页,创作于2023年2月图3.16静态显示典型电路所谓外部地址指P2,P0口输出相应值之后,能影响某些器件使之工作在锁存、译码、流向变、公共端电压变化等时间上变化的状态;第57页,课件共188页,创作于2023年2月3.4.3数码管动态显示
动态显示的硬件特点是将所有数码管的同名段选线并联在一起,通过控制位选信号来控制数码管的点亮,如图3.15所示。数码管采用动态扫描显示,所谓动态扫描显示就是逐位轮流点亮每位显示器,即每个数码管的位选被轮流选中,多个数码管共用一组段选,字形码仅对位选被选中的数码管有效。第58页,课件共188页,创作于2023年2月图3.17八位LED动态显示器电路动态数码显示所有数码管的8个笔画段同名端连在一起,公共端各自独立。即需N+8个I/O控制线第59页,课件共188页,创作于2023年2月动态显示是多只数码管共享段码线,通过位选线(公共端)逐位逐位分时进行扫描显示(任时刻只有一只点亮)。其优点是占用硬件资源少,功耗小。软件工作量大.
必须注意:扫描周期必须控制在视觉停顿时间内,一般在20ms以内,否则会出现闪烁或跳动现象。最为广泛的一种显示方式。动态显示技术第60页,课件共188页,创作于2023年2月表3.58位动态共阴LED显示状态(例:‘20100120’)位码字段码显示状态0Xfe0Xfd0Xfb0Xf70Xef0Xdf0Xbf0X7f0X3f0X5b0X060X3f0X3f0X060X3f0X5b02100102第61页,课件共188页,创作于2023年2月图3.18动态显示典型电路所谓外部地址指P2,P0口输出相应值之后,能影响某些器件使之工作在锁存、译码、流向变、公共端电压变化等时间上变化的状态;第62页,课件共188页,创作于2023年2月3.4.4典型应用
任务:用8位数码动态显示毛泽东诞辰年日期“18931226”。单片机的P0、P3口分别通过74LS245缓冲输出,进而分别控制8位共阴数码管的段选和位选。第63页,课件共188页,创作于2023年2月图3.198位数码动态显示案例第64页,课件共188页,创作于2023年2月参考程序:#include<reg51.h>//包含51单片机的特殊定义codeunsignedchardis_d[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管字段码codeunsignedchardis_w[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//共阴极数码管位码voidDelay()//延时{unsignedcharmun=200; while(mun--);}第65页,课件共188页,创作于2023年2月voidmain()//主程序{ while(1) { P3=dis_w[0];P0=dis_d[1];Delay();P0=0x00;//第一个数码管显示1 P3=dis_w[1];P0=dis_d[8];Delay();P0=0x00;//第二个数码管显示8 P3=dis_w[2];P0=dis_d[9];Delay();P0=0x00;//第三个数码管显示9 P3=dis_w[3];P0=dis_d[3];Delay();P0=0x00;//第四个数码管显示3 P3=dis_w[4];P0=dis_d[1];Delay();P0=0x00;//第五个数码管显示1 P3=dis_w[5];P0=dis_d[2];Delay();P0=0x00;//第六个数码管显示2 P3=dis_w[6];P0=dis_d[2];Delay();P0=0x00;//第七个数码管显示2 P3=dis_w[7];P0=dis_d[6];Delay();P0=0x00;//第八个数码管显示6 }}第66页,课件共188页,创作于2023年2月拓展提高
动态数码管显示拖尾、重影如何解决?数码管动态显示可能会出现拖尾、重影的现象,解决的方法是:①如果是先送位选信号,再送段选信号,则在换位时,将段选信号清除;②如果是先送段选信号后送位选信号,则在换段时,将位选信号清除。第67页,课件共188页,创作于2023年2月3.5键盘接口技术按键有什么作用?如何识别按键是否按下?当人类将设置等数据信息传入计算机系统时,通常会采用键盘完成。单片机对于键盘的识别是通过读取键盘对应的高低电平信号来完成的。第68页,课件共188页,创作于2023年2月3.5.1概述
键盘接口的主要功能是对键盘上所按的键进行识别。使用专用的硬件进行识别的键盘称为编码键盘,使用软件进行识别的键盘称为非编码键盘,它具有结构简单、使用灵活等特点,因此被广泛应用于单片机系统。第69页,课件共188页,创作于2023年2月
图3.20按键触点的机械抖动过程图3.19按键输入电路第70页,课件共188页,创作于2023年2月软件去抖动
前沿抖动稳定后沿抖动按键抖动信号波形键盘消抖即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。第71页,课件共188页,创作于2023年2月键盘消抖硬件消抖:如RC滤波电路第72页,课件共188页,创作于2023年2月键盘消抖硬件消抖:如双稳态电路:RS触发器为常用的硬件消抖电路。CD第73页,课件共188页,创作于2023年2月3.5.2独立键盘
独立键盘的每一个按键的电路是独立的,其中每个按键都独立地占用一条I/O数据线,按键输入均采用低电平有效。上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。对于独立式键盘,一般采取逐条I/O口查询的方式来确定闭合键的位置,即先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后,再转向该键的功能处理程序。典型电路如图3.22所示。第74页,课件共188页,创作于2023年2月图3.24独立按键典型电路第75页,课件共188页,创作于2023年2月程序:#include<reg51.h>unsignedcharduan[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};unsignedcharwei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelay(void){ unsignedi,j; for(i=0;i<20;i++) for(j=0;j<200;j++);}voidmain(){unsignedchari,j;第76页,课件共188页,创作于2023年2月while(1) { if((j=P1)!=0xff) //检测是否有按键被按下
{ delay(); //延时消抖
if((j=P1)!=0xff) //再次检测按键是否被按下
for(i=0;i<8;i++) //显示
{ if(j==wei[i])P0=duan[i];} } else P0=0; }}第77页,课件共188页,创作于2023年2月3.5.3行列(矩阵)键盘行列式键盘又叫矩阵式键盘,行列式结构的键盘显然比独立式键盘要复杂一些,识别也要复杂一些。它将I/O线的一部分作为行线,另一部分作为列线,按键设置在行线和列线的交叉点上,每一个按键占用两条I/O数据线。如图3.23所示,行列式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。第78页,课件共188页,创作于2023年2月行列式键盘结构每一个按键的电路是由行列组成,每一个按键占用两条I/O数据线。当键盘按下时,相应的行列线呈现短路。1、行线输出高电平、列线输出低电平;检测行线有电平变化表示有按键按下,否则没有!2、依次使列线中某一列为低电平,其余为高,检测行线电平变化的那一行电压是否为低,为低就是此行列交界处的按键被按下!第79页,课件共188页,创作于2023年2月图3.25矩阵键盘典型电路第80页,课件共188页,创作于2023年2月程序#include<reg51.h> #defineucharunsignedchar ucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40};//0-9字符码表
ucharcodekeytab[]={0x81,0x41,0x21,0x11,0x82,0x42,0x22,0x12,0x84, 0x44,0x24,0x14,0x88,0x48,0x28,0x18};//闭合键码表
ucharcodedisbit[]={0x40,0x80};//两位数码位码表
uchardisbuf[]={0,0};//两位数码段码缓冲单元
voiddelay5ms();//延时,用定时器完成
bitKeytest();//总判有无按键
voiddisplay(ucharx);//数码显示程序
ucharGetKeyNum();//获得具体键值
程序见书P70第81页,课件共188页,创作于2023年2月3.5.4典型应用设计一个0~9计数器,计数按键每按下一次,计数显示加1,0~9循环计数,清除按键按下则显示清零。P73页程序第82页,课件共188页,创作于2023年2月计数键清除键第83页,课件共188页,创作于2023年2月3.6中断、定时接口技术
日常中断的例子返回
你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。时间第84页,课件共188页,创作于2023年2月计算机中的中断概念返回定义:中断是指由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序(处理发生的事件),处理完毕后又自动返回原来程序暂停的位置继续运行。将能引起中断的事件称为中断源。CPU现行运行的程序称为主程序。处理随机事件的程序称为中断服务子程序。第85页,课件共188页,创作于2023年2月处理突发事件,单片机有强大处理功能,它会自动暂停正在处理的事件,转去处理突发事件,突发事件处理完之后,继续处理暂停的事件。第86页,课件共188页,创作于2023年2月
中断技术的优点提高工作效率
——CPU可以同多个外设“同时”工作实时处理
——CPU及时处理随机事件(智能技术)故障处理
——电源掉电、存储出错、运算溢出
第87页,课件共188页,创作于2023年2月3.6.1MCS-51单片机中断系统的内部结构图3.27单片机的中断系统结构第88页,课件共188页,创作于2023年2月表3.6中断源及中断向量入口地址中断源入口地址说明硬件优先0003H从P3.2引脚上的外部中断申请高
低定时器0000BH从定时器0的溢出使TF0置位,发出中断申请0013H从P3.3引脚上的外部中断申请定时器1001BH从定时器1的溢出使TF1置位,发出中断申请串行端口0023H一个串行帧的发送或接收完成后使中断申请标志TI(发送时)或RI(接收时)置位第89页,课件共188页,创作于2023年2月3.6.2中断服务函数的编写方法void函数名interruptn[usingm]m、n为正整数,不允许使用表达式。n取值范围0~4,对应该中断源的编号。通常对普通8051系列单片机来说,外部中断0、定时器0、外部中断1、定时器1、串口的中断源编号依次为0、1、2、3、4。m取值范围0~4。例如:voidserial_serviceinterrupt4using2{……;}KeilC51编译器用特定的编译器指令分配寄存器组。当前工作寄存器由using指定,“using”后的变量为一个0~3的整数。“using”只允许用于中断函数,它在中断函数入口处将当前寄存器组保留,并在中断程序中使用指定的寄存器组,在函数退出前恢复原寄存器组。
第90页,课件共188页,创作于2023年2月编写中断函数时应遵循下列规则:①不能进行参数传递,如果中断过程包括任何参数声明,编译器将产生一个错误信息。②无返回值,如果想定义一个返回值将产生错误,但是,如果返回整型值编译器将不产生错误信息,因为整型值是默认值,编译器不能清楚识别。③在任何情况下不能直接调用中断函数,否则编译器会产生错误。第91页,课件共188页,创作于2023年2月④在中断函数中调用的函数所使用的寄存器组必须与中断函数相同,当没有使用using指令时,编译器会选择一个寄存器组作绝对寄存器访问。编程时必须保证按要求使用相应寄存器组,而C编译器不会对此检查。⑤如果在中断函数中执行浮点运算,必须保存浮点寄存器状态,当没有其他程序执行浮点运算时,可以不保存。第92页,课件共188页,创作于2023年2月3.6.3外部中断应用
设计一个实现按键计数功能的设计,并利用数码管同步显示按键的按下次数。图3.28按键计数功能电路第93页,课件共188页,创作于2023年2月程序:#include<reg51.h>unsignedcharduan[2]={0};unsignedcharduanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedchari=0,m=0;voidwz0()interrupt0 //外部中断0服务子程序,用来记//录按键按下的次数{ if(++i>99) i=0; duan[0]=i/10; duan[1]=i%10;}第94页,课件共188页,创作于2023年2月voiddisplay()interrupt1 //利用中断来控制数码管的显示{ staticunsignedcharl=0x01; TH0=0xff;TL0=0xc8; if(l==0x04) { l=0x01; m=0; }P0=0;P2=l;P0=duanma[duan[m]]; l<<=1; m++;}voidmain(){ TH0=0xff;TL0=0xc8; IE=0x8f;TMOD=0x51;TCON=0x55;IP=0x02; while(1);}计数器溢出一次,产生一次中断,刷新当前显示内容,溢出率决定显示屏刷新频率第95页,课件共188页,创作于2023年2月3.6.4定时/计数器中断应用
51系列单片机至少有两个16位内部定时器/计数器(T/C)。两个基本定时器/计数器分别是定时器/计数器T/C0和T/C1,具有计数功能和定时功能。计数功能是指使用计数器的计数脉冲输入端T0(P3.4)和T1(P3.5)对外部脉冲信号的计数;定时功能是指对内部晶振驱动时钟进行计数。第96页,课件共188页,创作于2023年2月定时器T0由TH0和TL0组成,定时器T1由TH1和TL1组成,其中TH0(TH1)表示高8位,TL0(TL1)表示低8位。TMOD(见表1.13)寄存器用来确定工作方式;TCON是控制寄存器,用来控制T0和T1启动、计数、停止以及设置溢出标志等。定时器/计数器的结构图见图3.29。GATA=0表示启动不受外部中断int0或int1的控制;否则受;C/T表示0为定时方式,1为计时方式!教材16页!1.定时器/计数器的结构图3.29定时器/计数器的结构第97页,课件共188页,创作于2023年2月在计数方式下,计数初值X=-待计数的值(n=13/16/8)。假使T/C0工作在计数器方式2,要求计数100个脉冲的计数初值X,那么X==156。第98页,课件共188页,创作于2023年2月在定时方式下,定时器/计数器对机器周期脉冲计数。如:若=12MHz,一个机器周期为us,要求定时器/计数器T0定时1ms,求计数初值。假使T0工作在工作方式1,设计数初值为X,则有:,即,将64536化为十六进制,即0xFC18,把0xFC送入TH0,0x18送入TL0中即可完成1ms的定时。即:TH0=0xfc;TL0=0x18;第99页,课件共188页,创作于2023年2月或直接写为以下语句,在程序编译时会自动计算表达式,换算成对应的数值给TH和TL赋值:(注意:溢出问题)TH0=(65536-1000)/256;TL0=(65536-1000)%256;第100页,课件共188页,创作于2023年2月
若T0工作在工作方式0,设计数初值为X,则有:将7192化为二进制,即1110000011000B,把高八位0xe0送入TH0,低五位0x18送入TL0中即可完成1ms的定时。即:TH0=0xe0;TL0=0x18;使用了tl0的低5位;;;或直接写为以下语句:TH0=(8192-1000)/32;TL0=(8192-1000)%32;可以看出,在12MHz时钟频率下,工作方式2所能达到的最大定时时间为256us,在此例不适于直接定时。第101页,课件共188页,创作于2023年2月3.6.5 典型应用——99-00键控倒计时秒表任务描述将单片机与数码管、键盘接成如图3.30所示两位动态显示方式。开始时,显示“--”,按“定时”键后显示0,此时按数值键(0-9)有效;按数值键(0-9)显示定时时间,最大定时时间99s;第一次按“开始/结束”键开始倒计时,时间间隔为1S,计时结束显示“--”;第二次按“开始/结束”键停止倒计时,第三次按“开始/结束”键结束倒计时,显示“--”第102页,课件共188页,创作于2023年2月图3.3099-00键控倒计时秒表电路第103页,课件共188页,创作于2023年2月图3.3100~99秒计数循环动态显示程序框图第104页,课件共188页,创作于2023年2月/*两位动态显示,00-99循环显示,时间间隔1s*/#include<reg51.h>#defineucharunsignedcharucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9字型码表ucharcodedisbit[]={0x40,0x80};//位码表uchardisbuf[]={0,0};ucharsecond=0,tcount=0;voidcaculate();voiddisplay();voiddelay5ms() ;voidmain(){ TMOD=0X10;//方式控制字初值:方式一、定时
TR1=1;//定时器一启动
while(1) { display(); caculate(); } }第105页,课件共188页,创作于2023年2月voidcaculate() //计数子函数{ tcount++;//1次10ms到,改变定时次数
if(tcount==100)//100次10ms到,即1s到
{ tcount=0;//初始化定时次数
second++;//指向下一个显示数据
if(second==100) second=0; }}voiddisplay() //动态显示子函数{ uchari; disbuf[0]=dispcode[second/10]; //秒计数值的十位数字型码
disbuf[1]=dispcode[second%10]; //秒计数值的个位数字型码
for(i=0;i<2;i++) { P0=disbuf[i]; //向P0口送入段码
P2=disbit[i]; //向P2口送入位码
delay5ms(); //5ms定时
P2=0; //关位选,消隐
}}voiddelay5ms() { TH1=(65536-5000)/256; //设定定时初值高八位
TL1=(65536-5000)%256; //设定定时初值低八位
while(!TF1);//查询,5ms到
TF1=0; //TF1清零} 第106页,课件共188页,创作于2023年2月3.7数模(D/A)转换接口设计
为什么要用模数转换?在实际生活中有何用?第107页,课件共188页,创作于2023年2月3.7.1概念
D/A转换器(Digital-to-AnalogConverter)又叫数/模转换器,即是将数字信号转换成模拟信号(电压或是电流的形式)。第108页,课件共188页,创作于2023年2月性能指标:1、分辨率(Resolution)是指D/A转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。
2、建立时间(EstablishingTime)是描述D/A转换速度的快慢。3、转换精度(ConversionAccuracy)指满量程时DAC的实际模拟输出值和理论值的接近程度。
4、偏移量误差(OffsetError)偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。
5、线性度(Linearity)线性度是指DAC的实际转换特性曲线和理想直线之间的最大偏移差。第109页,课件共188页,创作于2023年2月1.DAC0832内部结构:8位双缓冲器结构的D/A转换器。3.7.2D/A转换芯片DAC0832DAC0832内部结构框图DI0~7:转换数据输入(8位);CS:片选信号(输入);ILE:数据锁存允许信号(输入);XFER:数据传送控制信号(输入);WR1:第一写信号(输入),与ILE共同控制输入寄存器是数据直通方式还是数据锁存方式;WR2:第2写信号(输入),与XFER共同控制DAC寄存器是数据直通方式还是数据锁存方式;8位DACDAC寄存器输入寄存器-+IOUT2IOUT1RfbVODI0~7AGNDILECS与与与WR1WR2XFERLE1LE2LE1(LE2)=0:锁存;1:直通。王朝,马汉;四大护法第110页,课件共188页,创作于2023年2月第111页,课件共188页,创作于2023年2月
DAC0830系列均为DIP20封装,且管脚完全兼容,DAC0832的引脚如下图所示。引脚功能如下:D0—D7:8位数字量输入端
CS:
片选端,低有效ILE:数据锁存允许
WR1
:写控制信号1WR2:写控制信号2
XFER
:数据传送控制信号Iout1:电流输出端1Iout2:电流输出端2RFB:内置反馈电阻端VREF:参考电压源(-10V~+10V)
DGND:数字量地AGND:模拟量地Vcc:+5~+15V单电源供电端2.DAC0832的引脚结构第112页,课件共188页,创作于2023年2月图3.34DAC0832的工作原理爸爸,蹲下来,xx……3.DAC0832的工作原理第113页,课件共188页,创作于2023年2月单缓冲方式:
输入寄存器和DAC寄存器共用一个地址,同时选通输出,输入数据在控制信号作用下,直接进入DAC寄存器中;
WR1和WR2同时进行,并且与CPU的WR相连,CPU对0832执行一次写操作,将数据直接写入DAC寄存器中。
适用:只有一路模拟信号输出或几路模拟信号非同步输出。4.DAC0832的工作模式第114页,课件共188页,创作于2023年2月双缓冲器方式:
输入寄存器和DAC寄存器分配有各自的地址,可分别选通用同时输出多路模拟信号。
适用:同时输出几路模拟信号的场合,可构成多个0832同步输出电路。第115页,课件共188页,创作于2023年2月直通方式:
输入寄存器和DAC寄存器始终输出,输入数据在控制信号WR作用下(或与单片机并口直接联结,无需WR),直接进入DAC寄存器中;
适用:只有一路模拟信号输出或几路模拟信号非同步输出。第116页,课件共188页,创作于2023年2月3.7.3典型应用
图3.38波形发生器P0口作为数据口,DAC0832采用直通接法,通过改变P0口输出的数字量达到改变DAC0832输出电压的目的。根据不同波形的特点连续输出一连串的数字量以达到产生不同波形的特目的。第117页,课件共188页,创作于2023年2月程序:#include<reg51.h>#include<math.h>unsignedcharbiao=0;voiddelay(unsignedcharm){ while(--m!=0);}voidbo()interrupt0 //按键切换函数{ if(++biao==4) biao=0;}第118页,课件共188页,创作于2023年2月voidmain(){ unsignedchari=0;floatj=0.0; TCON=0X01;IE=0X81; while(1) { switch(biao) //根据biao的数值确定输出的波形
{ case0:for(i=0;i<255;i++) //三角波
P0=i; for(i=255;i>0;i--) P0=i;break; case1:P0=0; //方波
delay(100); P0=0xff; delay(100); break;
第119页,课件共188页,创作于2023年2月case2:for(i=255;i>0;i--) //锯齿波
P0=i; break;case3: for(j=0;j<6.28;j+=0.02) //正弦波
{ P0=(1+sin(j))*(2*2*2*2*2*2*2); for(i=0;i<200;i++) delay(20);} break; default:P0=0; } }}试用while或if语句替换switch第120页,课件共188页,创作于2023年2月3.8.1概念
A/D转换器(AnalogToDigitConverter):将模拟量转换为与之成比例的数字量的器件称为A/D转换器,常用ADC表示。A/D转换器的性能指标
(1)分辨率:分辨率是指输出数字量变化一个相邻数码所需输入模拟电压的变化量。A/D转换器的分辨率定义为满刻度电压与2n之比值,其中n为ADC的位数。
3.8模数(A/D)转换接口设计第121页,课件共188页,创作于2023年2月(2)转换速率与转换时间:转换速率是指A/D转换器每秒钟转换的次数。转换时间是指完成一次A/D转换所需的时间(包括稳定时间)。转换时间是转换速率的倒数。(3)量化误差:有限分辨率A/D的阶梯状转移特性曲线与理想无限分辨率A/D的转移特性曲线(直线)之间的最大偏差称为量化误差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB,1/2LSB。(4)线性度:实际A/D转换器的转移函数与理想直线的最大偏差。不包括量化误差、偏移误差(输入信号为零时,输出信号不为零的值)和满刻度误差(满度输出时,对应的输入信号与理想输入信号值之差)三种误差。(5)量程:量程是指A/D能够转换的电压范围,如0~5V,-10~+10V等。(6)其他指标:内部/外部电压基准、失调(零点)温度系数、增益温度系数,以及电源电压变化抑制比等性能指标。
第122页,课件共188页,创作于2023年2月A/D转换器应具备如下一些特性:①模拟输入,可以是单信道或多信道模拟输入;②参考输入电压,该电压可由外部提供,也可以在ADC内部产生;③频率输入,通常由外部提供,用于确定ADC的转换速率④电源输入,通常有模拟和数字电源接脚;⑤数字输出,ADC可以提供平行或串行的数字输出。第123页,课件共188页,创作于2023年2月3.8.2典型A/D集成芯片——ADC08091.AD0808/0809内部结构第124页,课件共188页,创作于2023年2月2.ADC0808/0809引脚功能
IN0—IN7:8通道模拟量输入端
2-8—2-1:8位数字量输出端C、B、A:接地址锁存器的低三位地址ALE:地址锁存允许控制信号START:清0内寄存器,启动转换OE:允许读A/D结果,高有效CLK:时钟输入端,范围为10kHz~1200kHz,典型值640kHzEOC:转换结束时为高Vcc:+5VVref+:参考电压,+5VVref-:0VAD0808系列:0808和0809(区别是最大不可调误差1/2和1LSB)第125页,课件共188页,创作于2023年2月表3.7通道选择表CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7第126页,课件共188页,创作于2023年2月图3.41ADC0808、0809时序图3.ADC0808/0809应用说明
此图不靠谱,参考教材92页图第127页,课件共188页,创作于2023年2月ADC0808/0809与单片机连接:转换数据的传送:①定时传送方式;(不需接EOC脚)②查询方式;(测试EOC脚的状态)③中断方式。(EOC脚接INT脚)注:(1)不能用无条件方式;(2)2个ALE不能相接。涉及2个问题:(1)8路模拟信号通道选择;(2)A/D转换完成后转换数据的传送。ADC0808的口地址:FEFFH;8路模拟通道的地址:FEF8H~FEFFH。IN0~7AD0~7ALEINTWRP2.0RDD0~7ADDABC
CLKEOCSTARTALEOE≥11MCS-51ADC080883≥1第128页,课件共188页,创作于2023年2月3.8.3典型应用
ADC0808将输入的电压信号(模拟信号)转换成数字量后触发单片机的外部中断。单片机通过对外部中断的处理来达到电压数字量的读取。数码管用来显示电压信号所对应的数字量。第129页,课件共188页,创作于2023年2月图3.42模数转换典型电路eoc没有转换结束时为低,转换结束为高oe为允许读转换数据,由单片机输给ad第130页,课件共188页,创作于2023年2月程序:#include<reg51.h>unsignedcharduanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedcharshu[3]={0};unsignedcharj=0,l=0;sbitSTART=P3^0;sbitOE=P3^3;sbitADDA=P3^4;sbitBDDB=P3^5;sbitCDDC=P3^6;sbitALE=P3^7;第131页,课件共188页,创作于2023年2月voiddelay(unsignedm){ while(--m);}voidsm()interrupt1 //显示函数{ staticunsignedchari=0x01,j=0; TH0=0xfc;TL0=0x18; P0=0; P2=~i; P0=duanma[shu[j]]; j++; i<<=1; if(i==8){i=0x01;j=0;}}
第132页,课件共188页,创作于2023年2月
voiddu()interrupt0 //AD转换完成后读取电压的数字量
{ OE=1; l=P1;}
voidmain(){ADDA=0;BDDB=0,CDDC=0;ALE=0;delay(100);ALE=1;delay(100);ALE=0;TCON=0X10;IE=0X83;TMOD=0X01;TH0=0xfc;TL0=0x18; while(1) { START=0;delay(10);START=1;delay(10);START=0; delay(100); shu[0]=l/100; //将AD转换的数值进行显示前的预处理
shu[1]=l%100/10; shu[2]=l%10; }}第133页,课件共188页,创作于2023年2月3.9串行通信接口设计3.9.1串行通信基本概念
1.两种常见的通信技术简介—串口通信和并口通信在计算机中通信中,有两种常见的通信技术,串行通信和并行通信。并行通信:数据的各位(二进制)同时发送或接收。特点是传送速度快、效率高,但成本高。适用于短距离传送数据。计算机内部的数据传送一般均采用并行方式。第134页,课件共188页,创作于2023年2月串行通信:数据一位一位(二进制)顺序发送或接收。特点是传送速度慢,但成本低。适用于较长距离传送数据。计算机与外界的数据传送一般均采用串行方式。串行通信长距离传输中常用RS232C、RS485协议。第135页,课件共188页,创作于2023年2月2.RS232C和RS485协议RS-232C是异步串行通信中应用最广泛的标准总线,是美国EIA(ElectronicIndustriesAssociation,电子工业联合会)开发公布的通信协议。适合于数据传输速率在0~20kb/s范围内的通信,包括了按位串行传输的电气和机械方面的规定。在微机通信接口中被广泛采用。其特点为:采取不平衡传输方式,是为点对点(即只用一对收、发设备)通信而设计的。第136页,课件共188页,创作于2023年2月RS485协议同RS232协议,也是异步串行通信中应用最广泛的标准总线。特点:平衡发送、平衡接收,抗干扰能力强;多达32对收发器;发送/接收器小于32对;需要终端匹配电阻2×120Ω;信号不需要调制与解调。第137页,课件共188页,创作于2023年2月3.RS232串行通信线的常用连接方法①最简单连接法,这也是最常用的连接方法,如图3.43所示图3.43串口数据线最简单连接法第138页,课件共188页,创作于2023年2月②完全连接法,如图3.44所示:图3.44串口数据线的完全连接法
第139页,课件共188页,创作于2023年2月4.串口通信中的RS232与RS485特性(I)电气特性①电平逻辑RS232负逻辑:逻辑1(MARK)=-3V~-15V,逻辑0(SPACE)=+3~+15V。RS485正逻辑:逻辑“1”以两线间的电压差为+(2—6)V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。②传输最高速率RS232:20kbpsRS-485:10Mbps第140页,课件共188页,创作于2023年2月③最大传输距离RS232:15mRS-485:1500m④通信方式RS232:全双工RS-485:半双工⑤常用电平转换芯片RS232:MAX232和MAX232ARS485:MAX487第141页,课件共188页,创作于2023年2月(2)机械特性①RS-232C标准接口有25条线,其中常用的有如下9条:DCD(1):接收线信号检出;RXD(2):接收数据;TXD(3):发送数据;DTR(4):数据终端准备好;GND(5)
:地线。DSR(6):数据装置准备好;RTS(7):请求发送;CTS(8):允许发送;RI(9):振铃指示;②RS-485:二根连线,屏蔽双绞线第142页,课件共188页,创作于2023年2月(3)TTL与RS232C电气转换
由于TTL电平与RS232C电平的电气特性不一样,所以在单片机系统与PC机进行串口通信时,需要进行电气转换。电气转换电路可以使用集成电路,如MAX232芯片,电路图如图3.45所示。第143页,课件共188页,创作于2023年2月图3.45TTL与RS232C电气转换电路第144页,课件共188页,创作于2023年2月5.波特率波特率是衡量串行通信速率的重要指标,波特率是指每秒钟传送信号的数量,单位为波特(Baud)。比特率每秒钟传送二进制数的信号数(即二进制数的位数),单位是bps(bitpersecond)或写成b/s(位/秒)。在单片机串行通信中,传送的信号是二进制信号,波特率与比特率数值上相等。单位采用bps。波特率和距离成反比,其关系如表3.8所示。第145页,课件共188页,创作于2023年2月表3.8波特率和距离的关系波特率(bps)1号电缆传输距离(英尺)其中:1英尺=0.305米2号电缆传输距离(英尺)其中:1英尺=0.305米11050003000300500030001200300030002400100050048001000250第146页,课件共188页,创作于2023年2月3.9.2MCS51串行通信接口设计1.单纯发送从
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 激发数据要素创新潜能的策略及实施路径
- 英语句型学习突破教程
- 美的遇见作文800字8篇
- 出生日期与年度收入证明(6篇)
- 化学材料化学知识点详解及试题
- 想象作文语文书的自述350字(11篇)
- 不负青春作文高二范文7篇范文
- 公主家产品抽奖活动方案
- 公交公司植树节活动方案
- 与家人共度中秋节的温馨时刻作文(8篇)
- 法律文书写作能力测试题库及解答分析
- 2025合作合同范本:两人合伙协议书模板
- DB31/T 595-2021冷库单位产品能源消耗指标
- DB31/T 1204-2020标准先进性评价通用要求
- 2025年中国半球谐振陀螺仪行业市场前景预测及投资价值评估分析报告
- 2025年计算机Photoshop操作实务的试题及答案
- 合伙或养鸡协议书
- 2024-2030全球WiFi 6移动热点行业调研及趋势分析报告
- 2024年西安高新区公办学校教师招聘真题
- 2025年广东省广州市越秀区中考物理一模试卷(含答案)
- 2023-2024学年上海市浦东区八年级(下)期末数学试卷 (含答案)
评论
0/150
提交评论