版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计目的熟悉并掌握verilog硬件描述语言熟悉quartus软件开发环境学会设计大中规模的数字电路,并领略其中的设计思想二、课程设计实现的功能设计一个数码管实时显示时、分、秒的数字时钟(24小时显示模式);可以调节小时,分钟。可以进行24小时和12小时的显示切换。可以设立任意时刻闹钟,并且有开关闹钟功能。有整点报时功能,几点钟LED灯闪亮几下。有复位按键,复位后时间从零开始计时,但闹钟设立时间不变。设计原理:1、总原理框图:译码显示模块译码显示模块切换12进制显示复位分钟校正小时校正分频模块切换12进制显示复位分钟校正小时校正分频模块计数模块 是计数模块输出整点报时信号到达整点 输出整点报时信号到达整点输出闹钟信号是否到闹钟时间设立闹钟分钟设立闹钟小时模式选择模块 输出闹钟信号是否到闹钟时间设立闹钟分钟设立闹钟小时模式选择模块 是 各个子模块设计:(1)、分频模块:分频模块的作用重要是要获得各种频率的时钟信号。输入信号为50MHZ的信号,要想获得1HZ的信号作为秒脉冲计时,则要对50MHZ信号分频。通过计数的方式,当计数从0开始到24999999时,1HZ信号取反一次,计数又从0开始,如此循环,就可以得到1HZ脉冲信号。对于其他信号也是如此,只是计数值不同样,得到的分频信号不同。部分代码如下:always@(posedge_50MHZornegedgenCR)beginif(~nCR)beginQ1<=32'd0;endelseif(Q1>=32'd24999999)beginQ1<=32'd0;_1HZ=~_1HZ;endelsebeginQ1<=Q1+1'd1;end、计数模块:秒计数:在1HZ脉冲下进行秒计时,当计时达成59秒后,在下一个脉冲来临变0,并发出一个脉冲信号,可供下面分钟计数作为输入脉冲信号计时。分钟计数:在输入脉冲下,分钟开始计时,当计时达成59后,在下一个脉冲来临变0,并发出一个脉冲,供小时计数的输入脉冲新号。小时计数:脉冲信号来临时,计数加1,达成23后在下一个脉冲的作用下清零,从新计时。假如有复位信号,则时分秒所有清零。部分代码如下:modulesecond(cp,reset,mode_flag,BT2,SH,SL,co);inputcp,reset,BT2;input[3:0]mode_flag;outputco=1'b0; //输出脉冲信号regco;output[3:0]SL,SH;//输出秒计时的十位、各位reg[3:0]SH,SL;reg[7:0]cnt;always@(posedgecpornegedgereset)beginif(!reset)begin//有复位,清零cnt<=8'd0;SH<=4'd0;SL<=4'd0;endelseif((mode_flag==4'b0010)&&(!BT2))begin//假如分钟调节,秒清零cnt<=8'd0;SH<=4'd0;SL<=4'd0;endif(cnt==8'd59)//计时达成59,下一个脉冲下从新计时begincnt<=8'd0;SH<=4'd0;SL<=4'd0;co<=1'b1;endelsebeginco=1'b0;cnt=cnt+8'd1;SL<=cnt%10;//秒十位SH<=cnt/10;//秒各位endendendendmodule分计时和小时计时代码和上述类似,不再举出。secondu4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1);minuteu5(co11,reset,MH24,ML24,co2);houru6(co22,reset,HH24,HL24);、模式选择模块:同过一个模式档按键MODE,按一下产生相应一种模式mode_flag,并且可以循环。在不同的模式下可以进行不同的操作。其中mode_flag=4'0000为正常显示计时,mode_flag=4'0001为小时调钟模式,mode_flag=4'00010为分钟调钟模,mode_flag=4'0011为闹钟小时设立模式,mode_flag=4'0100为闹钟分钟设立模式。模式产生:modulemode(MODE,mode_flag);inputMODE;output[3:0]mode_flag;reg[3:0]mode_flag;always@(negedgeMODE)begin//假如检测到有按键按下mode_flag=mode_flag+4'b1;//模式值加1if(mode_flag==4'b0101)//到最后一个模式后返回第一的模式mode_flag=2'b0;ndEndmodule模式选择:modulemode_choose(mode_flag,BT2,_250ms,co1,co2,set_co2,co11,co22,co111,co222);input[3:0]mode_flag;//输入模式方式,响应相应操作inputBT2,_250ms,co1,co2,set_co2;//调节按钮,时钟信号,正常计时分钟脉冲信号,正常计时小时脉冲信号,闹钟设立分钟进位信号。outputco11,co22,co111,co222;//分钟脉冲信号,小时脉冲信号,闹钟设立分钟脉冲信号,闹钟设立小时脉冲信号;supply1Vdd;regco11,co22,co111,co222;always@(mode_flag)begincase(mode_flag)4'b0001:beginif(~BT2)co22<=_250ms;//小时调钟模式,有按键,则脉冲为250mselsebeginco22<=co2;//没有按键,正常计时co11<=co1;endend4'b0010:beginif(~BT2)beginco11<=_250ms;//小时调钟模式,有按键,则脉冲为250msco22<=co2;endelsebeginco11<=co1;//没有按键,正常计时co22<=co2;endend4'b0011:beginco22<=co2;co11<=co1;if(~BT2)co222<=_250ms;//闹钟小时设立信号elseco222<=set_co2;end4'b0100:beginco22<=co2;co11<=co1;if(~BT2)co111<=_250ms;//闹钟分钟设立信号elseco111<=Vdd;enddefault:beginco11<=co1;co22<=co2;endendcaseendendmodule、任意闹钟模块:一、设立闹钟:当相应于闹钟设立模式mode_flag=4'0011和4'b0100时,有设立信号输入时,则开始设立。相应代码:moduleset_naozhong(co111,co222,set_HH,set_HL,set_MH,set_ML,co2);inputco111,co222;//闹钟分钟,小时设立信号output[3:0]set_HH,set_HL,set_MH,set_ML;//输出相应的闹钟设立时间supply1Vdd;outputco2;minute(co111,Vdd,set_MH,set_ML,co2);hour(co222,Vdd,set_HH,set_HL);endmodule二、闹钟响应:当正常计时达成闹钟设立得时间后,通过比较两者之间的时间,相等,则产生一个闹钟允许响应信号,在闹钟开关打开和闹钟允许响应信号同时满足的情况下,则产生闹钟响应信号,并送到相应的闹钟设备LED灯。假如闹钟档处在关闭状态,则不会产生闹钟响应信号。响应代码如下:modulenaozhong(Alarm_ctr,_1HZ,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal);inputAlarm_ctr,_1HZ;input[3:0]set_HH,set_HL,set_MH,set_ML;input[3:0]HH24,HL24,MH24,ML24;outputnao_signal;regsignal;regnao_signal;reg[16:0]Q;//计数,调节闹钟响应时间长度always@(posedge_1HZ)beginif((~signal)&&(Alarm_ctr))beginif((set_HH==HH24)&&(set_HL==HL24)&&(set_MH==MH24)&&(set_ML==ML24))signal<=1'b1//达成闹钟设立时间,产生闹钟允许响应信号elsesignal<=1'b0;end//未达成,不产生elseif((signal)&&(Alarm_ctr))begin//闹钟开关打开和闹钟允许响应信号同时满足nao_signal<=~nao_signal;//产生闹钟响应信号Q=Q+nao_signal;if(Q>=8'd720)begin//响应时间完毕,关闭闹钟允许响应信号Q<=16'b0;signal<=1'b0;endendelsebeginsignal<=1'b0;nao_signal<=1'b0;endendendmodule 、整点报时模块:检测分钟和秒钟计数是否都达成了59,然后再下一个秒脉冲的作用下发出整点报时信号,送到LED。并开始计数,计数达成报时信号响应次数后,终止报时信号。部分代码如下:always@(posedge_500ms)beginif(((SH*10+SL)==8'd59)&&((MH*10+ML)==8'd59))beginQ1<=7'b0;bao<=1'b1;end//允许报时elseif((Q1<10*HH+HL)&&(bao))beginbao_signal<=~bao_signal;//产生报时信号Q1<=Q1+bao_signal;//响一次计数加一endelseif(Q1==(10*HH+HL))//报时次数达成整点时数,终止信号bao<=1'b0;elsebeginbao_signal<=1'b0;endEnd、12—24小时切换模块:将24小时切换成12小时,并存入相应的寄存器。假如拨上切换显示档,则切换显示。相应代码如下:modulehour12_24(HH24,HL24,HH12,HL12);input[3:0]HH24,HL24;output[3:0]HH12,HL12;reg[3:0]HH12,HL12;always@(HH24orHL24)beginif((HH24*10+HL24)<=12)beginHH12<=HH24;HL12<=HL24;endelseif(((HH24*10+HL24)>=13)&&((HH24*10+HL24)<=19))beginHH12<=4'd0;HL12<=HL24-4'd2;endelseif(((HH24*10+HL24)>=19)&&((HH24*10+HL24)<=21))beginHH12<=4'd0;HL12<=HL24+4'd8;endelsebeginHH12<=HH24-4'd1;HL12<=HL24-4'd2;endendendmodule、译码显示模块:一、数码管显示:通过传入响应的4位十进制数,运用case语句转换输出相应的8位二进制显示码,送入数码管显示。代码如下:moduleSEG7_LUT(oSEG1,iDIG);input[3:0]iDIG;//输入要显示的数output[7:0]oSEG1;reg[7:0]oSEG;wire[7:0]oSEG1;always@(iDIG)begincase(iDIG)4'h0:oSEG=8'b00111111;4'h1:oSEG=8'b00000110; 4'h2:oSEG=8'b01011011;4'h3:oSEG=8'b01001111; 4'h4:oSEG=8'b01100110;4'h5:oSEG=8'b01101101;4'h6:oSEG=8'b01111101;4'h7:oSEG=8'b00000111;4'h8:oSEG=8'b01111111;4'h9:oSEG=8'b01101111;endcaseendassignoSEG1=~oSEG;//由于是共阴极数码管,低电平显示,所以取反Endmodule二、LED显示:moduledisplay_LED(s_out,s_int);input[3:0]s_int;output[3:0]s_out;reg[3:0]s_out;wire[3:0]s_out1; always@(s_int)begincase(s_int)4'h0:s_out=4'b0000;4'h1:s_out=4'b0001;4'h2:s_out=4'b0010;4'h3:s_out=4'b0011;4'h4:s_out=4'b0100;4'h5:s_out=4'b0101;4'h6:s_out=4'b0110;4'h7:s_out=4'b0111;4'h8:s_out=4'b1000;4'h9:s_out=4'b1001;endcaseendassigns_out1=~s_out;Endmodule设计过程常见问题:要注意编写程序的过程中begin和end配对问题,类似于C语言中的括号匹配问题,在编写计数模块时编译不通过,最后检查出是缺少一个end结束符号,经修改后编译通过。(2)VerilogHDL语言编写时的语法问题。在最初的计时模块的程序设计中,将小时、分钟的调节信号放在了此外的一个always语句块中,编译无法通过,经查阅资料,在VerilogHDL语言的编写中应当注意不同的always语句块不可以对同一个变量进行操作,即一个变量不可以通过两个always语句块操作。将对小时和分钟调节信号的操作与计时放在同一个语句块中,编译通过。数码管刚开始时显示于实际计数不同样,重要是由译码错误导致的因素。数码管一开始不变化,说明计数没有进行,是由于分钟的输入脉冲信号错误引起。心得体会这次的课程设计结束了,在这次的设计中我学会了很多东西。一方面是对VerilogHDL语言的设计思想有了进一步理解,将这种自顶向下的设计理念运用于实践中,设计多功能数字钟,突出了VerilogHDL作为硬件描述语言的良好可读性和可移植性,对上学期所学的而理论知识有了深刻的理解。另一方面是对VerilogHDL语言的语法熟悉,在这次的课程设计中,我学习到很多VerilogHDL语言的语法知识,比如在两个不同的语句块中不能对同一个变量进行操作,比如在用VerilogHDL语言中编写程序时要注意begin和end语句的匹配问题,在使用VerilogHDL语言时不可以使用中文注释等等。对于这种语言的学习也有了很大的帮助。最后是设计作品时的设计逻辑和设计思想,在选择不同的系统方案时要综合考虑,选择最优方案。各个模块的实现也要考虑综合情况而制定出最符合实际情况的实现方案,方案间要进行对比、实践,最终拟定。在这次的课程设计中我不仅学习到有关程序编写以及设计方面的逻辑思维,对系统功能的实现也有了较为进一步的了解,对各模块的调试等也学习到不少东西,总之,从这次设计中学到很多东西,也巩固了我的理论学习。附代码:总模块:moduleclock(clk,reset,MODE,Alarm_ctr,BT2,H12_24,DSH,DSL,DMH,DML,DHH,DHL,dian,bao_signal,nao_signal);inputclk;//50MHzinputreset,MODE,Alarm_ctr,BT2,H12_24;//复位键,模式选择按钮,闹钟开关档,调节按钮,12—24小时切换档output[7:0]DMH,DML,DHH,DHL;//4个数码管显示输入信号outputdian,bao_signal,nao_signal;//时分间隔点,报时信号,闹钟信号output[3:0]DSH,DSL;//秒钟输出信号wire[3:0]SH,SL,MH,ML,HH,HL;wire[3:0]LED_mode;wire[3:0]HH12,HL12,HH24,HL24,MH24,ML24,SH24,SL24;wire[3:0]set_HH,set_HL,set_MH,set_ML;wire_1HZ,_10ms,_250ms,_500ms;wireKeydone1;wireKeydone2;wireco1,co11,co111,co2,co22,co222,set_co2;wire[3:0]mode_flag;assigndian=1'b0;devide_fu1(_1HZ,_10ms,_250ms,_500ms,reset,clk);//分频,得到4种不同频率的时钟信号key_pressu2(_10ms,MODE,Keydone1);//模式档按钮去抖动key_pressu20(_10ms,BT2,Keydone2);//调节按钮去除抖动modeu3(Keydone1,mode_flag);//通过模式按钮产生不同模式secondu4(_1HZ,reset,mode_flag,Keydone2,SH24,SL24,co1);//秒计时minuteu5(co11,reset,MH24,ML24,co2);//分计时houru6(co22,reset,HH24,HL24);//小时计时SEG7_LUTu7(DML,ML);//4个数码管显示SEG7_LUTu8(DMH,MH);SEG7_LUTu9(DHL,HL);SEG7_LUTu10(DHH,HH);display_LEDu11(DSL,SL);//LED灯显示秒或模式灯display_LEDu12(DSH,SH);mode_chooseu13(mode_flag,Keydone2,_250ms,co1,co2,set_co2,co11,co22,co111,co222);//选择模式进行不同操作hour12_24u14(HH24,HL24,HH12,HL12);//12--24小时切换boshiu15(HH,HL,MH,ML,SH,SL,_1HZ,bao_signal);//整点报时set_naozhongu16(co111,co222,set_HH,set_HL,set_MH,set_ML,set_co2);//设立闹钟时间Naozhongu17(Alarm_ctr,_500ms,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal);//任意闹钟响应LUT_modeu18(mode_flag,H12_24,HH12,HL12,HH24,HL24,MH24,ML24,set_HH,set_HL,set_MH,set_ML,MH,ML,HH,HL);//通过模式选择数码管显示LED_modeu19(mode_flag,SH24,SL24,SH,SL);模式选择LED灯显示Endmodule分频模块:moduledevide_f(_1HZ,_10ms,_250ms,_500ms,nCR,_50MHZ);input_50MHZ,nCR;output_1HZ,_10ms,_250ms,_500ms;reg_1HZ,_10ms,_250ms,_500ms;reg[31:0]Q1,Q2,Q3,Q4;always@(posedge_50MHZornegedgenCR)beginif(~nCR)beginQ1<=32'd0;Q2<=32'd0;Q3<=32'd0;Q4<=32'd0;endelseif(Q1>=32'd24999999)beginQ1<=32'd0;_1HZ=~_1HZ;endelseif(Q2>=32'd249999)beginQ2<=32'd0;_10ms=~_10ms;endelseif(Q4>=32'd6299999)beginQ4<=32'd0;_250ms=~_250ms;endelseif(Q3>=32'd12499999)beginQ3<=32'd0;_500ms=~_500ms;endelsebeginQ1<=Q1+1'd1;Q2<=Q2+1'd1;Q3<=Q3+1'd1;Q4<=Q4+1'd1;endendendmodule计时模块:modulesecond(cp,reset,mode_flag,BT2,SH,SL,co);inputcp,reset,BT2;input[3:0]mode_flag;outputco=1'b0;regco;output[3:0]SL,SH;reg[3:0]SH,SL;reg[7:0]cnt;always@(posedgecpornegedgereset)beginif(!reset)beginSL=4'b0;SH=4'b0;cnt<=8'b0;endelseif((mode_flag==4'b0010)&&(!BT2))beginSL=4'b0;SH=4'b0;cnt<=8'b0;endelse beginif(cnt==8'd59)begincnt<=8'd0;SH<=4'd0;SL<=4'd0;co<=1'b1;endelsebeginco=1'b0;cnt=cnt+8'd1;SL<=cnt%10;SH<=cnt/10;endendendendmodulemoduleminute(cp,reset,MH,ML,co);inputcp,reset;outputco=1'b0;output[3:0]ML,MH;reg[3:0]MH,ML;reg[7:0]cnt;regco;always@(posedgecpornegedgereset)beginif(!reset)beginML=4'b0;MH=4'b0;cnt<=8'b0;endelsebeginif(cnt==8'd59)begincnt<=8'd0;MH<=4'd0;ML<=4'd0;co<=1'b1;endelsebeginco=1'b0;cnt=cnt+8'd1;ML<=cnt%10;MH<=cnt/10;endendendendmodulemodulehour(cp,reset,HH,HL);inputcp,reset;output[3:0]HL,HH;reg[3:0]HH,HL;reg[7:0]cnt;always@(posedgecpornegedgereset)beginif(!reset)beginHL=4'b0;HH=4'b0;cnt<=8'b0;endelsebeginif(cnt==8'd23)begincnt<=8'd0;HH<=4'd0;HL<=4'd0;endelsebegincnt=cnt+8'd1;HL<=cnt%10;HH<=cnt/10;endendendEndmodule模式选择模块:modulekey_press(_10ms,KEY,Keydone);inputKEY,_10ms;outputKeydone;regdout1,dout2,dout3;always@(posedge_10ms)begindout1<=KEY;dout2<=dout1;dout3<=dout2;endassignKeydone=(dout1|dout2|dout3);endmodulemodulemode(MODE,mode_flag);inputMODE;output[3:0]mode_flag;reg[3:0]mode_flag;always@(negedgeMODE)beginmode_flag=mode_flag+4'b1;if(mode_flag==4'b0101)mode_flag=2'b0;endendmodule moduleLED_mode(mode_flag,SH24,SL24,SH,SL);input[3:0]mode_flag;input[3:0]SH24,SL24;output[3:0]SH,SL;reg[3:0]SH,SL;always@(mode_flag)begincase(mode_flag)4'b0000:beginSH<=SH24;SL<=SL24;end4'b0001:beginSH<=4'b0000;SL<=4'b0001;end4'b0010:beginSH<=4'b0000;SL<=4'b0010;end4'b0011:beginSH<=4'b0000;SL<=4'b0100;end4'b0100:beginSH<=4'b0000;SL<=4'b1000;enddefault:beginSH<=SH24;SL<=SL24;endendcaseendendmoduleModuleLUT_mode(mode_flag,H12_24,HH12,HL12,HH24,HL24,MH24,ML24,set_HH,set_HL,set_MH,set_ML,MH,ML,HH,HL);input[3:0]HH12,HL12,HH24,HL24,MH24,ML24;input[3:0]set_HH,set_HL,set_MH,set_ML;input[3:0]mode_flag;inputH12_24;output[3:0]MH,ML,HH,HL;reg[3:0]MH,ML,HH,HL;always@(mode_flagorH12_24)begincase(mode_flag)4'b0011,4'b0100:beginHH<=set_HH;HL<=set_HL;MH<=set_MH;ML<=set_ML;enddefault:beginif(H12_24)beginHH<=HH12;HL<=HL12;MH<=MH24;ML<=ML24;endelsebeginHH<=HH24;HL<=HL24;MH<=MH24;ML<=ML24;endendendcaseendendmodulemodulemode_choose(mode_flag,BT2,_250ms,co1,co2,set_co2,co11,co22,co111,co222);input[3:0]mode_flag;inputBT2,_250ms,co1,co2,set_co2;outputco11,co22,co111,co222;supply1Vdd;regco11,co22,co111,co222;always@(mode_flag)begincase(mode_flag)4'b0001:beginif(~BT2)co22<=_250ms;elsebeginco22<=co2;co11<=co1;endend4'b0010:beginif(~BT2)beginco11<=_250ms;co22<=co2;endelsebeginco11<=co1;co22<=co2;endend4'b0011:beginco22<=co2;co11<=co1;if(~BT2)co222<=_250ms;elseco222<=set_co2;end4'b0100:beginco22<=co2;co11<=co1;if(~BT2)co111<=_250ms;elseco111<=Vdd;enddefault:beginco11<=co1;co22<=co2;endendcaseendendmodule闹钟模块:moduleset_naozhong(co111,co222,set_HH,set_HL,set_MH,set_ML,co2);inputco111,co222;output[3:0]set_HH,set_HL,set_MH,set_ML;supply1Vdd;outputco2;minute(co111,Vdd,set_MH,set_ML,co2);hour(co222,Vdd,set_HH,set_HL);endmodulemodulenaozhong(Alarm_ctr,_1HZ,set_HH,set_HL,set_MH,set_ML,HH24,HL24,MH24,ML24,nao_signal);inputAlarm_ctr,_1HZ;input[3:0]set_HH,set_HL,set_MH,set_ML;input[3:0]HH24,HL24,MH24,ML24;outputnao_signal;regsignal;regnao_signal;reg[16:0]Q;always@(posedge_1HZ)beginif((~signal)&&(Alarm_ctr))beginif((set_HH==HH24)&&(set_HL==HL24)&&(set_MH==MH24)&&(set_ML==ML24))signal<=1'b1;elsesignal<=1'b0;endelseif((signal)&&(Alarm_ctr))beginnao_signal<=~nao_signal;Q=Q+nao_signal;if(Q>=8'd720)beginQ<=16'b0;signal<=1'b0;endendelsebeginsignal<=1'b0;nao_signal<=1'b0;endendendmodule12——24小时切换模块:modulehour12_24(HH24,HL24,HH12,HL12);input[3:0]HH24,HL24;output[3:0]HH12,HL12;reg[3:0]HH12,HL12;regflag;always@(HH24orHL24)beginif((HH24*10+HL24)<=12)beginHH12<=HH24;HL12<=HL24;endelseif(((HH24*10+HL24)>=13)&&((HH24*10+HL24)<=19))beginHH12<=4'd0;HL12<=HL24-4'd2;en
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版屋面防水工程承包合同(含屋顶绿化植物养护服务)3篇
- 2025版外贸信用保险合同范本英文版3篇
- 《我的家乡》课件
- 2025年度美容院美容院员工福利保障合同4篇
- 2025年个人房产抵押合同修订版
- 二零二五年度铁路施工挖机作业安全与保障合同3篇
- 二零二五版绿色环保民房物业管理合同4篇
- 2025版宅基地买卖转让合同含农村土地整治及补偿协议3篇
- 二零二五版幕墙工程节能评估与认证合同4篇
- 孤残儿童关爱意识提升策略研究与实践考核试卷
- 消防产品目录(2025年修订本)
- 地方性分异规律下的植被演替课件高三地理二轮专题复习
- 光伏项目风险控制与安全方案
- 9.2提高防护能力教学设计 2024-2025学年统编版道德与法治七年级上册
- 催收培训制度
- 练习20连加连减
- 五四制青岛版数学五年级上册期末测试题及答案(共3套)
- 商法题库(含答案)
- 钢结构用高强度大六角头螺栓连接副 编制说明
- 沟通与谈判PPT完整全套教学课件
- 移动商务内容运营(吴洪贵)项目四 移动商务运营内容的传播
评论
0/150
提交评论