I2C 24CXX驱动程序(真正实用 全)

I2C 24CXX驱动程序(真正实用 全)
I2C 24CXX驱动程序(真正实用 全)

#define _24cXX_H

/* Includes ----------------------------------------------------------------*/

#include "stm32f10x.h"

#include "value.h"

//#include "stdbool.h"

/* Define ------------------------------------------------------------------*/

/* EEPROM Addresses defines */

//注:32 64 的字地址是16位2个字节如果使用32或64请简单修改驱动即可

#define WC24cXX 0x00 // 器件地址写#define RC24cXX 0x01 // 器件地址读

#define USE_24C08 //使用24C08

#ifdef USE_24C02

#define MAXSIZE24cXX 256 // 总容量Bytes //级联时请修改本参数和硬件驱动

#define BLOCK_SIZE 256 // 块容量Bytes

#define I2C_PAGESIZE 8 // 8个字节每页

#endif

#ifdef USE_24C04

#define MAXSIZE24cXX 512 // 总容量Bytes //级联时请修改本参数和硬件驱动

#define BLOCK_SIZE 256 // 块容量Bytes

#define I2C_PAGESIZE 16 // 16个字节每页

#endif

#ifdef USE_24C08

#define MAXSIZE24cXX 1024 // 总容量Bytes //级联时请修改本参数和硬件驱动

#define BLOCK_SIZE 256 // 块容量Bytes

#define I2C_PAGESIZE 16 // 16个字节每页

/* user define */

#define YBCV_ADDR_0 0x0000 //定义仪表控制数据结构体的EEPROM存储地址0

#define YBCV_ADDR_1 0x0200 //定义仪表控制数据结构体的EEPROM存储地址1

#define EEPROM_VERIFY YB_CTRL_V ALE_SIZE //EEPROM仪表通道修正参数存储地址

#endif

#ifdef USE_24C16

#define MAXSIZE24cXX 2048 // 总容量Bytes

#define I2C_PAGESIZE 16 // 16个字节每页

#endif

#define MAXSIZE24cXX 4096 // 总容量Bytes //级联时请修改本参数和硬件驱动

#define BLOCK_SIZE 4096 // 块容量Bytes

#define I2C_PAGESIZE 32 // 16个字节每页

#endif

#ifdef USE_24C64

#define MAXSIZE24cXX 8192 // 总容量Bytes //级联时请修改本参数和硬件驱动

#define BLOCK_SIZE 8192 // 块容量Bytes

#define I2C_PAGESIZE 32 // 16个字节每页

#endif

#define I2CInit I2C_GPIO_Config

#define SCL(a) if (a) \

GPIO_SetBits(GPIOB, GPIO_Pin_10);\

else \

GPIO_ResetBits(GPIOB,GPIO_Pin_10)

#define SDA(a) if (a) \

GPIO_SetBits(GPIOB, GPIO_Pin_11);\

else \

GPIO_ResetBits(GPIOB,GPIO_Pin_11)

#define SCLO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_10)

#define SDAO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11)

/* Private ------------------------------------------------------------------*/

/* Public -------------------------------------------------------------------*/

/*uint idata ucSendBuffer[8]={0x01,0x02,0x04,0x08,

0x10,0x20,0x40,0x80};

uint idata ucReceData;

uint idata ucReceiveBuffer[8];

//从器件中读出的多字节数据暂存区*/

/* Function Declaration -----------------------------------------------------*/

extern bool I2C2_Init(void);

//I2C初始化

//extern bool I2C_ByteWrite(u8* pBuffer, u8 WriteAddr); //向24cXX中写入1个字节

extern bool I2C_PageWrite(u8* pBuffer, u8 BlockCode, u16 WriteAddr, u8 n); //24cXX 页写(不超过一页)

extern bool I2C_BlockWrite(u8* pBlock, u8 BlockCode, u16 WriteAddr, u16 n);

//24cXX数据块写(不超过BLOCK_SIZE个字节)

extern bool I2C_BufferWrite(u8* pBuffer, u16 WriteAddr, u16 n); //24cXX数据写(不超过MAXSIZE24cXX个字节)

extern bool I2C_BufferRead(u8* pBuffer, u16 ReadAddr, u16 n); //从24cXX中读出N 字节数据(不超过MAXSIZE24cXX个字节)

//extern void I2C_EE_WaitEepromStandbyState(void); //

等待24CXX内部写周期结束

#endif /*_24cXX_H*/

/******************** (C) COPYRIGHT 2015 XXXXX **********************************

* 文件名:24cXX.c

* 描述:本函数是xx项目的24cXX的读写函数

* 平台:Keil 4 MDK \ stm32 3.5.0库

* 库版本:基于野火相关资料及程序上优化修改

* 作者:天涯月下红颜醉

* 时间:2015.4.19

******************************************************************************* ***/

/* Includes ------------------------------------------------------------------*/

#include "24cXX.h"

#include "value.h"

#include "systick.h"

#include

/*

* 函数名:I2C2_Init

* 描述:I2C2初始化

* 输入:无

* 输出:无

* 调用:内部调用

*/

bool I2C2_Init(void)

{

bool s = true;

GPIO_InitTypeDef GPIO_InitStructure;

/* 使能与I2CGPIO 有关的时钟*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

/* PB10-I2C2_SCL、PB11-I2C2_SDA*/

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; // 普通开漏输出

GPIO_Init(GPIOB, &GPIO_InitStructure);

SDA(1);

SCL(1);

Delay_nop();

Delay_nop();

if(!SDAO) s = false;

if(!SCLO) s = false;

SDA(0);

Delay_nop();

Delay_nop();

if(SDAO) s = false;

SCL(0);

Delay_nop();

SDA(0);

SCL(0);

Delay_nop();

Delay_nop();

if(SDAO) s = false;

if(SCLO) s = false;

SCL(1);

Delay_nop();

Delay_nop();

SDA(1);

return s;

}

/********开启24cXX的I2C总线********/

static bool I2CStart(void)

{

SDA(1);

SCL(1);

Delay_nop();

Delay_nop();

if(!SDAO)return false; //SDA线为低电平则总线忙,退出

SDA(0);

Delay_nop();

Delay_nop();

if(SDAO)return false; //SDA线为高电平则总线出错,退出SCL(0);

Delay_nop();

return true;

}

/********关闭24cXX的I2C总线*******/

static void I2CStop(void)

{

SDA(0);

SCL(0);

Delay_nop();

Delay_nop();

SCL(1);

Delay_nop();

Delay_nop();

SDA(1);

}

/*********发送ACK*********/

static void I2CAck(void)

{

SDA(0);

SCL(0);

Delay_nop();

// Delay_nop();

SCL(1);

Delay_nop();

// Delay_nop();

SCL(0);

}

/*********发送NO ACK*********/

static void I2CNoAck(void)

{

SDA(1);

SCL(0);

Delay_nop();

// Delay_nop();

SCL(1);

Delay_nop();

// Delay_nop();

SCL(0);

}

/*********读取ACK信号*********/

static bool I2CWaitAck(void) //返回为:1=有ACK,0=无ACK

{

SCL(0);

SDA(1); //设置SDA为输入

Delay_nop();

// Delay_nop();

SCL(1);

Delay_nop();

// Delay_nop();

if(SDAO)

{

SCL(0);

return false;

}

SCL(0);

return true;

}

/************MCU向24cXX发送一个字节数据*************/ static void I2CSendByte(u8 demand) //数据从高位到低位//

