版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ABSTRACT摘要附錄附錄一:原理圖圖1-1數(shù)字萬年歷原理圖附錄二:程序代碼moduleLCD1602Control(Clk,Rst,//系統(tǒng)輸入時(shí)鐘和復(fù)位信號KeyIn,//輸入的鍵值 AlarmOut, //鬧鐘輸出信號LcdRS,LcdRW,LcdEN,LcdData//液晶顯示的控制);inputClk,Rst;input[2:0]KeyIn; outputAlarmOut;outputLcdRS,LcdRW,LcdEN;output[7:0]LcdData; //32個(gè)數(shù)據(jù)寄存器reg[7:0]One01,One02,One03,One04,One05,One06,One07,One08,One09,One10,One11,One12,One13,One14,One15,One16,Two01,Two02,Two03,Two04,Two05,Two06,Two07,Two08,Two09,Two10,Two11,Two12,Two13,Two14,Two15,Two16; //定義常量,用來描述狀態(tài)機(jī)的不同狀態(tài)parameterWriteShow=8'h00,WriteCursor=8'h01,WriteMove=8'h02,WriteClear=8'h03,WriteAddr1=8'h04,WriteAddr2=8'h05,CycleScan=8'h06,Data01=8'h10,Data02=8'h11,Data03=8'h12,Data04=8'h13,Data05=8'h14,Data06=8'h15,Data07=8'h16,Data08=8'h17,Data09=8'h18,Data10=8'h19,Data11=8'h20,Data12=8'h21,Data13=8'h22,Data14=8'h23,Data15=8'h24,Data16=8'h25,Data17=8'h26,Data18=8'h27,Data19=8'h28,Data20=8'h29,Data21=8'h30,Data22=8'h31,Data23=8'h32,Data24=8'h33,Data25=8'h34,Data26=8'h35,Data27=8'h36,Data28=8'h37,Data29=8'h38,Data30=8'h39,Data31=8'h40,Data32=8'h41;/********************************* 連續(xù)賦值模塊********************************/assignLcdEN=LcdClk;assignLcdRW=LcdRWReg;assignLcdRS=LcdRSReg;assignLcdData=LcdDataReg;assignAlarmOut=AlarmOutReg;/***************************************************************功能@產(chǎn)生10KHz的時(shí)鐘頻率,用來控制液晶的掃描**說明@分頻后的時(shí)鐘信號,用作其它進(jìn)程的敏感信號**************************************************************/regLcdClk;regLcdRWReg;reg[11:0]CntClk;always@(posedgeClkornegedgeRst)beginif(!Rst)beginCntClk<=12'd0;LcdRWReg<=1'd1;endelsebeginLcdRWReg<=1'd0;CntClk<=CntClk+12'd1;if(CntClk==12'd2500)beginCntClk<=12'd0;LcdClk<=~LcdClk;endendend/***************************************************************功能@液晶顯示進(jìn)程,用來控制液晶的顯示**說明@無**************************************************************/regLcdRSReg;reg[7:0]State;reg[7:0]LcdDataReg;always@(posedgeLcdClkornegedgeRst)beginif(!Rst)State<=WriteShow;elsebegincase(State)WriteShow:beginLcdRSReg<=1'b0; LcdDataReg<=8'h38; State <=WriteCursor;endWriteCursor:beginLcdRSReg<=1'b0; LcdDataReg<=8'h0c; State <=WriteMove;endWriteMove:beginLcdRSReg<=1'b0; LcdDataReg<=8'h06; State<=WriteClear;endWriteClear:beginLcdRSReg<=1'b0; LcdDataReg<=8'h01; State <=WriteAddr1;endWriteAddr1:beginLcdRSReg<=1'b0; LcdDataReg<=8'h80; State <=Data01;endData01:beginLcdRSReg<=1'b1; LcdDataReg<=One01; State <=Data02;endData02:beginLcdRSReg<=1'b1; LcdDataReg<=One02; State <=Data03;endData03:beginLcdRSReg<=1'b1; LcdDataReg<=One03; State <=Data04;endData04:beginLcdRSReg<=1'b1; LcdDataReg<=One04; State <=Data05;endData05:beginLcdRSReg<=1'b1; LcdDataReg<=One05; State <=Data06;endData06:beginLcdRSReg<=1'b1; LcdDataReg<=One06; State <=Data07;endData07:beginLcdRSReg<=1'b1; LcdDataReg<=One07; State <=Data08;endData08:beginLcdRSReg<=1'b1; LcdDataReg<=One08; State <=Data09;endData09:beginLcdRSReg<=1'b1; LcdDataReg<=One09; State <=Data10;endData10:beginLcdRSReg<=1'b1; LcdDataReg<=One10; State <=Data11;endData11:beginLcdRSReg<=1'b1; LcdDataReg<=One11; State<=Data12;endData12:beginLcdRSReg<=1'b1; LcdDataReg<=One12; State <=Data13;endData13:beginLcdRSReg<=1'b1; LcdDataReg<=One13; State <=Data14;endData14:beginLcdRSReg<=1'b1; LcdDataReg<=One14; State <=Data15;endData15:beginLcdRSReg<=1'b1; LcdDataReg<=One15; State <=Data16;endData16:beginLcdRSReg<=1'b1; LcdDataReg<=One16; State <=WriteAddr2;endWriteAddr2:beginLcdRSReg<=1'b0; LcdDataReg<=8'hC0; State <=Data17;end Data17:beginLcdRSReg<=1'b1; LcdDataReg<=Two01; State <=Data18;endData18:beginLcdRSReg<=1'b1; LcdDataReg<=Two02; State <=Data19;endData19:beginLcdRSReg<=1'b1; LcdDataReg<=Two03; State <=Data20;endData20:beginLcdRSReg<=1'b1; LcdDataReg<=Two04; State <=Data21;endData21:beginLcdRSReg<=1'b1; LcdDataReg<=Two05; State <=Data22;endData22:beginLcdRSReg<=1'b1; LcdDataReg<=Two06; State <=Data23;endData23:beginLcdRSReg<=1'b1; LcdDataReg<=Two07; State <=Data24;endData24:beginLcdRSReg<=1'b1; LcdDataReg<=Two08; State <=Data25;endData25:beginLcdRSReg<=1'b1; LcdDataReg<=Two09; State <=Data26;endData26:beginLcdRSReg<=1'b1; LcdDataReg<=Two10; State<=Data27;endData27:beginLcdRSReg<=1'b1; LcdDataReg<=Two11; State <=Data28;endData28:beginLcdRSReg<=1'b1; LcdDataReg<=Two12; State <=Data29;endData29:beginLcdRSReg<=1'b1; LcdDataReg<=Two13; State <=Data30;endData30:beginLcdRSReg<=1'b1; LcdDataReg<=Two14; State <=Data31;endData31:beginLcdRSReg<=1'b1; LcdDataReg<=Two15; State <=Data32;endData32:beginLcdRSReg<=1'b1; LcdDataReg<=Two16; State <=CycleScan;endCycleScan:State<=WriteAddr1;default:State<=WriteShow;endcaseendend/***************************************************************功能@產(chǎn)生閃爍掃描時(shí)鐘,實(shí)現(xiàn)調(diào)整相應(yīng)位置的閃爍狀態(tài)**說明@閃爍狀態(tài)標(biāo)志信號,用于控制閃爍狀態(tài)**************************************************************/reg[23:0]CntFlag;regFlagScan;always@(posedgeClkornegedgeRst)beginif(!Rst)beginFlagScan<=1'b0;endelsebeginCntFlag<=CntFlag+24'd1;if(CntFlag==24'd12500000)beginCntFlag<=24'd0;FlagScan<=~FlagScan;endendend/***************************************************************功能@按鍵功能處理**說明@功能鍵鍵值(功能狀態(tài))標(biāo)志,用于調(diào)整相應(yīng)位置**************************************************************/reg[3:0]FlagKey; reg[2:0]FlagAlarm; regFlagStop;always@(posedgeClkornegedgeRst)beginif(!Rst)beginFlagKey<=4'b0; FlagAlarm<=3'b0; FlagStop<=1'b0;endelsebegin if(AlarmKey==0)begin if((FlagAlarm==3'd0)&&(FlagStop==1'd0))begin if(KeyIn[0])begin FlagKey<=FlagKey+4'b1; if(FlagKey==4'b1000)begin FlagKey<=4'b0000; end end end if((FlagKey==4'b0)&&(FlagStop==1'd0))begin if(KeyIn[1])begin FlagAlarm<=FlagAlarm+3'b1; if(FlagAlarm==3'b100) FlagAlarm<=3'b000; end end if((FlagKey==4'b0)&&(FlagAlarm==3'd0))begin if(KeyIn[2]) FlagStop<=~FlagStop; end endendend/***************************************************************功能@萬年歷的主控模塊**說明@無**************************************************************/reg[25:0]CntSecond,CntStop;reg[13:0]Year;reg[2:0]Week;reg[7:0]FlagDay;reg[7:0]Hour,Minute,Second,Month,Day; reg[7:0]AlarmHour,AlarmMinute; reg FlagAlarmSet; reg AlarmOutReg; reg AlarmKey; reg[1:0]StopKey; reg[7:0]StopMinute,StopSecond,StopNum;always@(posedgeClkornegedgeRst)beginif(!Rst)beginFlagDay<=8'he0; StopKey<=2'b0;//時(shí)間復(fù)位到初值CntSecond<=26'b0;Second<=8'd55;Minute<=8'd12;Hour<=8'd12;Day<=8'd10;Week<=3'd5;Month<=8'd1;Year<=14'd2015;endelsebegin if((FlagAlarm==3'd0)&&(FlagStop==1'd0))begin One01<=""; One06<="-";One09<="-"; One12<="";One16<=""; Two01<="";Two02<="";Two03<="";Two04<=""; Two07<=":";Two10<=":"; Two13<="";Two14<="";Two16<=""; if(FlagKey)begin Two01<="s";Two02<="e";Two03<="t"; Two14<="s";Two15<="e";Two16<="t"; end elseif(FlagAlarmSet) Two15<="^"; else Two15<=""; Two11<=(Second/8'd10)+8'b00110000; Two12<=(Second%8'd10)+8'b00110000; Two08<=(Minute/8'd10)+8'b00110000; Two09<=(Minute%8'd10)+8'b00110000; Two05<=(Hour/8'd10)+8'b00110000; Two06<=(Hour%8'd10)+8'b00110000; One10<=(Day/8'd10)+8'b00110000; One11<=(Day%8'd10)+8'b00110000; One07<=(Month/8'd10)+8'b00110000; One08<=(Month%8'd10)+8'b00110000; One02<=(Year/14'd1000)+8'b00110000; One03<=((Year%14'd1000)/7'd100)+8'b00110000; One04<=((Year%7'd100)/4'd10)+8'b00110000; One05<=(Year%4'd10)+8'b00110000; if(Month==8'd1||Month==8'd3||Month==8'd5|| Month==8'd7||Month==8'd8||Month==8'd10||Month==8'd12)//判斷為31天的月份 FlagDay<=8'd31; elseif(Month==8'd4||Month==8'd6|| Month==8'd9||Month==8'd11)//判斷為30天的月份 FlagDay<=8'd30; elseif(Month==8'd2)begin //判斷是閏年還是平年 if(((Year%4==0)&&(Year%100!=0))||(Year%400==0)) FlagDay<=8'd29; else FlagDay<=8'd28; end //星期的顯示 case(Week) 3'd0: begin One13<="M";One14<="O";One15<="N"; end 3'd1: begin One13<="T";One14<="U";One15<="E"; end 3'd2: begin One13<="W";One14<="E";One15<="D"; end 3'd3: begin One13<="T";One14<="H";One15<="U"; end 3'd4: begin One13<="F";One14<="R";One15<="I"; end 3'd5: begin One13<="S";One14<="A";One15<="T"; end 3'd6: begin One13<="S";One14<="U";One15<="N"; end endcase if(FlagAlarmSet) if((AlarmHour==Hour)&&(AlarmMinute==Minute))begin AlarmOutReg<=1'b0; AlarmKey <=1'b1; end elsebegin AlarmOutReg<=1'b1; AlarmKey <=1'b0; end elsebegin AlarmOutReg<=1'b1; AlarmKey <=1'b0; end if(AlarmKey)begin if(KeyIn[0]||KeyIn[1]||KeyIn[2]) FlagAlarmSet<=1'b0; end end if(FlagAlarm!=3'd0)begin One01<="";One02<="";One03<="A";One04<="l"; One05<="a";One06<="r";One07<="m";One08<=""; One09<="";One10<="C";One11<="l";One12<="o"; One13<="c";One14<="k";One15<="";One16<=""; Two01<="";Two02<="";Two03<="";Two04<=""; Two07<=":";Two10<="";Two11<=""; Two13<="";Two14<="";Two15<="";Two16<=""; Two05<=(AlarmHour/8'd10)+8'b00110000; Two06<=(AlarmHour%8'd10)+8'b00110000; Two08<=(AlarmMinute/8'd10)+8'b00110000; Two09<=(AlarmMinute%8'd10)+8'b00110000; if(FlagAlarmSet) Two12<="^"; else Two12<="_"; case(FlagAlarm) 3'b010: begin if(FlagScan)begin Two05<=8'd20; Two06<=8'd20; end if(KeyIn[2])begin AlarmHour<=AlarmHour+8'd1; if(AlarmHour==8'd23) AlarmHour<=8'd0; end end 3'b011: begin if(FlagScan)begin Two08<=8'd20; Two09<=8'd20; end if(KeyIn[2])begin AlarmMinute<=AlarmMinute+8'd1; if(AlarmMinute==8'd59) AlarmMinute<=8'd0; end end 3'b100: begin if(FlagScan) Two12<=8'd20; if(KeyIn[2]) FlagAlarmSet<=~FlagAlarmSet; end endcase end if(FlagStop)begin One01<="";One02<="";One03<="";One04<="S"; One05<="t";One06<="o";One07<="p";One08<=""; One09<="W";One10<="a";One11<="t";One12<="c"; One13<="h";One14<="";One15<="";One16<=""; Two01<="";Two02<="";Two03<="";Two04<=""; Two07<=":";Two10<=":"; Two13<="";Two14<="";Two15<="";Two16<=""; Two05<=(StopMinute/8'd10)+8'b00110000; Two06<=(StopMinute%8'd10)+8'b00110000; Two08<=(StopSecond/8'd10)+8'b00110000; Two09<=(StopSecond%8'd10)+8'b00110000; Two11<=(StopNum/8'd10)+8'b00110000; Two12<=(StopNum%8'd10)+8'b00110000; if(KeyIn[1])begin StopKey<=StopKey+2'b1; if(StopKey==2'b10) StopKey<=2'b0; end if(StopKey==2'b0)begin StopNum<=8'd0; StopSecond<=8'd0; StopMinute<=8'd0; end if(StopKey==2'b01)begin CntStop<=CntStop+26'd1; if(CntStop==26'd499999)begin CntStop<=26'd0; StopNum<=StopNum+8'd1; if(StopNum==8'd99)begin StopNum<=8'd0; StopSecond<=StopSecond+8'd1; if(StopSecond==8'd59)begin StopSecond<=8'd0; StopMinute<=StopMinute+1'b1; if(StopMinute==8'd59) StopMinute<=8'd0; end end end end endcase(FlagKey)4'b0000://時(shí)間顯示的控制beginCntSecond<=CntSecond+26'd1;if(CntSecond==26'd49999999)beginCntSecond<=26'd0;Second<=Second+8'd1;if(Second==8'd59)beginSecond<=8'd0;Minute<=Minute+1'b1;if(Minute==8'd59)beginMinute<=8'd0;Hour<=Hour+8'd1;if(Hour==8'd23)beginHour<=8'd0;Day<=Day+8'd1;Week<=Week+3'd1;if(Week==3'd6)Week<=3'd1;if(Day==FlagDay)beginDay<=8'd1;Month<=Month+8'd1;if(Month==8'd12)beginMonth<=8'd1;Year<=Year+14'd1;if(Year==14'd9999)Year<=14'd0;endendendendendendend4'b0001://停止計(jì)時(shí),等待調(diào)整時(shí)間beginCntSecond<=26'b0;end4'b0010://調(diào)整年beginif(FlagScan)beginOne02<=8'd20;One03<=8'd20;One04<=8'd20;One05<=8'd20;endif(KeyIn[1])begin//加數(shù)Year<=Year+14'd1;if(Year==14'd9999)Year<=14'd0;endif(KeyIn[2])begin//減數(shù)Year<=Year-14'd1;if(Year==14'd0) Year<=14'd9999;endend4'b0011://調(diào)整月beginif(FlagScan)beginOne07<=8'd20;One08<=8'd20;endif(KeyIn[1])begin//加數(shù)Month<=Month+8'd1;if(Month==8'd12)Month<=8'd1;endif(KeyIn[2])begin//減數(shù)Month<=Month-8'd1;if(Month==8'd1)Month<=8'd12;endend4'b0100://調(diào)整日beginif(FlagScan)beginOne10<=8'd20;One11<=8'd20;endif(KeyIn[1])begin//加數(shù)Day<=Day+8'd1;if(Day==FlagDay)Day<=8'd1;endif(KeyIn[2])begin//減數(shù)Day<=Day-8'd1;if(Day==8'd1)Day<=FlagDay;endend4'b0101://調(diào)整星期beginif(FlagScan)beginOne13<=8'd20;One14<=8'd20;One15<=8'd20;endif(KeyIn[1])begin//加數(shù)Week<=Week+3'd1;if(Week==3'd6)Week<=3'd0;endif(KeyIn[2])begin//減數(shù)Week<=Week-3'd1;if(Week==3'd0)Week<=3'd6;endend4'b0110://調(diào)整時(shí)beginif(FlagScan)beginTwo05<=8'd20;Two06<=8'd20;endif(KeyIn[1])begin//加數(shù)Hour<=Hour+8'd1;if(Hour==8'd23)Hour<=8'd0;endif(KeyIn[2])begin//減數(shù)Hour<=Hour-8'd1;if(Hour==8'd0)Hour<=8'd23;endend4'b0111://調(diào)整分beginif(FlagScan)beginTwo08<=8'd20;Two09<=8'd20;endif(KeyIn[1])begin//加數(shù)Minute<=Minute+8'd1;if(Minute==8'd59)Minute<=8'd0;endif(KeyIn[2])begin//減數(shù)Minute<=Minute-8'd1;if(Minute==8'd0)Minute<=8'd59;endend4'b1000://調(diào)整秒beginif(FlagScan)beginTwo11<=8'd20;Two12<=8'd20;endif(KeyIn[1])begin//加數(shù)Second<=Second+8'd1;if(Second==8'd59)Second<=8'd0;endif(KeyIn[2])begin//減數(shù)Second<=Second-8'd1;if(Second==8'd0)Second<=8'd59;endendendcaseendendendmodule外文資料原文外文資料原文BuildingProgrammableAutomationControllerswithLabVIEWFPGAOverviewProgrammableAutomationControllers(PACs)aregainingacceptancewithintheindustrialcontrolmarketastheidealsolutionforapplicationsthatrequirehighlyintegratedanaloganddigitalI/O,floating-pointprocessing,andseamlessconnectivitytomultipleprocessingnodes.NationalInstrumentsoffersavarietyofPACsolutionspoweredbyonecommonsoftwaredevelopmentenvironment,NILabVIEW.WithLabVIEW,youcanbuildcustomI/Ointerfacesforindustrialapplicationsusingadd-onsoftware,suchastheNILabVIEWFPGAModule.WiththeLabVIEWFPGAModuleandreconfigurableI/O(RIO)hardware,NationalInstrumentsdeliversanintuitive,accessiblesolutionforincorporatingtheflexibilityandcustomizabilityofFPGAtechnologyintoindustrialPACsystems.YoucandefinethelogicembeddedinFPGAchipsacrossthefamilyofRIOhardwaretargetswithoutknowinglow-levelhardwaredescriptionlanguages(HDLs)orboard-levelhardwaredesigndetails,aswellasquicklydefinehardwareforultrahigh-speedcontrol,customizedtimingandsynchronization,low-levelsignalprocessing,andcustomI/Owithanalog,digital,andcounterswithinasingledevice.YoualsocanintegrateyourcustomNIRIOhardwarewithimageacquisitionandanalysis,motioncontrol,andindustrialprotocols,suchasCANandRS232,torapidlyprototypeandimplementacompletePACsystem.IntroductionYoucanusegraphicalprogramminginLabVIEWandtheLabVIEWFPGAModuletoconfiguretheFPGA(field-programmablegatearray)onNIRIOdevices.RIOtechnology,themergingofLabVIEWgraphicalprogrammingwithFPGAsonNIRIOhardware,providesaflexibleplatformforcreatingsophisticatedmeasurementandcontrolsystemsthatyoucouldpreviouslycreateonlywithcustom-designedhardware.AnFPGAisachipthatconsistsofmanyunconfiguredlogicgates.Unlikethefixed,vendor-definedfunctionalityofanASIC(application-specificintegratedcircuit)chip,youcanconfigureandreconfigurethelogiconFPGAsforyourspecificapplication.FPGAsareusedinapplicationswhereeitherthecostofdevelopingandfabricatinganASICisprohibitive,orthehardwaremustbereconfiguredafterbeingplacedintoservice.Theflexible,software-programmablearchitectureofFPGAsofferbenefitssuchashigh-performanceexecutionofcustomalgorithms,precisetimingandsynchronization,rapiddecisionmaking,andsimultaneousexecutionofparalleltasks.Today,FPGAsappearinsuchdevicesasinstruments,consumerelectronics,automobiles,aircraft,copymachines,andapplication-specificcomputerhardware.WhileFPGAsareoftenusedinindus
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦設(shè)備標(biāo)書中的培訓(xùn)方案
- 車間設(shè)備安全培訓(xùn)活動(dòng)課件
- 《分子熱運(yùn)動(dòng)》教案物理科課件
- 2025年產(chǎn)品運(yùn)營私域流量池搭建與精細(xì)化運(yùn)營專項(xiàng)總結(jié)(2篇)
- 車間生產(chǎn)安全培訓(xùn)內(nèi)容
- 車間日常安全培訓(xùn)記錄課件
- 車間安全生產(chǎn)管理課件
- 車間安全教育再培訓(xùn)課件
- 車間安全培訓(xùn)頻次課件
- 車間安全培訓(xùn)效果評價(jià)課件
- 2025年家庭投資理財(cái)規(guī)劃:科學(xué)配置與穩(wěn)健增值指南
- 杜氏肌營養(yǎng)不良運(yùn)動(dòng)功能重建方案
- 2026貴州大數(shù)據(jù)產(chǎn)業(yè)集團(tuán)有限公司第一次招聘155人模擬筆試試題及答案解析
- 呼吸內(nèi)科主任談學(xué)科建設(shè)
- 腫瘤藥物給藥順序課件
- 海南計(jì)算機(jī)與科學(xué)專升本試卷真題及答案
- 企業(yè)安全一把手授課課件
- 學(xué)校中層干部述職報(bào)告會(huì)
- 音樂療法對焦慮緩解作用-洞察及研究
- 2023年廣東省深圳市中考適應(yīng)性數(shù)學(xué)試卷(原卷版)
- 建筑工程鋼筋質(zhì)量驗(yàn)收報(bào)告模板
評論
0/150
提交評論