版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.4显示器接口5.4.1发光二极管显示器(LED)接口1.LED结构与原理abcdefgdp低电平高电平数码管简介组成:LED数码管由7段或8段发光二极管组成,在平面上排成8字型。显示原理:使某些段点亮而另一些段不亮就可以显示0---9,A---F等字型。使某段点亮必须具备2个条件:①共阴极管的公共端接地和共阳极管的公共端接电源。②共阴极管的控制端接电源和共阳极管的控制端接地。单个七段LED数码管的接口单个七段LED数码管与单片机的连接方法有2种:
1、软译码连接法
2、硬译码连接法abcdefgDp共阴极和共阳极的字段码互为反码
显示字符共阴极字段码共阳极字段码显示字符共阴极字段码共阳极字段码03FHC0HC39HC6H106HF9Hd5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8Hy6EH91H87FH80HL38HC7H96FH90HH76H89HA77H88H8.FFH00Hb7CH83H“灭”00FFH软译码连接法软译码连接法下,数码管与单片机的连接图:abcdefgDpP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.789C51+5VabcdefgDp1、欲使LED数码管显示2,试编程。
MOVP1,#01011011B2、编程让LED数码管显示30H单元的内容(30H单元的内容在0—9之间)。
UP:MOVA,30HMOVDPTR,#TABMOVCA,@A+DPTRMOVP1,ASJMPUPTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H共阳极LED硬译码连接法硬译码连接法下,数码管与单片机的连接图:abcdefgDpP1.0P1.1P1.2P1.3ABCD89C51利用BCD码—七段码译码器实现字形到字形码的转换。常用的BCD码—七段码译码器有74LS48和74LS47。
编程让LED数码管显示30H单元的内容(30H单元的内容在0—9之间)。
MOVP1,30HLTRBORBIabcdefgP1.4P1.5P1.6P1.7COMabcdefg74LS48共阴极LED+5V注意:在硬译码连接法下,直接送欲显示的数即可,字形到字形码的转换是用硬件实现的。思考:如果7448的ABCD接到8051的P14—P17,则如何修改程序?答案多个七段LED数码管的接口多个数码管的连接方法有4种:1、静态软译码连接法2、静态硬译码连接法3、动态硬译码连接法4、动态软译码连接法abcdefgDp静态软译码连接法静态软译码连接法下,4个LED数码管与单片机的连接图:abcdefgDpDpP0.0P0.1P0.2P0.389C51P0.4P0.5P0.6P0.7COMabcdefg共阴极LEDDpP2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7COMabcdefgDpP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7COMabcdefgDpP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7COMabcdefg1、编程在4个七段LED数码管上显示1234。
MOVP0,#06HMOVP1,#5BHMOVP2,#4FHMOVP3,#66HSJMP$2、编程在4个七段LED数码管上显示30H,31H,32H,33H单元中存放的1位BCD码的内容。
MOVDPTR,#TABUP0:MOVA,30HMOVCA,@A+DPTRMOVP0,AMOVA,31HMOVCA,@A+DPTRMOVP1,AMOVA,32HMOVCA,@A+DPTRMOVP2,AMOVA,33HMOVCA,@A+DPTRMOVP3,ASJMPUP0TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH思考:编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。答案静态硬译码连接法在静态硬译码连接法下,4个LED数码管与单片机的连接图:abcdefgDpP2.0P2.1P2.2P2.389C51DpP2.4P2.5P2.6P2.7COMabcdefgDpP1.0P1.1P1.2P1.3COMabcdefgP1.4P1.5P1.6P1.7ABCDLTRBORBIabcdefg74LS47+5VDpCOMabcdefgABCDLTRBORBIabcdefg74LS47+5VABCDLTRBORBIabcdefg74LS47+5VDpCOMabcdefgABCDLTRBORBIabcdefg74LS47+5V编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。思考:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中存放的1位BCD码的内容。+5V+5V+5V+5V程序答案动态硬译码连接法动态硬译码连接法下,4个数码管与单片机的连接图:abcdefgDpP2.0P2.1P2.2P2.389C51P2.4P2.5P2.6P2.7COMabcdefgABCDLTRBORBIabcdefg74LS48+5VCOMabcdefgCOMabcdefgCOMabcdefg例:编程在4个七段LED数码管上显示1234。在动态连接法下,数码管公共端均受控。驱动程序的编制充分利用了人眼的视觉滞留效应,循环扫描各数码管,使各数码管不是连续显示,但给人的视觉印象是连续地在显示。每个数码管的显示时间不得低于1ms,不亮的时间不能超过20ms。利用人眼的视觉滞留现象,实现让4个七段LED数码管上不同时显示1234,但人眼看到的效果却是同时显示1234。
1234思考:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中的内容。程序
答案
动态软译码连接法在动态软译码连接法下,4个数码管与单片机的连接图:abcdefgDpP2.0P2.1P2.2P2.389C51P3.0P3.1P3.2P3.3COMabcdefg驱动器COMabcdefgCOMabcdefgCOMabcdefg1234P2.4P2.5P2.6P2.7例:编程在4个七段LED数码管上显示1234。例:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中的内容。程序
程序
abcdefgDpP1.0P1.1P1.2P1.3ABCD89C51LTRBORBIabcdefgP1.4P1.5P1.6P1.7COMabcdefg74LS48共阴极LED+5VUP:MOVA,30HSWAPAMOVP1,ASJMPUP思考:如果7448的ABCD接到8051的P14—P17,则如何修改程序?abcdefgDpDpP0.0P0.1P0.2P0.389C51P0.4P0.5P0.6P0.7COMabcdefg共阴极LEDDpP2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7COMabcdefgDpP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7COMabcdefgDpP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7COMabcdefg
MOVDPTR,#TABUP0:MOVA,30H
ANLA,#0FHMOVCA,@A+DPTRMOVP0,A
MOVA,30HSWAPAANLA,#0FHMOVCA,@A+DPTRMOVP1,A
MOVA,31HANLA,#0FHMOVCA,@A+DPTRMOVP2,A
MOVA,31HSWAPAANLA,#0FHMOVCA,@A+DPTRMOVP3,ASJMPUP0TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH思考:编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。abcdefgDpP2.0P2.1P2.2P2.389C51DpP2.4P2.5P2.6P2.7COMabcdefgDpP1.0P1.1P1.2P1.3COMabcdefgP1.4P1.5P1.6P1.7ABCDLTRBORBIabcdefg74LS47+5VDpCOMabcdefgABCDLTRBORBIabcdefg74LS47+5VABCDLTRBORBIabcdefg74LS47+5VDpCOMabcdefgABCDLTRBORBIabcdefg74LS47+5V编程在4个七段LED数码管上显示30H,31H单元中的内容。(30H,31H单元中分别存有2位BCD码)。
UP:MOVP1,30HMOVP2,31HSJMPUP+5V+5V+5V+5VabcdefgDpP2.0P2.1P2.2P2.389C51DpP2.4P2.5P2.6P2.7COMabcdefgDpP1.0P1.1P1.2P1.3COMabcdefgP1.4P1.5P1.6P1.7ABCDLTRBORBIabcdefg74LS47+5VDpCOMabcdefgABCDLTRBORBIabcdefg74LS47+5VABCDLTRBORBIabcdefg74LS47+5VDpCOMabcdefgABCDLTRBORBIabcdefg74LS47+5V思考:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中存放的1位BCD码的内容。
+5V+5V+5V+5V
UP:
MOVA,31HSWAPAORLA,30HMOVP1,A
MOVA,33HSWAPAORLA,32HMOVP2,ASJMPUPabcdefgDpP2.0P2.1P2.2P2.389C51P2.4P2.5P2.6P2.7COMabcdefgABCDLTRBORBIabcdefg74LS48+5VCOMabcdefgCOMabcdefgCOMabcdefg例:编程在4个七段LED数码管上显示1234。1234START:MOVP2,#11100001BLCALLD2MSMOVP2,#11010010BLCALLD2MSMOVP2,#10110011BLCALLD2MSMOVP2,#01110100BLCALLD2MSSJMPSTARTabcdefgDpP2.0P2.1P2.2P2.389C51P2.4P2.5P2.6P2.7COMabcdefgABCDLTRBORBIabcdefg74LS48+5VCOMabcdefgCOMabcdefgCOMabcdefg34START:MOVR0,#30HMOVR7,#4MOVR2,#0E0HUP:MOVA,@R0ORLA,R2MOVP1,ALCALLD2MSINCR0MOVA,R2RLAMOVR2,ADJNZR7,UPSJMPSTART思考:编程在4个七段LED数码管上显示30H,31H,
32H,33H单元中的内容。abcdefgDpP2.0P2.1P2.2P2.389C51P3.0P3.1P3.2P3.3COMabcdefg驱动器COMabcdefgCOMabcdefgCOMabcdefg1234P2.4P2.5P2.6P2.7例:编程在4个七段LED数码管上显示1234。UP:MOVP1,#06HMOVP3,#0FEHLCALLD2MsMOVP1,#5BHMOVP3,#0FDHLCALLD2mSMOVP1,#4FHMOVP3,#0FBHLCALLD2mSMOVP1,#66HMOVP3,#0F7HLCALLD2mSSJMPUPabcdefgDpP2.0P2.1P2.2P2.389C51P3.0P3.1P3.2P3.3COMabcdefg驱动器COMabcdefgCOMabcdefgCOMabcdefg34P2.4P2.5P2.6P2.7例:编程在4个七段LED数码管上显示30H,31H,32H,33H单元中的内容。START:MOVR0,#30HMOVR7,#4MOVR2,#0FEHMOVDPTR,#TABUP:MOVA,@R0MOVCA,@A+DPTRMOVP1,AMOVP3,R2LCALLD2MS
INCR0MOVA,R2RLAMOVR2,ADJNZR7,UPSJMPSTARTTAB:DB3FH,06H,5BH,4FHDB66H,6DH,7DH,07HDB7FH,6FH键盘接口原理1.键盘输入的特点键盘:一组按键开关的集合。行线电压信号通过键盘开关机械触点的断开、闭合,输出波形如图。2.按键的确认检测行线电平高电平:断开;低电平:闭合,常用软件来消除按键抖动。基本思想:检测到有键按下,键对应的行线为低,软件延时10ms后,行线如仍为低,则确认该行有键按下。3.如何消除按键的抖动
当键松开时,行线变高,软件延时10ms后,行线仍为高,说明按键已松开。采取以上措施,躲开了两个抖动期t1和t3的影响。键盘接口的工作原理独立式按键接口和行列式键盘接口。1.独立式键盘接口各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可很容易判断那个键被按下。此种接口适于键数较少或操作速度较高的场合。图(a)为中断方式的独立式键盘工作电路图(b)为查询方式的独立式键盘工作电路。图为8255A扩展I/O口的独立式按键接口电路。图用三态缓冲器扩展的I/O口的按键接口电路。对图独立式键盘编程,软件消抖,查询方式检测键的状态。仅有一键按下时才有效才处理。KEYIN:MOVDPTR,#0BFFFH;键盘端口地址BFFFH MOVXA,@DPTR ;读键盘状态 ANLA,#1FH ;屏蔽高三位MOVR3,A ;保存键盘状态值LCALLDELAY10 ;延时10ms去键盘抖动MOVXA,@DPTR ;再读键盘状态ANLA,#1FH ;屏蔽高三位CJNEA,R3,RETURN;两次不同,抖动引起转RETURN CJNEA,#1EH,KEY2;相等,有键按下,不等转KEY2 LJMPPKEY1 ;是K1键按下,转K1键处理 ;子程序PKEY1KEY2:CJNEA,#1DH,KEY3;S2键未按下,转KEY3 LJMPPKEY2 ;S2键按下,转PKEY2处理KEY3: CJNEA,#1BH,KEY4 ;S3未按下,转KEY4 LJMPPKEY3;S3按下,转PKEY3处理KEY4:CJNEA,#17H,KEY5;S4键未按下,转KEY5
LJMPPKEY4;S4按下,转PKEY4处理KEY5: CJNEA,#0FH,PASS;S5未按下,转RETURN LJMPPKEY5;S5按下,转PKEY5处理RETURN:RET;重键或无键按下,从子程序返回识别和编程简单,用在按键数较少的场合。2.行列式(矩阵式)键盘接口用于按键数目较多的场合,由行线和列线组成,按键位于行、列的交叉点上。如图10-10所示。按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线。(1)行列式键盘工作原理无键按下,该行线为高电平,当有键按下时,行线电平由列线的电平来决定。由于行、列线为多键共用,各按键彼此将相互发生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。(2)按键的识别方法a.扫描法图(b)中3号键被按下为例,来说明此键时如何被识别出来的。识别键盘有无键被按下的方法,分两步进行:第1步:识别键盘有无键按下;第2步:如有键被按下,识别出具体的按键。把所有列线置0,检查各行线电平是否有变化,如有变化,说明有键按下,如无变化,则无键按下。上述方法称为扫描法,即先把某一列置低电平,其余各列为高电平,检查各行线电平的变化,如果某行线电平为低,可确定此行列交叉点处的按键被按下。b.线反转法
只需两步便能获得此按键所在的行列值,线反转法的原理如图10-11。第1步:列线输出为全低电平,则行线中电平由高变低的所在行为按键所在行。第2步:行线输出为全低电平,则列线中电平由高变低所在列为按键所在列。结合上述两步,可确定按键所在行和列。(3)键盘的编码根据实际需要灵活编码。键盘的工作方式单片机在忙于各项工作任务时,如何兼顾键盘的输入,取决于键盘的工作方式。原则:即要保证能及时响应按键操作,又不要过多占用CPU的工作时间。通常,键盘工作方式有3种,即编程扫描、定时扫描和中断扫描。1.编程扫描方式只有当单片机空闲时,才调用键盘扫描子程序,扫描键盘。工作过程:(1)在键盘扫描子程序中,先判断有无键按下。方法:PA口8位输出全0,读PC口低4位状态,若PC0~PC3为全1,则说明键盘无键按下;若不全为1,则说明键盘可能有键按下。(2)用软件来消除按键抖动的影响。如有键按下,则进行下一步。(3)求按下键的键号。(4)等待按键释放后,再进行按键功能的处理操作。2.定时扫描工作方式利用单片机内的定时器,产生10ms的定时中断,对键盘进行扫描。3.中断工作方式只有在键盘有键按下时,才执行键盘扫描程序,如无键按下,单片机将不理睬键盘。键盘所做的工作分为三个层次,如图10-13。第1层:单片机如何来监视键盘的输入。三种工作方式:①编程扫描②定时扫描③中断扫描。第2层:确定具体按键的键号。体现在按键的识别方法上就是:①扫描法;②线反转法。第3层:执行键处理程序。键盘/显示器接口设计实例一般把键盘和显示器放在一起考虑。利用并行I/O芯片实现键盘/显示器接口图10-14:8031用扩展I/O接口芯片8155H实现的6位LED显示和32键的键盘/显示器接口电路。图中8155H也可用8255A来替代。8031外扩一片8155H。RAM地址:7E00H~7EFFH。I/O口地址:7F00H~7F05H。
PA口为输出口,控制键盘列线的扫描,同时又是6位共阴极显示器的位扫描口。
PB口作为显示器段码输出口,PC口作为键盘的行线状态的输入口。75452:反相驱动器,7407:同相驱动器。1.动态显示程序设计8031内部RAM6个显示缓冲单元:79H~7EH,存放要显示的6位数据。8155H的PB口输出相应位的段码,依次改变PA口输出为高的位使某一位显示某一字符,其它位为暗。动态地显示出由缓冲区中显示数据所确定的字符。程序流程如图10-15。参考程序:DIR:MOVR0,#79H ;置缓冲器指针初值MOVR3,#01H ;位选码的初值送R3MOVA,R3LD0:MOVDPTR,#7F01H;位选码→PA口(PA.0位);最左边LED亮MOVX@DPTR,AINCDPTR ;数据指针指向PB口MOVA,@R0;显示数据→AADDA,#0DH;加偏移量(下条指令到表首间;所有指令占的单元数)MOVCA,@A+PC;根据显示数据来查表取段码DIR1:
MOVX@DPTR,A ;段码→8155HPB口ACALLDL1ms;该位显示1msINCR0 ;指针指向下一个数据单元MOVA,R3 ;位选码送入A中JBAcc.5,LD1;判断是否扫描到最右边的;LED,如到最右边则返回RLA;位选码向左移一位,准备让;右边的下一位LED亮MOVR3,A ;位选码送R3中保存AJMPLD0;LD1:RET;DSEG:DB3FH,06H,5BH,4FH,66H,6DH;共阴极段码表 DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHDB31H,6EH,1CH,23H,40H,03HDB18H,00HDL1ms: MOVR7,#02H ;延时1ms子程序DL: MOVR6,#0FFHDL6: DJNZR6,DL6DJNZR7,DLRET2.键盘程序设计(1)判别键盘上有无键闭合(2)去除键的机械抖动(3)判别闭合键的键号(4)使CPU对键的一次闭合仅作一次处理键盘程序的流程如图10-16。键盘子程序如下:KEYI:ACALLKS1 ;调用判有无键闭合子程序JNZLK1;有键闭合,跳LK1NI:ACALLDIR ;无键闭合,调用显示子程序,延;迟6ms后,跳KEYIAJMPKEYILK1:ACALLDIR ;可能有键闭合,软件延迟12ms去抖ACALLDIRACALLKS1;调用判有无键闭合子程序JNZLK2 ;经去抖,判键确实闭合,跳LK2ACALLDIR ;调用显示子程序延迟6msAJMPKEYI ;抖动引起,跳KEYILK2:MOVR2,#0FEH ;列选码→R2MOVR4,#00H ;R4为列号计数器LK4:MOVDPTR,#7F01H;列选码→8155H的PA口MOVA,R2;MOVX@DPTR,A;INCDPTR ;数据指针增2,指向PC口INCDPTR;MOVXA,@DPTR ;读8155HPC口JBAcc.0,LONE ;0行线为高,无键闭合,跳LONE,转判1行MOVA,#00H ;0行有键闭合,首键号0→AAJMPLKP ;跳LKP,计算键号LONE:JBAcc.1,LTW0;1行线为高,无键闭合,跳LTW0,;转判2行MOVA,#08H;1行有键闭合,首键号8→AAJMPLKP LTW0:JBA.2,LTHR;2行线为高,无键闭合,跳 ;LTHR,转判3行
MOVA,#10H;2行有键闭合,首键号10H→AAJMPLKP ;跳LKP,计算键号LTHR:JBAcc.3,NEXT;3行线为高,无键;闭合,跳NEXT,准备下一列扫描MOVA,#18H ;3行有键闭合,首键号18H→ALKP:ADDA,R4;计算键号:首键号+列号=键号PUSHA ;键号进栈保护LK3:ACALLDIR ;调用显示子程序,延时6msACALLKS1 ;调用判有无键闭合子程序,延时 ;6ms JNZLK3 ;判键释放否,未释放,则循环
POPA ;键已释放,键号出栈→ARETNEXT:INCR4;列计数器加1,为下一列扫描作准备MOVA,R2;判是否已扫到最后一列(最右一列)JNBAcc.7,KND;键扫描已扫到最后一列,跳KND, ;重新进行整个键盘扫描RLA ;键扫描未扫到最后一列,,位选码左移 ;一位MOVR2,A;位选码→R2AJMPLK4;KND:AJMPKEYI;KS1:MOVDPTR,#7F01H;判有无键闭合子程序,全“0”→ ;扫描口(PA口)MOVA,#00H ;即列线全为低电平MOVX@DPTR,A;INCDPTR ;DPTR增2,指向PC口INCDPTR ;指针增1,指向PC口MOVXA,@DPTR;从PC口读行线的状态CPLA ;行线取反,如无键按下,则A为0;ANLA,#0FH;屏蔽无用的高4位RET10.3.2利用8031的串行口实现键盘/显示器接口串口未作它用,可用来外扩键盘/显示器。串口为方式0输出,串口外接移位寄存器74LS164。接口电路如图10-17。74LS164(0)~74LS164(7):作为8位LED的段码输出,8031的P3.4、P3.5:两行键的行状态输入P3.3(TXD):同步移位脉冲输出控制线,优点:亮度大,容易做到显示不闪烁,且CPU不必频繁的为显示服务,从而使单片机有更多的时间处理其它事务。显示子程序:DIR:SETBP3.3 ;P3.3=1允许TXD脚同步移位 ;脉冲输出MOVR7,#08H;送出的段码个数,R7为段 ;码个数计数器MOVR0,#7FH;7FH~78H为显示数据缓冲区DL0: MOVA,@R0 ;取出要显示的数送AADDA,#0DH;加上偏移量MOVCA,@A+PC;查段码表SEGTAG,取出段码MOVSBUF,A;将段码送SBUF
DL1:JNBTI,DL1 ;输出段码,查询TI状态,1个字节 ;的段码输出完否?CLRTI ;1个字节的段码输出完,清TI标志DECR0 ;指向下一个显示数据单元
DJNZR7,DL0 ;段码个数计数器R7是否为0,如不 ;为0,继续送段码CLR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同管理风险控制全流程模板
- 合同审核及管理标准化流程工具
- 第三单元识字试卷及答案
- 学校科技成果转化责任承诺书(8篇)
- 跨境贸易合作协议说明要求事项清晰明了
- 企业部门协作需求管理表模板
- 2025年汽车零部件行业智能汽车零部件与新材料应用研究报告及未来发展趋势预测
- 2025年农产品加工行业农产品精深加工与品牌建设研究报告及未来发展趋势预测
- 陕西证券从业考试及答案解析
- 房企碳信息披露-洞察与解读
- 儿康康复科进修汇报
- 山东省2025年冬季普通高中学业水平考试英语试题及参考答案
- 科技带头人竞聘汇报
- 病房环境课件模板范文
- 高考语文《文言文阅读》40篇专项练习(选自模拟真题)(含答案)
- 自然资源知识培训课件
- 医疗设备租赁管理办法
- 房屋租赁法律培训课件
- 感术行动培训课件
- 用电安全防火安全课件
- 危险化学品法律法规培训
评论
0/150
提交评论