{

u8 i=8;

while(i--)

{

SCL(0);

Delay_nop();

SDA((bool)(demand&0x80));

demand<<=1;

Delay_nop();

// Delay_nop();

SCL(1);

Delay_nop();

// Delay_nop();

}

SCL(0);

}

/*********MCU从24cXX读入一字节数据*********/

static u8 I2CReceiveByte(void) //数据从高位到低位//

{

u8 i=8;

u8 ddata=0;

SDA(1); //设置SDA为输入

while(i--)

{

ddata<<=1; //数据从高位开始读取

SCL(0);

Delay_nop();

// Delay_nop();

SCL(1);

Delay_nop(); //从高位开始ddata|=SDA;ddata<<=1

// Delay_nop();

if(SDAO)

{

ddata|=0x01;

}

}

SCL(0);

return ddata;

}

/*

* 函数名:I2C_EE_WaitEepromStandbyState

* 描述:Wait for EEPROM Standby state

* 输入:无

* 输出:无

* 返回:无

* 调用:

*/

static void I2C_EE_WaitEepromStandbyState(u8 BlockCode)

{

int i = 50;

do

{

Delay_us(100);

I2CStart();

I2CSendByte(BlockCode | WC24cXX);//发送器件地址写}while(I2CWaitAck() == 0 && i-- > 0);

I2CStop();

}

/****************向24cXX中写入1个字节****************/ /*static bool I2C_ByteWrite(u8* pBuffer, u8 WriteAddr)

{

I2CStart();//启动I2C

I2CSendByte(WC24cXX);//发送器件地址写

return false;

I2CSendByte(WriteAddr);

if(I2CWaitAck() == 0)

return false;

I2CSendByte(*pBuffer);

if(I2CWaitAck() == 0)

return false;

I2CStop();

return true;

}*/

/*

* 函数名:I2C_PageWrite

* 描述:在EEPROM的一个写循环中可以写多个字节,但一次写入的字节数* 不能超过EEPROM页的大小。AT24C08每页有16个字节。

* 输入:-pBuffer 缓冲区指针

* -BlockCode 起始器件地址

* -WriteAddr 接收数据的EEPROM的地址

* -n 要写入EEPROM的字节数

* 返回:0:失败1:成功

* 调用:外部调用

*/

bool I2C_PageWrite(u8* pBuffer, u8 BlockCode, u16 WriteAddr, u8 n)

{

u16 i;

if(n > I2C_PAGESIZE - WriteAddr%I2C_PAGESIZE) //para check return false;

if(n == 0)

return true;

if(I2CStart() == false)

{

Delay_us(100);

if(I2CStart() == false)

return false;

};//启动I2C

I2CSendByte(BlockCode | WC24cXX);//发送器件地址写

if(I2CWaitAck() == 0)

return false;

#if defined(USE_24C32)

I2CSendByte((u8)(WriteAddr >> 8));

#elif defined(USE_24C64)

I2CSendByte((u8)(WriteAddr >> 8));

#endif

I2CSendByte((u8)WriteAddr);

return false;

for(i = 0; i < n; i++)//写入I2C_PAGESIZE字节数据

{

I2CSendByte(pBuffer[i]);

if(I2CWaitAck() == 0)

return false;

}

I2CStop();

I2C_EE_WaitEepromStandbyState(BlockCode);

return true;

}

/*

* 函数名:I2C_BlockWrite

* 描述:将块缓冲区中的数据写到I2C EEPROM中

* 输入:-pBuffer 块缓冲区指针

* -BlockCode 起始器件地址

* -WriteAddr 接收数据的EEPROM的地址

* -n 要写入EEPROM的字节数

* 返回:0:失败1:成功

* 调用:外部调用

*/

bool I2C_BlockWrite(u8* pBlock, u8 BlockCode, u16 WriteAddr, u16 n)

{

u16 ByteOf1st = 0, ByteOfOther = 0; //第一页的字节数最后一页的字节数u8 NumOfMPage = 0; //需要写满数据的页数

if(n > BLOCK_SIZE - WriteAddr%BLOCK_SIZE) //para check return false;

if(n == 0)

return true;

ByteOf1st = I2C_PAGESIZE - WriteAddr % I2C_PAGESIZE;

if(n > ByteOf1st)

{

NumOfMPage = (n - ByteOf1st) / I2C_PAGESIZE;

ByteOfOther = (n - ByteOf1st) % I2C_PAGESIZE;

}

else

{

ByteOf1st = n;

NumOfMPage = 0;

ByteOfOther = 0;

}

if(I2C_PageWrite(pBlock, BlockCode, WriteAddr, ByteOf1st) == false)

{

return false;

}

WriteAddr += ByteOf1st;

pBlock += ByteOf1st;

while(NumOfMPage--)

{

if(I2C_PageWrite(pBlock, BlockCode, WriteAddr, I2C_PAGESIZE) == false)

{

return false;

}

WriteAddr += I2C_PAGESIZE;

pBlock += I2C_PAGESIZE;

}

if(I2C_PageWrite(pBlock, BlockCode, WriteAddr, ByteOfOther) == false)

{

return false;

}

return true;

}

/*

* 函数名:I2C_BufferWrite

* 描述:将缓冲区中的数据写到I2C EEPROM中

* 输入:-pBuffer 缓冲区指针

* -WriteAddr 接收数据的EEPROM的地址

* -n 要写入EEPROM的字节数

* 返回:0:失败1:成功

* 调用:外部调用

*/

bool I2C_BufferWrite(u8* pBuffer, u16 WriteAddr, u16 n)

{

u16 ByteOf1st = 0, ByteOfOther = 0; //第一块的字节数最后一块的字节数

u8 NumOfMBlock = 0; //需要写满数据的块

const u16 ReadAddr = WriteAddr; //读地址

u8* pstr = pBuffer;

u8 BlockCode = 0; //起始器件地址

u8* pReadBuff = NULL;

u16 i = 0;

if(n + WriteAddr > MAXSIZE24cXX || n + WriteAddr == 0) //para check return false;

ByteOf1st = BLOCK_SIZE - WriteAddr % BLOCK_SIZE;

if(n > ByteOf1st)

{

NumOfMBlock = (n - ByteOf1st) / BLOCK_SIZE;

ByteOfOther = (n - ByteOf1st) % BLOCK_SIZE;

}

else

{

ByteOf1st = n;

NumOfMBlock = 0;

ByteOfOther = 0;

}

__close_interrupt(); //关总中断

BlockCode = (u8)((WriteAddr/BLOCK_SIZE << 1) | 0xA0);

if(I2C_BlockWrite(pstr, BlockCode, WriteAddr, ByteOf1st) == false)

{

__open_interrupt(); //开总中断

return false;

}

WriteAddr += ByteOf1st;

pstr += ByteOf1st;

while(NumOfMBlock--)

{

BlockCode += 0x02;

if(I2C_BlockWrite(pstr, BlockCode, WriteAddr, BLOCK_SIZE) == false) {

__open_interrupt(); //开总中断

return false;

}

WriteAddr += BLOCK_SIZE;

pstr += BLOCK_SIZE;

}

BlockCode += 0x02;

if(I2C_BlockWrite(pstr, BlockCode, WriteAddr, ByteOfOther) == false)

{

__open_interrupt(); //开总中断

return false;

}

pReadBuff = (u8*)malloc(n);

if(pReadBuff == NULL)

{

__open_interrupt(); //开总中断

return false;

}

if(I2C_BufferRead(pReadBuff,ReadAddr,n) == false)

{

__open_interrupt(); //开总中断

return false;

}

for(i = 0; i < n; i++)

{

if(pReadBuff[i] != pBuffer[i])

{

free(pReadBuff);

__open_interrupt(); //开总中断

return false;

}

}

free(pReadBuff);

__open_interrupt(); //开总中断

return true;

}

/************************************************************* **名称:bool I2C_BufferRead

**功能:从24cXX中读出读取一块数据(不超过MAXSIZE24cXX个字节) * 输入:-pBuffer 缓冲区指针

* -ReadAddr EEPROM的数据地址

* -n 要从EEPROM读出的字节数

* 返回:0:失败1:成功

* 调用:外部调用

**************************************************************/ bool I2C_BufferRead(u8* pBuffer, u16 ReadAddr, u16 n)

{

u16 i = 50;

u8 BlockCode = 0;

BlockCode = (u8)((ReadAddr/BLOCK_SIZE << 1) | 0xA0);

__close_interrupt(); //关总中断

if(n > MAXSIZE24cXX)

{

__open_interrupt(); //开总中断

return false;

}

I2CSTART:

if(I2CStart() == false)

{

Delay_us(100);

if(I2CStart() == false)

{

__open_interrupt(); //开总中断

return false;

}

};//启动I2C

I2CSendByte(BlockCode | WC24cXX);//发送器件地址写if(I2CWaitAck() == 0)

{

if(i-- > 0)

goto I2CSTART;

else

{

__open_interrupt(); //开总中断

return false;

}

}

#if defined(USE_24C32)

I2CSendByte((u8)(ReadAddr >> 8));

#elif defined(USE_24C64)

I2CSendByte((u8)(ReadAddr >> 8));

#endif

I2CSendByte((u8)ReadAddr);//发送器件字地址

if(I2CWaitAck() == 0)

{

__open_interrupt(); //开总中断

return false;

}

if(I2CStart() == false)

{

Delay_us(100);

if(I2CStart() == false)

{

__open_interrupt(); //开总中断

return false;

}

};//启动I2C

I2CSendByte(BlockCode | RC24cXX); //发送器件地址读if(I2CWaitAck() == 0)

{

__open_interrupt(); //开总中断

return false;

}

for(i = 0; i < n - 1; i++)//读取字节数据

{

pBuffer[i]=I2CReceiveByte();//读取数据

I2CAck();

}

pBuffer[n - 1] = I2CReceiveByte();

I2CNoAck();

I2CStop();

__open_interrupt(); //开总中断

return true;

}

/**************************************************************/

//本程序采用软件延时的方法产生SCL脉冲,为保证有足够的延时,特延时100us,在使//用时可根据要求适当调整。(如12M晶振时,只要4.7us即可)

材料测试分析方法(究极版)

绪论 3分析测试技术的发展的三个阶段? 阶段一:分析化学学科的建立;主要以化学分析为主的阶段。 阶段二:分析仪器开始快速发展的阶段 阶段三:分析测试技术在快速、高灵敏、实时、连续、智能、信息化等方面迅速发展的阶段4现代材料分析的内容及四大类材料分析方法? 表面和内部组织形貌。包括材料的外观形貌(如纳米线、断口、裂纹等)、晶粒大小与形态、各种相的尺寸与形态、含量与分布、界面(表面、相界、晶界)、位向关系(新相与母相、孪生相)、晶体缺陷(点缺陷、位错、层错)、夹杂物、内应力。 晶体的相结构。各种相的结构,即晶体结构类型和晶体常数,和相组成。 化学成分和价键(电子)结构。包括宏观和微区化学成份(不同相的成份、基体与析出相的成份)、同种元素的不同价键类型和化学环境。 有机物的分子结构和官能团。 形貌分析、物相分析、成分与价键分析与分子结构分析四大类方法 四大分析:1图像分析:光学显微分析(透射光反射光),电子(扫描,透射),隧道扫描,原子力2物象:x射线衍射,电子衍射,中子衍射3化学4分子结构:红外,拉曼,荧光,核磁 获取物质的组成含量结构形态形貌及变化过程的技术 材料结构与性能的表征包括材料性能,微观性能,成分的测试与表征 6.现代材料测试技术的共同之处在哪里? 除了个别的测试手段(扫描探针显微镜)外,各种测试技术都是利用入射的电磁波或物质波(如X射线、高能电子束、可见光、红外线)与材料试样相互作用后产生的各种各样的物理信号(射线、高能电子束、可见光、红外线),探测这些出射的信号并进行分析处理,就课获得材料的显微结构、外观形貌、相组成、成分等信息。 9.试总结衍射花样的背底来源,并提出一些防止和减少背底的措施 衍射花样要素:衍射线的峰位、线形、强度 答:(I)花材的选用影晌背底; (2)滤波片的作用影响到背底;(3)样品的制备对背底的影响 措施:(1)选靶靶材产生的特征x射线(常用Kα射线)尽可能小的激发样品的荧光辐射,以降低衍射花样背底,使图像清晰。(2)滤波,k系特征辐射包括Ka和kβ射线,因两者波长不同,将使样品的产生两套方位不同得衍射花样;选择浪滋片材料,使λkβ靶<λk滤<λkα,Ka射线因因激发滤波片的荧光辐射而被吸收。(3)样品,样品晶粒为50μm左右,长时间研究,制样时尽量轻压,可减少背底。 11.X射线的性质; x射线是一种电磁波,波长范围:0.01~1000à X射线的波长与晶体中的原子问距同数量级,所以晶体可以用作衍射光栅。用来研究晶体结构,常用波长为0.5~2.5à 不同波长的x射线具有不同的用途。硬x射线:波长较短的硬x封线能量较高,穿透性较强,适用于金属部件的无损探伤及金属物相分析。软x射线:波长较长的软x射线的能量较低,穿透性弱,可用干分析非金属的分析。用于金属探伤的x射线波长为0.05~0.1à当x射线与物质(原子、电子作用时,显示其粒子性,具有能量E=h 。产生光电效应和康普顿效应等 当x射线与x射线相互作用时,主要表现出波动性。 x射线的探测:荧光屏(ZnS),照相底片,探测器

二级常用算法

计算机等级考试二级 VisualBasic 常用算法汇总 南通大学计算机科学与技术学院 鲁松

计算机等级考试二级VB常用算法(1):累加和连乘1、算法说明 累加形式:V=V+e 连乘形式:V=V*e 其中:V是变量,e是递增表达式。累加和连乘一般通过循环结构来实现。 注意:需在执行循环体前对变量V赋初值。一般的,累加时置初值0;连乘时置初值为1. 举例 求N!的结果。 Private Sub Command1_Click() Dim n%,i%,s& n = Val(InputBox("输入n")) s = 1 For i = 1 To n s = s * i Next i Print s End Sub 错误的写法: Private Sub Command1_Click() Dim n%,i%,s& n = Val(InputBox("输入n")) For i = 1 To n s = 1 …赋初值语句位置不对! s = s * i Next i Print s …输出s的值为n,而不是n! End Sub 应用举例 根据下列公式,求自然对数e的的近似值。 要求:误差小于0.00001 Private Sub Command1_Click() Dim i%,n&,t!,e! e = 2 i = 1 t = 1 Do While t > 0.00001 i = i + 1 t = t / i e = e + t Loop

Print "计算了";i;"项目和是:"; e Print Exp(1)…与上句输出值进行对比以证明算法的正确性 End Sub 解题技巧 1)由于这类题目往往是根据精度要求来求值,因此我们不能预知具体循环次数,所以这类题目一般用Do循环,很少用For循环。设定循环变量和通项变量,注意各变量的初值; 2)分解通项表达式中各因子,并分别将各因子用循环变量表示; 3)如果步骤2中有的因子比较复杂,难以直接用变量表示,此时可以考虑使用Function过程; 4)根据步骤1、2、3,写出通项表达式; 5)根据精度要求(往往是通项小于10负多少次方这样一个关系表达式),写出一条满足精度要求后跳出循环的语句。通常是用:if 通项表达式>10^(-N)then exit do ,注意这句话一般需放在累加或者连乘式之前。 实例说明 以2002年春上机试卷06编程题为例 根据X值计算: n=1,2,…… 要求:n项绝对值小于等于10-6为止。 1、由于循环次数不确定,因此确定用Do循环结构并定义循环变量用n表示(初值1);用户输入的值用x表示;通项用dblCos表示;累加值用sum表示,初值为0; 2、分解通项式的组成 可以分解为三部分: 可以表示为:(-1)^(n+1) 可以表示为:x^(2*(n-1)) 比较复杂,难以直接表示 3、由于步骤2中复杂,此时考虑使用过程。 于是定义过程,输入值是n,返回值是 于是有: private Function comp(n as long)as long dim I as long dim result as long result=1 …此处注意,由于是连乘,初值为1 for I=1 to 2*(n-1) result=result*I

