




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广东机电职业技术学院电子产品设计 论文题目: 多功能迷你跑马音乐盒 专 业: 计算机控制技术 班 级: 学生姓名: 指导教师: 二零一零年五月目 录摘要31设计的作用、目的32设计的具体实现.32.1系统概述.32.2单元电路设计与分析42.3电路的安装与调试73 心得体会及建议83.1 心得体会83.2 建议84 附录95参考文献18摘 要跑马灯,顾名思义,就是“会像马儿一样跑动”的小灯,故取名“跑马灯”。跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由多个led发光二极管组成。在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。1设计的作用、目的(1)使用32个彩色led灯,用这32个发光二极管以不同的模式循环点亮;(2)、三个功能键,k1模式键,通过按键调整显示结果,总共有十种模式;k2加速键;k3减速键;(3)当撤换最后一个功能模式时,蜂鸣器将会播放音乐,此时led将当作音频灯使用;(4)十种模式通过一个共阳数码管显示出来,十个模式分别显示为09。通过发光二极管的动态闪亮,显示非常炫目的效果,应用于各种建筑物,大楼,酒吧,ktv,夜总会等娱乐场所,拖尾灯,以及各种休闲娱乐场所用的动态灯光显示,通过此次设计,可以加深对51单片机的应用、c51编程和protues软件操作的能力。了解51单片机的外围引脚,以及各个端口的功能,还可以通过对走马灯的程序编写让我们对程序的执行方式和特点有一个初步的认识,同时掌握c51软件与protues联机调试程序,对进一步学习单片机打下坚实基础。2设计的具体实现2.1系统概述本设计的要求是设计一个有多种功能的走马灯,有多种不同的显示方式,加速功能和减速功能,这里的加速减速还有显示方式都是由单片机内部的程序控制,在这里我将32个光二极管分别接在p0和p1,通过程序控制这两个端口的电平高低,将32个光二极管的正极接电源,负极接p0和p1口,即发p0和p1口的相应端口为高电平时,发光二极管的两端都为高电平,所以发光二极管不亮,当发光二极管的相应端口为低电平时就能被点亮。再通过程序循环的让各个端口以不同的方式点亮来达到走马的效果,并且当中要有一定的延时,延时时间小于人眼视觉暂留时间,否则人眼看上去每个灯都是亮的也就没有跑马效果。系统框图如图一:mcu(at89s51)led显示阵列12m晶振复位电路7段共阴数码管键盘图一 系统框图2.2单元电路设计与分析1. 主控芯片at89s52at89s52是一个低功耗,高性能cmos 8位单片机,片内含4k bytes isp(in-system programmable)的可反复擦写1000次的flash只读程序存储器,器件采用atmel公司的高密度、非易失性存储技术制造,兼容标准mcs-51指令系统及80c51引脚结构,芯片内集成了通用8位中央处理器和isp flash存储单元,功能强大的微型计算机的at89s51可为许多嵌入式控制应用系统提供高性价比的解决方案。2. at89s52性能简介at89s52具有如下特点:40个引脚,4k bytes flash片内程序存储器,128 bytes的随机存取数据存储器(ram),32个外部双向输入/输出(i/o)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。此外,at89s52设计和配置了振荡频率可为0hz并可通过软件设置省电模式。空闲模式下,cpu暂停工作,而ram定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存ram的数据,停止芯片其它功能直至外中断激活或硬件复位。at89s52 pdip pin configurations如图二:图二 at89s52 pin configurations3.显示部分:显示部分用32个发光二极管分别接在p0和p1,通过程序控制p0和p2的16个端口按照一定的方式依次为低电平以点亮相应端口的led。led阵列如图三:图三 led显示阵列4. 模式显示部分:模式即跑马的方式,共十种。相应方式由数码管显示出来,每当模式按钮按下时,相应的模式加一 ,数码管显示相应模式。共阴数码管结构如图四:a 各段代码 b 实物外观图四 共阳数码管结构5.单片机部分:该部分主要涉及功能的实现方式,即程序编写。程序要实现的功能包括读键盘,通过对读入键盘的值控制led点亮方式和数码管显示。键盘有三个按键k1、k2、k3,k1控制led点亮模式,k2、k3键控制跑马灯速度,k2加速,k3减速。不论k1被按下多少次,led九种点亮模式是循环的,k2、k3键控制速度分别有上限和下限,多按无效。6音乐播放部分:撤换最后一个功能模式时,蜂鸣器将会播放音乐,此时led将当作音频灯使用。当中共有三首音乐,分别是我的骄傲 同一首歌和两只蝴蝶此时k2加速充当下一曲的作用,k3减速充当上一曲的作用,歌曲是循环播放的,此时led彩色灯将从当随音频变化的指示灯。程序设计思路:主程序中默认执行左右流水灯,在中断服务程序中,首先读取按键状态,然后延时10ms,再次读取按键状态。把两次获得的按键状态比较,如果不同,就表示是抖动,退出中断;否则,就去判断是哪个按键按下。如果是k1,就执行下一个跑马;如果是k2,就执行跑马加速;如果是k3,就执行跑马减速。采用置标志位的方法。即在主程序中设定两个标志位,一个跑马模式标志位,一个跑马速度标志位。不断的对这三个标志进行查询:如果是跑马模式标志为状态0,就执行右向跑马;如果是状态1,就执行左向跑马灯,依次类推。跑马速度标志默认值为10,对应延时值为200ms。而在中断服务程序中,只需要进行如下工作:去抖动,键盘识别,改变标志位。程序流程图如图五:图五程序流程图2.3电路的安装与调试用keil将程序编写好之后,检查程序有无错误。有错误就改正,直到没有错误,最后生成hex文件,再用peoteus画好硬件电路图,将单片机指向刚生成的hex文件并进行仿真调试,在调试过程当中通过调试的结果完善程序。一切之后,下面就进行最后阶段,即在面包板上搭电路,然后用烧写器将hex文件下载到at89s52单片机中。调试电路,带着笑容欣赏胜利的成果。仿真图如图:3心得体会及建议3.1 心得体会通过此次课程设计,不仅初步掌握了51单片机的一些基本功能应用,还学会了使用keil和protues两个软件。知道了怎么用keil新建工程文件、编写调试程序、生成hex文件;怎么用protues软件画图,特别是总线的画法,怎么仿真等。我会以此为起点,进一步学习和使用单片机,为将来工作打基础。感谢我的51单片机启蒙老师李建波老师的教诲。3.2 建议希望老师多我们讲一些单片机的研究方向,平时也多给我们出一些小设计课题,我觉得像这样自己做一个设计对理论学习是一个很好的总结,当我们有不懂的东西的时候也可以得到老师的指点,这样才能够更全面的认识和学好单片机。4 附录第 20 页 共 20 页实物图如图六:c程序如下:#include #include soundplay.hunsigned char runmode;/*system fuction*void delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+)for(j=0;j120;j+);unsigned char code leddisplaycode = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, /07 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff;void display(unsigned char value)p3 = leddisplaycodevalue;void ledflash(unsigned char count)unsigned char i;bit flag;for(i = 0; i8)&0x00ff);void initialcpu(void)runmode = 0x00;timer0count = 0;systemspeedindex = 9;p1 = 0x00;p0 = 0x00;p2 = 0xff;p3 = 0x00;delay1ms(500);p1 = 0xff;p0 = 0xff;p2 = 0xff;p3 = 0xff;setspeed(systemspeedindex);display(runmode);/mode 0unsigned int ledindex = 0;bit leddirection = 1,ledflag = 1;void mode_0(void)ledshow(0x0001ledindex);ledindex = (ledindex+1)%16;/mode 2void mode_2(void)if(leddirection) ledshow(0x0001ledindex);if(ledindex=15) leddirection = !leddirection; ledindex = (ledindex+1)%16;/mode 3void mode_3(void)if(leddirection) ledshow(0x0001ledindex);if(ledindex=15) leddirection = !leddirection; ledindex = (ledindex+1)%16;/mode 4void mode_4(void)if(leddirection) if(ledflag) ledshow(0xfffeledindex);else if(ledflag) ledshow(0x7fffledindex); else ledshow(0xfffeledindex);if(ledindex=15) leddirection = !leddirection; if(leddirection) ledflag = !ledflag; ledindex = (ledindex+1)%16;/mode 5void mode_5(void)if(leddirection) ledshow(0x000fledindex);if(ledindex=15) leddirection = !leddirection; ledindex = (ledindex+1)%16;/mode 6void mode_6(void)if(leddirection) ledshow(0x000fledindex);if(ledindex=15) leddirection = !leddirection; ledindex = (ledindex+1)%16;/mode 7void mode_7(void)if(leddirection) ledshow(0x003fledindex);if(ledindex=9) leddirection = !leddirection; ledindex = (ledindex+1)%10;/mode 8void mode_8(void)ledshow(+ledindex);void timer0eventrun(void)if(runmode=0x00) mode_0(); else if(runmode =0x01) mode_1();else if(runmode =0x02) mode_2();else if(runmode =0x03) mode_3();else if(runmode =0x04) mode_4();else if(runmode =0x05) mode_5();else if(runmode =0x06) mode_6();else if(runmode =0x07) mode_7();else if(runmode =0x08) mode_8();void timer2(void) interrupt 5 using 3tf2 = 0; /中断标志清除( timer2 必须软件清标志!)if(+timer0count=systemspeed) timer0count = 0; timer0eventrun(); unsigned char musicindex = 0;void keydispose(unsigned char key)if(key&0x01) leddirection = 1; ledindex = 0; ledflag = 1; runmode = (runmode+1)%10; display(runmode); if(runmode=0x09) tr2 = 0; else tr2 = 1;if(key&0x02) if(runmode=0x09) musicindex =(musicindex+musicnumber-1)%musicnumber; else if(systemspeedindex0) -systemspeedindex; setspeed(systemspeedindex); else ledflash(6); if(key&0x04) if(runmode=0x09) musicindex =(musicindex+1)%musicnumber; else if(systemspeedindex28) +systemspeedindex; setspeed(systemspeedindex); else ledflash(6); /*music*/挥着翅膀的女孩unsigned char code music_girl= 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03, 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1a,0x03, 0x1b,0x03, 0x1f,0x03, 0x1f,0x03, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x1f,0x03, 0x1f,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x1f,0x03, 0x1b,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1a,0x66, 0x1a,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x1f,0x03, 0x1b,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1a,0x66, 0x1a,0x03, 0x19,0x03, 0x19,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x00, 0x1a,0x03, 0x1a,0x03, 0x1a,0x03, 0x1b,0x03, 0x1b,0x03, 0x1a,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03, 0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x04, 0x18,0x0e, 0x18,0x03, 0x17,0x04, 0x18,0x0e, 0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x1f,0x04, 0x1b,0x0e, 0x1b,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1a,0x66, 0x1a,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x66, 0x1f,0x03, 0x1b,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1a,0x66, 0x1a,0x03, 0x19,0x03, 0x19,0x03, 0x1f,0x03, 0x1b,0x03, 0x1f,0x00, 0x18,0x02, 0x18,0x03, 0x1a,0x03, 0x19,0x0d, 0x15,0x03, 0x15,0x02, 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00;/同一首歌unsigned char code music_same= 0x0f,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03, 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02, 0x15,0x00, 0x0f,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66, 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00, 0x17,0x01, 0x19,0x02, 0x1b,0x02, 0x1b,0x70, 0x1a,0x03, 0x1a,0x01, 0x19,0x02, 0x19,0x03, 0x1a,0x03, 0x1b,0x02, 0x1a,0x0d, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03, 0x19,0x02, 0x1a,0x02, 0x19,0x0c, 0x18,0x0d, 0x17,0x03, 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0f,0x0c, 0x10,0x02, 0x15,0x00, 0x1f,0x01, 0x1a,0x01, 0x18,0x66, 0x19,0x03, 0x1a,0x01, 0x1b,0x02, 0x1b,0x03, 0x1b,0x03, 0x1b,0x0c, 0x1a,0x0d, 0x19,0x03, 0x17,0x00, 0x1f,0x01, 0x1a,0x01, 0x18,0x66, 0x19,0x03, 0x1a,0x01, 0x10,0x02, 0x10,0x03, 0x10,0x03, 0x1a,0x0c, 0x18,0x0d, 0x17,0x03, 0x16,0x00, 0x0f,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70, 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66, 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0f,0x0c, 0x1a,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66, 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00, 0x00,0x00 ;/两只蝴蝶 unsigned char code music_two = 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0d, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0e, 0x15,0x04, 0x0f,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0d, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01, 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0d, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0e, 0x15,0x04, 0x0f,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x01, 0x19,0x03, 0x1a,0x03, 0x19,0x03, 0x17,0x01, 0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0d, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0d, 0x15,0x00, 0x19,0x03, 0x19,0x03, 0x1a,0x03, 0x1f,0x03, 0x1b,0x03, 0x1b,0x03, 0x1a,0x03, 0x17,0x0d, 0x16,0x03, 0x16,0x03, 0x16,0x0d, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1a,0x02, 0x1a,0x02, 0x10,0x03, 0x17,0x0d, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x02, 0x1f,0x02, 0x1b,0x03, 0x1a,0x03, 0x1a,0x0e, 0x1b,0x04, 0x17,0x02, 0x1a,0x03, 0x1a,0x03, 0x1a,0x0e, 0x1b,0x04, 0x1a,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x17,0x0d, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03, 0x19,0x03, 0x1a,0x03, 0x1f,0x03, 0x1b,0x03, 0x1b,0x03, 0x1a,0x03, 0x17,0x0d, 0x16,0x03, 0x16,0x03, 0x16,0x03, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1a,0x02, 0x1a,0x02, 0x10,0x03, 0x17,0x0d, 0x16,0x03, 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03, 0x1f,0x02, 0x1b,0x03, 0x1a,0x03, 0x1a,0x0e, 0x1b,0x04, 0x17,0x02, 0x1a,0x03, 0x1a,0x03, 0x1a,0x0e, 0x1b,0x04, 0x17,0x16, 0x1a,0x03, 0x1a,0x03, 0x1a,0x0e, 0x1b,0x04, 0x1a,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0f,0x02, 0x10,0x03, 0x15,0x00, 0x00,0x00 ;/*unsigned char * selectmusic(unsigned char soundindex)unsigned char *musicaddress = 0;switch (soundindex) case 0x00: musicaddress = &music_girl0; /挥着翅膀的女孩 break; case 0x01: musicaddress = &music_same0; /同一首歌 break; case 0x02: musicaddress = &music_two0; /两只蝴蝶 break; case 0x03: break; case 0x04: break; case 0x05: break; case 0x06: break; case 0x07: break; case 0x08: break; case 0x09: break; default:break;return musicaddress;void playmusic(void) delay1ms(200);play(selectmusic(musicindex),0,3,360);/*main()unsigned char key;initialcpu();initialsound();initialtimer2();while(1) key = getkey(); if(runmode=0x09) playmusic(); if(key!=0x00) keydispose(key); 程序地址:/hi吧一族/blog/item/2cbe26cde3f8100f92457e3c.html7参考文献1 谭浩强c程序设计(第二版)m北京:清华大学出版社,1999。2 李群芳单片机微型计算机与接口技术(第3版)j北京:电子工业出版社2008。3 百度搜索引擎网址/关键字:跑马灯。g an employment tribunal claiemployment tribunals sort out disagreements between employers and employees.you may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismissed unfairly.for more informat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 加快培育新质生产力的核心
- 民族特色扎染课件
- 2025年眼科常见眼病诊断治疗模拟考试卷答案及解析
- 2025年心理咨询与治疗技巧竞赛试卷答案及解析
- 2025年老年心血管疾病的综合干预模拟考试答案及解析
- 2025年过敏反应护理处理规范性操作考核卷答案及解析
- 2025年运动医学科运动损伤防护技术模拟试卷答案及解析
- 2025年心血管内科心电图诊断技能考核试卷答案及解析
- 2025年精神科抑郁症评估量表应用测验答案及解析
- 新质生产力:科技是第一动力
- 儿童表演唱课件
- 工程造价培训用课件
- GB/T 19348.2-2025无损检测工业射线照相胶片第2部分:用参考值方法控制胶片处理
- 安踏ai面试题库大全及答案
- T/CATCM 001.1-2017保健类眼贴第1部分:通用要求
- 血液透析患者麻醉管理
- 《康复医学新进展》课件
- 乡村文化体验的国际化传播与全球游客需求研究-洞察阐释
- 小学生趣味跳绳课件
- 二零二五版乒乓球聘用教练合同书
- 骨料质量管理培训课件
评论
0/150
提交评论