




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE 目录 TOC\o"1-3"\h\z第一章前言21.1MCU与嵌入式系统 21.2传感器简介 31.3热敏电阻温度传感器 4第二章硬件测试52.1单片机系统 52.2单片机的选择 52.2.1MC68HC908GP32单片机的特点 52.2.2MC68HC908GP32内部结构 62.2.3GP32MCU的引脚功能 82.3测温系统的原理框图 92.3.1温度传感器电路 102.3.2信号放大电路 102.3.3A/D转换模块 112.3.4温度显示系统 11第三章软件设计123.1MCU方程序 123.1.1Main函数 123.1.2A/D转换模块的基本编程方法 133.1.3串行口初始化子程序 173.1.4串口通行模块 183.1.5WllDef.c程序 223.2PC机方(VB编程) 22第四章测试与总结274.1测试 274.1.1连接硬件电路 274.1.208C语言程序调试 274.2总结 284.3参考文献 30基于GP32温度测试系统的设计第一章前言1.1MCU与嵌入式系统MCU的基本含义:在一块芯片上集成了中央处理器单元(CPU)、存储器(RAM/ROM)、定时器/计数器及多种输入/输出(I/O)接口的比较完整的数字处理系统。MCU从体系结构到指令系统都是按照嵌入式系统的应用特点专门设计,能很好地满足应用系统的嵌入,面向测控对象和现场可靠运行等方面的要求。因此由MCU构成的系统是发展最快、品种最多、数量最大、应用最广的嵌入式系统。由于MCU有嵌入式应用的专用体系结构与指令系统,而且具有体积小、可靠性高等特点,同时具有各种各样的型号,可以满足不同的需求,实际应用时,开发者可根据具体要求选用最佳型号的MCU嵌入到所需的应用系统中[2]。一个以MCU为核心,比较复杂的嵌入式产品或实际嵌入式应用系统,包含模拟量的输入、模拟量的输出,开关量的输入、开关量的输出以及数据通信部分。如图1为一个典型的嵌入式应用系统框图。MCU工作支撑电路保障MCU能够正常运行,如电源提供、晶振电路及必要的滤波电路等。实际模拟信号一般来自相应的传感器。但是,一般传感器将实际模拟信号转成的电信号都比较弱,MCU无法直接获得该信号,需要将起放大,然后经过模/数(A/D)转换变为数字信号,进行处理。目前许多MCU内部包含A/D转换模块,实际应用时也可根据需要外接A/D转换芯片。常见的模拟量有:温度、湿度、压力、质量、气体浓度、液体浓度、流量等。对MCU来说,模拟信号通过A/D转换变成相应的数字序列进行处理。实际开关信号一般也来自相应的开关类传感器。如光电、电磁开关、干簧管、声控、红外开关等,在一些儿童电子玩具就有一些类似的开关。手动开关也可以作为开关信号送到MCU中。对MCU来说,开关信号就是只有“0”和“1”两种可能值的数字信号。其他输入信号通过通信方式与MCU沟通。常用的通信方式有:异步串行(SCI)通信方式、串行外设接口(SPI)通信方式、并行通信方式、USB通信方式、网络通信方式等。在执行机构中,有开关量执行机构,也有模拟量执行机构。开关量执行机构只有“开”、“关”两种状态。模拟量执行机构需要连续变换的模拟量控制。MCU一般不能直接控制这些执行机构,需要通过相应的驱动电路实现。还有一些执行机构,即不是通常的开关量控制,也不是通常的D/A转换量控制,而是“脉冲”量控制,如控制空调电动机,MCU则通过软件对其控制。MCUMCU放大器:将微弱电信号放大成MCU可接受的电信号传感器:将实际物理信号转换为微弱电信号模拟量驱动机构:将MCU送出的信号放大模拟量执行机构将实际开关信号转换成MCU可接受的电信号MCU与嵌入式系统开关量驱动机构:将MCU送出的信号放大开关量执行机构其他输入信号其他输出信号MCU工作支撑电路其他通信设备通信信号匹配电路A/D转换接口D/A转换接口I/O接口通信接口实际模拟信号实际开关信号图1一个典型的嵌入式应用系统框图1.2传感器简介传感器是一种把物理量或化学量转变成便于利用的电信号的器件,其实质是一种功能块,其作用是将来自外界的各种信号转变为电信号。它是实现测试与自动控制系统的首要环节。如电子计价秤中所安装的称重传感器,它是电子计价秤的重要部件,它担负着将重量转换成电信号的任务,它所输出的电信号被放大器放大并经A/D转换后由相关电路显示出称重信息。如果没有传感器对原始参数进行精确可靠的测量,哪么无论是信号转换或信息处理,或者最佳数据的显示和控制都将无法实现。在现代电子信息系统中,信息采集传感器技术、信息传感痛惜技术、信息处理微处理器技术是现在电子信息技术的3大核心技术。传感器的种类可分为力、热、湿、气,磁、光、电等。室温传感器用于测量室内和室外的环境温度,管温传感器用于测量蒸发器和冷凝器的管壁温度。室温传感器和管温传感器的形状不同,但温度特性基本一致。按温度特性划分,目前美的使用的室温管温传感器有二种类型:1、常数B值为4100K±3%,基准电阻为25℃对应电阻10KΩ±3%。温度越高,阻值越小;温度越低,阻值越大。离25℃越远,对应电阻公差范围越大;在0℃和55℃对应电阻公差约为±7%;而1.3热敏电阻温度传感器温度传感器利用一些金属、半导体等材料与温度有关的特性而制成的,这些特性包括热膨胀、电阻、电容、磁性、热电势、热噪声、弹性及光学特征。根据制造材料将其分为热敏电阻传感器、半导体热电偶传感器、PN结温度传感器和集成温度传感器等类型。热敏电阻传感器,其最基本电气特性是随着温度的变化自身阻值也随之变化。热电阻材料热电阻测温是基于金属导体的电阻值随温度的增加而增加这一特性。第二章硬件测试2.1单片机系统单片机选用的是Freescale公司的MC908GP32,主要完成对A/D转换电路的控制、对转换后的数字量的处理以及对显示模块的控制,并且为ADC0809提供工作时钟2.2单片机的选择嵌入式系统的核心就是各种不同类型的MCU,选择MCU时要考虑的因素有处理性能、功耗、价格、封装形式、软硬件开发工具、设计者的熟悉程度等。对于许多嵌入式系统设计来说,目标不在于挑选速度最快并且功能最强的MCU(这样的MCU往往价格较高),而是选择对于完成功能最合适的MCU。应遵循的原则有:MCU的总I/O口个数应略多于系统功能所需的个数,以备功能扩展和调试时使用;对于使用到的外设功能模块应尽可能集成在MCU的内部,以简化硬件系统,减少系统工作功耗,提高系统的可靠性;尽量选择设计者较为熟悉和开发工具完备的芯片型号,这样可以减少开发周期,提高开发效率。基于上述选型原则,本设计采用了MC68HC908GP32(42引脚)单片机,它稳定性高、开发周期短、成本低、兼容性好;按各种型号带有不同大小的片内闪速(FLASH)存储器,具有非常高的性价比;增加了增强型的串行通讯接口SCI和串行外围接口SPI。2.2.1MC68HC908GP32单片机的特点MC68HC908GP32单片机的主要特点概述如下:1)512B片内RAM;32K片内Flash程序存储器,具有在线编程能力和保密功能。2)时钟发生器模块,具有32KHz晶振PLL电路,可产生各种工作频率;8MHz内部总线频率。3)增强的HC05CPU结构;16种寻址方式(比HC05多8种);16位变址寄存器和堆栈指针;存储器至存储器数据传送;快速8×8乘法指令;快速16/8除法指令;扩展的循环控制功能;BCD功能.4)33根通用I/O脚,包括26根多功能I/O脚和5或7根专用I/O脚;PTA、PTC和PTD的输入口有可选择的上拉电阻;PTC0—PTC4有15mA吸流和放流能力,其他口有10mA吸流和放流能力(总体驱动电流应小于150mA);所有口有最高5mA输入电流保护功能。5)增强型串行通讯口SCI;串行外围接口SPI;两个16位双通道定时器接口模块(TIM1和TIM2),每个通道可选择为输入捕捉、输出比较和PWM,其时钟可分别选为内部时钟的1、2、4、8、6、32和64的分频值;带时钟预分频的定时基模块有8种周期性实时中断(1、4、16、256、512、1024、2048和4096Hz),可在STOP方式时使用外部32KHz晶振周期性唤醒CPU;8位键盘唤醒口。6)系统保护特性:计算机工作正常(COP)复位;低电压检测复位,可选为3V或5V操作;非法指令码检测复位;非法地址检测复位。7)具有PDIP40、SDIP42和QFP44封装形式。8)优化用于控制应用;优化支持C语言。2.2.2MC68HC908GP32内部结构MC68HC908GP32MCU(以下简称GP32MCU)的三种封装形式只有引脚数量和形式有所区别,其他方面是一致的。图4给出了GP32的内部结构框图。图4中I/O接口是按44引脚的GP32给出的,对于42引脚的GP32MCU则没有PTC5、PTC6两个引脚,对于40引脚的GP32MCU则没有PTC5、PTC6及PTD6/T2CH0、PTD7/T2H1四个引脚。从内部结构简图可以看出,GP32内部有以下主要部分:M68HC08CPU、存储器、定时接口模块、定时基模块、看门狗模块、并行I/O接口、串行通信接口SCI、串行外设接口SPI、断点模块、A/D转换模块、键盘中断模块、时钟发生模块及锁相环电路、低电压禁止模块、复位与中断模块、鉴控模块MON、系统设置模块。M68HC08CPUM68HC08CPUCPU寄存器算数逻辑单元64B控制和状态寄存器32KB片内Flash程序寄存器512B片内RAM307B监控ROM36B用户Flash矢量空间时钟发生模块32KHz振荡器锁相环PLL系统集成模块SIM矢量空间外中断模块IRQ8位A/D转换模块电源PORTADDRAPORTCDDRCPORTBDDRBPORTDDDRD监视模式入口模块加密模块PTA7/~KBD7……PTA0/~KBD0定时器模块TBM断点模块BRK低电压禁止模块LVI键盘中断控制模块KBI定时器接口模块TIM1定时器接口模块TIM2内存映像模块串行通信接口模块SCI串行外设接口模块SPI监控模块MON数据总线开关模块系统操作正常监视模块COP配置寄存器模块1配置寄存器模块1上电复位模块PTB7/AD7……PTB0/AD0PTC4……PTC0PTD7/T2CH1PTD6/T2CH0PTD5/T1CH1PTD4/TICH0PTD3/SPSCKPTD2/MISOPTD1/MOSIPTD0/~SSVDDVSSVDDAVSSAVDDAD/VREFHVSSAD/VREFLOSC1OSC2CGMXFC~RST~IRQ图4MC68HC908GP32结构框图2.2.3GP32MCU的引脚功能MC68HC908GP32的引脚图电源类引脚VDD、VSS(20引脚、19引脚):电源供给端。VDDAD/VREFH、VSSAD/VREFL(31引脚、32引脚):内部A/D转换模块的电源供给及参考电压输入端。VDDA、VSSA(1引脚、2引脚):时钟发生器模块(CGM)的电源供给端。控制类引脚(6引脚):外部低有效复位输入或输出引脚,有内部上拉电阻。(14引脚):外部中断输入引脚,有内部上拉电阻。I/O类引脚PTA7/KBD7-PTA0/KBD0(42-35引脚):8位通用双向I/O接口,每个可编程为键盘输入引脚。PTB7/AD7-PTBO/AD0(32-25引脚):8位通用双向I/O接口,也可作为8位A/D转换输入引脚。PTC4-PTC0(11-7引脚):5位通用双向I/O接口。PTD7/T2CH1-PTD0/SS(24-21引脚、18-15引脚):8种特殊功能、双向I/O接口,其中PTD4-PTD7用于定时器模块(TIM1和TIM2)。SPSCK、MOSI、MISO、SS用语串行外围接口(SPI)。PTE1/TxD、PTE0/RxD(12引脚、13引脚):2位双向I/O接口或串行通信。其他CGMXFC(3引脚):CGM的外部滤波电容连接引脚。OSC1、OSC2(5引脚、4引脚):芯片内振荡器引脚。2.3测温系统的原理框图温度传温度传感器电路信号放大电路A/D转换电路单片机系统温度显示系统图1测温系统的原理框图2.3.1温度传感器电路温度传感器采用的是NS公司生产的LM35,它具有很高的工作精度和较宽的线性工作范围,它的输出电压与摄氏温度线性成比例,且无需外部校准或微调,可以提供±1/4℃的常用的室温精度。LM35的输出电压与摄氏温度的线形关系可用下面公式表示,0℃时输出为0V,每升高1℃2.3.2信号放大电路由于温度传感器LM35输出的电压范围为0~0.99V,虽然该电压范围在A/D转换器的输入允许电压范围内,但该电压信号较弱,如果不进行放大直接进行A/D转换则会导致转换成的数字量太小、精度低。系统中选用通用型放大器μA741对LM35输出的电压信号进行幅度放大,还可对其进行阻抗匹配、波形变换、噪声抑制等处理。系统采取同相输入,电压放大倍数为5倍,电路图如图5所示。2.3.3A/D转换模块A/D转换模块(AnalogToDigitalConvertModule),即模数转换,是将电压信号转换为对应的数字信号。进行A/D转换的基本问题:1)采样精度:数字量变化一个最小量时模拟信号的变化量,即采样位数。2)采样速率:完成一次A/D采样所要花费的时间。3)滤波:对采样的数据进行筛选去掉误差较大的毛刺。4)物理量回归:把A/D采样值与实际物理量对应起来。A/D转换数据寄存器ADR:ADR存放A/D转换的8位结果,每次A/D转换结束更新该寄存器。编程从该寄存器读取A/D转换结果。该寄存器地址为:$003D,为只读寄存器,复位时为$00。2.3.4温度显示系统该温度显示系统较为简单,由可编程并行输入输出芯片8255A的A,B,C端口外接3个8段LED显示器来实现。MC908GP32的P2.6为8255提供片选信号,74LS373的Q7,Q6接8255的A1,A0,可得到8255的A,B,C及控制口的地址为BF3FH,BF7FH,BFBFH,BFFFH。MC908GP32处理好的温度数据输出至8255,并由MC908GP32对8255编程控制其A,B,C端口输出高电平或低电平,以便从8段LED显示器显示实际温度。8段LED显示器选用共阳极,8255的A,B,C端口与8段LED显示器之间接限流电阻。第三章软件设计在MCU上的程序包括头文件定义、温度驱动子程序、系统初始化子程序、串口通信子程序等,通过专用编译器和写入工具写到MCU中。系统的软件部分用C语言编程,采用模块化结构,主要由A/D转换模块、单片机内部数据处理模块、温度显示模块等3部分构成,便于修改和维护。系统的所有程序文件,见下表:温度测量系统工程文件文件类型文件名功能简介头文件GP32C.hGP32MCU映像寄存名定义头文件EnDisInt.h开放或禁止MCU各模块中断头文件Type.h类型别名定义头文件Includes.h总头文件AD.h"A/D转换头文件SCI.h串行通信头文件C语言子函数文件Setup.c芯片初始化文件SCI.c串口通信文件AD.cA/D转换文件C语言主函数Main.c主函数文件3.1MCU方程序该模块是系统的核心模块3.1.1Main函数#include"Includes.h"//总头文件//主函数voidmain(void){DisableMCUInt();//禁止总中断MCUInit();//芯片初始化//在此处添加用户程序SCIinit();ADCinit();while(1){SCIsend1(ADCave(0,200));}}3.1.2A/D转换模块的基本编程方法根据测量系统要求不同以及单片机的忙闲程度,通常可采用3种软件编程方式:程序查询方式,延时方式和中断方式。本系统采用延时方式。延时程序实际上是无条件传送I/O方式,当向A/D转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次A/D转换所需要的时间,之后打开A/D转换器的输出缓冲器读数即为转换好的数字量。A/D转换时间为64个时钟周期,因为系统中ADC0809的工作时钟为500kHz,故A/D转换时间为128μs,延时时间可大致选择160μs。程序段如下:1)A/D转换初始化对ADCLK写入控制字节,决定时钟输入源是内部总线还是外部晶振,决定分频系数等。2)启动A/D转换对ADSCR写入控制字节,选取要转换的通道、决定转换结束数据获取的方式、设置是连续转换还是一次转换等。3)获A/D转换结果若是中断方式,在A/D中断程序中取得,若是查询方式,通过ADSCR的第7位(COCO位)取得,当COCO=1时可从ADR中取数。//[ADC.h]A/D转换头文件*#include"GP32C.h"//GP32MCU映像寄存器名定义#include"Type.h"//类型别名定义#defineCOCOBit7voidADCinit(void);//A/D转换初始化INT8UADCvalue(INT8Uchannel);//1路A/D转换函数INT8UADCmid(INT8Uchannel);//1路A/D转换函数(中值滤波)INT8UADCave(INT8Uchannel,INT8Un);//1路A/D转换函数(均值滤波)//[ADC.c]A/D转换*//硬件连接://PTB0/AD0接模拟量输入端//*#include"ADC.h"//ADCinit:A/D转换初始化*//功能:设置A/D转换时钟频率为1MHz//*voidADCinit(void){ADCLK=0b00110000;//||||||||_______不用//||||___________选择内部总线时钟//|||____________分频系数为2}//ADCave:1路A/D转换函数(均值滤波)*//功能:通道channel进行n次中值滤波,求和再作均值,得出均值滤波结果//*INT8UADCave(INT8Uchannel,INT8Un){INT8Ui;INT16Uj;j=0;for(i=0;i<n;i++)j+=ADCmid(channel);j=j/n;return(INT8U)j;}//ADCmid:1路A/D转换函数(中值滤波)*//功能:获取通道channel中值滤波后的A/D转换结果//*INT8UADCmid(INT8Uchannel){INT8Ui,j,k,tmp;//1.取三次A/D转换结果i=ADCvalue(channel);j=ADCvalue(channel);k=ADCvalue(channel);if(i>j){tmp=i;i=j;j=tmp;}if(k>i){if(k>j){tmp=j;}else{tmp=k;}}else{tmp=i;}returntmp;}//ADCvalue:1路A/D转换函数*//功能:获取通道channel的A/D转换结果//*INT8UADCvalue(INT8Uchannel){INT8Utmp;//1.选取通道号ADch4-ADch0=00000-00111:AD0引脚~AD7引脚channel&=0b00011111;//取通道号变量的低五位(实际通道号)tmp=ADSCR&0b11100000;//取ADSCR的高三位(取上电复位默认值000)ADSCR=tmp|channel;//合并上述8位//2.取A/D转换结果while((ADSCR&(1<<COCOBit))==0);returnADR;}//总头文件#include"Includes.h"//主程序voidmain(void){DisableMCUint();//禁止总中断//1.芯片初始化MCUinit();//2.模块初始化SCIinit();//(1)串行口初始化ADCinit();//(2)A/D转换初始化while(1){//在通道0做A/D转换,200次中值滤波,串口发送均值滤波结果SCIsend1(ADCave(0,200));}}3.1.3串行口初始化子程序该模块是对串行通信接口(SerialCommunicationInterface,SCI)的比特率寄存器(SCBR)、控制寄存器1(SCC1)、控制寄存器2(SCC2)进行设置。//[SCI.h]串行通信头文件//头文件#include"GP32C.h"//GP32MCU映像寄存器名定义#include"Type.h"//类型别名定义//与SCI模块相关的MCU寄存器及有关标志位的宏定义#defineReSendStatusRSCS1//SCI状态寄存器#defineReTestBit5//接收缓冲区满标志位#defineSendTestBit7//发送缓冲区空标志位#defineReSendDataRSCDR//数据寄存器//串行通信函数声明voidSCIInit(void);//串行口初始化voidSCISend1(INT8Uo);//发送1字节voidSCISendN(INT8Un,INT8Uch[]);//发送n字节INT8USCIRe1(INT8U*p);//接收1字节INT8USCIReN(INT8Un,INT8Uch[]);//接收n字节//SCIInit:串行口初始化*//功能:对串行口进行初始化,默认为允许SCI,正常码输出,8位数据,无校验,允许发送器,允许接收器.查询方式收发,波特率为9600(设fBUS=2.4576MHz)//参数:无//返回:无//*voidSCIInit(void){//1.总线频率fBUS=2.4576MHz,定义波特率Bt=9600SCBR=0b00000010;//2.设置允许SCI,正常码输出、8位数据、无校验SCC1=0b01000000;//3.设置允许发送、允许接收,查询方式收发SCC2=0b00001100;}3.1.4串口通行模块串口通信的主要功能是:接收时,把外部单线输入的数据变成一个字节的并行数据送入MCU内部;发送时,把需要发送的一个字节的并行数据转为单线输出。图20给出了普遍意义上的SCI的编程模型。在比特寄存器中可设置比特率,在控制寄存器中设置通信格式、是否效验、是否中断等。SCI数据寄存器既做接收数据寄存器,也可做发送数据寄存器,这并不冲突,因为发送与接收的实际工作是通过“发送移位寄存器”和“接收移位寄存器”完成。接收移位寄存器SCI数据寄存器SCI比特率寄存器SCI状态寄存器SCI控制寄存器MCU内部总线(InternalBus)发送移位寄存器接收移位寄存器SCI数据寄存器SCI比特率寄存器SCI状态寄存器SCI控制寄存器MCU内部总线(InternalBus)发送移位寄存器图20SCI编程模型该模块包括:单字节接收、多字节接收、单字节发送、多字节发送等子程序,结构图如图21。串口通信模块单字节发送多字节发送多字节接收单字节接收串口通信模块单字节发送多字节发送多字节接收单字节接收图21串口通信/***文件描述:本文件包含了串行通信的4子程序,分别为:**(1)SCISend1:串行发送1字节**(2)SCISendN:串行发送n字节**(3)SCIRe1:串行接收1字节**(4)SCIReN:串行接收n字节***///[以下为子程序源代码]//[包含头文件]#include"SCI.h"/*SCISend1:串行发送1个字节**功能:串行发送1个字节**参数:要发送的数据**返回:无***/voidSCISend1(unsignedcharo){//判断ReStatusR的第SendTestBit位是否为1,是1可以发送while(1)if((ReSendStatusR&(1<<SendTestBit))!=0){ReSendDataR=o;break;}}/*SCISendN:串行发送N个字节**功能:发送数组中的N个字节数据**参数:待发送的数据字节数及其要存放的数组首地址**返回:无***/voidSCISendN(unsignedcharn,unsignedcharch[]){inti;for(i=0;i<n;i++) SCISend1(ch[i]);}/*SCIRe1:串行收一个字节数据**功能:从串行口接收1个字节的数据**参数:标志指针p**返回:接收到的数据(若接收失败,返回0xff)**说明:参数*p带回接收标志=0收到数据,=1未收到数据***/unsignedcharSCIRe1(unsignedchar*p){unsignedintk;unsignedchari;//ReStatusR第ReTestBit位为1表示可接收数据 for(k=0;k<0xfbbb;k++) if((ReSendStatusR&(1<<ReTestBit))!=0) {i=ReSendDataR; *p=0x00; break;} if(k>=0xfbbb) {i=0xff; *p=0x01;}returni;//返回接收到的数据}/*SCIReN:HC08串行接收N个字节**功能:接收N个字节数据,并存放在ch数组中**参数:待接收的数据字节数及其存放的数组首地址**返回:接收标志=0收到数据,=1未收到数据***/unsignedcharSCIReN(unsignedcharn,unsignedcharch[]){intm;unsignedcharfp;m=0;while(m<n) { ch[m]=SCIRe1(&fp); if(fp==1)return1; m++; }return0; }3.1.5WllDef.c程序#include"wllDef.h"constINT8Uhg[]={0x79,30,0x4f,29,0x4e,28,0x4d,27,0x4c,26,0x4b,25,0x4a,24,0x49,23,0x48,22,0x47,21,0x46,20,0x45,19,0x15,18,0x00};INT8UwllDef(INT8Uvalve){INT8Uwll;INT8Ui;i=0;wll=0xff;while(hg[i]!=0x00){if(hg[i]==valve){wll=hg[i+1];break;}i+=2;}returnwll;}建立此程序用于查找经A/D转换后所得到的数值与之对应的实际的温度值,进而通过串口输出到显示界面。3.2PC机方(VB编程)程序描述:1)把发送窗口中的数据从COM1发送出去2)把接收到的数据显示在接收窗口中//*OptionExplicit//检查未经声明的变量DimSendData()AsByte//发送数据数组DimRecvData()AsByte//接收数据数组PrivateSubCmd_stop_Click()IfCmd_stop.Caption="停止"//停止发送Cmd_stop.Caption="继续"MSComm1.PortOpen=False//关闭串口ElseCmd_stop.Caption="停止"//继续发送MSComm1.PortOpen=True//打开串口EndIfEndSubPrivateSubCombo_bps_Click()//改变发送数据格式MSComm1.Settings=Str(Combo_bps.List(Combo_bps.ListIndex))&","&"N"&","_&"8"&","&"1"EndSubPrivateSubForm_Load()//串行口初始化默认串口1,波特率9600CallSCIinit(MSComm1,1,"9600,N,8,1")//清空有关文本框TxtSEND.Text=""TxtRECV.Text="":TxtRecvHex.Text="":TxtRecvOct.Text=""//开放串行中断MSComm1.RThreshold=1EndSubPrivateSubCmdSEND_Click()//单击"发送"按钮DimiAsIntegerIfTxtSEND.Text=""ThenTxtRECV.Text="":TxtRecvHex.Text="":TxtRecvOct.Text=""GoToCmdSEND_Click_ExitEndIfReDimSendData(Len(TxtSEND.Text)-1)Fori=0ToLen(TxtSEND.Text)-1SendData(i)=Asc(Mid$(TxtSEND.Text,i+1,1))NextiMSComm1.Output=SendDataCmdSEND_Click_Exit:EndSubPublicSubMSComm1_OnComm()//串行接收中断DimiAsIntegerDimStempAsStringStaticS1AsStringStaticS2AsStringStaticS3AsStringIfLen(Trim(TxtRECV.Text))=0ThenS1="":S2="":S3=""MSComm1.RThreshold=0//关闭串行中断RecvData=MSComm1.InputFori=LBound(RecvData)ToUBound(RecvData)If(RecvData(i)>=127OrRecvData(i)=0)ThenStemp=Chr$(1)ElseStemp=Trim(Chr$(RecvData(i)))EndIfS1=S1&Stemp&""S2=S2&Hex$(RecvData(i))&""S3=S3&RecvData(i)&""NextiTxtRECV.Text=S1:TxtRecvHex.Text=S2:TxtRecvOct.Text=S3IfLen(S1)>=160ThenS1="":S2="":S3=""//让文本框光标紧跟最后TxtRECV.SelStart=Len(TxtRECV.Text)TxtRecvHex.SelStart=Len(TxtRecvHex.Text)TxtRecvOct.SelStart=Len(TxtRecvOct.Text)MSComm1.RThreshold=1//开放串行中断EndSubPrivateSubCmdCLR_Click()//单击"清空"按钮TxtSEND.Text=""TxtRECV.Text="":TxtRecvHex.Text="":TxtRecvOct.Text=""EndSubPrivateSubCmdEXIT_Click()//单击"退出"按钮IfMSComm1.PortOpen=TrueThenMSComm1.PortOpen=FalseEndEndSubPrivateSubMSOption1_Click()//改变串口号为1MSComm1.PortOpen=FalseMSComm1.CommPort=1MSComm1.PortOpen=True//打开串行口1OnErrorGoToMSOption1_Click_ErrorGoToMSOption1_Click_ExitMSOption1_Click_Error:MsgBox("这台机器没有COM1,请选择COM2!")EndMSOption1_Click_Exit:EndSubPrivateSubMSOption2_Click()//改变串口号为2MSComm1.PortOpen=FalseMSComm1.CommPort=2OnErrorGoToMSOption2_Click_ErrorMSComm1.PortOpen=True//打开串行口2GoToMSOption2_Click_ExitMSOption2_Click_Error:MsgBox("这台机器没有COM2,请选择COM1!")EndMSOption2_Click_Exit:EndSub第四章测试与总结4.1测试4.1.1连接硬件电路将热敏电阻的‘—’端到MCU的GND引脚上,将‘+’端接到MCU的VCC引脚上,将‘S’端接到MCU的PB0引脚上。将写入器的一端接MCU的目标板,一端接PC机,将PC机的通信线与MCU相连,然后打开电源,将目标板上的按钮打到“写入器”一端。4.1.208C语言程序调试打开MT-IDE集成开发环境,加载工程THIRD.pjt,,编译源程序,屏幕上显示:点击“Flash操作”,选择“写入”,弹出一个对话框如下:点击“擦除及写入”,提示“写入完毕”,表示写入代码成功:将目标板上的按钮打到“扩展板一端”,然后启动VB,打开显示程序“工程2”,运行程序,结果如下:当温度改变时,窗口中显示改变之后的温度为:4.2总结单片机课程设计,是对单片机知识的验证,可以帮助我们理解巩固所学知识,激发我们对单片机课程的兴趣,更锻炼了我们独立思考、开拓创新的能力。课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。因此,作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。要做好一个课程设计,就必须做到在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。本系统是以单片机GP32芯片为核心部件,实现了能通过GP32芯片来测量温度的功能的一个系统。此次在软件上是花费时间最多的,我们上网找资料,上图书馆,尽可能的了解有关于温度测量系统这方面的知识。通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是08C语言)的掌握方面都能向前迈了一大步。回顾起此次单片机课程设计,我仍感慨颇多。的确,从选题到定稿,从理论到实践,在接近一个多星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机08C语言掌握得不好,对于VB的控件方面的知识等等。通过这次课程设计之后,把以前所学过的知识重新温故,还有一些没学过的知道也有了一定的了解。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师的辛勤指导下,还有同学的帮助下,终于游逆而解。同时,在老师和同学那里我学得到很多实用的知识,在次我表示感谢!4.3参考文献[1]王宜怀,刘晓升.嵌入式技术基础与实践.北京:清华大学出版社,2007.11。[2]王宜怀,曹金华,沈安东,刘晓升.嵌入式技术基础与实践实验指导.北京:清华大学出版社,2008.2。[3]龙威林,杨冠声,胡山.单片机应用入门—AT89S51和AVR.北京:化学工业出版社,2008.6。[4]赵晶.Protel99高级应用.北京:人民邮电出版社,2000。[5]林伸茂.8051单片机彻底研究基础篇.北京:人民邮电出版社,2004。[6]范风强等.单片机语言C51应用实战集锦.北京:电子工业出版社,2005。[7]万光毅,严义,邢春香.单片机实验与实践教程[M].北京:北京航空航天大学出版社,2006.4。ganemploymenttribunalclaiEmploymenttribunalssortoutdisagreementsbetweenemployersandemployees.Youmayneedtomakeaclaimtoanemploymenttribunalif:youdon'tagreewiththedisciplinaryactionyouremployerhastakenagainstyouyouremployerdismissesyouandyouthinkthatyouhavebeendismissedunfairly.Formoreinformationaboutdismissalandunfairdismissal,see
Dismissal.Youcanmakeaclaimtoanemploymenttribunal,evenifyouhaven't
appealed
againstthedisciplinaryactionyouremployerhastakenagainstyou.However,ifyouwinyourcase,thetribunalmayreduceanycompensationawardedtoyouasaresultofyourfailuretoappeal.Rememberthatinmostcasesyoumustmakeanapplicationtoanemploymenttribunalwithinthreemonthsofthedatewhentheeventyouarecomplainingabouthappened.Ifyourapplicationisreceivedafterthistimelimit,thetribunalwillnotusuallyaccepti.Ifyouareworriedabouthowthetimelimitsapplytoyou,takeadvicefromoneoftheorganisationslistedunder
Furtherhelp.Employmenttribunalsarelessformalthansomeothercourts,butitisstillalegalprocessandyouwillneedtogiveevidenceunderanoathoraffirmation.Mostpeoplefindmakingaclaimtoanemploymenttribunalchallenging.Ifyouarethinkingaboutmakingaclaimtoanemploymenttribunal,youshouldgethelpstraightawayfromoneoftheorganisationslistedunder
Furtherhelp.Ifyouarebeingrepresentedbyasolicitoratthetribunal,theymayaskyoutosignanagreementwhereyoupaytheirfeeoutofyourcompensationifyouwinthecase.Thisisknownasa
damages-basedagreement.InEnglandandWales,yoursolicitorcan'tchargeyoumorethan35%ofyourcompensation
ifyouwinthecase.Ify目录内容摘要 Ⅰ关键词 ⅠAbstract ⅠKeywords Ⅰ1.系统分析与设计 11.1需求分析 11.2三层构架 21.3开发模式 22.模块设计 42.1整体模块设计 42.2数据库结构设计 53.系统详细设计 83.1创建与连接数据库 83.2留言信息页面的设计 113.3留言管理页面设计 154.结束语 17参考文献 18基于JAVA的留言板的设计与实现内容摘要:随着现代化技术的不断进步,人们发现交流的范围还是很小,不能满足更大范围人的需要,这样就出现了利用因特网在全球发布信息的留言——BBS。本文概述了用JDK、Access数据库和tomcat软件构建一个简单的个人留言板,该留言板能很方便的和同学沟通和交流。留言板具有功能强大,使用方便的特点。用户以个人的身份进入,查看留言,以及在留言板中写下自己要留言的内容,以及自己的相关信息。管理员可以根据管理员用户名和密码进入,进行删除,回复和修改。关键词:个人留言板,留言板系统,Access数据库1.系统分析与设计1.1需求分析注册登录开发一个留言系统,首先需要确定留言的功能是什么,也就是用户想要的留言所能做的工作。用户使用留言是按照一定的流程来进行的:用户注册登录进入留言,可以就某个话题展开讨论,通过留言功能发布新的话题,通过回帖的功能回复已有的话题;管理员要管理留言,系统需要具有的功能有创建、删除留言的版块,管理注册的用户,管理留言,设置留言基本参数。这样的流程就决定了留言所应具有的功能,留言功能流程如图1.1所示。注册登录图1.1留言功能流程图通过上面的分析,总结留言的功能有以下几项:留言版块列表;浏览留言;回复;编辑留言;删除留言;管理版块;管理用户管理留言。浏览板块:用户(浏览者)和管理员都可以看到的界面。注册登录:用户(浏览者)要注册登录才能进行留言。浏览留言:用户(浏览者)和管理员都有权限。回复留言:由于是个人留言板,只有管理员才有权限回复。用户(浏览者):有浏览板块、浏览留言、发表留言的权限。可以根据发言者留下的邮箱地址发邮件。发表留言:用户(浏览者)和管理员都有权限。管理留言:管理者有权限,主要是对于留言的回复,修改以及删除。1管理员所做的管理:(1)查看留言:可以查看所有用户的留言,并查看留言者填写的个人信息(2)回复留言:可以回复用户的留言,如有写错,可进行修改(3)删除留言:如果用户发表了不符合留言规则的留言,则需要管理员删除这些留言。1.2三层构架“Model”代表的是应用的业务逻辑,“View”是应用的表示面,“Controller”是提供应用的处理过程控制,通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。1.3开发模式网站建设目前主要有两种基本的开发模型:两层模型、三层模型。B/S结构是真正的三层结构,它以访问WEB数据库为中心,HTTP为传输协议,客户端通过浏览器(Browser)访问WEB服务器和与其相连的后台数据库,我们称之为B/S(Browser/Server)模式。其三级结构组成如下图所示:客户端客户端WEB服务器客户端客户端WEB服务器后台数据库后台数据库图1.2开发模式图图中从左到右,分为三个层次:第一层是客户端即浏览器,主要完成客户和后台的交互及最终查询结果的输出功能。在客户端向指定的Web服务器提出服务器请求,Web服务器用HTTP协议把所需文件资料传给用户,客户端接受并显示在WWW浏览器上;第二层Web服务器是功能层,完成客户的应用功能,即Web服务器接受客户请求,并与后台数据库连接,进行申请处理,然后将处理2结果返回Web服务器,再传至客户端;第三层数据库服务器是数据层。数据库服务器应客户请求独立地进行各种处理。与传统的C/S模式相比,B/S结构把处理功能全部移植到了服务器端,用户的请求通过浏览器发出,无论是使用和数据库维护上都比传统模式更加经济方便。而且使维护任务层次化:管理员负责服务器硬件日常管理和维护,系统维护人员负责后台数据库数据更新维护。32.模块设计2.1整体模块设计从上一节需求分析可以知道,留言功能分为用户使用的基本功能和管理员管理系统的功能两类,因此模块设计也分为两大类。留言的模块体系图如图2.1所示。留言系统管理模块页面模块浏览模块查看留言签写留言留言回复留言编辑留言系统管理模块页面模块浏览模块查看留言签写留言留言回复留言编辑留言删除注册登录 图2.1留言板的的功能模块图本留言系统主要包括页面模块和管理模块,其主要功能模块如下:1.页面模块:(1)浏览模块功能:浏览主题帖列表、查看留言;(2)查看留言功能模块:查看留言及管理员回复;(3)签写留言功能模块:用户发帖;2.管理模块:⑴留言编辑模块:对用户留言进行编辑;⑵留言回复模块:对用户留言进行回复,并允许编辑回复;⑶留言删除模块:对用户留言进行删除从以上分析,可以得到留言的功能框架,即系统的各个部分已经确定,对于留言系统来说,各个模块之间用一条主线串联起来,才能构建完整的系统。联系各个模块的主线是使用者的权限,用户能使用4留言的哪些功能是由用户的权限决定的。留言的每个功能都与相应的权限相对应。同一类用户使用的功能模块,是以使用者为中心连接起来的。另外,操作同一类事物的功能模块,也是有相互关系的。因此,浏览模块与发帖回帖模块、管理留言模块关联,是由留言的系统流程决定的。而管理版块模块与浏览模块关联,是由留言与版块的父子关系决定的,留言附于版块,先有版块,后有留言,留言必须发表在某个版块中。还有管理用户模块与注册登录模块关联,是由同一类对象(用户)决定的。所有的用户需要接受管理员的管理,用户填写自己的个人信息然后发表自己的留言。由此,设计出留言系统的整体框架。2.2数据库结构设计该系统的实体有:管理员信息实体、用户信息实体、留言实体。实体之间的E-R图如图2.2所示。图2.2实体间的关系E-R图5管理员管理员ID账号密码图2.3管理员及其属性
如2.3图所示很明确的说明了管理员的属性,包括ID,账号和密码,管理员通过账号和密码登录后可以进行留言的管理用户用户ID用户昵称用户邮箱留言主题留言内容用户主页QQ号码留言时间是否回复图2.4用户信息考虑到功能上的完整性,如图2.4所示,设计如下面所示的数据项和数据结构:用户信息:包括数据项有昵称、信箱、主页、QQ。留言信息:包括数据项有留言的编号用户、主题、内容、发表时间等。6留言板留言板ID 名字主页网站主页显示记录屏蔽昵称屏蔽字符图2.5留言板信息如图2.5所示,留言板的信息主要有ID,名字,主页,网站主页,显示记录,屏蔽昵称,屏蔽字符。通过对留言板信息的控制,达到控制全局的目的。用户注册昵称信箱密码图2.6用户注册如图2.6所示,用户注册功能需要填写昵称,密码和信箱,填写之后完成注册。用户登录昵称密码验证码图2.7用户登录如图2.7所示,用户登录需要填写昵称,密码和验证码,填写正确之后登录,然后进行留言板的浏览及留言。73.系统详细设计留言拥有大量的数据,这就需要对这些数据进行存储和管理建立数据库。因为当留言的在线用户很多时,就会出现“瓶颈”现象,造成阻塞,这里应该创建连接池来提高利用率。数据库建立成功后就应该进行具体的系统设计。然后,将进行留言信息页面的设计,包括主页面、发布留言相关页面等,是显示在留言页面,可以由用户(包括用户)以上级别的浏览者看到;最后,进行留言管理页面的设计,这是只能由管理员进行操作的页面,管理员会对留言进行安全、有条理的管理。3.1创建与连接数据库3.1.1数据库表的设计留言版面表note_information:记录所有的留言版面的信息。用户表not_guest:记录了用户的基本且必要的信息。管理员表note_admin:记录了管理员账号、密码。用户信息表note_user:记录了用户的注册信息。设计数据表间的关系为双层对应,就是简单的针对某一留言管理员进行回复。至此,留言系统的架构部分设计完成了,有了具体的数据库结构设计和系统功能设计,就确定了系统的数据基础和功能架。设计数据库表的字段时,需要充分考虑到留言的应用特点。数据库表的设计要求简单易于理解,扩展性好。基于上面的内容,设计了下列表,这些表之间相互关联,共同存储着系统所需要的数据。在设计数据库表的过程中,要遵循几条原则:数据库设计一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体还可以再划分,原则是最好能够比当前系统要开发的实体的复杂度小;数据表的信息结构一定要合适,表的字段的数量一般不要过多;扩展信息和动态变化的信息一定要分开在不同的表里;多对多这样的表关系尽量不出现等。表3.1各数据表的说明数据库表名说明表的作用Admin用来存放管理员的名字和密码管理登录Guest用来存放用户的信息和留言管理用户信息Information用来表明该留言板的相关信息留言板的相关信息User用来存放用户的注册信息用户的注册信息8Admin表:用来存放管理员的名字和密码,主要是管理登录Guest表:用来存放用户的信息和留言,主要是管理用户信息Information表:用来表明该留言板的相关信息,主要是留言板的相关信息。表3.2表admin字段名称类型字段长度描述说明id自动编号10NotNull编号AdminnamevarChar10NotNull管理员名字adminpassvarChar10NotNull管理员密码如表3.2所示,admin表是用来存放管理员的名字和密码,主要是管理登录的,其主要包括ID,Adminname,adminpass;adminname指的是管理员的名字,adminpass指的是管理员的密码,通过管理员的登录,可以对留言板进行管理,包括编辑,回复和删除。表3.3表guest字段名称类型字段长度描述说明id自动编号100主键访客留言编号NamevarChar10NotNull访客昵称TitlevarChar150NotNull访客留言主题Oicq数字20访客的QQ号contentvarChar300NotNull访客留言内容Reply数字2默认为1/0版主是否给予回复Dateandtime日期\时间10NotNull留言时间HomepagevarChar50访客的主页EmailvarChar50NotNull访客的邮箱如表3.3所示,Guest表是用来存放用户的信息和留言,主要是管理用户信息,其用户信息包括:id访客留言编号、Name访客昵称、Title访客留言主题、Oicq访客的QQ号、content访客留言内容、Reply版主是否给予回复、Dateandtime留言时间、Homepage访客的主页、Email访客的邮箱;其中昵称、邮箱、主题和内容是不能为空的,也就是必填项,这样可以帮助留言板的管理员识别留言者,并且同一个昵称只对应相应的邮箱,当其中必填项没有填好的时候,系统会给予提示,帮助用户完善用户信息的填写9表3.4表information字段名称类型字段长度描述说明Id自动编号100NotNull编号NamevarChar20NotNull留言板名字urlvarChar50NotNull留言板主页HomevarChar50NotNull留言板所在网站主页NumvarChar10NotNull留言每页显示记录数BadidvarChar10NotNull屏蔽使用的昵称badwordvarChar50NotNull屏蔽使用的字符如表3.4所示,Information表是用来表明该留言板的相关信息,主要是留言板的相关信息,包括Id编号、Name留言板名字、url留言板主页、Home留言板所在网站主页、Num留言每页显示记录数、Badid屏蔽使用的昵称、badword屏蔽使用的字符;通过对相关信息的控制,可以屏蔽用户的部分输入字,可以使留言板变得文明。表3.5表user字段名称类型字段长度描述说明Id自动编号100NotNull编号Name字符20NotNull用户名字Pass字符20NotNull用户密码EmailvarChar50NotNull用户的邮箱如表3.5所示,user表是用来存放用户注册信息的,包括Id编号、Name用户名字、Pass用户密码、Email用户的邮箱,用户通过注册然后登录,再进行留言。3.1.2数据库的连接Access是文件型数据库,一个文件就是一个数据库,可以利用JAVA中的语法直接连接。在连接数据库之前,必须先声明一个对象来当作数据库与JAVA程序之间的媒介。在建立表之后,完成代码的编辑,然后进行数据库的连接。3.1.3数据添加根据需要添加数据,然后再在对应表中添加对应项目,编辑好代码,在进行连接。3.1.4数据删除根据需要删除数据,然后再在对应表中删除对应项目,编辑好代码,在进行连接。103.2留言信息页面的设计3.2.1建立查看留言相关页面图3.1浏览留言页面图留言是留言的主要交流内容,是用户-网页-用户之间交流的必要手段,在留言的列表中,第一列“状态”,主要是根据图标来显示留言所处的状态,这些状态在页面最底部有图例表示,接下来一列是留言的主题,留言的主题前面有加号图标的可以展开,点击留言主题可以预览留言的内容。之后是留言的作者,即发帖人。回复和人气分别记载了回复的留言的数量和浏览过的人数。最后更新和回复人指的是最后一个回复留言的时间和用户。进入留言首先看到的就是这个留言列表页,通过这一页用户可以进入浏览留言或发表回复留言的界面进行各种操作。这部分数据来源主要是留言表、用户表,其中界面的颜色设置取自管理员对界面颜色配置的变量值。本页面为首页,也为留言界面,包括了两大模块:留言操作和其他操作,留言操作包括查看留言、签写留言、管理留言三个功能模块,其他操作则只有退出管理,而退出管理之后,则返回当前页面,就没有权限进行修改、回复和删除。113.2.2注册登录相关页面图3.2用户注册如图3.2所示,用户注册包括昵称,密码和信箱,正确填写后,提交注册,就可以用自己注册的昵称和密码登录浏览界面了。图3.3用户登录如图3.3所示,用户登录包括昵称,密码和验证码,正确输入后,登陆,就可以浏览界面并进行留言了。3.2.3建立发布留言相关页面进入发表新帖的界面。这里允许发表新留言,需要用户填写的新留言的信息包括:昵称、邮箱、个人主页、QQ、主题、具体内容等,这也是留言表里的最基本信息。其中标题不能超过50个汉字,要进行校验。其次该留言提供了一些头像的图片,用户只需选择一种即可。内容说明是指书写留言内容时输入框支持输入什么。具体内容输入框上的按钮可以对输入的内容进行字体方面的设置,界面比较友好,让用过Word的人很容易掌握这些小按钮的用法,其中有加粗、斜线等。输入框下方还提供一些小图片,用户可以点击表情图标就可在留言中加入相应的表情。所有内容都填写完毕后,点击“写好了”按钮则数据库中相应的留言表增加一条记录,用户留言发表成功。12图3.4发布留言页面图之个人信息如图3.4所示点击签写留言,则跳入发布留言界面,然后开始填写个人信息,个人信息包括昵称,信箱,主页,QQ和主题,其中昵称、信箱和主题是必须填写的,如果没有填
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Msoffice成绩合格的试题与答案集
- 计算机二级Msoffice课程脉络探索试题及答案
- 计算机二级Python考试常见错误及试题及答案
- 财务管理中的逻辑评估方法试题及答案
- 二级Msoffice成就梦想的试题与答案优化
- 财务成本管理关注主题试题及答案
- 评估财务成本管理影响因素的试题及答案
- 2025年经济法实务研究指南试题及答案
- 软件工程关键概念考核试题及答案
- 值得掌握的计算机二级Python考试试题及答案
- 贵阳市普通住宅小区物业管理服务收费参考标准
- MOOC 地学景观探秘·审美·文化-重庆大学 中国大学慕课答案
- 安全生产事故报告处理制度范本
- (高清版)WST 311-2023 医院隔离技术标准
- 2024年电梯安装与维修工理论考试题库及答案(通用版)
- 天耀中华合唱简谱大剧院版
- 【《我国互联网企业价值评估现状与问题探析11000字》(论文)】
- 智慧农业的无人机技术应用
- 建筑装饰装修工程消耗量定额
- 北京市2023年中考备考语文专题复习 名著阅读题(解析)
- 招聘需求分析报告
评论
0/150
提交评论