驱动程序原理

知识体系结构 应用程序:是一段可以执行的代码,由操作系统管理。 编译原理,链接器,装载器:是对操作系统依赖的一个工具,将用户的代码变成可执行的机器码,编译器仅仅检查和翻译用户的语言逻辑,但并不装配成符合操作系统要求的可执行文件格式,如windows要求的EXE文件为PE格式(EXE文件并不仅仅是一个可执行的代码段,而且包含了很多其他的内容,如数据段)。 操作系统接口API:是一个可以被用户程序调用的系统功能接口,可以说,我们编写程序,除了计算和流程控制这些只需要用到CPU指令和CPU寄存器的代码外,其余要访问其他(硬件)资源(包括内存,外设)的代码,均是通过调用OS的API来操作除CPU外的资源的,如向屏幕写一个字母,对于程序来说简单得很,print(“A”); 但是其编译后执行的过程是复杂的,编译后的程序会调用操作系统的API,将当前应用程序的状态(上下文,如光标的位置)以及字母传递给显示器的驱动程序去显示。 操作系统管理与调度:操作系统要实现一般通用的资源管理,也要实现资源使用的协调,包含CPU,内存,磁盘,外设。 首先要确定为什么需要操作系统,操作系统设计的目标是什么? 1.我们总是不能等做完一件事情才去做另外一件,因为有些事情做的过程需要等待,有时候也需要暂停一下当前的任务,先去处理更急的事情,等我回来 时又需要以前的任务保持当时的状态,所以需要计算机也要具备这样的能 力,那怎么实现呢? 2.CPU和内存是计算机的最需要的资源,就如我们的人脑一样,一般很难在同一时间做两件事情。需要处理好一件事情再处理另一件,如果处理得越快就 越好,但是不能前一件事情要等待,你就休息了,后面一件也做不了,计算 机的办法就是你不用CPU了,那好你等待下,我先处理下一个事情。 3.我们写程序,不可能对每个应用,我们重新去写那些驱动程序,也不可能按照自己的想法去处理这些通常的资源管理。否则很多人各自写的应用软件就 没法在一个电脑上运行。 操作系统目标: 1.实现代码重用,对于硬件的访问,对于CPU和内存的充分利用,使不同的应用不需要重新去写这些代码。 2.实现各个任务(不同应用程序)的协调使用,使用户可以实现暂停、重新启用某个任务。 3.实现数据的安全管理,实现良好的人机界面的管理。 4.实现一个开放的体系结构,提供系统调用使用户可以快速编写自己的应用,并提供编译器、链接器、装载器来让用户编写的程序变成可以与操作系统接口的 可执行软件。 操作系统的功能分层: CPU管理是操作系统的核心:操作系统与用户程序其实可以看成是一个程序,与以前的单任务系统和单片机程序没有本质的区别。 我们来看整个PC机运行过程: 1.系统上电。 2.主板上CPU的CS值设置为0Fx000,IP值设置为0xFFF0,这样CS:IP就指向0xFFFF0位置,这个是程序的开始地址,而硬件上在总线上挂接在0xFFFF0地址 的是主板的BIOS芯片,BIOS开始运行,BIOS是Basic Input Output System简写, 意思即基本的输入输出系统,如果学过单片机就很好理解,其实就是一个程序,由主

