




已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章接口技术,教学目的:了解80C51系列单片机与键盘、显示器、模数、数模转换器等外设连接的技术。教学重点:1.键盘接口的工作原理及应用;2.LED显示器接口的工作原理及应用。3.并行A/D、D/A的工作原理及应用。教学难点:1.液晶显示器的原理及应用2.键盘接口的工作原理。,8.1键盘接口,键盘电路的设计应使CPU不仅能识别是否有键按下,还要能识别是哪一个键按下,而且能把此键所代表的信息翻译成计算机所能接收的形式。在单片机应用系统中多采用非编码键盘,其分为独立式键盘和矩阵式键盘,硬件上此类键盘只提供通、断两种状态,其它工作都靠软件来完成。,8.1.1键盘工作原理,1键输入原理2键输入接口与软件应解决的问题(l)键开关状态的可靠输入通常去抖动影响的方法有硬、软件两种。图8-1键闭合及断开时的电压波动,(2)对按键进行编码以给定键值或直接给出键号监测有无键按下;有键按下后,在无硬件去抖动电路时,应用软件延时方法除去抖动影响;有可靠的逻辑处理办法;输出确定的键号以满足散转指令要求。,8.1.2独立式按键,1独立式按键结构在此电路中,按键输入都设置为低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平。,图8-2独立式按键电路,2独立式按键的软件编制,START:MOVA,0FFH;置输入方式MOVP1,AL1:MOVA,P1;输入键状态CJNEA,#0FFH,L3;有键按下转L3LCALLDELAY;延时5mS,省略SJMPL1L3:LCALLDELLAY;延时5mSLCALLDELLAY;延时5mSMOVA,P1;再读P1口CJNEA,#0FFH,L2;确实有键按下转L2SJMPL1;误读键,返回L2:JNBACC.0,TAB0;为0转0号键首地址JNBACC.1,TAB1;为1转1号键首地址JNBACC.2,TAB2;为2转2号键首地址JNBACC.3,TAB3;为3转3号键首地址,JNBACC.4,TAB4;为4转4号键首地址JNBACC.5,TAB5;为5转5号键首地址JNBACC.6,TAB6;为6转6号键首地址JNBACC.7,TAB7;为7转7号键首地址SJMPL1;再次读入键状态TAB0:LJMPOPR0;转向0号键功能程序TAB1:LJMPOPR1.TAB7:LJMPOPR7.OPR0:.;0号键功能程序LJMPSTART;0号键程序执行完返回0PR7:.;7号键功能程序.LJMPSTART;7号键程序执行完返回,8.1.3行列式键盘,1行列式键盘电路的结构及原理,2键盘的工作方式(l)循环扫描方式键盘扫描程序一般应具备下述几个功能:判断键盘上有无键按下;去除键的抖动影响;扫描键盘,得到按下键的键号;判别闭合的键是否释放。图8-3中32个键的键值从左上角的数字“0”键对应为如下分布:00H,01H,02H,03H,04H,05H,06H,07H08H,09H,0AH,0BH,0CH,0DH,0EH,0FH10H,11H,12H,13H,14H,15H,16H,17H18H,19H,1AH,1BH,1CH,1DH,1EH,1FH,行线P2.0P2.3处于输入状态,列线P1.0P1.7为输出状态。按键设置在行、列线交点上,当某个键闭合时,则对应的行线和列线短路,行线输入即为列线输出。获取这32个键值时,P1口和P2口输出与输入的相应值为如下分布:012345670FEEFDEFBEF7EEFEDFEBFE7FE8FEDFDDFBDF7DEFDDFDBFD7FD10FEBFDBFBBF7BEFBDFBBFB7FB18FE7FD7FB7F77EF7DF7BF77F7由以上分布可以总结出:闭合键的键码值行首键号列号例如,当P1口的输出为F7H(11110111B),即其第3列有输出,读出P2口低4位的值为0DH(1101B),说明是第1行与第3列相交的键闭合,则键号8311。,读键盘程序如下:KEY:LCALLKS;调用KS判别有键按下吗?JNZK1;有键按下转移LCALLDELAY;无键按下,调延时子程序LJMPKEYK1:LCALLDELAY;加长延时时间,消除键抖动LCALLDELAYLCALLKS;调用KS子程序再次判别有无键闭合JNZK2;键按下,转逐列扫描LJMPKEY;误读键,返回K2:MOVR2,0FEH;首列扫描字送R2MOVR4,00H;首列号送R4K3:MOVA,R2MOVP1,A;列扫描字送P1口MOVA,P2;读取行扫描值JBACC.0,L1;第0行无键按下,转查第1行MOVA,00H;第0行有键按下,该行的行首键号0H送ALJMPLK;转求键号,L1:JBACC.1,L2;第1行无键按下,转查第2行MOVA,08H;第1行有键按下,该行行首键号08H送ALJMPLK;转求键号L2:JBACC.2,L3;第2行无键按下,转查第3行MOVA,#l0H;第2行有键按下,该行的行首键号l0H送ALJMPLK;转求键号L3:JBACC.3,NEXT;第3行无键按下,改查下一列MOVA,18H;第3行有键按下,该行的行首键号;l8H送ALK:ADDA,R4;形成键码送入APUSHACC;键码入栈保护K4:LCALLDELAYLCALLKS;等待键释放JNZK4;未释放,等待POPACC;键释放,弹栈送ACCRET;键扫描结束,返回,NEXT:INCR4;修改列号,指向下一列MOVA,R2JNBACC.7,KEY;第7位为0,已扫描完最高列转KEYRLA;未扫描完,扫描字左移一位,变为下列扫描字MOVR2,A;扫描字暂存R2LJMPK3;转下列扫描KS:MOVA,0MOVP1,A;全扫描字00H送P1口MOVA,P2;读入P2口行状态CPLA;变正逻辑,以高电平表示有键按下ANLA,0FH;屏蔽高4位RET;出口状态:A0时有键按下,(2)中断工作方式,采用中断扫描工作方式可提高CPU的工作效率。一种简易键盘接口如图8-5所示。,由于P1口为双向I/O口,可以采用“线路反转”法识别键值。步骤如下:(1)P1.0P1.3输出0,由P1.4P1.7输入并保存数据到A中;(2)P1.4P1.7输出0,由P1.0P1.3输入并保存数据到B中;(3)A的高四位与B的低四位相或成为键码值;(4)查表求得键号。,线路反转程序如下:ORG0000HLJMPSTARTORG0003LJMPFZH;转读键值程序ORG0030HSTART:MOVSP,#50HMOVP1,#0FHMOVIE,#81H;CPU和外部中断0开中断SJMP$ORG0080H;读键值中断程序FZH:SETBRS0;选择第1组工作寄存器MOVP1,#0F0H;设P1.0P1.3输出0MOVA,P1;读P1口ANLA,#0F0H;屏蔽低4位,保留高4位MOVB,A;P1.4P1.7的值存B,MOVP1,#0FH;反转设置,设P1.4P1.7输出0MOVA,P1ANLA,#0FH;屏蔽高4位,保留低4位ORLA,B;与P1.4P1.7的值相或,形成键码MOVB,AMOVR0,#00H;置键号初值MOVDPTR,#TAB;LOOP:MOVA,R0MOVCA,A+DPTR;取键码值CJNEA,B,NEXT2;与按键值相比较,不相等,继续SJMPRR0;相等返回,键码值在A中NEXT2:INCR0;键值加1CJNER0,#10H,LOOP;是否到最后一个键RR0:CLRRS0;恢复第0组工作寄存器RETITAB:DB0EEH,0EDH,0EBH,0E7H;0,1,2,3的键码值DB0DEH,0DDH,0DBH,0D7H;4,5,6,7的键码值DB0BEH,0BDH,0BBH,0B7H;8,9,10,11的键码值DB07EH,07DH,07BH,077H;12,13,14,15的键码值,8.2显示器接口,8.2.1LED显示器的结构与原理,8.2.2LED静态显示方式,显示子程序如下:功能:把数据从显示缓冲区送到数码管。入口:要显示的数放在以DIS0为首的8个单元中。出口:把预置的数输出以更新原有的显示。DIR:SETBRS0;保护第0组工作寄存器PUSHACC;保护现场PUSHDPHPUSHDPLMOVR2,08H;显示8个数码管MOVR0,DIS7;显示缓冲区末地址送入R0DL0:MOVA,R0;取要显示的数作查表偏移量MOVDPTR,TAB;指向字形表首MOVCA,ADPTR;查表得字形码MOVSBUF,A;发送显示,DL1:JNBTI,DL1;等待发送完一帧CLRTI;清中断标志,准备继续发送DECRO;更新显示单元DJNZR2,DL0;重复显示所有数码管CLRRS0;恢复使用第0组工作寄存器POPDPL;恢复现场POPDPHPOPACCRETTAB:DB0COH,0F9H,0A4H,0BOH,99H;0,1,2,3,4DB92H,82H,0F8H,80H,90H;5,6,7,8,9DB88H,83H,0C6H,0A1H,86H;A,B,C,D,EDB8EH,0BFH,8CH,0FFH;F,P,暗,8.2.3LED动态显示方式,图8-8扫描式显示电路,这种工作方式是分时轮流选通数码管的公共端,使得各个数码管轮流导通,即各数码管是由脉冲电流导电的(循环扫描一次的时间一般为10ms)。当所有数码管依次显示一遍后,软件控制循环,使每位显示器分时点亮。例如,如果要显示“123DEF”时,位选码、段选码扫描一遍的相应显示状态如表8-2所示。,本段程序中,设CWR为8255控制口地址,POA为A口地址,POC为C口地址。DIS0DIS5是片外显示缓冲区,共6个单元对应6个数码管。,程序清单如下:MOD:PUSHACC;保护现场PUSHDPHPUSHDPLMOVR0,CWR;指向8255控制口MOVA,82H;设置8255工作方式字MOVXR0,A;设A口、C口为基本输出方式DIR:MOVR0,DIS5;指向显示缓冲区首单元MOVR6,20H;选中最左数码管MOVR7,00H;设定显示时间MOVDPTR,TAB;指向字形表首地址DIR1:MOVA,00HMOVR1,POC;指向8255C口(位选口)MOVXR1,A;关断显示MOVXA,R0;取要显示的数MOVCA,ADPTR;查表得字形码。MOVR1,POA;指向8255A口(字形口)MOVXR1,A;送字形码,MOVA,R6;取位选字MOVR1,POC;指向位选口MOVR1,A;送位选字HERE:DJNZR7,HERE;延时INCR0;更新显示缓冲单元CLRCMOVA,R6RRCA;位选字右移MOVR6,AJNCDIR1;未扫描完继续循环POPDPL;恢复现场POPDPHPOPACCRETTAB:DB3FH,06,5BH,4FH,66H,6DH,7DH,07;07DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;80FH,824液晶显示器概述,1段码型液晶模块2点阵字符液晶模块3点阵图形液晶模块本节将介绍一种较容易学习,使用也较广泛的字符型液晶显示模块LCM。,825字符型液晶显示模块LCM的组成及原理,与指令控制有关的主要部件如下:1.地址指针计数器AC:AC是显示数据寄存器DDRAM和字符发生器CGRAM共同的地址指针计数器。2.DDRAM显示数据存储器存放LCD当前要显示的数据。3.CGROM字符产生器ROMCGROM字符产生器的ROM中存放已经固化好的字符库。4.CGRAM字符产生器RAMCGRAM字符产生器的RAM可存放8个用户设计的58点阵图型。5.忙碌标志触发器BFBF指示LCD是否正在作内部处理工作,在写指令前,必须先检查BF标志。,826液晶显示模块LCM引脚及说明,一个典型LCM各引脚的名称及功能如下。1脚VSS电源地;2脚VCC5V;3脚VO液晶电源(调节显示对比度);4脚RS寄存器选择端,当RS为0,选择指令寄存器;当RS为1,选择数据寄存器;5脚R/W读写控制信号,当R/W为0,选择写操作;当R/W为1,选择读操作;由RS和R/W控制读写操作的格式如表104所示。表104RS和R/W控制读写操作的格式RSR/W操作00写指令寄存器01读忙标志位BF和地址计数器AC到D0D710写数据寄存器11读数据寄存器6脚E使能控制端,E是正脉冲信号(脉冲宽度为0.5微妙左右),下降沿有效;7脚14脚DB0DB78位数据总线;不同厂家15和16脚的设置不同,具体设置情况,要查看型号说明书。,827LCM的指令,表85LCM指令一览表指令名称控制信号控制代码RSR/WD7D6D5D4D3D2D1D0清除屏幕0000000001归位000000001*输入方式00000001I/DS显示状态0000001DCB光标/画面移位000001S/CR/L*工作方式00001DLNF*CGRAM地址设置0001A5A4A3A2A1A0DDRAM地址设置001A6A5A4A3A2A1A0标志/地址计数器01BFA6A5A4A3A2A1A0写数据10数据读数据11数据,828LCM的复位及初始化,在LCM内部有一个复位电路,上电即可自动复位,复位后默认状态如下:1)清除显示;2)功能设定为:8位数据长度,单行显示,57点阵字符;3)显示屏、光标、闪烁功能均为关闭;4)输入模式为:AC地址自动加1,显示屏不移动。如果采用指令进行热启动,使用LCM的一般操作步骤如下:1)写入指令代码30H或38H;2)延时4.1ms;3)写入指令代码30H或38H;4)延时100S;5)写入指令代码30H或38H:6)读取BF标志位,如果为1则等待,为0执行下一条指令;如果电源符合要求,或者已经用指令进行了热启动,则可直接执行功能初始化指令,通常为如下几步:1)工作方式设置指令,0011NFxx;2)清除显示,01;3)设定输入方式,000001I/DS;4)设置显示状态指令,00001DCB。,829LCM的接口及应用举例,以AT89S51单片机为主机,实现与字符型LCM的接口,编程显示2行字母数字,第一行显示“WELCOMETO”,第二行显示“OURUNIVERSITY”。此例中的LCM为202显示模块。主机频率为6MHz,接口电路如图812所示。要求设定为2行显示,8位数据长度,57点阵字型。图812接口电路原理图图812接口电路原理图,编程如下。RSBITP2.0;寄存器选择信号R/WBITP2.1;读写选择信号EBITP2.2;使能控制ORG0000HLJMPMAINORG60HMAIN:MOVSP,#60H;设堆栈指针LCALLINIT;调LCM初始化程序LCALLFIRST;调设定显示地址为第一行第一个位置的子程序MOVDPTR,#TAB1;设置第一行字符的首地址指针LCALLDISPLAY;调用显示字符程序LCALLSECOND;调设定显示地址为第二行第一个位置的子程序MOVDPTR,#TAB2;设置第二行字符的首地址指针LCALLDISPLAY;调用显示字符程序SJMP$,;LCM初始化程序INIT:LCALLDELAY1;调延时5ms子程序,省略LCALLDELAY1MOVA,#30HMOVP2,#11111000B;置E、RS、R/W为0NOPSETBE;置E为高MOVP0,A;写入指令代码CLRE;置E为低LCALLDELAY1;延时5ms子程序,省略MOVA,#30HMOVP2,#11111000B;置E、RS、R/W为0NOPSETBE;置E为高MOVP0,A;写入指令代码CLRE;置E为低LCALLDELAY2;延时120s子程序,省略MOVA,#30HMOVP2,#11111000B;置E、RS、R/W为0NOP;延时,SETBE;置E为高MOVP0,A;写指令CLRE;置E为低LCALLDELAY2;延时120sMOVA,#38H;功能设置为2行显示,8位接口,57点阵ACALLWRC;判读BF和写命令MOVA,#01H;清除显示ACALLWRCMOVA,#06H;设置输入方式为AC为加1计数器,光标右移ACALLWRCMOVA,#0CH;设置显示状态为开显示,不显示光标,不闪烁ACALLWRCRET,;判读BF和写命令WRC:ACALLBUSY;调判读BF子程序MOVP2,#11111000B;置E、RS、R/W为0,准备写NOPSETBE;置E为高MOVP0,A;写入指令代码CLRE;置E为低RETBUSY:PUSHACCW:MOVP2,#11111010B;RS=0,R/W=1,E=0,准备读数据NOPSETBEMOVA,P0;读BF和AC值JBACC.7,W;BF不为0,等待CLREPOPACCRET,;写显示数据子程序WRTD:ACALLBUSYMOVP2,#11111100B;RS=1,R/W=0,E=0,准备写数据SETBEMOVP0,ACLRELCALLDELAY2RET;显示字符程序DISPLAY:MOVR1,#00NEXT:MOVA,R1MOVCA,A+DPTR;将DPTR所指的字符码逐一送到LCD显示CJNEA,#21H,DSL;到结束符“!”返回,否则继续显示RETDSL:LCALLWRTD;调显示数据子程序INCR1SJMPNEXT,FIRST:MOVA,#10000000B;DDRAM的地址设为80H,即要显示的字符从第一行的第一个位置开始LCALLWRCRETSECOND:MOVA,#11000000B;DDRAM的地址设为C0H,即要显示的字符从第二行的第一个位置开始LCALLWRCRETTAB1:DB“WELCOMETO”;LCD第1行显示的字符串DB“!”;结束码为“!”TAB2:DB“OURUNIVERSITY”;LCD第2行显示的字符串DB“!”;结束码为“!”END,8.3数模转换接口,8.3.1DAC电路原理,8.3.2DA转换器的主要技术指标,1DA建立时间(SettingTime)2DA转换精度(Accuracy)3分辨率(Resolution),8.3.3并行DA转换器,1DAC0832的引脚功能,2DAC0832的原理结构,图8-15DAC0832原理结构框图,3DAC0832的应用,图8-160832按单缓冲方式与AT89S51连接图,根据图8-16的电路,可以编出多种波形输出的DA转换程序,例如要得到图8-17的4种波形,则程序如下:,锯齿波START:MOVDPTR,#7FFFH;选中DAC0832MOVA,00HLP:MOVXDPTR,A;向0832输出数据INCA;累加器值加1SJMPLP三角波START:MOVDPTR,7FFFH;选中DAC0832MOVA,00HUP:MOVXDPTR,AINCAJNZUP;上升到A中为FFHDECADOWN:DECAMOVXDPTR,AJNZDOWN;下降到A中为00HINCASJMPUP;重复,矩形波START:MOVDPTR,7FFFHLP:MOVA,dataH;置输出矩形波上限MOVXDPTR,ALCALLDELH;调高电平延时程序,省略MOVA,dataL;置输出矩形波下限MOVXDPTR,ALCALLDELL;调低电平延时程序,省略SJMPLP;重复SJMPL2,梯形波START:MOVDPTR,7FFFHL1:MOVA,dataL;下限送AUP:INCAMOVXDPTR,ACJNEA,#dataH,L3;与上限比较L3:JCUPDOWN:LCALLDEL;调上限延时程序,省略L2:DECAMOVXDPTR,ACJNEA,#dataL,L4;与下限比较L4:JCL1SJMPL2,8.3.4串行D/A转换器,1.TLC5620的引脚功能图8-19TLC5620的引脚图,2.TCL5620的结构与工作原理,TLC5620有4路结构完全相同的8位电压输出数模转换器,每一路的原理框图与DAC0832类似。它的11位串行数据包括8位数据、2个DAC通道选择位、1个输出增益选择位。TLC5620输出电压VOUT的计算公式如下:,式中:Vref是参考电压,CODE是串行输入的数字量(0255),RNG是串行输入的倍压控制位,取值为0或1。,3TLC5620的时序,图10-22TLC5620工作时序图,图8-19TLC5620工作时序图,4应用实例利用TLC5620进行D/A转换,在A、B通道分别产生三角波和方波,该方波与三角波幅度相等、周期相同。例题连线图如图8-20所示。,图8-20TLC5620与单片机接口原理图,SCLABITP1.7;时钟线SDAABITP1.6;数据线SANBIT10H;三角波升、降标志位,为0时表示下降FANBIT11H;方波高、低电平标志位,为0时表示低电平LOADBITP3.5;数据控制线LDACBITP3.4;DAC更新控制线VOUTADATA30H;A通道数据暂存单元VOUTBDATA31H;B通道数据暂存单元ORG0000HAJMPMAINORG0100HMAIN:MOVSP,#60HNOPCLRSCLACLRSDAA,SETBLOADSETBLDACMOVR3,#0A2H;三角波的半周期计数器CLRSAN;三角波幅度递增递减标志位,初始化为0时,表示下降MOVVOUTA,#00H;三角波瞬态电压值存储器MOVR5,#0A2H;方波的半周期计数器CLRFAN;方电平标志位,初始化为0,表示低电平MOVVOUTB,#00H;方波高低电平电压值存储器,其幅度与三角波幅度相等DACHANG:;D/A转换程序开始MOVR1,#01H;选择通道A输出(三角波),2倍增益MOVR2,VOUTALCALLDAC5620;调用D/A转换子程序DJNZR3,CONTINUEA;判断三角波是否上升(或下降)到峰点(或谷点)MOVR3,#0A2HCPLSAN;如果已经达到峰点(或谷点)则改变幅度递增或递减标志,CONTINUEA:JBSAN,CONTINUEB;判断当前处于上升还是下降状态DECR2SJMPCONTINUECCONTINUEB:INCR2CONTINUEC:MOVVOUTA,R2;保存R2的值MOVR1,#03H;选择通道B输出(方波),2倍增益MOVR2,VOUTBLCALLDAC5620DJNZR5,CONTINUED;判断方波是否应该改变电平状态MOVR5,#0A2HCPLFAN;改变方波电平标志位,CONTINUED:JBFAN,CONTINUEE;根据方波高低电平标志位决定输出状态DECR2SJMPCONTINUEFCONTINUEE:INCR2MOVR2,#00HCONTINUEF:MOVVOUTB,R2;保存R2的值使VOUTB继续用于方波瞬态电压计算LJMPDACHANG;周期地进行转换,形成三角波和方波的周期信号;D/A转换子程序入口:R1,控制字;R2,数据字DAC5620:MOVA,R1;准备发控制字CLRSCLALCALLSENDBYTE,MOVA,R2;准备发数据字CLRSCLALCALLSENDBYTECLRLOADSETBLOADCLRLDACSETBLDACRETSENDBYTE:;发送时序要求中的一个字节MOVR7,#08SEND:SETBSCLARLCAMOVSDAA,CCLRSCLADJNZR7,SENDRET,8.4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华夏银行南通市如皋市2025秋招半结构化面试题库及参考答案
- 民生银行广州市天河区2025秋招群面案例总结模板
- 浦发银行重庆市北碚区2025秋招笔试英文行测高频题含答案
- 2025高职单招题库检测试题打印含完整答案详解(夺冠系列)
- 中信银行滨州市滨城区2025秋招金融科技岗笔试题及答案
- 2025年湖北武穴市事业单位引进人才40人笔试高频难、易错点备考题库及答案详解1套
- 华夏银行深圳市坪山区2025秋招笔试创新题型专练及答案
- 光大银行潍坊市奎文区2025秋招笔试英语题专练及答案
- 招商银行淄博市周村区2025秋招无领导小组面试案例库
- 平安银行哈尔滨市南岗区2025秋招笔试性格测试题专练及答案
- SYT 6680-2021 石油天然气钻采设备 钻机和修井机出厂验收规范-PDF解密
- 《遗传学》课程标准
- 蛋白质分离纯化及鉴定
- 2024年化粪池清理合同协议书范本
- 实用美术基础中职全套教学课件
- 债权债务法律知识讲座
- 南京财经大学《812西方经济学(宏观经济学、微观经济学)》历年考研真题及详解
- 基于教育培训行业的客户关系营销研究
- 肉制品工艺学-香肠类制品-课件
- 超全QC管理流程图
- 2广告实务课程标准
评论
0/150
提交评论