版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字音乐盒的设计
摘要
传统音乐盒,多是机械型的,体积笨重,发音单调,水、灰尘等外在因素,容易使内部金属
发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,
而且价格昂贵,不能实现大批量生产。本设计是一个基于AT89c51系列单片机的音乐盒。该音乐盒
主要由按键电路、复位电路、时钟电路、显示电路以及蛉鸣器组成。使用四个按键控制音乐盒,其
中两个按键用来控制歌曲的播放、暂停,另两个用来控制液晶上歌曲次序的变化,本音乐盒共有三
首歌曲。播放歌曲时,相应歌曲对应相应数码管上歌曲次序及歌名的显示。
关键词:AT89C51,蜂鸣器,LCD液晶显示,音乐盒
第1页共21页
数字音乐盒的课程设计
目录
1绪论.......................................................................1
1.1课题描述.............................................................3
1.2基本工作原理及框图...................................................3
2相关芯片及硬件电路设计....................................................3
2.1AT89C51芯片.......................................................3
2.1.1AT89c51的功能特性........................................................................................................4
2.1.2AT89C51的主要性能参数.................................................................................................4
2.2时钟电路..............................................................4
2.3复位电路.............................................................5
2.4按键电路.............................................................5
2.5蜂鸣器电路...........................................................5
2.6显示电路.............................................................6
2.6.1线段的显示......................................................................................................................6
262字符的显示......................................................................................................................6
2.7总体电路..............................................................7
3系统软件设计...............................................................7
3.1程序主要流程.........................................................7
3.2程序设计..............................................................9
4系统软件仿真.............................................................16
总结.....................................................................19
致谢.....................................................................20
参考文献...................................................................21
第2页共21页
数字音乐盒的课程设计
1绪论
1.1课题描述
随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小
小的音乐盒可以给人们带来美好的回忆,提高人力的精神文化享受。传统的音乐盒大
多数是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以
单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,功能多,使
用方便,可以批量生产,具有一定的商业价值。本设计是基于单片机的数字音乐盒设
计,由单片机AT89c51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机
电子数字音乐盒[1]。
1.2基本工作原理及框图
本次设计是一个基于AT89C51单片机的音乐盒,该音乐盒主要由时钟电路、复位电路、按键电路、
蜂鸣器以及显示电路组成。使用其中两个按键来控制播放和暂停另外两个按键用来控制换曲。利在
液晶上显示曲目的更换,共三首音乐,蜂鸣器每播放一首歌时液晶上显示相对应的歌曲次序。系统
组成框图如图lo
图1基本工作原理框图
2相角芯片及硬件卑路设计
时钟电路--------->
2.1AT|___________
LCD液晶显示
―
P1.0□1
AT89C51
二2
单片机
复位电路一0、
二4
P1.4E5
P1.5匚6
P>1A二7
-a蜂鸣器
按键电路
二9
(RXD)P3.0匚10
(TXD)P3.1匚11
29
(INTO)P3.2匚12-JPSEN
28
匚
(INT1)P3.31327ZJP2.7(A15)
(TO)P3.4匚1426Z]P2.6(A14)
(T1)P3.5匚1525Z)P2.5(A13)
(WR)P3.6匚1624□P2.4(A12)
(RD)P3.7匚1723ZlP2.3(A11)
XTAL2匚18二]P2.2(A1O)
22
XTAL1匚191Z]P2.1(A9)
2
GND匚20Z]P2.0(A8)
图2Al89c31引脚图
第3页共21页
数字音乐盒的课程设计
2.1.1AT89C51的功能特性
AT89c51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,
两个十六位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟
电路。同时,AT89c51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲
方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式
保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位.
2.1.2AT89C51的主要性能参数
AT89C51主要性能参数如下:
•与MC—51产品指令系统完全兼容
•K字节可编程闪烁存储器
•寿命:100()写/擦循环
•数据保留时间:1D年
•全静态工作:0Hz-24Hz
•三级程序存储器锁定
・128*8位内部RAM
•32用编程I/O线
・两个16位定时器,计数器
•5个中断源
•可编程串行通道
•低功耗的闲置和指电模式
2.2时钟电路
时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应川系
统中,时钟是保障系统正常工作的基准振荡定时信号,主要由晶振和外闱电路组成,晶振频率的大
小决定了单片机系统工作的快慢[2]。为达到振荡周期是12MHz的要求,这里要采用12MHz的晶
振,另外有两个西PF的电容,晶振引脚分别连到XTAL1和XTAL2振荡脉冲输入引脚。时钟电路
如图3。
第4页共21页
数字音乐盒的课程设计
图3时钟电路
2.3复位电路
单片机在启动时都需要进行复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工
作。51系列单片机的复位雷号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常
工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)
以上,则CPU就可以响应并将系统复位[3]。单片机系统的复位方式有:手动按钮复位和上电复位。
复位电路如图4。
图4复位电路
2.4按键电路
按键的闭合与否,反映在行线输出电压上就呈现高电平或低电平,如果高电平表示键断开,低电平
则表示键闭合,通过对行线电平高低状态的检测,便可确认按键按下与否。Pl.O,Pl.l,P1.4,
P1.5作为控制按键,其中P1.0-P1.I扫描行,Pl4Pl.5扫描列;可通过功能键选择乐曲、暂停、播
放。按键电路如图5。
5按键电路
2.5蜂鸣器电路
电路中蜂鸣器是发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)
就可以发声,其主要参数是外形尺寸、发声方向、工作电压、工作频率、工作电流、驱动方式(直
流/方波)等[4]。
由于蜂鸣器的工作电流一股比较大,单片机的I/O口是无法直接驱动的(但AVR可以驱动小功率
蜂鸣器),所以要利用放大电路来驱动,一般使用三极管来放大电流就可以了。蜂鸣器由一个三极
第5页共21页
数字音乐盒的课程设计
管,两个电阻和一个二极管组成。蜂鸣器电路如图6。
图6蜂鸣器电路
2.6显示电路
2.6.1线段的显示
点阵图形式液晶由M>N显示单元组成,假设LCD显示屏有64行,每行有128列,瓦8列对应
1字节的8位,即每行由16字节,共16x8=128个点组成,屏上64x16个显示单元与显示RAM区
1024字节相对应,每一字节的内容和兄示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由
RAM区的000H——00FH的16字节的内容决定,当(0()()H)=FFH时,则屏幕的左上角显示一条短
亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,
(001H)=00H,(002H)=00H,……(00EH)=00H,[OOFH)=00H时,则在屏幕的顶部显示一
条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理[5]。
2.6.2字符的显示
用LCD显示一个字符时比较复杂,因为一个字符由6x8或8x8点阵组成,要找到和显示屏幕上某
几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“()”,为“1”的点亮,
为“0”的不痉。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较
简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示
RAM对应的地址,设立光标,在此送上该字符对应的代码即可「6]。显示电路如图7。
第6页共21页
数字音乐盒的课程设计
2.7总体电路
总结时钟电路、复位电路、按键电路、蜂鸣器以及显示电路,把其放入一个电路。得到总体的电路。
总体电路如图8o
FO£Wm
FC1/flDl
F02/颂
用晒
FC<V6M
F0MD5
F0.6/WJ6
F07/fiD7
P2.0M
RESPMK3
n\IM
P22/AJ0
P23/AJI
P24/AI2
P25/AJ3
F26/A14
P27/AJ5
P3.0/RXD
P3.1/n0
P3.2/O
P3.3而'
P3.4HD
P3.5m
P3.8MR
P3.7面
3系统软件设计
3.1程序主要流程
流程图如图9所示。
第7页共21页
数字音乐盒的课程设计
图9流程图
第8页共21页
数字音乐盒的课程设计
3.2程序设计
对音乐doremifasolasi分别编码为1〜7,重音do编为8,重音re编为9,停顿编为0。播放长
度以十六分音符为单位(在本程序中为165ms),一拍即四分音符等于4个十六分音符,编为4,其
它的播放时间以此类推。音调作为编码的高4位,而播放时间作为低4位,如此音调和节拍就构成
了一个编码。以Oxff作为曲谱的结束标志[7]。举例1:音调do,发音长度为两拍,即二分音符,将其
编码为0x18。举例2:音调re,发音长度为半拍,即八分音符,将其编码为0x22歌曲播放的设计。
先将歌曲的简谱进行编码,储存在一个数据类型为unsignedchar的数组中。程序从数组中取出1个
数,然后分离出高4位得到音调,接着找出相应的值赋给定时器0,使之定时操作蜂鸣器,得出相
应的音调;接着分掰出该数的低4位,得到延时时间,接着调用软件延时。
程序:
REG51.He<REG51.H>
intrins.h<intrins.h>
//defineucharunsignedchar
#dcfincuintunsignedint
ucharm.n;
uchari,timecount=0,timesec=0,timemin=0,timecheck=0;
charr0=2;
sbitbeepIO=P3A0;
typedefunsignedcharBYTE;
typedefunsignedintWORD;
typedefbitBOOL;
sbitrs=P2A0;
sbitrw=P2Al;
sbitep=P2A2;
sbitpausekey=P1A1;
uchark,q,f;
ucharcodedisl[]={"ijimoshazhou'1};
ucharcodedis2[]={"2tonghua");
ucharcodedis3n={"3qiannianlian"};
ucharcodeT[49][2]={{0,0},
{0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{OxFA,0x66},{0xFA,0xB9},{0
xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
{OxFC,0x43},{OxFC,0x78},{OxFC,OxAB},{OxFC,OxDB},{OxFD,OxO8},{OxFD,Ox33},{0xFD,Ox5B},
{OxFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
{0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{
0xFE,0xC0},{0xFE,0xQ2},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
{OxFF,0x10},{0xFF,0xlD},{0xFF,0x2A},{0xFF,0x36}JOxFF,0x42},{0xFF,0x4C},{0xFF,0x56},{OxF
EOx60},{OxFF,Ox69},{OxFROx71},{0xFF,0x79},{0xFFJDx81}
第9页共21页
数字音乐盒的课程设计
};
ucharcodemusic1[][2]={{0,4},
{22,4},{22,4},{17,4},{15,4},{15,4},{17,12),
{15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{0,4},
{20,4},{20,4},{20,4},{17,4},{20,4},{20,4},{20,4},{17,4},
{22,4},{17,4},{17,4},{15,4},{15,4},{17,12),
{22,4},{22,4},{17,4},{15,4},{15,4},{17,12),
{15.4}.{15.2}.{17,2},{15,4}.{13.4}.{13,4},{15.12}.
{20,4},{20,4},{20,2},{17,2},{17,4},{20,4},{20,4},{20,2},{17,2},{17,2},{17,2},
{24,4},{20,4},{20,2},{17,2},{17,4},{20,4},{22,12),
{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
{24,4},{22,2},{24,2},{22,4},{20,4},{15,4},{17,12},
{15,4},{15,4},{15,4},{10,4},{15,4},{17,4},{20,8},
{17,4},{24,4},{24,4},{20,4},{15,4},{17,12),
{17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8},
{29,4},{27,2},{29,2},{27,4},{25,4},{25,4},{27,12),
{29,4},{29,2},{27,4},{25,4},{27,6},{27,2},{25,4},{24,4),
{20,4},{20,2},{17,2},{20,4},{20,2},{22,2},(22,16},
{OxFFQxFF}};
ucharcodemusic2[][2]={{0,4},
{16,6},{19,2},{19,6},{16,2},{14,6},{0,10},{16,6},{19,2},{19,6},{16,2},{14,8},{0,8},
{26,8},{21,6},{24,2},{23,6},{21,2},{19,8},{21,16},{0,8},
{16,6},{19,2},{19,6},{16,2},{14,8},{0,8},{26,8},{21,6),{23,2},{21,14},
{24,6},{23,2},{21,6},{19,2},{16,6},{14,2},{13,8},{14,16},{0,4},
{19,6},{19,2},{21,6},{21,2},{23,8},{21,4},{0,4},{19,6),{19,2},{16,6},{19,2},{16,8},{14,6},{0,4},
{19,6},{19,2},{21,6},{21,2},{23,8},{21,4},{0,4},{19,6},(19,2},{16,6},{19,2),{16,8},{14,6},{0,4},
{26,16},{21,4},{26,4},{21,4},{26,16},{21,4},{26,16},{0,4},
{16,8},{16,8},{14,8},{16,8},{21,4},{26,4},{21,4},{26,4},{0,8},{16,8},{16,8},{14,8},{16,8},{21,4},
{26,4},{21,4},{26,4},{0,8},
{19,8},{19,6},{21,2},{16,8},{0,8},{19,6},{21,2},{19,6),{21,2},{16,8},{0,8},
{21,8},{26,8},{21,4},{24,12},{23,6},{21,2},{19,8},{21,16),
{14,4},{21,4},{14,4},{19,4},{16,6},{14,2},{13,8},{14,16),
{OxFFQxFF}};
ucharcodemusic3口⑵={{0,4},
{27,4},{19,4},{19,4},{27,4},{26,4},{26,2},{27,2},{24,8},
{22,4},{17,4},{24,4},{22,4},{19,16},
{15,4},{12,4},{12,4},{15,4},{17,8},{19,8},
{26,6},{26,2},{26,4},{24,4},{24,4},{19,4},{19,8},
{27,4},{19,4},{19,4},{27,4},{26,4},{26,2},{27,2},{24,6},{24,2},
{22,4},{17,4},{24,4},{22,4},{19,16),
{15,4},{12,4},{12,4},{15,4},{17,8},{19,8},{19,6},{19,2},{19,4},{17,4},{14,4},{14,4},{14,4},{7,4},
{12,24},
{0xFF,0xFF}};
uchartimctable[]="00:00”;
第10页共21页
数字音乐盒的课程设计
voiddelay(ucharp)
{
uchari,j;
for(;p>0;p-)
fbr(i=l81;i>0;i—)
for0=181;j>0;j-);
)
BOOLlcd_bz()
(
BOOLresult;
rs=0;
rw=1;
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
result=(BOOL)(PO&0x80);
ep=0;
returnresult;
)
voidledvvcmd(BYTEemd)
{
while(lcd_bz());
rs=0;
rw-0;
ep=0;
_nop_();
_nop_();
P0=emd;
_nop_();
_nop_();
,nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
voidlcd_pos(BYTEpos)
{
lcd_wcmd(pos|0x80);
第11页共21页
数字音乐盒的课程设计
voidlcd_\vdat(BYTEdat)
{
while(lcdbz());
rs=I;
rw=0;
cp=0;
P0=dat;
_nop_();
_nop_();
_nop_();
,nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
voidledinit()
(
ledwcmd(0x38);
dclay(1);
lcdwcmd(OxOc);
delay(l);
lcd_wcmd(0x06);
delay(1);
lcd_wcmd(0x01);
delay(1);
)
voidpause()
{
uchari,j;
for(i=150;i>0;i-)
for(j=150;j>0;j-);
)
voidtiinccount_init()interrupt3
(
TH1=(65535-45872)/256;
TLl=(65535-45872)%256;
timecount++;
if(timecount==20)
{
timcscc-H-;
第12页共21页
数字音乐盒的课程设计
timecount=0;
if(timcscc==60)
{timesec=O;
timemin++;
}
}
)
voidadfa()interrupt0
{timcscc=0;
timemin=0;
r0++;
delay⑸;
if(rO>ll)
rO=ll;
}
voidadfii()interrupt2
{
ififpausekey==O)
!
beepIO=0;
while(pausekey==O);
while(pausekey==1);
whilc(pausckcy==O);
delay(8);
)
else
{
timcsec=0;
timemin=0;
rO-;
delay(5);
if(rO<=O)
rO=l;
)
}
voidTOint()inteiTuptI
{
beepIO=!beepIO;
TH0=T[m][0];TL0=T[m][l];
}
voidzhuanhuan()
(
timetable[3]=timesec/l0+*0*;
timetable[4]=timesec%]()+'()';
第13页共21页
数字音乐盒的课程设计
timetable[2]=T;
tiinctablc[0]=timcmin/10+'0';
timetable[1]=timemin%lO+'O';
}
voidtimedis()
{
if{tiincchcck!=timcscc)
(
timcchcck=timcscc;
zhuanhuan();
Icd_pos(0x49);
lcd_wdat(timetable[O]);
ledwdat(timetable[1]);
lcd_wdat(timetable[2]);
lcd_wdat(timetable[3]);
lcd_wdat(timctablcf4]);
}
)
voidmain()
(
uchari=OJcd_check=();
TMOD=Oxll;
TH1=(65535-45872)/256;
TLl=(65535-45872)%256;
PXO=1;
PX1-1;
EXO=1;
EX1=1;
EA=1;
ETO=1;
ET1=1;
TR1=1;
pausekey=1;
ledinit();
while(l)
{
iRrO==O)
(
dclay(l);
lcd_pos(0);
i=0;
while(disl[i]!=,()')
(
lcd_wdat(dis222[i]);
第14页共21
数字音乐盒的课程设计
i++;
}
if(rO=l)
timedis();
if(lcd_check!=rO)
{lcd_wcmd(0x01);
dclay(1);
ledcheck=rO;
lcdjjos(0);
i=0;
while(disl[i]!='\0')
(
ledwdat(disl[i]);
i++;
}
)
m=music1[i][0];n=musicl[i][l];
if(m=0x00)
{TR0=0;delay(n);i++;}//
elseif(m==0xFF)
{TR0=0;dclay(30);i=0;tiincscc=0;timcmin=0;}//
elseif(m=music1[i+1][0])
{TR0=l;delay(n);TR0=0;pause();i-H-;}
else
{TR0=l;delay(n);i++;}
iRrO==2)
{timedis();
if(lcd_check!=rO)
{lcdwcmd(OxOl);
delay(l);
lcd_check=rO;
lcd_pos(Oi;
i=O;
while(dis2[i]!=
{
lcd_wdat(dis2[i]);
i++;
m=music2[i][0];n=music2[i][1];
if(m==0x00)
{TRO=O;dclay(n);i++;}//
第15页共21页
数字音乐盒的课程设计
elseif(ni==0xFF)
{TRO=0;dclay(30);i=0;timesec=0;timemin=0;}//
elseif(m==music2[i+1][0])
{TR0=l;delay(n);TR0=0;pause();i++;)
else
{TR0=l;delay(n);i++;}
}
4系统软件仿真
在这里系统仿真我们使用实验室常用的Protues仿真软件,把总电路面入ISIS软件,把程序加入
Keil软件,然后进行软件和硬件的统一调试[8]。
LCD1
IMH8LLFK
welcometomusic
mi叩
PO.2/M2
X7乜散#迎
即
P08M5
却"顺
FST叩7W
P1W第
P21/4J
匚“I以少
P22/A10
两百3P2WNI
些P2“A1?
百P25/A13
P2加A14
P27/A15
PIDP3BffiXD
PMP31mp
PI2P3如面
利3跟曲而
PI.4P3,W
PI6股迎
PI6以丽瓦
PI?除湎
图10仿真初始界面
第16页共21页
数字音乐盒的课程设计
LCD1
M16L
C1
5
物F
TU1
口XI
POO/ACO
C2PO.IMD1
P0"阳
18
XTAL2
P04/AM
P05/XC
。・P0.6/AD8
R$TP07/W
P7N阳
P2.1战
F2.2/AJ0
P23/AJI
P2/VA12
P25/A13
P1WAJ4
P2.7/AI5
1・
P3XVRXD
P3.1/TXD
P3.加而
P3.34RTT
P3WTD
M.5/T1
P3.3市
P3.7/S5
哂9的
图11仿真播放第一首
LCD1
IAC6L2ton9hua
Tine15s
舅学会w8388占88s
灯⑷POXI/ADO
TO.I/ADI
PO2/AD2
■36
XTAUP0加颂
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3C数码配件双12宣传及营销方案
- 2026年电气运行值班高级模拟题
- 2026年注册机械工程师面试模拟题
- 2026年心脑血管病防治健康知识讲座
- 2026年小学语文教学关键问题精解
- 2026年幼师资格笔试模拟题
- 2026年艾滋病预防知识教育班会
- 2026年自动化知识产权保护方案
- 2026年造价工程师模拟题及答案详解
- 2026年设计测评指标体系
- 分析文章线索辨别明线暗线-2026年中考语文记叙文阅读专项高分突破(解析版)
- DB61∕T 1724-2023 考古工地安全施工规范
- 2025至2030中国清酒行业发展分析及市场发展趋势分析与未来投资战略咨询研究报告
- 数据资产评估体系构建与财务应用研究
- 【MOOC】《用Python玩转数据》(南京大学)期末考试慕课答案
- 国开(福建)2025年《幼儿园社会教育专题》形考作业1-3答案
- 广东省佛山市南海区、三水区2023-2024学年五年级下学期期末数学试卷(含答案)
- 《防腐蚀碳砖标准》
- 2022机电工程安装工艺细部节点做法
- 数独知识培训课件
- 外协价格管理办法
评论
0/150
提交评论