常用焊缝检测方法

常用焊缝检测方法 常用焊缝检测方法 常用焊缝无损检测方法: 1.射线探伤方法(RT) 目前应用较广泛的射线探伤方法是利用(X、γ)射线源发出的贯穿辐射线穿透焊缝后使胶片感光,焊缝中的缺陷影像便显示在经过处理后的射线照相底片上。主要用于发现焊缝内部气孔、夹渣、裂纹及未焊透等缺陷。焊缝检测方法 2.超声探伤(UT) 利用压电换能器件,通过瞬间电激发产生脉冲振动,借助于声耦合介质传人金属中形成超声波,超声波在传播时遇到缺陷就会反射并返回到换能器,再把声脉冲转换成电脉冲,测量该信号的幅度及传播时间就可评定工件中缺陷的位置及严重程度。超声波比射线探伤灵敏度高,灵活方便,周期短、成本低、效率高、对人体无害,但显示缺陷不直观,对缺陷判断不精确,受探伤人员经验和技术熟练程度影响较大。例如:HF300,HF800焊缝检测仪等 3.渗透探伤(PT) 当含有颜料或荧光粉剂的渗透液喷洒或涂敷在被检焊缝表面上时,利用液体的毛细作用,使其渗入表面开口的缺陷中,然后清洗去除表面上多余的渗透液,干燥后施加显像剂,将缺陷中的渗透液吸附到焊缝表面上来,从而观察到缺陷的显示痕迹。液体渗透探伤主要用于:检查坡口表面、碳弧气刨清根后或焊缝缺陷清除后的刨槽表面、工卡具铲除的表面以及不便磁粉探伤部位的表面开口缺陷。焊缝检测方法

4.磁性探伤(MT) 利用铁磁性材料表面与近表面缺陷会引起磁率发生变化,磁化时在表面上产生漏磁场,并采用磁粉、磁带或其他磁场测量方法来记录与显示缺陷的一种方法。磁性探伤主要用于:检查表面及近表面缺陷。该方法与渗透探伤方法比较,不但探伤灵敏度高、速度快,而且能探查表面一定深度下缺陷。例如:DA310磁粉探伤等焊缝检测方法 其他检测方法包括:大型工件金相分析;铁素体含量检验;光谱分析;手提硬度试验;声发射试验等。

材料测试方法

2010年: 1.说明产生特征X射线谱的原理以及如何命名特征X射线。 答:X射线的产生与阳极靶物质的原子结构紧密相关,原子系统中的电子遵从泡利不相容原理不连续的分布在K L M N 等不同能级的壳层上,而且按照能量最低原理首先填充最靠近原子核的K壳层,再依次填充L M N壳层。各壳层能量由里到外逐渐增加。 E k

设备驱动程序

