第一篇:STM32使用心得
stm32使用心得
第一次使用stm32,以前用过
51、avr、pic、2812,感觉stm32还真有点不一样,呵呵。
因为是第一次使用,下面说的肯定有不少错误,诚心求大家指正。
这次做的是用stm32f103zd+lattice 的lc4256v做一个波形发生器。通过上位机可以控制生成波形的频率,然后stm32根据频率计算波形占空比数据,通过总线形式传给cpld,然后cpld把这些数据转换成相对应占空比的pwm输出,外部接RC滤波电路,产生相对应的波形。由于频率范围较大,计算量也比较大,所以采用了stm32+cpld的结构。Stm32运行在72MHZ,通过mco脚给cpld 36M HZ的时钟,stm32和cpld通过总线方式通信。
此系统中Stm32主要用到的资源是:一个UART,一个TIMER及其中断,FSMC和DMA。
本人总结了下,Stm32初始化一个片内外设一般过程一般有以下几部分:
1.InitStructure配置及初始化
2.时钟使能
3.相对应的IOInitStructure配置及初始化
4.相对应的IO时钟使能
5.外设使能
6.中断配置及中断程序编写
下面介绍一下自己所用的UART、TIMER、FSMC、DMA的初始化。
UART初始化:
此系统中使用的是UART2,未用UART中断。UART初始化主要有:IO初始化,UART InitSturcture初始化,UART时钟使能,UART使能。程序如下: GPIO_InitTypeDef GPIO_InitStructure;
// Configure USART2_Tx as alternate push-pull
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// Configure USART2_Rx as input floating
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//IO时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
USART_InitTypeDef USART_InitStructure;
/* USART2 configured as follow:
-BaudRate = 9600 baud
-Word Length = 8 Bits
-One Stop Bit
-No parity
-Hardware flow control disabled(RTS and CTS signals)
-Receive and transmit enabled
*/
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
/* Configure the USART2*/
USART_Init(USART2, &USART_InitStructure);
//UART时钟使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
/* Enable the USART2 */
USART_Cmd(USART2, ENABLE);
TIMER初始化
使用的是TIM2。初始化主要包括TIM2 InitSturcture初始化,时钟使能,TIM2开启,中断配置,及中断服务程序编写。此TIM2作用主要是给DMA提供时钟,DMA在TIM2 UP时启动一次DMA发送过程。TIM2程序如下:
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
//定时器2
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseStructure.TIM_Period = 33;
TIM_TimeBaseStructure.TIM_Prescaler = 71;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2,TIM_FLAG_Update);
TIM_ARRPreloadConfig(TIM2,ENABLE);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, ENABLE);
//中断配置
/* Enable the TIM2 gloabal Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
//定时器2中断服务程序
void TIM2_IRQHandler(void)//这个函数可以在文件stm32f10x.c文件中查找到 {
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}
FSMC初始化
FSMC主要用来和CPLD进行总线通信,由DMA方式发送,在TIM2计时时间到后启动一次DMA发送,发送的数据由已计算好的数组中的一个16位数据以16位方式发给FSMC的地址。由于此系统电路已固定,stm32与CPLD间数据线是8位,故在向FSMC地址写16位数据时,FSMC会将数据拆成2部分发送。本人在实际编程时发现,如向*(volatile u16*)(Bank1_NOR4_ADDR+0x40)地址给CPLD写16位数据时,会在40h接收到低8位数据,在41h接收到高8位数据。按道理来说这些数据应该与NBL0, NBL1信号有关,本人在CPLD编程时未理会这个,具体时序不是很清楚,有待考究。
FSMC初始化程序如下:
FSMC_NORSRAMInitTypeDefFSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDefp;
p.FSMC_AddressSetupTime = 3;//6
p.FSMC_AddressHoldTime = 0;//3
p.FSMC_DataSetupTime = 8;//25
p.FSMC_BusTurnAroundDuration = 0;
p.FSMC_CLKDivision = 0;
p.FSMC_DataLatency = 0;
p.FSMC_AccessMode = FSMC_AccessMode_A;
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_AsyncWait = FSMC_AsyncWait_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
//IO初始化
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOG | RCC_APB2Periph_GPIOE |
RCC_APB2Periph_GPIOF, ENABLE);
/*--GPIO Configuration-----------------------*/
/* SRAM Data lines configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure);
/* SRAM Address lines configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 |GPIO_Pin_14 | GPIO_Pin_15;
GPIO_Init(GPIOF, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
GPIO_Pin_4 | GPIO_Pin_5;
GPIO_Init(GPIOG, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;GPIO_Init(GPIOD, &GPIO_InitStructure);
/* NOE and NWE configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* NE4 configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_Init(GPIOG, &GPIO_InitStructure);
/* NBL0, NBL1 configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_Init(GPIOE, &GPIO_InitStructure);
此处简单介绍一下FSMC总线方式的使用。
FSMC初始化完了之后,进行如下定义,#define Bank1_NOR4_ADDR((u32)0x6c000000)
#define cs_sin*(volatile u16*)(Bank1_NOR4_ADDR+0x40)
然后cs_sin=1000就是往这个地址写数字1000=0x03e8,则cpld 40h地址收到数据为0xe8,41h收到的数据为0x03
i=cs_sin,就是读这个地址的数据,由于定义的是16位的数据地址,故读到的数据是40h为低8位数据,41h为高8位数据
DMA初始化:
DMA在TIM2 UP时触发,将已经计算好放在数组dat_tocpld的16位数据发送到fsmc地址为(Bank1_NOR4_ADDR+0x40)的空间。
初始化程序如下:
DMA_InitTypeDef DMA_InitStructure;
DMA_DeInit(DMA1_Channel2);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
/* Enable TIM2 DMA interface */
TIM_DMACmd(TIM2, TIM_DMA_Update, ENABLE);
DMA_InitStructure.DMA_PeripheralBaseAddr =(u32)(Bank1_NOR4_ADDR+0x
40);
DMA_InitStructure.DMA_MemoryBaseAddr =(u32)dat_tocpld;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize = 1152;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize =DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA1_Channel2, &DMA_InitStructure);
/* Enable DMA1 Channel2 */
DMA_Cmd(DMA1_Channel2, ENABLE);
最后附上源自http://sxqstudy.blog.163.com/blog/static/***03148709/介绍的关于PWM电压转换电路。
在PWM用于DA转换的场合,阻容滤波电路是关系转换效果的重要环节。
由RC充放电常数我们可以大致计算出阻容环节的充放电频率,一般为了得到理想的滤波效果,这个频率要远小于PWM的输出频率(小于四分之一)。
一般情况下,当C较小R较大时,DA转换出的电压损耗很小,但是纹波却很大;当C较大R较小时,DA转换出的电压损耗很大,但纹波相对较小。
所以当需要进行线形度很高的精确DA转换时必须使用较小的滤波电容,且尽量避免使用电解类电容。而为了得到较强的信号输出,RC惯性环节之后还必须加一级高性能的电压跟随,然后在跟随器输出的地方加上一个滤波用的电解电容,用于平滑RC惯性环节的纹波。但是这还不够,因为这时的输出电压里可能含有较多的交流谐波成分,如果处理不当,跟随器有可能自激。解决的办法就是使用一个小的去藕电容。而且这里电容的放置顺序必须是电解电容在前,去藕电容在后!
如果输出电压精度和线形度要求不高,但是对纹波要求却很高,或者这个电压比较固定时,可以使用电容较大的滤波组合。因为,虽然大电容的直流损耗较大,但是我们可以通过调节PWM占空比来达到要求的输出电压,或者通过一级AD转换的反馈来实现精确的固定电压输出。只是这里仍然要加一级电压跟随器,以便于后级采集电路使用,且AD采集点放置在跟随器输出处。
第二篇:扫描隧道显微镜(STM)实验报告
实
验
报
告
姓名 小编
班级 01**101
学号 011**01** 组别
实验日期 2011-11-23
课程名称
大学物理实验
同实验者
指导教师
成绩
扫描隧道显微镜(STM)
一.实验目的
1掌握和了解量子力学中的隧道效应的基本原理。
2学习和了解扫描隧道显微镜的基本结构和基本实验方法原理。
3基本了解扫描隧道显微镜的样品制作过程、设备的操作和调试过程,并
最后观察样品的表面形貌。
4正确使用AJ—1扫描隧道显微镜的控制软件,并对获得的表面图像进行处
理和数据分析。二.实验仪器
AJ—1型扫描隧道显微镜;P-IV型计算机;样品(高序石墨);
金属探针及工具。
三.实验原理 1.隧道电流
扫描隧道显微镜的工作原理是基于量子力学的隧道效应。对于经典物理学来说,当一粒子的动能E低于前方势垒的高度V0时,它不可能越过此势垒,即透射系数等于零,粒子将完全被弹回(如图3)。而按照量子力学的计算,在一般情况下,其透射系数不等于零,也就是说,粒子可以穿过比它的能量更高的势垒,这个现象称为隧道效应,它是由于粒子的波动性而引起的,只有在一定的条件下,这种效应才会显著。经计算,透射系数
(1)
由式中可见,透射系数T与势垒宽度a、能量差(V0-E)以及粒子的质量m有着很敏感的依赖关系,随着a的增加,T将指数衰减,因此在宏观实验中,很难观察到粒子隧穿势垒的现象。
扫描隧道显微镜是将原子线度的极细探针和被研究物质的表面作为两个电极,当样品与针尖的距离非常接近时(通常小于1 nm),在外加电场的作用下,电子会穿过两个电极之间的势垒流向另一电极。隧道电流I是针尖的电子波函数与样品的电子波函数重叠的量度,与针尖和样品之间距离S和平均功函数Φ有关
(2)
式中Vb是加在针尖和样品之间的偏置电压,平均功函数,Φ1和Φ2分别为针尖和样品的功函数,A为常数,在真空条件下约等于1。隧道探针一般采用直径小于1mm的细金属丝,如钨丝、铂—铱丝等,被观测样品应具有一定的导电性才可以产生隧道电流。
由(2)式可知,隧道电流强度对针尖和样品之间的距离有着指数的依赖关系,当距离减小0.1nm,隧道电流即增加约一个数量级。因此,根据隧道电流的变化,我们可以得到样品表面微小的高低起伏变化的信息,如果同时对x-y方向进行扫描,就可以直接得到三维的样品表面形貌图。2.STM的结构和工作模式
STM仪器由具有减振系统的STM头部、电子学控制系统和包括A/D多功能卡的计算机组成(图4)。头部的主要部件是用压电陶瓷做成的微位移扫描器,在x-y方向扫描电压的作用下,扫描器驱动探针在导电样品表面附近作x-y方向的扫描运动。与此同时,一台差动放大器检测探针与样品间的隧道电流,并把它转换成电压反馈到扫描器,作为探针z方向的部分驱动电压,以控制探针作扫描运动时离样品表面的高度。
STM常用的工作模式主要有以下两种:
a.恒流模式,如图3(a),利用压电陶瓷控制针尖在样品表面x-y方向扫描,而z方向的反馈回路控制隧道电流的恒定,当样品表面凸起时,针尖就会向后退,以保持隧道电流的值不变,当样品表面凹进时,反馈系统将使得针尖向前移动,则探针在垂直于样品方向上高低的变化就反映出了样品表面的起伏。将针尖在样品表面扫描时运动的轨迹记录并显示出来,就得到了样品表面态密度的分布或原子排列的图象。这种工作模式可用于观察表面形貌起伏较大的样品,且可通过加在z方向的驱动电压值推算表面起伏高度的数值。恒流模式是一种常用的工作模式,在这种工作模式中,要注意正确选择反馈回路的时间常数和扫描频率。
图3 扫描隧道显微镜的两种工作模式 b.恒高模式,如图3(b),针尖的x-y方向仍起着扫描的作用,而z方向则保持绝对高度不变,由于针尖与样品表面的局域高度会随时发生变化,因而隧道电流的大小也会随之明显变化,通过记录扫描过程中隧道电流的变化亦可得到表面态密度的分布。横高模式的特点是扫描速度快,能够减少噪音和热漂移对信号的影响,实现表面形貌的实时显示,但这种模式要求样品表面相当平坦,样品表面的起伏一般不大于1nm,否则探针容易与样品相撞。3.STM针尖的制备
隧道针尖的制备是STM技术中要解决的主要问题之一,针尖的大小、形状和化学同一性不仅影响着图象的分辨率和图象的形状,而且也影响着测定的电子态。针尖的宏观结构应使得针尖具有高的弯曲共振频率,从而减小相位滞后,提高采集速度。如果针尖的最尖端只有一个稳定的原子而不是有多重针尖,那么隧道电流就会很稳定,而且能够获得原子级分辨率的图象。针尖的化学纯度高,就不会涉及系列势垒。例如,针尖表面若有氧化层,则其电阻可能会高于隧道间隙的阻值,从而导致在针尖和样品间产生隧道电流之前,二者就发生碰撞。
现在常用铂铱合金作为隧道针尖材料。铂材料虽软,但不易被氧化,在铂中加入少量铱(例如铂铱的比例为80%:20%)形成的铂铱合金丝,除保留了不易被氧化的特性外,其刚性也得到了增强.为了得到锐利的针尖,通常对铂铱合金丝用机械剪切方法成型。4.STM的减震
由于STM工作时的针尖与样品间距一般小于1nm,同时由式(2)可见,隧道电流与隧道间距成指数关系,因此任何微小的振动,例如由说话的声音和人的走动所引起的振动,都会对仪器的稳定性产生影响。许多样品,特别是金属样品,在STM的恒流工作模式中,观察到的表面起伏通常为0.01nm。因此,STM仪器应具有良好的减震效果,一般由振动所引起的隧道间距变化必须小于0.001nm。建筑物一般在10到100Hz频率之间摆动,当在实验室附近的机器工作时,可能激发这些振动。通风管道、变压器和马达所引起的振动在6到65Hz之间,房屋骨架、墙壁和地板一般在15到25Hz易产生与剪切和弯曲有关的振动。实验室工作人员所产生的振动(如在地板上的行走)频率在1到3Hz范围。因此,STM减震系统的设计应主要考虑1到100Hz之间的振动。隔绝振动的方法主要靠提高仪器的固有振动频率和使用振动阻尼系统。目前实验室常用的减震系统采用合成橡胶缓冲垫、弹簧(或橡胶带)悬挂以及磁性涡流阻尼等三种综合减震措施来达到减震的目的。扫描隧道显微镜的底座常常采用金属板(或大理石)和橡胶垫叠加的方式,其作用主要是用来降低大幅度冲击震动所产生的影响,其固有阻尼一般是临界阻尼的十分之几甚至是百分之几。除此之外,对探测部分采用弹簧悬吊的方式,金属弹簧的弹性常数小,共振频率较小(约为0.5Hz),但其阻尼小,常常要附加其它减震措施。在一般情况下,以上两种减震措施基本上能够满足扫描隧道显微镜的减震要求。对仪器性能要求较高时,还可以配合诸如磁性涡流阻尼等其它减震措施。测量时,探测部分(探针和样品)通常罩在金属罩内,金属罩的作用主要是对外界的电磁扰动、空气震动等干扰信号进行屏蔽,提高探测的准确性。
【实验装置与控制处理软件】
NanoView-I型扫描隧道显微镜是面向教学实验开发的新型实验装置。1. 头部系统
扫描系统采用压电陶瓷管作为扫描器,样品固定在扫描器上,样品相对于探针作扫描运动。支撑系统包括基座、三根钢柱、悬吊支架和三只挂脚构成的托架系统。驱进系统由双手动螺旋测微头和一只精密步进马达顶杆(可手调也可计算机控制)组成,三点支撑针块并控制样品与针尖距离。防振系统采用三根弹簧吊住底盘,靠弹簧衰减由基座传入的震动。
驱进调节机构的设计主要用于粗调和精细调节针尖和样品之间的距离。利用两个螺旋测微头手动粗调,配合步进马达(可以手调也可计算机控制调节),先调节针尖和样品距离至一较小间距(毫米级),然后驱动步进马达,使间距从毫米级缓慢降至纳米级(在有反馈的情形下),进入扫描状态。退出时先驱动步进马达,使间距缓慢增大,退出扫描间距后,可加快退出速度。
STM系统的振动隔离措施采用平板堆垛系统加上悬吊来隔离振动。平板堆垛系统由大理石块(或金属平板)和橡胶圈构成。用于较大范围的扫描时,这种措施已经能够有效地隔离振动。在进行精细的扫描(比如获得原子图象)时,需要采用弹簧进行悬吊。2. 电子学控制系统 STM电子学控制系统的核心是一个无静态差动反馈回路,控制隧道结间距变化。在恒流工作模式中其基本过程是首先测出隧道电流并转换成电压,然后与参考电流比较,经过差动放大后再输入积分器,由积分器输出控制扫描管Z方向的伸缩,使得隧道电流恒定在预设的工作点上。由于反馈系统是一种高增益电路,隧道电流又在纳安的数量级,很容易受到外界的干扰,因此对系统要进行很好的屏蔽。3.软件系统
512,系统包括实时采集控制、离线分析处理、文件处理、调色板四大模块。在主控命令条中使用相应的按键就可以启动相应的模块,各模块之间可以任意切换。STM软件系统采用Windows95/98为操作界面,具有使用方便的菜单和工具箱,图象的存储可以采用多种格式,最大分辨率可达512 实时采集控制提供马达开/关、单步进/单步退、自动驱进/自动脱离等马达控制功能,提供任意角度扫描、定标、局域等功能。
离线分析处理提供图像浏览、缩放、线三维、表面三维等多种显示功能,提供斜面校正、平滑、卷积滤波、FFT、边缘增强、反转、两维行平均等图像处理手段,可对图像进行粗糙度、模糊度、剖面线分析及距离和高度定标。调色板系统包含16种调色板设定,任一种调色板均可由用户在R、G、B三分量上无级编辑,每一种调色板均包含灰度与彩色,信息可任意切换。
文件处理提供实时的屏幕硬拷贝功能,可保存当前任意区域的屏幕内容,提供标准图像格式输出,输出图像可为其它任何通用图像处理软件所识别与处理,以便用户编辑、排版、打印。四.实验内容
1.准备和安装样品、针尖
将一段长约3厘米的铂铱合金丝放在丙酮中洗净,取出后用经丙酮洗净的剪刀剪尖,再放入丙酮中洗几下(在此后的实验中千万不要碰到针尖!)。将探针后部略弯曲,插入扫描隧道显微镜头部的金属管中固定,针尖露出头部约5毫米。
将样品放在样品座上,应保证良好的电接触。将下部的两个螺旋测微头向上旋起,然后把头部轻轻放在支架上(要确保针尖和样品间有一定的距离),头部的两边用弹簧扣住。小心地细调螺旋测微头和手动控制电机,使针尖向样品逼近,用放大镜观察,在针尖和样品相距约0.5—1毫米处停住。
2.金团簇样品图象扫描
启动计算机,打开控制器电源开关。单击桌面的“AJ-1”图标,执行操作软件。此时屏上出现在线软件的主接口,再单击菜单中“显微镜校正初始化”,屏上跳出一个选择框,选定“通道零”,然后多次点击“应用”,左边的通道零参数不断变化,选定一个其中变化参数绝对值最小的值,最后单击“确定”。
单击菜单“视图高度图像”,屏上会出现高度图像(H)、Z高度显示(T)、马迖高级控制(A)共三个操作框。然后再将“图像模式”修改成“曲线模式”,同时出现“高度曲线”框。此时的屏显示如图10所示。
选择“马达控制”,“隧道电流”置为0.3~0.4nA,“针尖偏压”置为250mv,“积分”置为5.0,点击“自动进”。至马达自动停止。“扫描范围”约为1微米,然后单击“扫描”。点击“调色板适应”以便得到合适的图象对比度。调整扫描角度和扫描速度,同时也可微调面板上的“积分”旋钮(反馈速度)。
手动进针。首先仔细观察样品表面位置并找到镜像小红灯,此时可在样品表面上看到在镜像红灯背景下的镜像针尖。
自动进针。在计算机控制主接口上,单击“马达高级控制”菜单,再在马达高级控制面板(A)中单击“连续进”,并密切注意观察屏上显示进针情况,待“己进入隧道区马达停止连续进”的提示框出现后,再点击“确定”,此时红线应在-50~+100V之间。然后进行单步操作,即单击马达高级控制面板(A)中的“单步进”,使红线最后调节于中间位置时停止操作,进针结束。最后关闭“马达高级控制面板(A)”图框。
光栅样品的扫描。
A、“扫描控制面板”框中:设置“扫描范囲”为最大;“X偏置”和“Y偏置”为O;设置“旋转角度”为O;“扫描速率”为1Hz左右。
B、在“反馈控制面板”框中:设置“比例增益”为5.0000;“积分增益”为18.0000;设置“设置点”(即隧道电流)为0.500nA;“偏压”为50mV左右;而“反馈循环”为“使能”状态。
C.在“高度控制面板”框中:设置“显示模式”为图像模式;“实时校正模式”为线平均校正;“显示范囲”置于150nm;并设置“显示中心点”为0.00V。
扫描结束后一定要将针尖退回!“马达控制”用“自动退”,然后关掉马达和控制箱。五.图象处理
(1)平滑处理:将像素与周边像素作加权平均。
(2)斜面校正:选择斜面的一个顶点,以该顶点为基点,线形增加该图象的所有像数值,可多次操作。
(3)傅立叶变换:对当前图象作FFT滤波,此变换对图象的周期性很敏感,在作原子图象扫描时很有用。
(4)边缘增强:对当前图象作边缘增强,使图象具有立体浮雕感。
(5)横切面分析
六。思考和分析。
1. 阐述恒高模式和恒流模式的基本工作原理。
a.恒流模式,如图3(a),利用压电陶瓷控制针尖在样品表面x-y方向扫描,而z方向的反馈回路控制隧道电流的恒定,当样品表面凸起时,针尖就会向后退,以保持隧道电流的值不变,当样品表面凹进时,反馈系统将使得针尖向前移动,则探针在垂直于样品方向上高低的变化就反映出了样品表面的起伏。将针尖在样品表面扫描时运动的轨迹记录并显示出来,就得到了样品表面态密度的分布或原子排列的图象。这种工作模式可用于观察表面形貌起伏较大的样品,且可通过加在z方向的驱动电压值推算表面起伏高度的数值。恒流模式是一种常用的工作模式,在这种工作模式中,要注意正确选择反馈回路的时间常数和扫描频率。
图3 扫描隧道显微镜的两种工作模式
b.恒高模式,如图3(b),针尖的x-y方向仍起着扫描的作用,而z方向则保持绝对高度不变,由于针尖与样品表面的局域高度会随时发生变化,因而隧道电流的大小也会随之明显变化,通过记录扫描过程中隧道电流的变化亦可得到表面态密度的分布。横高模式的特点是扫描速度快,能够减少噪音和热漂移对信号的影响,实现表面形貌的实时显示,但这种模式要求样品表面相当平坦,样品表面的起伏一般不大于1nm,否则探针容易与样品相撞。
2.通过对STM的实际操作,请说明和分析不同的扫描速度对样品表面形貌图的影响情况。
图片会不清晰,出现一些条纹,会影响的但图片的处理。3.样品偏压和隧道电流的不同设置对实验结果有何影响?
在扫描时,扫描的图片的真实度-与样品的表面实际情况,影响到实验结果的精确度。
4.用STM技术获得的样品表面形貌图实质上它表示的内容是什么?
样品表面原子分布的高低程度。
第三篇:STM车间实习总结二
STM车间实习总结
(二)在本周内,我继续提升自己在相关元件、设备上的认识,并且提升了自己的动手能力,进行了手工印制PCB板、手工贴件、GBA元件维修、焊接技术提升以及PCB板维修等工作,相关内容主要如下。
一、贴片元件的基本认识
1.SMT涉及的元件种类繁多、形态各异,大致可以分为标准元件和IC元件。
标准元件主要是指在生产中应用较多的元件,比如电阻(R)、排阻(RA 或 RN)、电感(L)、陶瓷电容(C)、排容(CP)、钽质电容(C)、二极管(D)、晶体管(Q)等等。标准元件分公制和英制两种标示,公制1206、0805、0603、0402对应英制3216、2125(2.0mm、1.25mm)、1608、1005。前面两位数字表示长度,后面两位数字表示宽度。厚度由于元件不同,以实际生产测量为准。
IC即集成电路块,传统 IC 有 SOT、SOJ、QFP、PLCC 等等,现在比较新型的 IC 有 BGA、CSP、FLIP CHIP 等等,它们是根据元件脚(PIN)进行各种分类。
(1)SOT(Small outline Transistor):零件两面有脚,脚向外张开(一般称为L型引脚).(2)SOJ(Small outline J-lead Package):零件两面有脚,脚向零件底部弯曲(J 型引脚)。
(3)QFP(Quad Flat Package):零件四边有脚,零件脚向外张开。
(4)PLCC(Plastic Leadless Chip Carrier):零件四边有脚,零件脚向零件底部弯曲。
(5)BGA(Ball Grid Array):零件表面无脚,其脚成球状矩阵排列于零件底部。
(6)CSP(CHIP SCAL PACKAGE):芯片级封装。
我们一般对IC的称呼采用“类型+PIN 脚数”的格式,如:SOP14PIN、SOP16PIN、SOJ20PIN、QFP100PIN、PLCC44PIN 等等。
2.SMT元件又可以分为有极性元件和无极性元件。
无极性元件:电阻、电容、排阻、排容、电感;
有极性元件:二极管、钽质电容、IC。
其中二极管有多种类别和形态,常见的有玻璃管二极管(Glass tube diode)、绿色发光二极管(Green LED)、磁柱二极管(Cylinder Diode)等等。
(1)Glass tube diode:红色玻璃管一端为正极(黑色一端为负极)
(2)Green LED:一般在零件表面用黑点或在零件背面用正三角形作记号,零件表面黑点一端为正极(有黑色一端为负极);若在背面作标示,则正三角形所指方向为负极。
(3)Cylinder Diode: 有白色横线一端为负极.钽质电容:零件表面标有白色横线一端为正极。
IC:IC 类零件一般是在零件面的一个角标注一个向下凹的小圆点,或在一端标示一小缺口来表示其极性。
3.0欧电阻的作用。0欧电阻相当于很窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。在工业生产中应用非常广泛,作用主要可以分为:
①作为跳线使用。这样既美观,安装也方便。
②在数模混合电路中,用作单点接地(指保护接地、工作接地、直流接地在设备上相互分开,各自成为独立系统。)
③作保险丝用。由于PCB上走线的熔断电流较大,如果发生短路过流等故障时,很难熔断,可能会带来更大的事故。由于0欧电阻电流承受能力比较弱(其实0欧电阻也是有一定的电阻的,只是很小而已),过流时就先将0欧电阻熔断了,从而将电路断开,防止了更大事故的发生。
④为调试预留的位置。在匹配电路参数不确定的时候,以0欧电阻代替,实际调试的时候,确定参数,再以具体数值的元件代替。
⑤在高频信号下,充当电感或电容。
⑥想测某部分电路的耗电流的时候,可以去掉0欧电阻,接上电流表,这样方便测耗电流。
二、动手能力操作
1.手工印刷PCB板
SMT车间一般会根据实际情况,有时候会采取手工印刷PCB板。一般综合车间生产效率等实际情况后,选择印制的PCB板数量较少,元件贴装较少的一类板进行手工印刷。首先找一块透明树胶薄膜,用双面胶将需要印刷的PCB板贴在薄膜背面。用小刀将需要印刷的地方刻出,做出简易的印制模具。再将薄膜用双面胶固定在木板上,用卡子固定住PCB板的位置,在薄膜上放上锡膏即可开始印刷。每张PCB板印刷后须检查,看锡膏是否印刷在焊盘上,或者红胶是否在焊盘中间。如果有漏印,需用酒精擦拭掉锡膏或者红胶重新印刷。
2.BGA元件的维修
BGA是集成电路的一种封装形式,其输入输出端子(包括焊球、焊柱、焊盘等)在元件的底面上按栅格方式排列,所以维修需要专门的工具以及比较繁琐的工序。其原理是热量通过辐射与对流被传递至BGA器件的上表面与PCB的下表面,再通过传导穿过器件体与PCB直接到达焊点。
BGA维修工具:BGA返修台、电铬铁、小刀、小钢网、镊子、画笔(涂助焊膏用)、锡珠(根据BGA型号选择)、吸锡带、酒精、布条。
BGA返修台有有BGA拆除和焊接两个作用,一般包含3个加热系统,其中上和下精确加热目标芯片和线路板的是热风型加热。第3个是一种区域发热体,从底部逐步地加热整个的印制线路板。整个返修台的加热曲线跟回流焊炉比较相似,须根据不同BGA设定严格的加热温度曲线。
维修流程:BGA检测-----BGA拆除-----焊盘清洁、清理-----BGA植球-----BGA贴片-----BGA焊接------BGA检验
① BGA拆除:为了防止维修时PCB局部变形或器件因吸潮而引起的器件炸裂,将PCB板放置于返修台上,调用对应程序对其进行加热,然后取下BGA,这样就避免了由于直接加热,BGA在遭受急速的高温冲击而损坏。
② 焊盘清洁、清理:将BGA焊接面用毛笔均匀的涂抹助焊剂,用烙铁和吸锡带将BGA上的锡渣清除,并用酒精清洗。为保证BGA焊盘不被破坏,清理锡渣时BGA固定在加热板。加热板温度设定在100℃-120℃。清除好后,取下检查看BGA上焊盘是否完好,并测量BGA电源与地是否已经击穿,如已击穿此器件已报废更换新器件,如未击穿即可进下步维修。将已拆下BGA的PCB焊盘,用毛笔均匀的涂抹助焊剂,将吸锡带放置于焊盘上,一手将吸锡带向上提起,一手将烙铁放在吸锡带上,轻压烙铁,将BGA焊盘上残余焊锡融化并吸附到吸锡带上后,再将吸锡线移至其他位置,去吸取其余部分的焊锡,在清除锡渣时,烙铁与吸锡带同时提起,避免由于烙铁先提起后,吸锡带迅速降温而被焊在器件焊盘上,清理时需掌握好速度和力度,烙铁不能再焊盘上停留太久,容易破坏焊盘,也不能太大力的拖动烙铁。清
理、清洁后,焊盘应平整,无拉尖及突起现象。
③ BGA植球:将BGA放入小钢网中,倒入少量锡珠,轻摇模具使锡珠分布均匀,将剩余锡珠倒回瓶中,轻轻取下钢网盖,检查锡珠是否排列整齐,有无多余锡珠和少锡珠的情况,用镊子去除多余锡珠或者轻点上锡珠。然后将植好的BGA放在加热平台上,平台温度设定在205~240℃之间。待锡珠稳固的覆在BGA上后,取下BGA冷却。
④ BGA贴片:在PCB板焊盘上刷上少量助焊膏,不能刷过量,否则在焊接过程中BGA边缘会有气泡,导致BGA位移。用镊子将BGA放在PCB板焊盘处,注意方向。将PCB板放于返修台上,用吸嘴吸起BGA,启动影像对位系统,调整PCB板位置使器件和焊盘的影像重合,放下BGA完成贴放动作。
⑤ BGA焊接:从各设备的焊接BGA程序目录中调用相应程序对BGA进行加热,程序运行完毕,完成器件焊接过程。待单板冷却后取走PCB。
注意操作过程中需密切关注单板焊接情况,若有烧焦、严重变形等异常,需立即停止机器。同一块PCB板最多返修3次,同一个BGA最多返修2次。
⑥ 焊后检查:焊接完成,需要对单板进行检验。重点检验以下事项:
1)目视BGA四周的焊点,看是否有虚焊,连锡,背面冒锡珠等缺陷。
2)检查被焊接器件周围,是否有溅锡、及其它缺陷,检查单板背面是否有CHIP件等被顶针压坏。
3.人工焊接训练
能够对小元件进行焊接,能够处理少焊、虚焊、立碑、反白等情况。
三、SMT车间生产率提升的思考
SMT生产线有多台机器,包括印刷机、贴片机、回流焊等,但是生产线的生产速度主要是由贴片机决定的,因为贴片机是一种需要精密定位和高效配合的机器。我们的生产线包含一台高速贴片机和一台高精度贴片机,前者主要贴装片状元件,而后者主要贴装IC和异型元件。当这两台贴片机完成一个贴装过程的时间相等并且用时最少时,则整条SMT生产线就能发挥出最大生产能力。建议有以下几条:
1.合理分配每台设备的贴装元件数量,尽量使每台设备的贴装时间相等。我们在初次分配每台设备的贴装元件数量时,往往会出现贴装时间差距较大,这就需要根据每台设备的贴装时间,对生产线上所有设备的生产量进行调整,将贴装时间较长的设备上的部分元件移一部分到另一台设备上,以实现时间上的平衡。
2.设备优化。对每台设备的数控程序进行优化,就是使贴片机在生产过程中尽可能达到贴片机的最大工作速度。主要的方法如下:
① 编写程序时,尽可能使吸嘴能同时吸取元件,并且尽量使最多的吸嘴工作。
② 在编写程序时,将同类型元件排在一起,减少拾取元件时换吸嘴的次数,节约贴装时间。
③ 拾取次数较多的供料器应靠近印制板。在雅马哈机器上,因放于相机和PCB板的对角,减少转弯。
④一个贴装循环,应尽量只在F或者R面拾取料,减少移动距离。
3.定期进行业务培训,提升操作员的业务水平,使他们能尽快解决贴装时出现的问题。
4.实施严格有效的管理机制,SMT车间的操作是一个团队的运作,需要员工有集体荣誉感和工作积极性,提升他们对公司的热爱和归属感。
5.SMT设备进行定期检验与保养。
以上就是上周实习的主要内容。
第四篇:EXCEL使用心得
一、让格式自动添加固定的数字
例子:
大家知道,身份证号码的前6位,是省、市、区(县)的代号(如“340505”等),如果持证人是同一区(县)的,输入这样的的身份证号码,可以让“数字”标签帮你减轻输入的工作量:选中需要输入身份证号码的单元格(区域),打开“单元格格式”对话框,进入“数字”标签,在“分类”下面选中“自定义”选项,然后在右侧“类型”下面的方框中输入:“340505”@,确定退出。以后输入身份证号码7位及以后的数字(如“198903040611”)后,系统会自动在前面加上相应的代码,形成完整的身份证号码(如“***611”)。
二.教你使用Excel数组公式
Excel中数组公式非常有用,尤其在不能使用工作表函数直接得到结果时,数组公式显得特别重要,它可建立产生多值或对一组值而不是单个值进行操作的公式。
输入数组公式首先必须选择用来存放结果的单元格区域(可以是一个单元格),在编辑栏输入公式,然后按Ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上花括号“{}”。注意:不要自己键入花括号,否则,Excel认为输入的是一个正文标签。
选取数组公式所占有的全部区域先选中区域中任意一个单元格,然后按下Ctrl+/键即可。编辑或删除数组公式编辑数组公式时,须选取数组区域并且激活编辑栏,公式两边的花括号将消失,然后编辑公式,最后按Ctrl+Shift+Enter键。选取数组公式所占有的全部区域后,按Delete键即可删除数组公式。
数组常量的使用数组公式中还可使用数组常量,但必须自己键入花括号“{}”将数组常量括起来,并且用“,”和“;”分离元素。其中“,”分离不同列的值,“;”分离不同行的值。
使用不在工作表中的数组有时,公式仅占用一个单元格时也需要以数组的方式输入。其具体原则是:一个公式使用了数组,并且这个数组不在工作表上,就应该使用数组的方式输入这个公式。
下面介绍两个使用数组公式的例子。
1.如需分别计算各商品的销售额,可利用数组公式来实现。
单元格F2中的公式为:{=SUM(IF(A2:A11=″商品1″,B2:B11*C2:C11,0))}。这个数组公式创建了一个条件求和,若在A2:A11中出现值“商品1”,则数组公式将B2:B11和C2:C11中与其相对应的值相乘并累加,若是其他值则加零。同时,虽然数组B2:B11和C2:C11均在工作表中,但其相乘的数组B2:B11*C2:C11不在工作表中,因此必须使用数组公式。
2.假设要将A1:A50区域中的所有数值舍入到2位小数位,然后对舍入的数值求和。很自然地就会想到使用公式:=ROUND(A1,2)+ROUND(A2,2)+…+ROUND(A50,2)。
有没有更简捷的算法呢?有。因为数组ROUND(A1:A50,2)并不在工作表中,因此要使用数组的方式输入公式,即:{=SUM(ROUND(A1:A50,2))}。
三、自动更正
1.从工具菜单中选择“自动更正”,打开自动更正对话框。
2.在“替换”框中输入数据,如:“4z”,在“替换为”框中输入数据,如:“枣阳市第四中学”,单击“添加”,再单击 “确定”。
之后,只需在单元格中输入“4z”两字,即会自动更正为“枣阳市第四中学”。
四、在excel工作表中输入计算公式时,如果想让储存格在显示计算结果和计算公式本身之间切换,您会采取什么方式呢?
是不是每次都从“工具”>“选项”>“视图”>“窗口选项”>“公式”来切换呢?有没有更简便的方法呢?
其实,我们可以利用“ Ctrl+` ”键来决定显示或隐藏公式,每按一次就可让储存格在显示计算的结果和计算公式本身之间自由切换。
五、快速录入文本文件中的内容
现在您手边假如有一些以纯文本格式储存的文件,如果此时您需要将这些数据制作成Excel XP的工作表,那该怎么办呢?重新输入一遍,太浪费时间;将菜单上的数据一个个复制到工作表中,同样也费事。这时!您只要在Excel XP中巧妙使用其中的文本文件导入功能,就可以大大减轻需要重新输入或者需要不断复制、粘贴的巨大工作量了。使用该功能时,您只要在Excel XP编辑区中,选定菜单栏中的“数据/获取外部数据/导入文本文件”命令,然后在导入文本会话窗口选择要导入的文本文件,按下“导入”钮以后,程序会弹出一个文本导入向导对话框,您只要按照向导的提示进行操作,就可以把以文本格式的数据转换成工作表的格式了。
六、行列转置
假如A1-A10单元格中有不同的内容,现在需要将这些内容分别排列在A1、B1、C1、D1...J1单元格中,即将原来在同一列中的内容重新排列在一行中。难道要一个一个单元格去复制粘贴吗?完全不用。
首先,选中A1-A10单元格,单击右键,在弹出的菜单中选择“复制”命令;接着单击B1单元格,再单击右键,在弹出的菜单中选择“选择性粘贴”命令,弹出对话框,选择其中的复选项“转置”,点击确定。这时你会看到B1、C1....K1单元格中已有了A1-A10单元格中的内容,将A列选中,在右键菜单中删除,此时行列转换工作就完成了。
七、在Excel2000中设计彩色数字
在你使用Excel2000对一张工作表中的数据进行处理时,有时是不是希望其中某些数据能够有自己特殊的显示格式?比如,现在你有如图的一张Excel工作表,在“总成绩”一栏中,你需要小于120的显示为蓝色,大于120的显示为红色。下述的方法,可以让你的愿望变为现实。该方法是:
1.选中D25的单元格区域。
2.单击“格式”菜单中的“单元格”命令,然后单击“数字”选项卡。
3.单击“分类”列表中的“自定义”选项,在“类型”框中键入“[蓝色][<120];[红色][>=120]”。
4.单击“确定”按钮。
怎么样,Excel按你的要求显示出不同颜色的数字了吧?
最后,对在“类型”框中键入的数字格式代码进行简单地说明,“[蓝色]”是对数据显示颜色的设置,除“红色”、“蓝色”外,还可使用六种颜色,它们是黑色、青色、绿色、洋红、白色、黄色。“[>=120]”是条件设置,可用的条件运算符有:>、<、>=、<=、=、<>。当有多个条件设置时,各条件设置以分号“;”间隔。
八、减少修改EXCEL参数的秘籍
在此处设计好的公式,拿到彼处用时,大部分不会完全合适,往往要修改公式中的参数.特别是函数中引用的单元格区域,往往需要修改.所以这里就以单元格区域为例,介绍一种减少或者是避免参数修改的办法.虽然说不上"万能",但将公式任意粘贴而基本不用修改是确实能办到的.
一个单元格、或者由许多单元格组成的单元格集合都可以作为一个区域,并可以命名一个名字。这许多朋友都知道。但对合理恰当地使用命名区域带来的方便,许多朋友或者是不重视,或者是觉得麻烦而较少使用。不过要实现上面的目标,我建议大家还是尽可能使用命名的区域。其好处如下:
1、直观易记,区域很多时,形式如(B2:M50)的名字既不好记忆,也难以一下子断定意义,反之,使用区域名字,特别是用中文作为区域名字时,能见文知义,大大减轻了记忆负
担。例如,将区域(B2:M50)命名为“三甲物理分”,一见名字就明白意思.
2、如果某一区域需要在多个公式中使用,采用区域命名会很方便。例如函数中需要引用“三甲物理分”这个区域时,可以直接拿它当参数.如果想得到那种一次设计,多次重用的“计算模板”,则更是非将区域命名不可。
3、如果区域的范围需要扩大或缩小,只需要将原来的名字重新命名一下,而原来使用的函数参数不必改动。例如,要统计上面区域中有效数字的个数,用的公式是:=COUNT(三甲物理分)(注意函数括号内的区域名字不用加双引号);当需要把该区域扩大或缩小时,可以先将原有的区域名字“三甲物理分”删除,然后重新选定合适的范围再次用这个名字命名,而所有以“三甲物理分”作参数的函数均不须修改而仍能使用。
乍一看这好像就不错了,其实,这还不算完善.
前已述及,当函数移到别的地方使用时,其参数一般需要修改。比如要用上面的公式计算二乙班物理成绩的有效数字个数时(这里假设你已经将相应区域命名为“二乙物理分”),则函数中用到区域参数又都要修改为“二乙物理分”。可以推知,即使是只修改这一处参数,在处理很多学科时(因为每个班级可能进行多个学科的考试),修改参数的工作量也很大,况且实际计算中往往同时使用多个公式,更导致参数修改的工作量成几倍增加。以某中学三个年级24个教学班为例,假如每个年级考试5个学科,要求计算出每班各个学科的最高分、平均分、整个年级的前百强学生等项目.这些活儿就是让你用上? 命名的法宝,手工修改参数也会磨坏你的手指!
怎样才能减少修改的工作量、甚至做到不修改参数就能用呢?这就得需要在函数内间接引用参数。请往下看
A B C三甲物理分 三乙物理分 三甲语文分AVERAGE(三甲物理分)=AVERAGE(三甲物理分)=AVERAGE(三甲物理分)AVERAGE(INDIRECT(A1))AVERAGE(INDIRECT(B1))AVERAGE(INDIRECT(C1))假设先设计好EXCEL工作表,将准备处理的数据区域都进行命名,并把名字依次输入到表中第一行的各个单元格,类似下表那样.为了对两种方法进行比较,我们先在A2单元格中输入公式:=AVERAGE(三甲物理分),可得出三甲班的物理平均分,结果也正确,缺点就是像上面说的,将公式粘贴在B2、C2单元格中时,括号中的参数并不会自动取出第一行里对应的名字,还需要用手工一一修改!如何让它能"自动"引用正确的参数、即能"自动"引用第一行对应单元格里的文字呢?可以使用函数INDIRECT().
在EXCEL中,函数INDIRECT()的作用比较特殊.其作用介绍如下:例如已知存放在A1单元格中的文字"三甲物理分"是一个区域名字,当用INDIRECT(A1)函数时,可以通过A1单元格获得对"三甲物理分"区域的引用.好!下面我们验证一下:请你在上表中的A3单元格中输入:=AVERAGE(INDIRECT(A1)),从得出的结果看,与A2单元格中使用的公式结果相同.从公式的组成看,多了函数INDIRECT(A1),省去了区域名字!注意,这就是激动人心的关键点了:当你用鼠标拖拽的办法向右边单元格粘贴这个公式后,会发现这些单元格中的公式已经"自动"地引用了相应区域的名字,你连一个参数也不用修改就得出了正确结果!??这不正是实现了我们苦苦追求的目标吗?怎么样,很爽吧?
感谢你有耐心看到这里,下面我再送你一个"秘密武器"
上面介绍的那个有功劳的函数是INDIRECT(),它是解决名字引用的,当要引用的单元格中是数值时,它就不管用了.能引用单元格数值的是另一个函数VALUE()。它的用法是:如果在A2单元格中存放有数字85,那么在A3单元格输入:=VALUE(A2),在A3中也能得到85这个数字。要只是这样的代换显然意义不大,但把它用在公式中后意义就大不一样了。看下表:第二行中的数字是该学科达到“优秀”的分
A B C
三乙物理分 三乙物理分 三甲语文分
80
=COUNTIF(INDIRECT(A1,),“$#@62;=”&VALUE(A2))
DIRECT(B1,),“$#@62;=”&VALUE(B2))=COUNTIF(IN A
=COUNTIF(INDIRECT(C1,),“$#@62;=”&VALUE(C2))
数线,我们的目的是:在第三行中根据该学科的分数线求出该学科达到优秀成绩的人数.由于不同学科划定优秀的分数线一般也不同.要是直接了当的话,在A3中使用公式=COUNTIF((INDIRECT(A1,),“$#@62;=85”)就可以,但这样用到B列又会遇到类似上面的修改参数问题。要也像上面那样能"自动"引用第二行中的分数线该多好啊!别急,把VALUE()函数用上就成了!我们把A3中的公式改成:=COUNTIF(INDIRECT(A1,),“$#@62;=”&VALUE(A2)).请你把这个公式向右面粘贴,可以发现,不用修改任何参数就能"自动"地引用正确的单元格了.
如果你能够熟练应用INDIRECT()和VALUE()这两个函数,再加上区域命名的法宝,会给你带来不小的方便!
至于制作能多次使用的计算"模板",我采用的是很懒也很容易的方法:将上一次用过的EXCEL文件用"另存为"作个备份,然后打开,只将原始数据清去,其他全部保留,就成了一个"模板".这样,只需要输入原始数据,立即会得到结果,免去了输入公式,设计格式等一大堆麻烦.
九、技巧1:给别人看,但不给别人动
辛辛苦苦地设计了一个数据库或者表格,却被别人毛手毛脚地搞乱了,是不是很恼火?如果 是私人文件还好,只要设个密码就可以了,偏偏这是要别人往里面填数据或者是要给大家参考的,往往由于他人的“不小心”,而导致自己要重做整个表格,这种事情不知道大家遇到没有,我可是遇到过,辛苦加班加点用了7天才设计好的表格,因为没做好防护措施,致使....哎,伤心往事,不说也罢!
现在,我教大家一个好办法,让别人只能看,不能动!
为了防止别人无意改动表格的内容(尤其是一些计算公式),我们必须把这些单元格设成“只读”!
把不需要保护的的单元格选定,单击右键,设置单元格,将保护标签中的锁定复选框清除,然后对该工作表设置保护。此时,锁定的单元格是只读的,刚才已被清除锁定复选框的单元则可以正常输入。当然,如果你连某些单元的内容也不想别人看到,在确定这些单元保护标签中的锁定复 选框是选中的情况下,再选择隐藏即可,这样将不显示这些单元其中的内容。但是你必须对工作表或工作簿实施保护后,你的保护和隐藏才有效。要保护工作表,可按以下选择:
[工具]→[保护]→[保护工作表]→选择密码,重复输入相同密码,这样,以后要进入这个工作表,只要输入密码即可。
技巧2:得到偶数的单元格的相加值
因为工作需要,要得到偶数的单元格的值相加之和,以下是具体的要求和思路:
要求:得到A2+A4+A6+A8+A10+A12+A14......之和,假如是少还好办,假如有数十个相加的话就不好办了,怎样才能用一个公式来搞定它呢???
思路:呵呵,我已得到答案了!先用一列来得到当前行的行号,你可在C1输入1,然后向下拖得到每一行的行号,再用一列来判断当前行是否为偶数行,输入公式:"=IF(INT(C1/2)=C1/2,A1,0)",然后再累加C列即可。
函数解析:其中的INT函数为判断C1/2是否为整数,如果C1是偶数C1/2当然是整数了,IF函数判断INT(C1/2)是否为偶数,如是,则取A列值,如果不是,就取0值。
看懂以上公式后,再教你一个更简单的方法:用ROW函数.ROW()可以得到当前行的行号,这样,判断当前行是否为偶数就不用再增加C列了,只要直接输入公式:"=IF(INT(ROW(?)=ROW()/2,A1,0)",向下拖动,累加即可。
技巧3:如何使Excel中数字计算自动四舍五入
目的:要对一个单元格中的数据(利用函数计算得出的)在它本身所在的单元格内进行四舍五入。
//* 假设B1单元格内容为:=if(A1$#@62;5,6234*.05)*//
1.如果B1单元此后不再加入其他运算,只要:
右键单击B1 → 设置单元格格式 → 小数位数调整到2位.或者单击B1,选择快捷菜单上的 "千分格式",再选择快捷菜单上的 "退一位小数位" 即可。
2.如果B1单元此后还要再加入其他运算,只要:
在B1单元,将原有内容加入ROUND函数即可:=round(if(A1$#@62;5,6234*.05),2)
其中,最后一位数"2"代表你想要数据参与计算的结果截止到小数点后两位,如果想要三位,直接改成"3"即可。
以上第一种方法只能达到显示上的四舍五入,当数据再次参与计算时,将不会以四舍五入后的数值参与。第二种方法,当数据再次参与计算时,将以四舍五入后的数值(即其显示在单元格中的数据)参与计算。
技巧4:将键入的阿拉伯数字自动转换成人民币大写金额
在使用EXCEL过程中,在制作财务凭证时经常需要将数字表示为大写的数字金额,可用设置单元格格式的方法来实现:
1.首先鼠标右键单击需要用大写金额显示的单元格。
2.(*假设此单元格金额为123.50元*)→ 设置单元格格式 → 数字 → 自定义 → 在类型框中输入 [DBNum2]0“百”0“拾”0“元”0“角”“整” 即可将选中的单元格中的数字显示为大写金额:(壹百贰拾叁元伍角整)。
(*假设此单元格金额为1234.51元*)→ 设置单元格格式 → 数字 → 自定义 → 在类型框中输入 [DBNum2]0“千”0“百”0“拾”0“元”0“角”0“分”“整” 即可将选中的单元格中的数字显示为大写金额:(壹千贰百叁拾肆元伍角壹分整)。
第五篇:Excle使用心得
EXCEL使用技巧
01、如何在已有的单元格中批量加入一段固定字符?
例如:在单位的人事资料,在excel中输入后,由于上级要求在原来的职称证书的号码全部再加两位,即要在每个人的证书号码前再添上两位数13,如果一个一个改的话实在太麻烦了,那么我们可以用下面的办法,省时又省力:
1)假设证书号在A列,在A列后点击鼠标右键,插入一列,为B列;
2)在B2单元格写入: =“13” & A2 后回车;
3)看到结果为 13xxxxxxxxxxxxx 了吗?鼠标放到B2位置,单元格的下方不是有一个小方点吗,按着鼠标左键往下拖动直到结束。当你放开鼠标左键时就全部都改好了。若是在原证书号后面加13 则在B2单元格中写入:=A2 & “13” 后回车。
02 用IF函数清除EXCEL工作表中的计算出现的0
=IF(K14*M14=0,“",K14*M14)该式所表示的含义为:如果单元格K14与M14内数值的乘积为零,那么存放计算结果的单元格显示为一个空白单元格;反之,单元格K14与M14内数值的乘机为不为零,这两个单元格的数值将被进行乘积运算。
06、在Excel中如何设置加权平均?
加权平均在财务核算和统计工作中经常用到,并不是一项很复杂的计算,关键是要理解加权平均值其实就是总量值(如金额)除以总数量得出的单位平均值,而不是简单的将各个单位值(如单价)平均后得到的那个单位值。在Excel中可设置公式解决(其实就是一个除法算式),分母是各个量值之和,分子是相应的各个数量之和,它的结果就是这些量值的加权平均值。
07、如果在一个Excel文件中含有多个工作表,如何将多个工作表一次设置成同样的页眉和页脚?如何才能一次打印多个工作表?
把鼠标移到工作表的名称处(若你没有特别设置的话,Excel自动设置的名称是“sheet1、sheet2、sheet3.......”),然后点右键,在弹出的菜单中选择“选择全部工作表”的菜单项,这时你的所有操作都是针对全部工作表了,不管是设置页眉和页脚还是打印你工作表。
15、如何快速选取工作表中所有包含公式的单元格?
有时,需要对工作表中所有包含公式的单元格加以保护,或填入与其他单元格不同的颜色,以提醒用户注意不能在有此颜色的区域内输入数据。以下方法可以帮助快速选取所有包含公式的单元格:选择“编辑”“定位”(F5),单击“定位条件”按钮,在“定位条件”对话框中选择“公式”项,按“确定”按钮即可。
16、如何在不同单元格中快速输入同一数内容?
选定单元格区域,输入值,然后按 Ctrl+ Ener键,即可实现在选定的单元格区域中一次性输入相同的值。
17、只记得函数的名称,但记不清函数的参数了,怎么办?
如果你知道所要使用函数的名字,但又记不清它的所有参数格式,那么可以用键盘快捷键把
参数粘贴到编辑栏内。
具体方法是:在编辑栏中输入一个等号其后接函数名,然后按 Ctr+ A键,Excel则自动进入“函数指南——步骤 2之2”。当使用易于记忆的名字且具有很长一串参数的函数时,上述方法显得特别有用。
27、如何快速地将数字作为文本输入?
在输入数字前加一个单引号“’”,可以强制地将数字作为文本输入。
35、如何使单元格中的颜色和底纹不打印出来?
对那些加了保护的单元格,还可以设置颜色和底纹,以便让用户一目了然,从颜色上看出那些单元格加了保护不能修改,从而可增加数据输入时的直观感觉。但却带来了问题,即在黑白打印时如果连颜色和底纹都打出来,表格的可视性就大打折扣。解决办法是:选择“文件”“页面设置”“工作表”,在“打印”栏内选择“单元格单色打印”选项。之后,打印出来的表格就面目如初了。
37、“$”的功用
Excel一般使用相对地址来引用单元格的位置,当把一个含有单元格地址的公式拷贝到一个新的位置,公式中的单元格地址会随着改变。你可以在列号或行号前添加符号 “$”来冻结单元格地址,使之在拷贝时保持固定不变。
38、如何用汉字名称代替单元格地址?
如果你不想使用单元格地址,可以将其定义成一个名字。
定义名字的方法有两种:一种是选定单元格区域后在“名字框”直接输入名字,另一种是选定想要命名的单元格区域,再选择“插入”“名字”“定义”,在“当前工作簿中名字”对话框内键人名字即可。使用名字的公式比使用单元格地址引用的公式更易于记忆和阅读,比如公式“=SUM(实发工资)”显然比用单元格地址简单直观,而且不易出错。
39、如何在公式中快速输入不连续的单元格地址?
在SUM函数中输入比较长的单元格区域字符串很麻烦,尤其是当区域为许多不连续单元格区域组成时。这时可按住Ctrl键,进行不连续区域的选取。区域选定后选择“插入”“名字”“定义”,将此区域命名,如Group1,然后在公式中使用这个区域名,如“=SUM(Group1)”。
42、工作表名称中能含有空格吗?
能。例如,你可以将某工作表命名为“Zhu Meng”。有一点结注意的是,当你在其他工作表中调用该工作表中的数据时,不能使用类似“= Zhu Meng!A2”的公式,否则 Excel将提示错误信息“找不到文件Meng”。解决的方法是,将调用公式改为“='Zhu Mg'!A2”就行了。当然,输入公式时,你最好养成这样的习惯,即在输入“=”号以后,用鼠标单由 Zhu Meng工作表,再输入余下的内容。
46、如何减少重复劳动?
我们在实际应用Excel时,经常遇到有些操作重复应用(如定义上下标等)。为了减少重复劳动,我们可以把一些常用到的操作定义成宏。其方法是:选取“工具”菜单中的“宏”命令,执行“记录新宏”,记录好后按“停止”按钮即可。也可以用VBA编程定义宏。
47、如何快速地批量修改数据?
假如有一份 Excel工作簿,里面有所有职工工资表。现在想将所有职工的补贴增加50(元),当然你可以用公式进行计算,但除此之外还有更简单的批量修改的方法,即使用“选择性粘贴”功能: 首先在某个空白单元格中输入50,选定此单元格,选择“编辑”“复制”。选取想修改的单元格区域,例如从E2到E150。然后选择“编辑”“选择性粘贴”,在“选择性粘贴”对话框“运算”栏中选中“加”运算,按“确定”健即可。最后,要删除开始时在某个空白单元格中输入的50。
48、如何快速删除特定的数据?
假如有一份Excel工作薄,其中有大量的产品单价、数量和金额。如果想将所有数量为0的行删除,首先选定区域(包括标题行),然后选择“数据”“筛选”“自动筛选”。在“数量”列下拉列表中选择“0”,那么将列出所有数量为0的行。此时在所有行都被选中的情况下,选择“编辑”“删除行”,然后按“确定”即可删除所有数量为0的行。最后,取消自动筛选。
49、如何快速删除工作表中的空行?
以下几种方法可以快速删除空行:
方法一:如果行的顺序无关紧要,则可以根据某一列排序,然后可以方便地删掉空行。方法二:如果行的顺序不可改变,你可以先选择“插入”“列”,插入新的一列入在A列中顺序填入整数。然后根据其他任何一列将表中的行排序,使所有空行都集中到表的底部,删去所有空行。最后以A列重新排序,再删去A列,恢复工作表各行原来的顺序。
方法三:使用上例“如何快速删除特定的数据”的方法,只不过在所有列的下拉列表中都选择“空白”。
50、如何使用数组公式?
Excel中数组公式非常有用,它可建立产生多值或对一组值而不是单个值进行操作的公式。要输入数组公式,首先必须选择用来存放结果的单元格区域,在编辑栏输入公式,然后按ctrl+Shift+Enter组合键锁定数组公式,Excel将在公式两边自动加上括号“{}”。不要自己键入花括号,否则,Excel认为输入的是一个正文标签。要编辑或清除数组公式.需选择数组区域并且激活编辑栏,公式两边的括号将消失,然后编辑或清除公式,最后按Ctrl+shift+Enter键。
52、在Excel中用Average函数计算单元格的平均值的,值为0的单元格也包含在内。有没有办法在计算平均值时排除值为0的单元格?
方法一:如果单元格中的值为0,可用上例“0值不显示的方法”将其内容置为空,此时空单元格处理成文本,这样就可以直接用Average函数计算了。
方法二:巧用Countif函数 例如,下面的公式可计算出b2:B10区域中非0单元格的平均值: =sum(b2: b10)/countif(b2: b1o,”<>0")
三、让不同类型数据用不同颜色显示
在工资表中,如果想让大于等于2000元的工资总额以“红色”显示,大于等于1500元的工资总额以“蓝色”显示,低于1000元的工资总额以“棕色”显示,其它以“黑色”显示,我们可以这样设置。
1.在工作簿中,选中“工资总额”所在列,执行“格式→条件格式”命令,打开“条件
格式”对话框。单击第二个方框右侧的下拉按钮,选中“大于或等于”选项,在后面的方框中输入数值“2000”。单击“格式”按钮,打开“单元格格式”对话框,将“字体”的“颜色”设置为“红色”。(在Excle07中 开始----样式---条件格式 下面设置)
2.按“添加”按钮,并仿照上面的操作设置好其它条件(大于等于1500,字体设置为“蓝色”;小于1000,字体设置为“棕色”)。
3.设置完成后,按下“确定”按钮。