版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計(jì)論文題目基于嵌入式Linux的溫度采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué)院專業(yè)班級(jí)學(xué)號(hào)學(xué)生姓名指導(dǎo)教師完成時(shí)間2023年5月摘要數(shù)據(jù)采集系統(tǒng)是信息科學(xué)的一個(gè)重要分支,它研究信息數(shù)據(jù)的采集、存儲(chǔ)、處理以及控制等。本文提出采用嵌入式Linux作為操作系統(tǒng),針對(duì)三星公司的S5PV210嵌入式處理器,設(shè)計(jì)一個(gè)嵌入式溫度采集系統(tǒng)。論文在分析了Linux設(shè)備驅(qū)動(dòng)程序的根本工作原理根底上,討論了開發(fā)中經(jīng)常會(huì)碰到的中斷處理、擁塞處理、I/O端口,并在此根底上實(shí)現(xiàn)了基于S5PV210嵌入式處理器的開、讀、寫、關(guān)外部RAM的字符設(shè)備驅(qū)動(dòng)和網(wǎng)絡(luò)驅(qū)動(dòng)。結(jié)合高精度溫度傳感器DS18B20,實(shí)現(xiàn)溫度的正確采集,并通過以太網(wǎng)絡(luò)將數(shù)據(jù)上傳給上位效勞器。論文首先介紹了通信網(wǎng)絡(luò)中各種設(shè)備特性、總線結(jié)構(gòu)及傳輸技術(shù),然后介紹根據(jù)單片機(jī)與PC機(jī)之間的串行通信原理,用ubantu完成數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn),為用戶提供一個(gè)友好的人機(jī)界面,對(duì)采集系統(tǒng)進(jìn)行控制并顯示采集后的數(shù)據(jù)。使用串口線傳輸數(shù)據(jù),為數(shù)據(jù)采集系統(tǒng)和計(jì)算機(jī)之間的通訊開辟了新的道路。關(guān)鍵詞:數(shù)據(jù)采集系統(tǒng);以太網(wǎng)絡(luò);S5PV210;DS18B20IIDesignandImplementationofanEmbeddedTemperatureAcquisitionSystembasedonLinuxAbstractDataAcquisitionSystemisanimportantbranchofinformationscience,itstudiesthecollection,storage,processingandcontrolofinformationdata.Inthispaper,theembeddedLinuxisusedastheoperatingsystem,andtheembeddedS5PV210processorisdesignedtodesignanembeddedtemperatureacquisitionsystem.BasedontheanalysisoftheLinuxdevicedriverbasedonthebasicworkingprinciplediscusseddevelopmentoftenencounterinterruptioncongestionhandling,processing,I/Oports,andonthisbasis,realizeds5pv210embeddedprocessoropen,read,write,outsidetheramofthecharactersetbydriverandthenetworkdriveon.CombinedwiththehighprecisiontemperaturesensorDS18B20,toachievethecorrecttemperaturecollection,andthroughtheEthernetnetworktouploaddatatothehostserver.Atfirst,thepaperintroducesthecommunicationnetworkcharacteristicsofvariousdevices,busstructureandtransmissiontechnology,andthenintroduceaccordingtotheprincipleofserialcommunicationbetweenMCUandPC,ubantucompletedsoftwaredesignandimplementationofdataacquisitionsystem,toprovideuserswithafriendlyman-machineinterface,tocontroltheacquisitionsystemanddisplayafterthecollectionofthedata.Theuseofserialdatatransmission,forthedataacquisitionsystemandthecommunicationbetweenthecomputerhasopenedupanewpath.Keywords:Dataacquisitionsystem;Ethernet;S5PV210;DS18B20目錄TOC\o"1-3"\h\u第一章需求分析11.1總體設(shè)計(jì)11.2客戶端界面設(shè)計(jì)〔app:Linux_client〕11.3效勞器設(shè)計(jì)〔linux〕11.4硬件設(shè)計(jì)2第二章詳細(xì)設(shè)計(jì)32.1代碼調(diào)用過程32.2文件IO〔系統(tǒng)庫函數(shù)〕32.3網(wǎng)絡(luò)編程42.4內(nèi)核驅(qū)動(dòng)開發(fā):〔模塊編程〕62.5注冊(cè)字符設(shè)備驅(qū)動(dòng)72.6操作硬件的過程:(裸奔代碼)8第三章測(cè)試過程103.1測(cè)試10第四章工程拓展114.1工程拓展11附錄12總結(jié)23第一章需求分析1.1總體設(shè)計(jì)圖1-1總體設(shè)計(jì)圖1.2客戶端界面設(shè)計(jì)〔app:Linux_client〕作為用戶操作的簡單界面用于發(fā)送命令控制硬件接收server傳輸?shù)臄?shù)據(jù)顯示數(shù)據(jù)。1.3效勞器設(shè)計(jì)〔linux〕用于接收〔app〕客戶端發(fā)送的命令處理命令轉(zhuǎn)發(fā)給硬件讀取硬件傳輸數(shù)據(jù)把數(shù)據(jù)傳回〔app〕客戶端1.4硬件設(shè)計(jì)Led燈點(diǎn)亮燈:led1、led2。溫度傳感器把溫度數(shù)據(jù)讀取到客戶端。3.蜂鳴器用于報(bào)警以及音樂播放。第二章詳細(xì)設(shè)計(jì)2.1代碼調(diào)用過程代碼調(diào)用過程如下圖:圖2-1代碼調(diào)用圖分析代碼調(diào)用過程:0.準(zhǔn)備工作:先調(diào)用insmodled.ko插入模塊register_chrdev注冊(cè)字符設(shè)備驅(qū)動(dòng)App:fd=open("/dev/led",O_RDONLY);2.drivers:2.sys_open("/dev/led",O_RDONLY) 3.由內(nèi)核為我們匹配,看是否能夠找到設(shè)備號(hào)為249的led-drivers 4.如果匹配成功,繼續(xù)找到structfile_operationsled_fops結(jié)構(gòu)體 5.通過結(jié)構(gòu)體找到open函數(shù)的入口led_fops.open 6.led_open 7.arm_init2.2文件IO〔系統(tǒng)庫函數(shù)〕Open翻開文件返回一個(gè)文件描述符Read通過文件描述符fd,讀取文件Write通過文件描述符fd,寫文件Close(進(jìn)程結(jié)束的時(shí)候,會(huì)自動(dòng)關(guān)閉,可以不必顯示的調(diào)用close)阻塞:poll機(jī)制解決客戶端如果要接收效勞器回發(fā)的數(shù)據(jù),那么需要讀取網(wǎng)絡(luò)套接字,此時(shí),客戶端涉及到讀終端和讀效勞器,而讀終端和讀效勞器都是會(huì)阻塞的,所以調(diào)用poll機(jī)制解決。intpoll(structpollfd*fds,nfds_tnfds,inttimeout);功能:把所關(guān)心的文件描述符參加到structpollfd結(jié)構(gòu)中,告訴內(nèi)核我要非阻塞的讀這個(gè)文件描述符,內(nèi)核為我們判斷,如果不阻塞,那么相應(yīng)的狀態(tài),參數(shù)1:structpollfd{intfd;/*所關(guān)心的文件描述符*/shortevents;/*告訴內(nèi)核我要做什么:POLLIN:非阻塞的讀*/shortrevents;/*內(nèi)核返回的狀態(tài)*/};參數(shù)2:關(guān)心的描述符的個(gè)數(shù)參數(shù)3:愿意等待多長時(shí)間 -1:一直等待>0:表示愿意等待的時(shí)間返回值: 大于0:表示至少有一個(gè)已經(jīng)成功返回 ==0:表示超時(shí) <0:
表示失敗2.3網(wǎng)絡(luò)編程TCP〔即傳輸控制協(xié)議〕:是一種面向連接的傳輸層協(xié)議,它能提供高可靠性通信(即數(shù)據(jù)無誤、數(shù)據(jù)無喪失、數(shù)據(jù)無失序、數(shù)據(jù)無重復(fù)到達(dá)的通信)。適用情況:1.適合于對(duì)傳輸質(zhì)量要求較高,以及傳輸大量數(shù)據(jù)的通信。2.在需要可靠數(shù)據(jù)傳輸?shù)膱?chǎng)合,通常使用TCP協(xié)議3.MSN/QQ等即時(shí)通訊軟件的用戶登錄賬戶管理相關(guān)的功能通常采用TCP協(xié)議工程需求:Linux平臺(tái)下效勞器(server)等待連接客戶端接收客戶端發(fā)送的數(shù)據(jù)[字符串和文件]處理客戶端發(fā)送的數(shù)據(jù)和命令發(fā)送處理結(jié)果給客戶端客戶端簡單的界面從鍵盤接收用戶輸入命令發(fā)送數(shù)據(jù)或者命令給效勞器接收效勞器返回的結(jié)果協(xié)議:tcp實(shí)現(xiàn)編程TCP四次握手協(xié)議TCP編程模型圖2-2TCP編程模型圖網(wǎng)絡(luò)編程所需要的API函數(shù)效勞器SocketBindListenAcceptRead/readClose客戶端SocketConnectRead/readClose通用地址結(jié)構(gòu)structsockaddr{u_shortsa_family;//地址族,AF_xxxcharsa_data[14];//14字節(jié)協(xié)議地址};Internet協(xié)議地址結(jié)構(gòu)structsockaddr_in{sa_family_tsin_family;/*地址族:AF_INET*/in_port_tsin_port;/*端口號(hào)*/structin_addrsin_addr;/*IPV4地址internetaddress*/};/*IPv4地址結(jié)構(gòu)*/structin_addr{uint32_ts_addr;/*addressinnetworkbyteorder*/};2.4內(nèi)核驅(qū)動(dòng)開發(fā):〔模塊編程〕模塊入口moude_init模塊出口module_exit語法:c語言編譯〔Makefile〕makeinstallmakecpled.ko/opt/filesystem/test執(zhí)行:驅(qū)動(dòng)模塊后綴:led.koa)插入內(nèi)核:insmodled.kob)查看模塊:lsmodc)移除模塊:rmmodled2.5注冊(cè)字符設(shè)備驅(qū)動(dòng)staticinlineintregister_chrdev(unsignedintmajor,constchar*name, conststructfile_operations*fops)功能:把設(shè)備注冊(cè),添加到字符設(shè)備的表格中圖2-3字符設(shè)備驅(qū)動(dòng)圖insmodled.ko調(diào)用內(nèi)核驅(qū)動(dòng)模塊注冊(cè)設(shè)備到內(nèi)核字符設(shè)備管理注冊(cè)表中圖2-4翻開文件設(shè)備過程圖2.6操作硬件的過程:(裸奔代碼)找到外設(shè)(led),分析外設(shè)功能原廠提供Google,baiduled原理圖圖2-5led點(diǎn)燈流程圖操作led的GPIO控制器,主要有以下兩個(gè):GPC0CON:用于控制GPIO引腳輸入還是輸出GPC0CON[32]LED1->GPC0CON[3]->[15-12]-->0001=OutputLED2->GPC0CON[4]->[19-16]-->0001=OutputGPC0DAT:用于設(shè)置電平的上下GPC0DAT[3]-->GPC0CON[15-12]led1亮->高電平1GPC0DAT[4]-->GPC0CON[19-16]led2->滅->低電平0Led:GPC0CON存放器地址0xE0200060#defineGPC0CON(*(volitaleunsignedlong*)0xE0200060)GPC0DAT存放器地址0xE0200064#defineGPC0DAT(*(volitaleunsignedlong*)0xE0200064)MMU當(dāng)開啟了MMU之后,我們是不能直接訪問到物理地址的。需要通過ioreamp把物理地址映射為虛擬地址,我們只能通過虛擬地址操作硬件Virt=ioremap(phy);intstrncasecmp(constchar*s1,constchar*s2,size_tn);比擬字符s1和s2的前n個(gè)字符是否相等,如果相等,那么返回05.裸奔代碼操作硬件過程圖2-6操作硬件流程圖第三章測(cè)試過程3.1測(cè)試1.用戶登錄輸入用戶名和密碼進(jìn)行校驗(yàn)2.登錄成功進(jìn)入到用戶操作界面〔如圖3-1所示〕輸入要控制硬件的命令:如:翻開led1,那么輸入on1關(guān)閉led1,那么輸入off1翻開音樂播放器,那么輸入song獲取溫度,那么輸入get……退出,那么輸入quit圖3-1用戶操作界面第四章工程拓展4.1工程拓展目前本工程實(shí)現(xiàn)了通過客戶端操作硬件,實(shí)現(xiàn)了點(diǎn)亮燈/蜂鳴器報(bào)警/音樂播放/溫度數(shù)據(jù)采集功能。除用于溫度監(jiān)測(cè)外,在系統(tǒng)中的ARM外圍可接入控制電路、其他性能的傳感器甚至攝像頭等,還可以實(shí)現(xiàn)多種其他特殊需要的遠(yuǎn)程監(jiān)測(cè)及控制,如水位監(jiān)測(cè)、視頻監(jiān)控等,具有十分廣闊的應(yīng)用背景。智能硬件框架〔如圖4-1所示〕圖4-1智能硬件框架圖附錄效勞器模塊:/*1.調(diào)用socket函數(shù)創(chuàng)立套接字。 TCP協(xié)議:SOCK_STREAM*/ sockfd=socket(AF_INET,SOCK_STREAM,0); if(-1==sockfd){ perror("socket"); return-1; } /*填充效勞器信息*/ structsockaddr_inservaddr; memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family=AF_INET; //PF_INET servaddr.sin_port=htons(PORT); //端口號(hào)(5001-65536) servaddr.sin_addr.s_addr=inet_addr(SERVERIP); //ip地址 socklen_tadrlen=sizeof(servaddr); /*2.調(diào)用bind指定本地地址和端口。*/ ret=bind(sockfd,(structsockaddr*)&servaddr,adrlen); if(-1==ret){ perror("bind"); return-1; } /*3.調(diào)用listen啟動(dòng)監(jiān)聽。*/ ret=listen(sockfd,1000); if(-1==ret){ perror("listen"); return-1; } printf("serverinit.dsuccess...\n"); intnewfd; charbuf[BUFSZ]={0}; pthread_ttid; while(1) { /*4.調(diào)用accept從已連接列隊(duì)中提取客戶連接。*/ newfd=accept(sockfd,NULL,NULL); if(newfd<=0){ continue; } printf("%dconnectsuccess...\n",newfd); /*為每個(gè)客戶創(chuàng)立線程去維護(hù)它 ==>tid:用于存放新建線程ID ==>do_work:新建線程從這里開始執(zhí)行 ==>newfd:傳給執(zhí)行函數(shù)的參數(shù)*/ ret=pthread_create(&tid,NULL,do_work,&newfd); if(0!=ret){ continue; } /*設(shè)置為可別離態(tài)*/ pthread_detach(tid); } /*6.調(diào)用close關(guān)閉連接。*/ close(sockfd); close(newfd); return0;}/*執(zhí)行函數(shù)(void*表示可以接收任意類型)*/void*do_work(void*arg){ intret; charbuf[BUFSZ]; intnewfd=*(int*)arg; char*strerr="密碼或者用戶名輸入有誤!"; unsignedintcmd=-1; unsignedlongval=-1; inti=0; intn=2; intdev_fd; /*5.調(diào)用I/O函數(shù)(read/write)與客戶端通訊。*/ intfd_led; fd_led=open("/dev/led",O_RDWR); if(fd_led<0){ perror("open"); return(void*)-1; } /*開辟一個(gè)線程不停的發(fā)送溫度給客戶*/ pthread_ttid1; ret=pthread_create(&tid1,NULL,do_temp,&newfd); pthread_detach(tid1); while(1) { /*讀取客戶端信息*/ memset(buf,0,sizeof(buf)); ret=read(newfd,buf,sizeof(buf)-1); if(ret>0){ /*發(fā)送命令給硬件*/ if(!strncasecmp(buf,"on1",3)){ cmd=LED_ON; val=3;}elseif(!strncasecmp(buf,"on2",3)){ cmd=LED_ON; val=4;}elseif(!strncasecmp(buf,"off1",4)){ cmd=LED_OFF; val=3;}elseif(!strncasecmp(buf,"off2",4)){ cmd=LED_OFF; val=4;}elseif(!strncasecmp(buf,"onb",3)){ pwm_on();}elseif(!strncasecmp(buf,"song",4)){ pwm_music_fun(); } if(ioctl(fd_led,cmd,(unsignedlong)val)<0){ perror("ioctlfailed\n"); exit(1); } } }客戶端模塊:intmain(intargc,char**argv){ intret; charbuf[BUFSZ]={0}; chartemp[BUFSZ]="26.234000"; /*1.調(diào)用socket函數(shù)創(chuàng)立套接字。TCP協(xié)議:SOCK_STREAM*/ sockfd=socket(AF_INET,SOCK_STREAM,0); if(-1==sockfd){ perror("socket"); return-1; } /*填充效勞器信息*/ structsockaddr_inservaddr; memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(PORT); //端口號(hào) servaddr.sin_addr.s_addr=inet_addr(SERVERIP); //ip地址 socklen_tadrlen=sizeof(servaddr); /*2.調(diào)用connect連接效勞器端*/ ret=connect(sockfd,(structsockaddr*)&servaddr,adrlen); if(-1==ret){ perror("connect"); return-1; } printf("clientconnectsuccess..\n"); structpollfdpfd[2]={0}; pfd[0].fd=0; pfd[0].events=POLLIN; //不阻塞的讀數(shù)據(jù) pfd[1].fd=sockfd; pfd[1].events=POLLIN; //不阻塞的讀數(shù)據(jù) /*登錄驗(yàn)證*/ if(-1==login()){ printf("登錄失敗\n"); return-1; } printf("登錄成功...\n"); interface_print(temp); /*5.調(diào)用I/O函數(shù)(read/write)與客戶端通訊。*/ inti=5; intpos; while(1) { ret=poll(pfd,2,-1); if(ret>0){ if(pfd[0].revents==POLLIN){ interface_print(temp); /*從終端讀取數(shù)據(jù)*/ memset(buf,0,sizeof(buf)); ret=read(pfd[0].fd,buf,sizeof(buf)-1); if(ret>0){ /*發(fā)送數(shù)據(jù)給效勞器*/ write(sockfd,buf,ret); } } if(pfd[1].revents==POLLIN){ if(!strncmp(buf,"get",3)){ /*接收效勞器發(fā)送的信息*/ memset(temp,0,sizeof(temp)); ret=read(pfd[1].fd,temp,sizeof(temp)-1); if(ret>0){ temp[ret-1]='\0'; /*把信息顯示到終端*/ interface_print(temp); } } } }elseif(0==ret){ printf("超時(shí)\n"); break;}else{ perror("poll"); break; } } /*6.調(diào)用close關(guān)閉連接。*/ close(sockfd); return0;}intlogin(void){ charusername[100]={0}; charpasswd[100]={0}; intflags; intret; charbuf[100]; system("clear"); //清屏clear write(1,"username:",strlen("username:")); memset(username,0,sizeof(username)); ret=read(0,username,sizeof(username)-1); if(ret>0){ write(sockfd,username,ret); } write(1,"passwd:",strlen("passwd:")); memset(passwd,0,sizeof(passwd)); ret=read(0,passwd,sizeof(passwd)-1); if(ret>0){ write(sockfd,passwd,ret); } memset(buf,0,sizeof(buf)); ret=read(sockfd,buf,sizeof(buf)); if(ret>0){ printf("%s\n",buf); if(!strncmp(buf,"ok",2)){ flags=0; }else{ flags=-1; } } returnflags;}溫度傳感器驅(qū)動(dòng)模塊:staticvoidInit_DS18B2O(void)//Init_DS18B2O{ unsignedintretvalue=1; writel((readl(gph1con)&0xFFFFFFF0)|0x1,gph1con);//gph1_0,output writel(readl(gph1dat)|0x1,gph1dat); __udelay(1); writel(readl(gph1dat)&(0xFFFFFFFE),gph1dat); __udelay(500); writel(readl(gph1dat)|0x1,gph1dat); __udelay(20); writel(readl(gph1con)&0xFFFFFFF0,gph1con);//gph1_0,input __udelay(100); if(!(readl(gph1dat)&0x01)) { retvalue=0; }}staticintgpio_relrease(structinode*inode,structfile*filp){ iounmap(gph1con); iounmap(gph1dat); iounmap(gph1pud); iounmap(gpc0con); iounmap(gpc0dat); iounmap(gpc0pud); return0;}staticunsignedcharReadOneChar(void){ unsignedchari=0; unsignedchardat=0; spin_lock(&lock); for(i=8;i>0;i--) { dat>>=1; writel((readl(gph1con)&0xFFFFFFF0)|0x1,gph1con);//gph1_0,output writel(readl(gph1dat)&(0xFFFFFFFE),gph1dat);__udelay(2);// writel(readl(gph1con)&0xFFFFFFF0,gph1con);//gph1_0,input __udelay(1);// if((readl(gph1dat)&0x01)) { dat|=0x80;} __udelay(62); } spin_unlock(&lock); return(dat);}staticvoidWriteOneChar(unsignedchardat){ unsignedchari=0; writel((readl(gph1con)&0xFFFFFFF0)|0x1,gph1con);//gph1_0,output spin_lock(&lock); for(i=0;i<8;i++) { writel(readl(gph1dat)&(0xFFFFFFFE),gph1dat); __udelay(15); if(dat&0x01) { writel(readl(gph1dat)|0x1,gph1dat); } else { writel(readl(gph1dat)&(0xFFFFFFFE),gph1dat); } __udelay(45); writel(readl(gph1dat)|0x1,gph1dat); __udelay(1); dat>>=1; } spin_unlock(&lock);}staticunsignedintReadTemp(void){ unsignedcharT_h=0; unsignedcharT_l=0; unsignedinttemp=0; writel((readl(gph1pud)&0xFFFc)|0x02,gph1pud);//gph1_0,pull-upenabled spin_lock(&lock); Init_DS18B2O(); spin_unlock(&lock); __udelay(400); writel((readl(gph1con)&0xFFFFFFF0)|0x1,gph1con);//gph1_0,output writel(readl(gph1dat)|0x1,gph1dat); WriteOneChar(0xcc); WriteOneChar(0x44); mdelay(100); spin_lock(&lock); Init_DS18B2O(); spin_unlock(&lock); __udelay(400); writel((readl(gph1con)&0xFFFFFFF0)|0x1,gph1con);//gph1_0,output writel(readl(gph1dat)|0x1,gph1dat); WriteOneChar(0xcc); WriteOneChar(0xBE); T_l=ReadOneChar();//L T_h=ReadOneChar();//H temp=(unsignedint)(((unsignedint)T_h<<8)|T_l); returntemp;}staticintgpio_ioctl(structfile*filp,unsignedintcmd,unsignedint*arg){ unsignedintret; switch(cmd){ caseGPIO_ON: ret=ReadTemp(); arg=&ret; break; default: ret=-1; } returnret;}staticstructfile_operationsgpio_fops={ .owner = THIS_MODULE, .open = gpio_open, .release = gpio_relrease, .unlocked_ioctl = gpio_ioctl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 促進(jìn)青少年讀書興趣的活動(dòng)設(shè)計(jì)計(jì)劃
- 遼寧省葫蘆島市(2024年-2025年小學(xué)五年級(jí)語文)統(tǒng)編版綜合練習(xí)(上學(xué)期)試卷及答案
- 墓地修建合同范本
- 物流行業(yè)貨物運(yùn)輸質(zhì)量控制制度
- 獸醫(yī)診所麻醉藥品管理制度
- 歷史-2025屆吉林省長春市高三11月質(zhì)量監(jiān)測(cè)(一)試題+答案
- 電商圖片處理基礎(chǔ)-課件 朱楚芝 第6-8章 文字工具制作營銷圖片-節(jié)日大促電商
- 醫(yī)療行業(yè)人文關(guān)懷教育方案
- 園藝種植土壤優(yōu)化實(shí)施方案
- 農(nóng)村集市節(jié)慶安全管理方案
- 譯林版一年級(jí)上冊(cè)英語全冊(cè)課件
- 凈現(xiàn)值NPV分析和總結(jié)
- 國網(wǎng)基建各專業(yè)考試題庫大全-質(zhì)量專業(yè)-中(多選題匯總)
- 【信息技術(shù) 】計(jì)算機(jī)系統(tǒng)互聯(lián)(第一課時(shí))課件 2022-2023學(xué)年教科版(2019)高中信息技術(shù)必修2
- 中國濕疹診療指南
- LTC流程介紹完整版
- 飼料加工系統(tǒng)粉塵防爆安全規(guī)程
- 一年級(jí)上冊(cè)美術(shù)課件-第11課-花兒寄深情-▏人教新課標(biāo)
- 植物的象征意義
- 夏商周考古課件 第5章 西周文化(1、2節(jié))
- GB/T 1231-1991鋼結(jié)構(gòu)用高強(qiáng)度大六角頭螺拴、大六角螺母、墊圈技術(shù)條件
評(píng)論
0/150
提交評(píng)論