驱动程序 驱动程序一般指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 因此,驱动程序被比作“硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。 中文名 驱动程序 外文名 Device Driver 全称 设备驱动程序 性质 可使计算机和设备通信的特殊程序 目录 1定义 2作用 3界定 ?正式版 ?认证版 ?第三方 ?修改版 ?测试版 4驱动程序的开发 ?微软平台 ?Unix平台 5安装顺序 6inf文件 1定义 驱动程序(Device Driver)全称为“设备驱动程序”,是一种可以使计算机和设备通信的特殊程序,可以说相当于硬件的接口,操作系统只能通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。 惠普显卡驱动安装 正因为这个原因,驱动程序在系统中的所占的地位十分重要,一般当操作系统安装完毕后,首要的便是安装硬件设备的驱动程序。不过,大多数情况下,我们并不需要安装所有硬件设备的驱动程序,例如硬盘、显示器、光驱等就不需要安装驱动程序,而显卡、声卡、扫描仪、摄像头、Modem等就需要安装驱动程序。另外,不同版本的操作系统对硬件设

备的支持也是不同的,一般情况下版本越高所支持的硬件设备也越多,例如笔者使用了Windows XP,装好系统后一个驱动程序也不用安装。 设备驱动程序用来将硬件本身的功能告诉操作系统,完成硬件设备电子信号与操作系统及软件的高级编程语言之间的互相翻译。当操作系统需要使用某个硬件时,比如:让声卡播放音乐,它会先发送相应指令到声卡驱动程序,声卡驱动程序接收到后,马上将其翻译成声卡才能听懂的电子信号命令,从而让声卡播放音乐。 所以简单的说,驱动程序提供了硬件到操作系统的一个接口以及协调二者之间的关系,而因为驱动程序有如此重要的作用,所以人们都称“驱动程序是硬件的灵魂”、“硬件的主宰”,同时驱动程序也被形象的称为“硬件和系统之间的桥梁”。 戴尔电脑驱动盘 驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同,各个硬件厂商为了保证硬件的兼容性及增强硬件的功能会不断地升级驱动程序。如:Nvidia显卡芯片公司平均每个月会升级显卡驱动程序2-3次。驱动程序是硬件的一部分,当你安装新硬件时,驱动程序是一项不可或缺的重要元件。凡是安装一个原本不属于你电脑中的硬件设备时,系统就会要求你安装驱动程序,将新的硬件与电脑系统连接起来。驱动程序扮演沟通的角色,把硬件的功能告诉电脑系统,并且也将系统的指令传达给硬件,让它开始工作。 当你在安装新硬件时总会被要求放入“这种硬件的驱动程序”,很多人这时就开始头痛。不是找不到驱动程序的盘片,就是找不到文件的位置,或是根本不知道什么是驱动程序。比如安装打印机这类的硬件外设,并不是把连接线接上就算完成,如果你这时候开始使用,系统会告诉你,找不到驱动程序。怎么办呢参照说明书也未必就能顺利安装。其实在安装方面还是有一定的惯例与通则可寻的,这些都可以帮你做到无障碍安装。 在Windows系统中,需要安装主板、光驱、显卡、声卡等一套完整的驱动程序。如果你需要外接别的硬件设备,则还要安装相应的驱动程序,如:外接游戏硬件要安装手柄、方向盘、摇杆、跳舞毯等的驱动程序,外接打印机要安装打印机驱动程序,上网或接入局域网要安装网卡、Modem甚至ISDN、ADSL的驱动程序。说了这么多的驱动程序,你是否有一点头痛了。下面就介绍Windows系统中各种的不同硬件设备的驱动程序,希望能让你拨云见日。 在Windows 9x下,驱动程序按照其提供的硬件支持可以分为:声卡驱动程序、显卡驱动程序、鼠标驱动程序、主板驱动程序、网络设备驱动程序、打印机驱动程序、扫描仪驱动程序等等。为什么没有CPU、内存驱动程序呢因为CPU和内存无需驱动程序便可使用,不仅如此,绝大多数键盘、鼠标、硬盘、软驱、显示器和主板上的标准设备都可以用Windows 自带的标准驱动程序来驱动,当然其它特定功能除外。如果你需要在Windows系统中的DOS 模式下使用光驱,那么还需要在DOS模式下安装光驱驱动程序。多数显卡、声卡、网卡等内置扩展卡和打印机、扫描仪、外置Modem等外设都需要安装与设备型号相符的驱动程序,否则无法发挥其部分或全部功能。驱动程序一般可通过三种途径得到,一是购买的硬件附

软件测试的定义及常用软件测试方法介绍

软件测试的定义及常用软件测试方法介绍 一、软件测试的定义 1.定义:使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满 足规定的需求或弄清预期结果与实际结果之间的差别。 2.内容:软件测试主要工作内容是验证(verification)和确认(validation ),下面分别给 出其概念: 验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件以正确的方式来做了这个事件(Do it right) 1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程 2.程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程 3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否 和规定的需求相一致进行判断和提出报告。 确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件做了你所期望的事情。(Do the right thing) 1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性 2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。 软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。 二、软件测试常用方法 1. 从是否关心软件内部结构和具体实现的角度划分: a. 黑盒测试 黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。 黑盒测试是以用户的角度,从输入数据和输出数据的对应关系出发进行测试的,很明显,如果本身设计有问题或者说明规格有错误,用黑盒测试是发现不了的。

材料测试分析方法答案

第一章 一、选择题 1.用来进行晶体结构分析的X射线学分支是() A.X射线透射学; B.X射线衍射学; C.X射线光谱学; D.其它 2. M层电子回迁到K层后,多余的能量放出的特征X射线称() A.Kα; B. Kβ; C. Kγ; D. Lα。 3. 当X射线发生装置是Cu靶,滤波片应选() A.Cu;B. Fe;C. Ni;D. Mo。 4. 当电子把所有能量都转换为X射线时,该X射线波长称() A.短波限λ0; B. 激发限λk; C. 吸收限; D. 特征X射线 5.当X射线将某物质原子的K层电子打出去后,L层电子回迁K层,多余能量将另一个L层电子打出核外,这整个过程将产生()(多选题) A.光电子; B. 二次荧光; C. 俄歇电子; D. (A+C) 二、正误题 1. 随X射线管的电压升高,λ0和λk都随之减小。() 2. 激发限与吸收限是一回事,只是从不同角度看问题。() 3. 经滤波后的X射线是相对的单色光。() 4. 产生特征X射线的前提是原子内层电子被打出核外,原子处于激发状态。() 5. 选择滤波片只要根据吸收曲线选择材料,而不需要考虑厚度。() 三、填空题 1. 当X射线管电压超过临界电压就可以产生X射线和X射线。 2. X射线与物质相互作用可以产生、、、、 、、、。 3. 经过厚度为H的物质后,X射线的强度为。 4. X射线的本质既是也是,具有性。 5. 短波长的X射线称,常用于;长波长的X射线称 ,常用于。 习题 1.X射线学有几个分支?每个分支的研究对象是什么?

