版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、題目:基于AT89S52和DS18B20的數(shù)字溫度計設計一 、設計要求數(shù)字式溫度計要求測溫范圍為55125C,精度誤差在0.5C以內,液晶顯示。二 、方案確定根據(jù)系統(tǒng)的設計要求,選擇DS18B20作為本系統(tǒng)的溫度傳感器,選擇單片機AT89S52為測控系統(tǒng)的核心來完成數(shù)據(jù)采集、處理、顯示功能。選用數(shù)字溫度傳感器DS18B20,省卻了采樣/保持電路、運放、數(shù)/模轉換電路以及進行長距離傳輸時的串/并轉換電路,簡化了電路,縮短了系統(tǒng)的工作時間,降低了系統(tǒng)的硬件成本。該系統(tǒng)的總體設計思路如下:溫度傳感器DS18B20把所測得的溫度信號發(fā)送到AT89S52單片機上,經(jīng)過單片機處理,然后在1602LCD上進
2、行顯示。其溫度測量及顯示電路原理圖如下:220V轉5V電路原理圖如下:2.1 元器件的介紹2.1.1 單片機的選擇AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52單片機結構見圖2.1:圖2.1 AT89S52結構圖2.2.2 傳感器的選擇DS18B2
3、0溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。DS18B20內部結構主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式,DQ 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。2.2.3 LCD的選擇此設計中采用1602LCD對溫度進行顯示。圖2.2 16
4、02LCD實物示意圖2.2 溫度檢測電路DS18B20 最大的特點是單總線數(shù)據(jù)傳輸方式,DS18B20 的數(shù)據(jù)I/O 均由同一條線來完成。DS18B20 的電源供電方式有2 種: 外部供電方式和寄生電源方式。工作于寄生電源方式時, VDD 和GND 均接地, 他在需要遠程溫度探測和空間受限的場合特別有用, 原理是當1 W ire 總線的信號線DQ 為高電平時, 竊取信號能量給DS18B20 供電, 同時一部分能量給內部電容充電, 當DQ為低電平時釋放能量為DS18B20 供電。但寄生電源方式需要強上拉電路, 軟件控制變得復雜(特別是在完成溫度轉換和拷貝數(shù)據(jù)到E2PROM 時) , 同時芯片的性
5、能也有所降低。因此, 在條件允許的場合, 盡量采用外供電方式。無論是內部寄生電源還是外部供電,I/O口線要接5K左右的上拉電。外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng)。在開發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬電源電壓范圍的優(yōu)點,即使電源電壓VCC 降到3V 時,依然能夠保證溫度量精度。由于DS18B20 只有一根數(shù)據(jù)線,因此它和主機(單片機)通信是需要串行通信,而AT89S51 有兩個串行端口,所以可以不用軟件來模擬實現(xiàn)。經(jīng)過單
6、線接口訪問DC18B20 必須遵循如下協(xié)議:初始化、ROM 操作命令、存儲器操作命令和控制操作。要使傳感器工作,一切處理均嚴格按照時序。三 、軟件設計3.1 概述整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個控制系統(tǒng)的核心,專門用來協(xié)調各執(zhí)行模塊和操作者的關系。二是執(zhí)行軟件(子程序),它是用來完成各種實質性的功能如測量、計算、顯示、通訊等。每一個執(zhí)行軟件是一個小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先
7、要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結構,然后根據(jù)實時性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調度關系。3.2 程序模塊主程序需要調用2子程序,各模塊程序功能如下:LCD顯示程序:向LCD的顯示送數(shù),控制系統(tǒng)的顯示部分。溫度測試及處理程序:對溫度芯片送過來的數(shù)據(jù)進行處理和顯示。主程序流程見圖3.1。 圖3.1主程序流程圖 圖3.2 DS18B20初始化流程3.3 各模塊流程設計下面對主要子程序的流程圖做介紹。3.3.1溫度檢測流程DS18B20在單片機控制下分三個階段:18B20 初始化:初始化流程圖見圖 3.2;讀18B20時序:讀DS18B20流程見圖 3.3;寫18B20時
8、序:寫DS18B20流程見圖 3.4; 圖3.3 讀18B20流程圖 圖3.4 寫18B20流程圖3.3.2 液晶顯示的設置顯示模式的設置:寫入指令碼WriteInstruction(0x38),設置功能16*2顯示,5*7點陣,8位數(shù)據(jù)接口;顯示/開關及光標設置:寫入指令碼WriteInstruction (0x0c),設置開顯示,不顯示光標,光標不閃爍;寫入指令碼WriteInstruction(0x06),設置:光標右移,字符不移;寫入指令碼WriteInstruction(0x01),清屏幕指令,將以前的顯示內容清除;寫入指令碼函數(shù)WriteInstruction( ),寫指令過程:輸
9、入:RS=0,D0-D7=指令碼,E=高脈沖;寫入數(shù)據(jù)函數(shù)WriteData( ), 寫指令過程:輸入:RS=1,D0-D7=數(shù)據(jù),E=高脈沖;數(shù)據(jù)指針設置: 指令碼80H+地址碼(0-27H)顯示第一行的字符,指令碼80H+地址碼(40H-67H)顯示的第二行字符。四、硬件的調試完成的硬件焊接電路見附錄。在硬件調試過程中,出現(xiàn)了許多問題。在設計電源電路中使用了整流橋進行整流,但是在硬件焊接完畢后,測得的輸出電壓不正常。后來利用四個二極管搭建一個整流橋接入電路,輸出的電壓就正常。此外,電路中使用了78L05穩(wěn)壓管將從整流橋出來的電壓穩(wěn)在5V,可是78L05輸出的電壓不是5V,因此自己加了了1K
10、的可調電阻將輸出的電壓進行轉換來給單片機供電。在焊接外圍電路(1602LCD顯示電路和18B20數(shù)字測溫電路)之前,通過在單片的P2.7口接入一個發(fā)光二極管,來調試單片機的最小系統(tǒng)是否能正常工作。單片機中燒入的程序來控制LED的亮和滅。一步調試很成功。接下來自己將外圍電路焊接進去,可是1602LCD不顯示。經(jīng)過自己對各個接口端功能的認真分析,發(fā)現(xiàn)自己將背光電壓調的太高導致1602LCD亮度太高,所以顯示的字符看不見,就誤認成電路連接有誤。在調低背光電壓后,正常顯示。最后出現(xiàn)的問題是在一切正常的情況下1602LCD上顯示的是沒有找到DS18B20傳感器,請檢查電路。經(jīng)過認真仔細檢查電路后,沒有發(fā)
11、現(xiàn)任何錯誤。硬件檢查沒問題,只能是軟件程序編寫有錯,經(jīng)過認真查看所編程序,發(fā)現(xiàn)里面對DS18B20的信號輸入接口設置錯了。改正后,重新編譯燒進單片機,電源打開后,能正常顯示溫度了。經(jīng)過以上過程,自己設計的電路達到了開始設想的功能,課程設計圓滿結束??偨Y和體會本設計利用AT89S52 芯片控制溫度傳感器DS18B20,再輔之以部分外圍電路實現(xiàn)對環(huán)境溫度的測控,性能穩(wěn)定,精度教高,而且擴展性能很強大。由于DS18B20的測量精度只有0.5 度,往往很多場合需要更加精確的溫度,在所測溫度精度不變的基礎上必須對數(shù)據(jù)進行校正。由于DS18B20 是基于帶隙結構的數(shù)字式溫度傳感器,PN 結增量電壓正比于I
12、C 絕對溫度(PTAT),它的測溫精度較高,但存在著一定的誤差.不過,其誤差在時間和外部環(huán)境變化的條件下,保持相當高的穩(wěn)定性。它充分利用監(jiān)控計算機的處理能力,在監(jiān)控計算機上用線性插補的數(shù)學方法對其進行誤差校正補償,能輕易地將其提高其精度。在本次設計的過程中,我發(fā)現(xiàn)很多的問題,這次設計真的讓我長進了很多,單片機C語言課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,這一次,我全部用的都是16進制的數(shù)直接加減,感覺效果比較好,有好多的東西,只有我們去試著做了,才能真正的掌握。五、元件清單(名稱、型號、數(shù)量)元件名稱型號數(shù)量單片機芯片AT89S521溫度傳感器DS18B201晶振12MHz1
13、220V轉7.5V變壓器1電容100pF222uF、0.01uF各110421000uF/25V1220uF/25VLCD16021電阻1K、4.7K各110K24701萬能板1IC插座1導線若干穩(wěn)壓塊78L051發(fā)光二極管1二極管IN40075開關1附錄:程序:/DS18B20溫度檢測及其液晶顯示#include /包含單片機寄存器的頭文件#include /包含_nop_()函數(shù)定義的頭文件unsigned char code digit10=0123456789; /定義字符數(shù)組顯示數(shù)字unsigned char code Str=Test by DS18B20; /說明顯示的是溫度un
14、signed char code Error=Error!Check!; /說明沒有檢測到DS18B20unsigned char code Temp=Temp:; /說明顯示的是溫度unsigned char code Cent=Cent; /溫度單位/*以下是對液晶模塊的操作程序*/sbit RS=P20; /寄存器選擇位,將RS位定義為P2.0引腳sbit RW=P21; /讀寫選擇位,將RW位定義為P2.1引腳sbit E=P22; /使能信號位,將E位定義為P2.2引腳sbit BF=P07; /忙碌標志位,將BF位定義為P0.7引腳/*函數(shù)功能:延時1ms(3j+2)*i=(333
15、+2)10=1010(微秒),可以認為是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i4;i+) for(j=0;j33;j+) ; /*函數(shù)功能:延時若干毫秒入口參數(shù):n*/ void delaynms(unsigned char n) unsigned char i;for(i=0;in;i+) delay1ms(); /*函數(shù)功能:判斷液晶模塊的忙碌狀態(tài)返回值:result。result=1,忙碌;result=0,不忙*/bit BusyTest(void) bit result;RS=0; /根據(jù)規(guī)定,RS為低電平,RW為高電平時,
16、可以讀狀態(tài) RW=1; E=1; /E=1,才允許讀寫 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 result=BF; /將忙碌標志電平賦給result E=0; /將E恢復低電平 return result; /*函數(shù)功能:將模式設置指令或顯示地址寫入液晶模塊入口參數(shù):dictate*/void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根據(jù)規(guī)定,RS和R/W同時為低電平時,可以寫入指令 RW=0; E=
17、0; /E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應先置0 _nop_(); _nop_(); /空操作兩個機器周期,給硬件反應時間 P0=dictate; /將數(shù)據(jù)送入P0口,即寫入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=0; /當E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 /*函數(shù)功能:指定字符顯示的實際地址入口參數(shù):x*/
18、void WriteAddress(unsigned char x) WriteInstruction(x|0x80); /顯示位置的確定方法規(guī)定為80H+地址碼x /*函數(shù)功能:將數(shù)據(jù)(字符的標準ASCII碼)寫入液晶模塊入口參數(shù):y(為字符常量)*/ void WriteData(unsigned char y) while(BusyTest()=1); RS=1; /RS為高電平,RW為低電平時,可以寫入數(shù)據(jù) RW=0; E=0; /E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖, / 就是讓E從0到1發(fā)生正跳變,所以應先置0 P0=y; /將數(shù)據(jù)送入P0口,即將數(shù)據(jù)寫入液晶模塊 _no
19、p_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=1; /E置高電平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四個機器周期,給硬件反應時間 E=0; /當E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令 /*函數(shù)功能:對LCD的顯示模式進行初始化設置*/void LcdInitiate(void) delaynms(15); /延時15ms,首次寫指令時應給LCD一段較長的反應時間 WriteInstruction(0x38); /顯示模式設置:162顯示,57點陣,8位數(shù)據(jù)接口delaynms(5
20、); /延時5ms,給硬件一點反應時間 WriteInstruction(0x38);delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x38); /連續(xù)三次,確保初始化成功delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x0c); /顯示模式設置:顯示開,無光標,光標不閃爍delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0x06); /顯示模式設置:光標右移,字符不移delaynms(5); /延時5ms,給硬件一點反應時間WriteInstruction(0
21、x01); /清屏幕指令,將以前的顯示內容清除delaynms(5); /延時5ms,給硬件一點反應時間 /*以下是DS18B20的操作程序 */ sbit DQ=P23;unsigned char time; /設置全局變量,專門用于嚴格延時/*函數(shù)功能:將DS18B20傳感器初始化,讀取應答信號出口參數(shù):flag */bit Init_DS18B20(void) bit flag; /儲存DS18B20是否存在的標志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先將數(shù)據(jù)線拉高 for(time=0;time2;time+) /略微延時約6微秒 ; DQ = 0; /
22、再將數(shù)據(jù)線從高拉低,要求保持480960us for(time=0;time200;time+) /略微延時約600微秒 ; /以向DS18B20發(fā)出一持續(xù)480960us的低電平復位脈沖 DQ = 1; /釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高) for(time=0;time10;time+) ; /延時約30us(釋放總線后需等待1560us讓DS18B20輸出存在脈沖) flag=DQ; /讓單片機檢測是否輸出了存在脈沖(DQ=0表示存在) for(time=0;time200;time+) /延時足夠長時間,等待存在脈沖輸出完畢 ; return (flag); /返回檢測成功標志/*函數(shù)功能:從
23、DS18B20讀取一個字節(jié)數(shù)據(jù)出口參數(shù):dat*/ unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat; /儲存讀出的一個字節(jié)數(shù)據(jù)for (i=0;i=1; _nop_(); /等待一個機器周期 DQ = 1; /將數(shù)據(jù)線人為拉高,為單片機檢測DS18B20的輸出電平作準備 for(time=0;time2;time+) ; /延時約6us,使主機在15us內采樣 if(DQ=1) dat|=0x80; /如果讀到的數(shù)據(jù)是1,則將1存入datelsedat|=0x00;/如果讀到的數(shù)據(jù)是0,則將0存入dat /
24、將單片機檢測到的電平信號DQ存入ri for(time=0;time8;time+) ; /延時3us,兩個讀時序之間必須有大于1us的恢復期 return(dat); /返回讀出的十進制數(shù)據(jù)/*函數(shù)功能:向DS18B20寫入一個字節(jié)數(shù)據(jù)入口參數(shù):dat*/ WriteOneChar(unsigned char dat)unsigned char i=0;for (i=0; i8; i+) DQ =1; / 先將數(shù)據(jù)線拉高 _nop_(); /等待一個機器周期 DQ=0; /將數(shù)據(jù)線從高拉低時即啟動寫時序 DQ=dat&0x01; /利用與運算取出要寫的某位二進制數(shù)據(jù), /并將其送到數(shù)據(jù)線上等
25、待DS18B20采樣 for(time=0;time10;time+) ;/延時約30us,DS18B20在拉低后的約1560us期間從數(shù)據(jù)線上采樣 DQ=1; /釋放數(shù)據(jù)線 for(time=0;time=1; /將dat中的各二進制位數(shù)據(jù)右移1位 for(time=0;time4;time+) ; /稍作延時,給硬件一點反應時間/*以下是與溫度有關的顯示設置 */ /*函數(shù)功能:顯示沒有檢測到DS18B20*/ void display_error(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; /
26、從第一個字符開始顯示while(Errori != 0) /只要沒有寫到結束標志,就繼續(xù)寫WriteData(Errori); /將字符常量寫入LCDi+; /指向下一個字符delaynms(100); /延時100ms較長時間,以看清關于顯示的說明while(1) /進入死循環(huán),等待查明原因 ;/*函數(shù)功能:顯示說明信息*/ void display_explain(void) unsigned char i; WriteAddress(0x00); /寫顯示地址,將在第1行第1列開始顯示 i = 0; /從第一個字符開始顯示while(Stri != 0) /只要沒有寫到結束標志,就繼續(xù)寫
27、WriteData(Stri); /將字符常量寫入LCDi+; /指向下一個字符delaynms(100); /延時100ms較長時間,以看清關于顯示的說明/*函數(shù)功能:顯示溫度符號*/ void display_symbol(void) unsigned char i; WriteAddress(0x40); /寫顯示地址,將在第2行第1列開始顯示 i = 0; /從第一個字符開始顯示while(Tempi != 0) /只要沒有寫到結束標志,就繼續(xù)寫WriteData(Tempi); /將字符常量寫入LCDi+; /指向下一個字符delaynms(50); /延時1ms給硬件一點反應時間/
28、*函數(shù)功能:顯示溫度的小數(shù)點*/ void display_dot(void) WriteAddress(0x49); /寫顯示地址,將在第2行第10列開始顯示 WriteData(.); /將小數(shù)點的字符常量寫入LCD delaynms(50); /延時1ms給硬件一點反應時間/*函數(shù)功能:顯示溫度的單位(Cent)*/ void display_cent(void) unsigned char i; WriteAddress(0x4c); /寫顯示地址,將在第2行第13列開始顯示 i = 0; /從第一個字符開始顯示 while(Centi != 0) /只要沒有寫到結束標志,就繼續(xù)寫Wr
29、iteData(Centi); /將字符常量寫入LCDi+; /指向下一個字符delaynms(50); /延時1ms給硬件一點反應時間/*函數(shù)功能:顯示溫度的整數(shù)部分入口參數(shù):x*/ void display_temp1(unsigned char x) unsigned char j,k,l; /j,k,l分別儲存溫度的百位、十位和個位j=x/100; /取百位k=(x%100)/10; /取十位l=x%10; /取個位 WriteAddress(0x46); /寫顯示地址,將在第2行第7列開始顯示W(wǎng)riteData(digitj); /將百位數(shù)字的字符常量寫入LCDWriteData(digitk); /將十位數(shù)字的字符常量寫入LCDWriteData(digitl); /將個位數(shù)字的字符常量寫入LCDdelaynms(50); /延時1ms給硬件一點反應時間 /*函數(shù)功能:顯示溫度的小數(shù)數(shù)部分入口參數(shù):x*/ void display_temp2(unsigned char x) WriteAddress(0x4a); /寫顯示地址,將在第2行第11列開始顯示W(wǎng)riteData(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 染色體變異生物課件
- 2024-2025學年山西省運城市高二下學期期中考試歷史試題(解析版)
- 2024-2025學年山東省臨沂市河東區(qū)、費縣高二下學期期中聯(lián)考歷史試題(解析版)
- 2026年虛擬現(xiàn)實VR開發(fā)工程師考試題目及答案
- 2026年國際貿易實務國際市場分析與營銷策略測試題
- 2026年程序設計基礎語言CC試題
- 2026年化學實驗技術化學分析測試方法與技術題集
- 2026年國際關系國際政治經(jīng)濟合作題庫集
- 2026年文化研究與文化現(xiàn)象解讀問題集
- 2026年法律行業(yè)律師資格考試案例分析題
- 2026年齊齊哈爾高等師范??茖W校單招職業(yè)適應性測試題庫必考題
- 安徽省六校2026年元月高三素質檢測考試物理試題(含答案)
- 2025年西南醫(yī)科大學馬克思主義基本原理概論期末考試真題匯編
- 門診護理人文關懷的培訓與實施
- (2025版)肥胖癥合并骨關節(jié)炎專家共識課件
- T-SUCCA 01-2025 二手摩托車鑒定評估技術規(guī)范
- 2025山西焦煤集團所屬華晉焦煤井下操作技能崗退役軍人招聘50人筆試試題附答案解析
- 2026年南京交通職業(yè)技術學院單招職業(yè)技能考試題庫及答案詳解一套
- 2型糖尿病臨床路徑標準實施方案
- 2025年醫(yī)療人工智能產(chǎn)業(yè)報告-蛋殼研究院
- 2026年陜西交通職業(yè)技術學院單招職業(yè)技能測試題庫及參考答案詳解一套
評論
0/150
提交評論