2. 分析下列荧光辐射产生的可能性,为什么? (1)用CuK αX 射线激发CuK α荧光辐射; (2)用CuK βX 射线激发CuK α荧光辐射; (3)用CuK αX 射线激发CuL α荧光辐射。 3. 什么叫“相干散射”、“非相干散射”、“荧光辐射”、“吸收限”、“俄歇效应”、“发射谱”、 “吸收谱”? 4. X 射线的本质是什么?它与可见光、紫外线等电磁波的主要区别何在?用哪些物理量 描述它? 5. 产生X 射线需具备什么条件? 6. Ⅹ射线具有波粒二象性,其微粒性和波动性分别表现在哪些现象中? 7. 计算当管电压为50 kv 时,电子在与靶碰撞时的速度与动能以及所发射的连续谱的短 波限和光子的最大动能。 8. 特征X 射线与荧光X 射线的产生机理有何异同?某物质的K 系荧光X 射线波长是否等 于它的K 系特征X 射线波长? 9. 连续谱是怎样产生的?其短波限V eV hc 3 01024.1?= =λ与某物质的吸收限k k k V eV hc 3 1024.1?= =λ有何不同(V 和V K 以kv 为单位)? 10. Ⅹ射线与物质有哪些相互作用?规律如何?对x 射线分析有何影响?反冲电子、光电 子和俄歇电子有何不同? 11. 试计算当管压为50kv 时,Ⅹ射线管中电子击靶时的速度和动能,以及所发射的连续 谱的短波限和光子的最大能量是多少? 12. 为什么会出现吸收限?K 吸收限为什么只有一个而L 吸收限有三个?当激发X 系荧光 Ⅹ射线时,能否伴生L 系?当L 系激发时能否伴生K 系? 13. 已知钼的λK α=0.71?,铁的λK α=1.93?及钴的λK α=1.79?,试求光子的频率和能量。 试计算钼的K 激发电压,已知钼的λK =0.619?。已知钴的K 激发电压V K =7.71kv ,试求其λK 。 14. X 射线实验室用防护铅屏厚度通常至少为lmm ,试计算这种铅屏对CuK α、MoK α辐射 的透射系数各为多少? 15. 如果用1mm 厚的铅作防护屏,试求Cr K α和Mo K α的穿透系数。 16. 厚度为1mm 的铝片能把某单色Ⅹ射线束的强度降低为原来的23.9%,试求这种Ⅹ射 线的波长。 试计算含Wc =0.8%,Wcr =4%,Ww =18%的高速钢对MoK α辐射的质量吸收系数。 17. 欲使钼靶Ⅹ射线管发射的Ⅹ射线能激发放置在光束中的铜样品发射K 系荧光辐射,问 需加的最低的管压值是多少?所发射的荧光辐射波长是多少? 18. 什么厚度的镍滤波片可将Cu K α辐射的强度降低至入射时的70%?如果入射X 射线束 中K α和K β强度之比是5:1,滤波后的强度比是多少?已知μm α=49.03cm 2 /g ,μm β =290cm 2 /g 。 19. 如果Co 的K α、K β辐射的强度比为5:1,当通过涂有15mg /cm 2 的Fe 2O 3滤波片后,强 度比是多少?已知Fe 2O 3的ρ=5.24g /cm 3,铁对CoK α的μm =371cm 2 /g ,氧对CoK β的 μm =15cm 2 /g 。 20. 计算0.071 nm (MoK α)和0.154 nm (CuK α)的Ⅹ射线的振动频率和能量。(答案:4.23

常见的塑料检测标准和方法

常见的塑料检测标准和方法 检测产品/类别检测项目/参数 检测标准(方法)名称及编号(含年号)序 号 名称 塑料1 光源暴露试验方 法通则 塑料实验室光源暴露试验方法第1部分:通则ISO 4892-1:1999 2 氙弧灯光老化 汽车外饰材料的氙弧灯加速暴露试验SAE J2527:2004 汽车内饰材料的氙弧灯加速暴露试验SAE J2412:2004 塑料实验室光源暴露试验方法第2部分:氙弧灯ISO 4892-2:2006 /Amd 1:2009 室内用塑料氙弧光暴露试验方法ASTM D4459-06 非金属材料氙弧灯老化的仪器操作方法ASTM G155-05a 塑料暴露试验用有水或无水氙弧型曝光装置的操作ASTM D2565-99(2008) 3 荧光紫外灯老化 塑料实验室光源暴露试验方法第3部分:荧光紫外灯ISO 4892-3:2006 汽车外饰材料UV快速老化测试SAE J2020:2003 塑料紫外光暴露试验方法ASTM D4329-05 非金属材料UV老化的仪器操作方法ASTM G154-06 4 碳弧灯老化 塑料实验室光源暴露试验方法第4部分:开放式碳弧灯 ISO 4892-4:2004/ CORR 1:2005 塑料实验室光源曝露试验方法第4部分:开放式碳弧灯 GB/T16422.4-1996 5 荧光紫外灯老化 机械工业产品用塑料、涂料、橡胶材料人工气候老化试验方法荧 光紫外灯GB/T14522-2008 6 热老化 无负荷塑料制品的热老化 ASTM D3045-92(2010) 塑料热老化试验方法GB/T7141-2008 7 湿热老化 塑料暴露于湿热、水溅和盐雾效应的测定ISO4611:2008 塑料暴露于湿热、水喷雾和盐雾中影响的测定GB/T12000-2003 塑料8 拉伸性能塑料拉伸性能的测定第1部分:总则GB/T1040.1-2006

数控编程常用计算方法

第3章数控编程中的数学处理 (一)目的与要求 通过本章内容的学习,使学生了解数控编程前数学处理的主要内容和基本方法,掌握利用三角函数计算基点坐标,为数控编程做准备。 (二)教学内容 1.三角函数法计算基点坐标 2.非圆曲线节点坐标的概念 3.辅助坐标点的设定与计算 (三)教学要求 1.掌握利用三角函数计算基点坐标的方法 2.了解非圆曲线节点坐标的概念 3.掌握辅助坐标点的计算 (四)重点与难点 重点:利用三角函数计算基点坐标 难点:辅助坐标点的设定与计算 (五)学习指导 1、数值计算的内容 对零件图形进行数学处理是编程前的一个关键性的环节。数值计算主要包括以下内容。 (1)基点和节点的坐标计算 零件的轮廓是由许多不同的几何元素组成。如直线、圆弧、二次曲线及列表点曲线等。各几何元素间的联结点称为基点,显然,相邻基点间只能是一个几何元素。 当零件的形状是由直线段或圆弧之外的其他曲线构成,而数控装置又不具备该曲线的插补功能时,其数值计算就比较复杂。将组成零件轮廓曲线,按数控系统插补功能的要求,在满足允许的编程误差的条件下,用若干直线段或圆弧来逼近给定的曲线,逼近线段的交点或切点称为节点。编写程序时,应按节点划分程序段。逼近线段的近似区间愈大,则节点数目愈少,相应地程序段数目也会减少,但逼近线段的误差d应小于或等于编程允许误差d允,即d≤d允。考虑到工艺系统及计算误差的影响,d允一般取零件公差的1/5~1/10。 (2)刀位点轨迹的计算 刀位点是标志刀具所处不同位置的坐标点,不同类型刀具的刀位点不同。对于具有刀具半径补偿功能的数控机床,只要在编写程序时,在程序的适当位置写入建立刀具补偿的有关指令,就可以保证在加工过程中,使刀位点按一定的规则自动偏离编程轨迹,达到正确加工的目的。这时可直接按零件轮廓形状,计算各基点和节点坐标,并作为编程时的坐标数据。 当机床所采用的数控系统不具备刀具半径补偿功能时,编程时,需对刀具的刀位点轨迹进行数值计算,按零件轮廓的等距线编程。 (3)辅助计算 辅助程序段是指刀具从对刀点到切人点或从切出点返回到对刀点而特意安排的程序段。切入点位置的选择应依据零件加工余量而定,适当离开零件一段距离。切出点位置的选择,应避免刀具在快速返回时发生撞刀。使用刀具补偿功能时,建立刀补的程序段应在加工零件之前写入,加工完成后应取消刀具补偿。某些零件的加工,要求刀具“切向”切入和“切向”切出。以上程序段的安排,在绘制走刀路线时,即应明确地表达出来。数值计算时,按照走刀路线的安排,计算出各相关点的坐标。 2、基点坐标的计算 零件轮廓或刀位点轨迹的基点坐标计算,一般采用代数法或几何法。代数法是通过列方程组的方法求解基点坐标,这种方法虽然已根据轮廓形状,将直线和圆弧的关系归纳成若干

橡胶制品常用测试方法及标准

1.胶料硫化特性 GB/T 9869—1997橡胶胶料硫化特性的测定(圆盘振荡硫化仪法) GB/T 16584—1996橡胶用无转子硫化仪测定硫化特性 ISO 3417:1991橡胶—硫化特性的测定——用摆振式圆盘硫化计 ASTM D2084-2001用振动圆盘硫化计测定橡胶硫化特性的试验方法 2 3. GB/T528—1998硫化橡胶或热塑性橡胶拉伸应力应变性能的测定 ISO37:2005硫化或热塑性橡胶——拉伸应力应变特性的测定 ASTMD412-1998(2002)硫化橡胶、热塑性弹性材料拉伸强度试验方法JIS K6251:1993硫化橡胶的拉伸试验方法

DIN 53504-1994硫化橡胶的拉伸试验方法 4.橡胶撕裂性能 GB/T 529—1999硫化橡胶或热塑性橡胶撕裂强度的测定(裤形、直角形和新月形试样)ISO 34-1:2004硫化或热塑性橡胶—撕裂强度的测定-第一部分:裤形、直角形和新月形试片 5. (10— 6.压缩永久变形性能 GB/T 7759—1996硫化橡胶、热塑性橡胶在常温、高温和低温下压缩永久变形测定 ISO 815:1991硫化橡胶、热塑性橡胶在常温、高温和低温下压缩永久变形测定

ASTM D395-2003橡胶性能的试验方法压缩永久变形 JIS K6262:1997硫化橡胶及热塑性橡胶压缩永久变形试验方法 7.橡胶的回弹性 GB/T 1681—1991硫化橡胶回弹性的测定 8. ASTM D 746-2004用冲击法测定塑料及弹性材料的脆化温度的试验方法ASTM D 2137-2005弹性材料脆化温度的试验方法 JIS K 6261-1997硫化橡胶及热塑性橡胶的低温试验方法 9.橡胶热空气老化性能

常用的建筑工程材料的检测方法详细介绍

常用的建筑工程材料的检测方法详细介绍 我们经常会看到新闻报道有关于住房纠纷和烂尾楼的问题,出现该种现象的主要原因是由于使用了劣质的建筑材料。很多农村家庭自己建造房子时不会太多关注建筑材料的问题,只要建筑材料质量合格即可,但是城市建筑中,不管是居民住房还是商业建筑或者是工业建筑,对建筑材料的要求等级均较高,优质的建筑材料才能保证建筑物的质量达标。每一种建筑材料都有其固定的检测方法,下面的时间大家跟着小编一起了解下常用的建筑工程材料都有哪些常用的检测方法。 1、现场搅拌混凝土检测 根据国家混凝土施工质量验收标准对混凝土的强度进行检测,取样时应采用随机取样的原则,取样的重复组为3组,保证检测结果的重复性和可信赖性。 2、商品混凝土 商品混凝土自购买运送到施工现场之后,需要按照预拌混凝土检测标准取样测定,用于交货的混凝土在交货地点进行取样,用于出厂的混凝土应在搅拌施工地点进行取样,对于预

拌混凝土的质量,每一车都要通过目测检查。 3、钢筋检测 对于不同组别的钢筋建筑材料需要进行不同批次的取样和检测,测定钢筋的直径、长度、弯心直径等指标。 4、墙体材料检测 不同的墙体材料使用的检测方法不同,使用随机取样法取样检测,对墙体材料进行抗压强度和密度检测试验,确保墙体材料的承重能力能符合建筑物的设计要求。 5、防水材料检测 防水材料是建筑工程中需要重点把握的建筑环节,很多建筑物由于防水施工工作不到位,后期在建筑物使用过程中还需要重新整改,增加整改成本和难度,施工方使用的防水材料需要有检测报告和合格证明,并且要明确注意使用期限和产品的规格以及使用范围等重点指标。防水材料的检测除了要对其检测物理性能外,另外,也需要做注水试验来判断防水材料的性能。

(完整版)算法的概念及误差分析方法(精)

3.2算法 3.2.1算法的概念 3.2.1.1 什么叫算法 算法(Algorithm)是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序,求解一个给定的可计算或可解的问题,不同的人可以编写出不同的程序,来解决同一个问题,这里存在两个问题:一是与计算方法密切相关的算法问题;二是程序设计的技术问题。算法和程序之间存在密切的关系。 算法是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算,是对解题方案的准确与完整的描述。制定一个算法,一般要经过设计、确认、分析、编码、测试、调试、计时等阶段。 对算法的学习包括五个方面的内容:①设计算法。算法设计工作是不可能完全自动化的,应学习了解已经被实践证明是有用的一些基本的算法设计方法,这些基本的设计方法不仅适用于计算机科学,而且适用于电气工程、运筹学等领域;②表示算法。描述算法的方法有多种形式,例如自然语言和算法语言,各自有适用的环境和特点; ③确认算法。算法确认的目的是使人们确信这一算法能够正确无误地工作,即该算法具有可计算性。正确的算法用计算机算法语言描述,构成计算机程序,计算机程序在计算机上运行,得到算法运算的结果;④分析算法。算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。分析算法可以预测这一算法适合在什么样的环境中有效地运行,对解决同一问题的不同算法的有效性作出比较;⑤验证算法。用计算机语言描述的算法是否可计算、有效合理,须对程序进行测试,测试程序的工作由调试和作时空分布图组成。 3.2.1.2算法的特性 算法的特性包括:①确定性。算法的每一种运算必须有确定的意义,该种运算应执行何种动作应无二义性,目的明确;②能行性。要求算法中有待实现的运算都是基本的,每种运算至少在原理上能由人用纸和笔在有限的时间内完成;③输入。一个算法有0个或多个输入,在算法运算开始之前给出算法所需数据的初值,这些输入取自特定的对象集合;④输出。作为算法运算的结果,一个算法产生一个或多个输出,输出是同输入有某种特定关系的量;⑤有穷性。一个算法总是在执行了有穷步的运算后终止,即该算法是可达的。 满足前四个特性的一组规则不能称为算法,只能称为计算过程,操作系统是计算过程

招聘中常用性格测试的几种常用方法

性格测试的几种常用方法 一、德国医生、心理学家—卡雷努思的“四气质说” 1,主要特征 ●“阳刚的多血质”,情绪反映弱而快。 ●“平淡的黏液质”,情绪反映弱而慢。 ●“忧郁的黑胆质”,情绪反映强而慢。 ●“急躁的黄胆质”,情绪反映强而快。 ● 2,性格特点及主要表现 ●气质类型:多血质 ●性格特点:轻率、活泼、好事、喜欢与人交往 ●典型表现:面对困难不退缩,不会记恨,容易答应别人的事情,也容易忘记约定的 人。有面对困难的勇气,但看事情不妙也会开溜。能够调整自己的喜怒哀乐,随时保持心理平衡与往前冲的状态,一旦成功或受到别人的赞扬就乐不可支。 ●气质类型:黏液质 ●性格特点:安静、漫不经心、散漫、邋遢,好饮食等。 ●典型表现:反映迟钝、冷淡,但诚实、值得信任。个性平淡、工作缓慢,不容紧张。 有时做事动作迟缓,不修边幅、喜好享乐,多有利己主义倾向。 ●气质类型:黑胆质 ●性格特点:稳重沉郁,经常能看到人生的阴暗面。 ●典型表现:多半都会避免应来送往的活动,不喜欢与外向活泼的人在一起,甚至看 到别人欢天喜地、乐不可支时,反而会不高兴。一遇困难常失去心理平衡,心情不好久久不能恢复。 ●气质类型:黄胆质 ●性格特点:对于情绪刺激非常敏感,意志容易动摇,没有耐心,情绪忽冷忽热。 ●典型表现:喜欢参加各种活动,想法常常改变,只有三分钟热情。不喜欢被压抑, 喜怒哀乐表现明显。悲伤和愤怒都来得快去得快。一般而言,既有爱心也有热心,做事情很有爆发力。 二、荣格的两种性格倾向理论 1内向型性格的特点: ●重视主体性与自我; ●在乎自己的习惯和想法; ●不喜欢人云亦云; ●勤于自我反省; ●犹豫不决,缺乏果断气概; ●适应能力较差; ●认真得近于固执,喜欢较真; ●对环境变化感觉敏感; ●交往过程中倾向于将自己置于被动地位; ●不容易结交新朋友;

材料分析测试方法考点总结

材料分析测试方法 XRD 1、x-ray 的物理基础 X 射线的产生条件: ⑴ 以某种方式产生一定量自由电子 ⑵ 在高真空中,在高压电场作用下迫使这些电子做定向运动 ⑶ 在电子运动方向上设置障碍物以急剧改变电子运动速度 →x 射线管产生。 X 射线谱——X 射线强度随波长变化的曲线: (1)连续X 射线谱:由波长连续变化的X 射线构成,也称白色X 射线或多色X 射线。每条曲线都有一强度极大值(对应波长λm )和一个波长极限值(短波限λ0)。 特点:最大能量光子即具有最短波长——短波限λ0。最大能量光子即具有最短波长——短波限λ0。 影响连续谱因素:管电压U 、管电流 I 和靶材Z 。I 、Z 不变,增大U →强度提高,λm 、λ0移向短波。U 、Z 不变,增大I ;U 、I 不变,增大Z →强度一致提高,λm 、λ0不变。 (2)特征X 射线谱:由一定波长的若干X 射线叠加在连续谱上构成,也称单色X 射线和标识X 射线。 特点:当管电压超过某临界值时才能激发出特征谱。特征X 射线波长或频率仅与靶原子结构有关,莫塞莱定律 特定物质的两个特定能级之间的能量差一定,辐射出的特征X 射线的波长是特定。 特征x 射线产生机理:当管电压达到或超过某一临界值时,阴极发出的电子在电场加速下将靶材物质原子的内层电子击出原子外,原子处于高能激发态,有自发回到低能态的倾向,外层电子向内层空位跃迁,多余能量以X 射线的形式释放出来—特征X 射线。 X 射线与物质相互作用:散射,吸收(主要) (1)相干散射:当X 射线通过物质时,物质原子的内层电子在电磁场作用下将产生受迫振动,并向四周辐射同频率的电磁波。由于散射线与入射线的波长和频率一致,位相固定,在相同方向上各散射波符合相干条件,故称相干散射→ X 射线衍射学基础 (2)非相干散射:X 射线光子与束缚力不大的外层电子或自由电子碰撞时电子获得一部分动能成为反冲电子,X 射线光子离开原来方向,能量减小,波长增加,也称为康普顿散射。 (3)吸收:光电效应,俄歇效应 λK 即称为物质的K 吸收限 短波限λ0与管电压有关,而每种物质的K 激发限波长λK 与该物质的K 激发电压有关,即都有自己特定的值。 X 射线与物质的相互作用可以看成是X 光子与物质中原子的相互碰撞。当X 光子具有足够能量时,可以将原子内层电子击出,该电子称为光电子。原子处于激发态,外层电子向内层空位跃迁,多余能量以辐射方式释放,即二次特征X 射线或荧光X 射线。这一过程即为X 射线的光电效应。 对于某特定材料的特定俄歇电子具有特定的能量,测定其能量(俄歇电子能谱)可以确定原K K K K K K K V eV hc eV W hc h 2 104.12?==→=≥=λλν()σλ-=Z K 1

谈软件测试常用方法和测试流程.

摘要:软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件开发过程的重要组成部分,是软件质量保证的关键步骤。软件测试的方法可分为人工测试和机器测试,人工测试包括个人复查、走查和会审,机器测试可分为白盒测试和黑盒测试。软件测试虽然是一个独立的阶段, 但在实际工作中,测试的流程主要包含单元测试、组装测试、确认测试、系统测试四个阶段。 关键词:软件测试;白盒;黑盒;单元测试;组装测试;确认测试;系统测试 一、软件测试的常用方法 软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件开发过程的重要组成部分,是软件质量保证的关键步骤。采用面向对象技术进行软件开发产生了两个结果:一是开发出功能更强大更便于用户使用的软件产品,二是生成规模庞大的程序代码和文档,这也必然导致更大规模的软件测试和维护工作。因此, 规范化的软件测试势在必行。规范化不只是测试的需求 (有效代码量、结构 /逻辑的复杂性、高性能 /高精确性 /高可靠性需求和消耗资源(人力 /时间 /测试频度规模化,更要求在面对规模庞大的软件测试需求,在合理的资源消耗基础上,实施有效的测试。 下图描述的是常用的一些测试方法 : 1、人工测试的方法 (1个人复查 个人复查是指程序员自行设计测试用例 ,对源代码、详细设计进行仔细检查,并记录错误、不足之处等。个人复查主要包括检查变量的正确性、检查标号的正确性、检查子程序、宏、函数、常量检查、标准检查、风格检查、比较控制流、选择、激活路径、对照详细说明书,阅读源代码和补充文档等方面的测试内容。 (2走查

走查是指测试人员先阅读相应的文档和源代码,然后人工将测试数据输入被测试程序,并在纸上跟踪监视程序的执行情况,人工沿着程序的逻辑走查运行一遍,跟踪走查运行的进程来发现程序的错误。走查的具体测试内容包括模块特性、模块接口、模块的对外输入或输出、局部数据结构、数据计算错误、控制流错误、处理出错和边界测试等方面。 (3会审 会审是指测试人员在会审前仔细阅读软件的有关资料,根据错误类型清单(根据以往的经验、对源程序的估计等,并在以后测试中给以丰富补充填写检测表,提出根据错误类型要提出的问题。会审时,由程序设计人员讲解程序的设计方法,由程序编写人员逐个讲解程序代码的编写,测试人员需要逐个审查, 提问,讨论可能出现的问题。会审对程序的功能、结构、逻辑和风格都要进行审定。会审的测试内容与“ 走查” 的内容相同。 2、机器测试 (1定义 机器测试的目的是检查程序的动态性能,检查程序在执行过程中存在的错误。尤其是发现程序在实现功能、逻辑通路、数值计算、数据处理、边界处理、错误处理等方面存在的错误。机器测试分为白盒测试和黑盒测试。 (2黑盒测试 黑盒测试即功能测试 ,这种方法是把软件看成一个看不见里面内容的黑盒,在完全不考虑程序内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序输入和输出特性上检查程序是否满足设定的功能。黑盒测试常采用的方法是设计适量有效和无效的输入数据进行测试, 以期用最小的代价发现最多的错误。 (3白盒测试

相关文档
最新文档