第一篇:02小学期实验
任务9 串口通信
发送发送什么字符串接收相同的字符串
#include
#define uint unsigned int #define uchar unsigned char
//定义LED的端口 #define LED1 P1_0 #define LED2 P1_1
//函数声明 void Delay_ms(uint);void initUART(void);void UartSend_String(char *Data,int len);
char Txdata[14];//存放“HELLO WEBEE
”共14个字符串
/****************************************************************
延时函数
****************************************************************/ void Delay_ms(uint n){
uint i,j;
for(i=0;i { for(j=0;j<1774;j++); } } void IO_Init(){ P1DIR = 0x01; LED1 = 1;} /**************************************************************** 串口初始化函数 //P1_0,P1_1 IO方向输出 ****************************************************************/ void InitUART(void){ PERCFG = 0x00; P0SEL = 0x0c; //位置1 P0口 //P0_2,P0_3用作串口(外部设备功能) P2DIR &= ~0XC0; //P0优先作为UART0 U0CSR |= 0x80; U0GCR |= 11; U0BAUD |= 216; //设置为UART方式 //波特率设为115200 UTX0IF = 0; //UART0 TX中断标志初始置位0 } /**************************************************************** 串口发送字符串函数 ****************************************************************/ void UartSend_String(char *Data,int len){ int j; for(j=0;j { U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } } /**************************************************************** 主函数 ****************************************************************/ void main(void){ CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32M CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ IO_Init(); InitUART(); strcpy(Txdata,“HELLO WEBEE ”); //将发送内容copy到Txdata; while(1) { UartSend_String(Txdata,sizeof(“HELLO WEBEE ”));//串口发送数据 Delay_ms(500); //延时 LED1=!LED1; //标志发送状态 } }任务10 键盘打入字符串窗口显示并接受 #include typedef unsigned char uchar;typedef unsigned int uint;#define UART0_RX 1 #define UART0_TX 2 #define SIZE 51 #define char RxBuf;#define char UartState;uchar count;uchar RxData[SIZE];void DelayMS(uint msec){ uint i,j;for(i=0;i if(UartState==UART0_RX) { if(RxBuf!=0) { if((RxBuf!='#')&&(count<50)) RxData[count++]=RxBuf; else { if(count>=50) { count=0; memset(RxData,0,SIZE); } else UartState=UART0_TX; } RxBuf=0; } } if(UartState==UART0_TX) { U0CSR&=~0X40; UartSendString(RxData,count); U0CSR|=0x40; UartState=UART0_RX; count=0; memset(RxData,0,SIZE); } } } ***111111 #include “iocc2530.h” #include char receive[len];uchar counter = 0;uchar RT_flag = 1;void Delay(uint n){ uint i; for(i=0;i for(i=0;i for(i=0;i for(i=0;i for(i=0;i P1SEL = 0X00; P1DIR |= 0x03; LED1 = 1;//红 } void initCLOCK(void){ CLKCONCMD &= ~0X47;while(CLKCONSTA & 0x40);} void initUART(void){ initCLOCK();PERCFG = 0X00;// P0SEL = 0X0C;//p0.2,p0.3设为外设i/0 U0CSR |= 0XC0;//接收器使能,uart模式 U0GCR |= 10;//57600hz U0BAUD |= 216;//57600hz UTX0IF = 0;EA=1;IEN0 |= 0X04;} void Send_String(char *data,int length){ int j;for(j = 0;j U0DBUF = *data++; while(UTX0IF==0); UTX0IF=0;} } void main(){ initUART();LEDinit();char shuoming[]=“输入 A1#--》LED1 ON A2#--》LED1 OFF #--》n”;Send_String(shuoming,sizeof(shuoming));//输入 11#--》LED1 ON 10#--》LED1 OFF n;while(1){ if(counter==4)RT_flag = 3;//判断输入的数据并进行相应操作 if(RT_flag == 3){ U0CSR&=~0X40;if(receive[0]=='A'){ if(receive[1]=='2')LED1=0;else if(receive[1]=='1')LED1=1;} U0CSR |= 0X40;RT_flag = 1;counter = 0;} }} #pragma vector = URX0_VECTOR __interrupt void UART0_ISR(void){ URX0IF=0;if(RT_flag==1){ //接受数据放入receive if((U0DBUF!='#')&&(counter } } } 12222 /**************************************************************************** * 文 件 名: main.c * 作 者: Andy * 修 订: 2013-01-09 * 版 本: 1.0 * 描 述: ADC把芯片温度通过串口发给电脑,部分芯片误差较大需校准 * 手摸芯片温度有明显变化 ****************************************************************************/ #include /**************************************************************************** * 名 称: InitSensor()* 功 能: 温度传感器初始化函数 * 入口参数: 无 * 出口参数: 无 ****************************************************************************/ void InitSensor(void){ DISABLE_ALL_INTERRUPTS(); //关闭所有中断 InitClock(); //设置系统主时钟为 32M TR0=0x01; //设置为1来连接温度传感器到SOC_ADC ATEST=0x01; //使能温度传感 } /**************************************************************************** * 名 称: GetTemperature()* 功 能: 获取温度传感器 AD 值 * 入口参数: 无 * 出口参数: 通过计算返回实际的温度值 ****************************************************************************/ float GetTemperature(void){ uint value; ADCCON3 =(0x3E); //选择1.25V为参考电压;14位分辨率;对片内温度传感器采样 ADCCON1 |= 0x30; //选择ADC的启动模式为手动 ADCCON1 |= 0x40; //启动AD转化 while(!(ADCCON1 & 0x80)); //等待 AD 转换完成 value = ADCL >> 4; //ADCL 寄存器低 2 位无效 value |=(((uint)ADCH)<< 4); return(value-1367.5)/4.5-5;//根据 AD 值,计算出实际的温度,芯片手册有错,温度系数应该是4.5 /℃ //进行温度校正,这里减去5℃(不同芯片根据具体情况校正)} /**************************************************************************** * 程序入口函数 ****************************************************************************/ void main(void){ char i; float AvgTemp; char strTemp[6]; InitUART(); //初始化串口 InitSensor(); //初始化 ADC while(1) { AvgTemp = 0; for(i=0;i<64;i++) { AvgTemp += GetTemperature(); AvgTemp = AvgTemp/2; //每次累加后除 2 } memset(strTemp, 0, 6); sprintf(strTemp,“%.02f”, AvgTemp);//将浮点数转成字符串 UartSendString(strTemp, 5); //通过串口发给电脑显示芯片温度 DelayMS(1000); //延时 } } ***33333 #include #define CL_DQ P1_1=0 #define SET_DQ P1_1=1 #define SET_OUT P1DIR|=0x02 #define SET_IN P1DIR&=~0x02 #define IN_DQ P1_1 uint8 temh,teml;uint8 wendu[8]; uint8 id[8];uint8 flag;uint8 ds18b20_cunzai;#define CLKCONCMD_32MHZ(0)#define OSC_32KHZ 0x00 #define HAL_BOARD_INIT() { uint16 i; SLEEPCMD &= ~(1<<(2)); /* turn on 16MHz RC and 32MHz XOSC */ while(!(SLEEPSTA &(1 <<(6)))); /* wait for 32MHz XOSC stable */ asm(“NOP”); /* chip bug workaround */ for(i=0;i<504;i++)asm(“NOP”); /* Require 63us delay for all revs */ CLKCONCMD =(CLKCONCMD_32MHZ | OSC_32KHZ);/* Select 32MHz XOSC and the source for 32K clock */ while(CLKCONSTA!=(CLKCONCMD_32MHZ | OSC_32KHZ));/* Wait for the change to be effective */ SLEEPCMD |=(1 <<(2)); /* turn off 16MHz RC */ } /************************************************************************************************** * @fn HalLcd_HW_WaitUs * * @brief wait for x us.@ 32MHz MCU clock it takes 32 “nop”s for 1 us delay.* * @param x us.range[0-65536] * * @return None **************************************************************************************************/ void Hal_HW_WaitUs(uint16 microSecs){ while(microSecs--) { /* 1 usecs */ asm(“nop”);asm(“nop”);asm(“nop”); } } void Delay_ms(uint16 k){ uint16 j; while(k--) { for(j=0;j<1000;j++) { asm(“nop”);asm(“nop”);asm(“nop”); } } } void init_1820(void){ SET_OUT;//使P11为输出状态 SET_DQ;//输出1 Hal_HW_WaitUs(7); CL_DQ;//输出0 Hal_HW_WaitUs(530);//拉低一段时间 SET_DQ;//使P11为高,SET_IN;//使P11成为输入状态,等待18b20的存在低脉冲进来 Hal_HW_WaitUs(44);//使P11为1后等待15-60us,这里等待44us if(IN_DQ == 0) ds18b20_cunzai = 1; else ds18b20_cunzai = 0;//等待回复 Hal_HW_WaitUs(150);//回复的低电平在60到240us SET_OUT; SET_DQ;//回到初始DQ=1; } void write_1820(uint16 x) { uint8 m; SET_OUT; for(m=0;m<8;m++) { CL_DQ; Hal_HW_WaitUs(1);//看时序图,至少延时1us,才产生写“时间隙” if(x&(1< //写数据,从低位开始 SET_DQ; else CL_DQ; Hal_HW_WaitUs(40); //15~60us SET_DQ; } SET_DQ; } uint8 read_1820(void) { uint8 temp,k,n; temp=0; for(n=0;n<8;n++) { CL_DQ; Hal_HW_WaitUs(1);//读时隙起始于微处理器将总线置低至少1微秒 SET_DQ; //拉低总线后接着释放总线,让从机18b20能够接管总线,输出有效数据 SET_IN; k=IN_DQ; //读数据,从低位开始 if(k) temp|=(1< else temp&=~(1< Hal_HW_WaitUs(70);//60~120us SET_OUT; } return(temp); } //搜索ID void get_id(){ init_1820(); //resert write_1820(0x33); for(unsigned char ii=0;ii<8;ii++) { id[ii]=read_1820(); } } void read_data(void){ uint8 a,b,c; init_1820();//复位18b20 write_1820(0xcc); // 发出转换命令 搜索器件 write_1820(0x44); //启动 Hal_HW_WaitUs(2000); init_1820(); write_1820(0xcc); write_1820(0xbe); teml=read_1820();//读数据 temh=read_1820(); if(temh&0x80)//判断正负 { flag=1; c=0; c=c|temh; c=c&0x00ff; c=c<<8; a=c; a=c|teml; a=(a^0xffff);//异或 a=a+1;//取反加1 teml=a&0x0f; temh=a>>4; } else { flag=0; //为正 a=temh<<4; a+=(teml&0xf0)>>4;//得到高位的值 b=teml&0x0f; temh=a; teml=b&0x00ff; } } /****************************************************************************** * @fn myApp_ReadTemperature * * @brief Reports temperature sensor reading * * @param * * @return ******************************************************************************/ uint8 myApp_ReadTemperature(void){ uint16 num; //uint8 P read_data(); // 读取温度 num=teml*625; //小数部分的取值每位代表0.0625(精度) if(flag==1) //判断正负温度 { wendu[0]='-'; //+0x2d 为变“-”ASCII码 } else wendu[0]='+'; if(temh/100==0) wendu[1]=' '; else wendu[1]=temh/100+0x30; //+0x30 为变 0~9 ASCII码 if((temh/10%10==0)&&(temh/100==0)) wendu[2]=' '; else wendu[2]=temh/10%10+0x30; wendu[3]=temh%10+0x30; wendu[4]='.'; wendu[5]=num/1000+0x30;//忽略小数点后1位的数 wendu[6]='C';//忽略小数点后1位的数 wendu[7]=0;//结束符 return wendu[0];} /**************************************************************************** * 名 称: InitUart()* 功 能: 串口初始化函数 * 入口参数: 无 * 出口参数: 无 ****************************************************************************/ void InitUart(){ PERCFG = 0x00; //位置1 P0口 P0SEL = 0x0c; //P0用作串口 P2DIR &= ~0xc0; //P0优先作为UART0 U0CSR |= 0x80; //串口设置为UART方式 U0GCR |= 11; U0BAUD |= 216; //波特率设为115200 U0CSR |= 0x40; //UART接收器使能 UTX0IF = 0; //UART0 TX中断标志初始置位0 } /**************************************************************************** * 名 称: UartSendString()* 功 能: 串口发送函数 * 入口参数: Data:发送缓冲区 len:发送长度 * 出口参数: 无 ****************************************************************************/ void UartSendString(char *Data, int len){ uint8 i; for(i=0;i { U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } } void main(void){ HAL_BOARD_INIT(); HalLcd_HW_Init(); InitUart(); //UartSendString(“ds18b20:”, 8); while(1) { myApp_ReadTemperature(); HalLcd_HW_WriteLine(1,(char*)wendu); UartSendString((char*)wendu, 7); Delay_ms(1000); UartSendString(“n”, 1); } } 烟雾 #include “ioCC2530.h” #include “string.h” typedef signed short int16;typedef unsigned short uint16;typedef unsigned char uchar;typedef unsigned int uint; char A3[4]; //存储发送字符串 uint16 A1; uint16 A2(void); /**************************************************************************** * 名 称: InitUart()* 功 能: 串口初始化函数 * 入口参数: 无 * 出口参数: 无 ****************************************************************************/ void InitUart(void){ PERCFG = 0x00; //外设控制寄存器 USART 0的IO位置:0为P0口位置1 P0SEL = 0x0c; //P0_2,P0_3用作串口(外设功能) P2DIR &= ~0XC0; //P0优先作为UART0 U0CSR |= 0x80; //设置为UART方式 U0GCR |= 11; U0BAUD |= 216; //波特率设为115200 UTX0IF = 0; //UART0 TX中断标志初始置位0 } /**************************************************************************** * 名 称: UartSendString()* 功 能: 串口发送函数 * 入口参数: Data:发送缓冲区 len:发送长度 * 出口参数: 无 ****************************************************************************/ void UartSendString(char *Data, int len){ uint i; for(i=0;i { U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } } /**************************************************************************** * 名 称: DelayMS()* 功 能: 以毫秒为单位延时 16M时约为535,32M时要调整,系统时钟不修改默认为16M * 入口参数: msec 延时参数,值越大延时越久 * 出口参数: 无 ****************************************************************************/ void DelayMS(uint msec){ uint i,j; for(i=0;i for(j=0;j<1070;j++);} /****************************************************************************** * @fn main * * @brief * Main function of application example.* * Parameters: * * @param void * * @return void * ******************************************************************************/ void main(void){ CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32M CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ InitUart(); //调置串口相关寄存器 while(1) { A1 = A2(); /*上面一条语句是读取烟雾传感器引脚上的ad转换值,并没有换算成能表示烟雾浓度的值 主要是示意大家如何使用2530芯片的AD功能*/ A3[0] = A1 / 1000 + 48; A3[1] = A1 / 100%10 + 48; A3[2] = A1 / 10%10 + 48; A3[3] = A1 % 10 + 48; /*以上三句,是吧读取到的数值转换成字符,供串口函数使用*/ UartSendString(A3, 4);//想串口助手送出数据,波特率是115200 DelayMS(1000);//延时函数,如果没此函数,读取时间太短,向串口送数据太快了 UartSendString(“n”, 1); } } uint16 A2(void){ uint16 reading = 0; /* 启动低功耗 */ ADCCFG |= 0x80; /* AIN7 p0.7为单端输入 AVDD5 参考电压为VDD5V */ ADCCON3 = 0x87; /* 等待转换完成 */ while(!(ADCCON1 & 0x80)); /* 关闭低功耗 */ ADCCFG &= ~0x80; /* Read the result */ reading = ADCH; reading |=(int16)(ADCH << 8); reading |= ADCL; return(reading);} 人体 #include “ioCC2530.h” // 申明该文件中用到的头文件 void main(void){ P0DIR &= ~0x20; P1DIR |= 0x13; P1_0 = 0;//原来可以直接写,不用定义LED P1_1 = 0; P1_4 = 0; P0_1 = 0; while(1) { if(P0_5 == 1) P1_0 = 1; if(P0_5 == 0) P1_0 = 0; } } // end of main(光敏 /****************************************************************************** 光敏电阻,使用P01。需要吧P01跳冒拔掉,进行实验,当吧P01跳冒拔去的时候,led4就与P01断开了,那么led4就是一直是微亮的了。 ******************************************************************************/ #include “ioCC2530.h” #include “string.h” typedef signed short int16;typedef unsigned short uint16;typedef unsigned char uchar;typedef unsigned int uint; char TxData[2]; //存储发送字符串 uint16 LightLevel; uint16 myApp_ReadLightLevel(void); /**************************************************************************** * 名 称: InitUart()* 功 能: 串口初始化函数 * 入口参数: 无 * 出口参数: 无 ****************************************************************************/ void InitUart(void){ PERCFG = 0x00; //外设控制寄存器 USART 0的IO位置:0为P0口位置1 P0SEL = 0x0c; //P0_2,P0_3用作串口(外设功能) P2DIR &= ~0XC0; //P0优先作为UART0 U0CSR |= 0x80; //设置为UART方式 U0GCR |= 11; U0BAUD |= 216; //波特率设为115200 UTX0IF = 0; //UART0 TX中断标志初始置位0 } /**************************************************************************** * 名 称: UartSendString()* 功 能: 串口发送函数 * 入口参数: Data:发送缓冲区 len:发送长度 * 出口参数: 无 ****************************************************************************/ void UartSendString(char *Data, int len){ uint i; for(i=0;i { U0DBUF = *Data++; while(UTX0IF == 0); UTX0IF = 0; } } /**************************************************************************** * 名 称: DelayMS()* 功 能: 以毫秒为单位延时 16M时约为535,32M时要调整,系统时钟不修改默认为16M * 入口参数: msec 延时参数,值越大延时越久 * 出口参数: 无 ****************************************************************************/ void DelayMS(uint msec){ uint i,j; for(i=0;i for(j=0;j<1070;j++);} /****************************************************************************** * @fn main * * @brief * Main function of application example.* * Parameters: * * @param void * * @return void * ******************************************************************************/ void main(void){ CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定为32M CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ InitUart(); //调置串口相关寄存器 while(1) { LightLevel = myApp_ReadLightLevel(); /*上面一条语句是读取光敏电阻引脚上的ad转换值,并没有换算成能表示光强强度的值 主要是示意大家如何使用2530芯片的AD功能*/ TxData[0] = LightLevel / 10 + '0'; TxData[1] = LightLevel % 10 + '0'; /*以上两句,是吧读取到的数值转换成字符,供串口函数使用*/ UartSendString(TxData, 2);//想串口助手送出数据,波特率是115200 DelayMS(1000);//延时函数,如果没此函数,读取时间太短,向串口送数据太快了 } } uint16 myApp_ReadLightLevel(void){ uint16 reading = 0; /* Enable channel */ ADCCFG |= 0x40; /* writing to this register starts the extra conversion */ ADCCON3 = 0x86; /* Wait for the conversion to be done */ while(!(ADCCON1 & 0x80)); /* Disable channel after done conversion */ ADCCFG &=(0x40 ^ 0xFF); /* Read the result */ reading = ADCH; reading |=(int16)(ADCH << 8); reading >>= 8; return(reading);} 继电器 /**************************************************************************** * 文 件 名: main.c * 作 者: Andy * 修 订: 2013-01-10 * 版 本: 1.0 * 描 述: 继电器接开发板P9座子上,使用P0.5口控制继电器的信息端,* 高电平继电器断开;低电平继电器吸合,并且继电器吸合指示灯亮 ****************************************************************************/ #include typedef unsigned char uchar;typedef unsigned int uint; #define DATA_PIN P1_3 //定义P0.5定义为输入口 /**************************************************************************** * 名 称: DelayMS()* 功 能: 以毫秒为单位延时 16M时约为535,系统时钟不修改默认为16M * 入口参数: msec 延时参数,值越大,延时越久 * 出口参数: 无 ****************************************************************************/ void DelayMS(uint msec){ uint i,j; for(i=0;i for(j=0;j<535;j++);} void main(void){ P1DIR |= 0x08; //P13定义为输出口 HalLcd_HW_Init();//初始化LCD HalLcd_HW_WriteLine(1,“nanjing gebi dianzi”); while(1) //死循环,继电器间隔3秒开关一次 { DATA_PIN = 1; //继电器断开 HalLcd_HW_WriteLine(2,“1”); DelayMS(3000); DATA_PIN = 0; //继电器吸合 HalLcd_HW_WriteLine(2,“0”); DelayMS(3000); } } 小学期实验心得体会 为期一个月的小学期实验已经结束了,在这一个月的学习中,我不仅学习到了专业知识,更重要的是收获了经验与体会,这些使我一生受用不尽。 开展小学期实验的目的在于加深我门对所学知识的理解,进一步了解我们所学的专业,系统的将我们三年所学的知识连贯起来,应用在实践当中,因此,本实验与我们以往所做的实验大不相同。我们从实验设计,实验方法,实验操作,实验结果验证,数据处理都要自己完成。由于以前我们做的都是验证性实验,没有做过设计性实验,一开始有些无从下手。接下来的两天,我们都在查资料,设计实验方案。通过这次实验,我学到了很多;同时也同时也敬佩那些研究者,因为通过这次设计性实验,我清楚的明白一项研究的成功不会像我们这样简单的一次实验就行了的,要经过几百次、几千次甚至无数次的实验,让我知道什么叫做“屡败屡战”、“坚持不懈”、“永不放弃”等词。没有想到,文献上短短一面的实验方法与操作步骤,我们就尝试了许多次。明白了一个试验的成功有很多影响因素。我深刻的体会到了科研工作者的辛苦与探索精神。从这次的小学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。 实验过程中,不仅培养我们独立思考问题的能力,还锻炼了我们团队合作的能力,与队友的合作是一件快乐的事情,只有彼此都付出,彼此都努力维护才能将实验做的更加完美。而团队合作也是当今社会最提倡的。 在实验过程中,我发现了自己很多不足。首先,查阅文献的能力有待提高。在查找文献的时候,会发现网上太多繁杂的信息,不知道该从何下手,没有了解一些常用的药学文献搜素引擎,没有掌握文献搜索的要领,而导致花了很长时间却没有查到所需要的信息。在实验过程中,查阅文献很重要。在我们做药物化学时,就因为查阅文献不到位,导致第一次实验的失败。在以后的工作学习中,我会记住这次教训,做事前认真做好准备工作,这样才不至于事到临头手忙脚乱。要认真对待每一件工作。学会了多学多问,学会他人技能。学问学问,无问不成学。知识和经验的收获可以说与勤学好问是成正比的,要记住知识总是垂青那些善于提问的人。要善于思考,真正消化知识。由知到识,永远不是那么简单的事,当你真正学会去思考时,他人的知识才能变成你自己的东西。前人铺路,后人修路。墨守陈规永远不会有新的建树,前人的道路固然重要,但是学会另辟蹊径更为重。学会独立思考,独立实验,但要记住与他人的交流也是非常重要的,实验和实验事永远不是你自己的。实事求是做实验。不骗自己更不要骗他人。认真仔细地做好实验纪录。不要当你真正用到它时才知它的重要所在。实验完成后要认真思考,总结失败的原因,吸取经验教训。 从这次试验中我得出以下几点思考:①探索性实验是一次很好的学习机会,我们从中学到了多种操作技能和实验方法,接近“科研”,让我们亲身体会到了实验的艰辛和快乐,提高了学习兴趣,学到了写论文、做实验的全过程,这是理论课不可比拟的。②探索性实验教学不仅让学生学到了很多知识,而且锻炼了动手能力,增进了同学之间的团结协作。由以往被动做实验转为现在的主动。③大学中的教学应发展学生的动手和思考能力,只做那些课本上的实验不利于拓展学生的思想。只有真正去思考这个实验怎么做,怎么才能真正学到知识,而且经过自己思考、动手,最后取得成果的开心是无可比拟的。 科学小实验 今天,我做了一次小小的科学实验一一使报纸吸附在直尺上。开始了!我将直尺放在头发上,磨了磨,立刻直尺发出了“吱吱”的声音。我将报纸撕成了一小块一小块的,将直尺发在纸屑上,顿时,直尺就好像是一块超级磁铁,将报纸屑吸了起来,我大叫一声:“我成功了!”我兴奋地脸都红了。我停住呼吸,生怕它会出一点什么故障。我将它向上抬起,1cm,2cm。。。突然,报纸掉了下去,难道是吸力不够?我疑惑地摇了摇头,我使出吃奶的力气,用两只手在头上使劲的吸着,一下,两下。我迅速地在报纸上吸了起来,顿时,报纸像是受到了什么的吸引,慢慢地向上悬浮,这次我有了经验,一句话也不说,一个动作也不做。慢慢将它提起来,yeah!这次成功了!我将报纸成功悬浮了起来。做完了实验,我突然想起了一件事:为什么他能悬浮呢?我特地上网,查询了一下,得到了结果:用摩擦的方法使两个不同的物体带电的现象,叫摩擦起电(或两种不同的物体相互摩擦后,一种物体带正电,另一种物体带负电的现象)。摩擦起电是电子由一个物体转移到另一个物体的结果。因此原来不带电的两个物体摩擦起电时,它们所带的电量在数值上必然相等。摩擦过的物体具有吸引轻小物体的现象。 这次试验,让我懂得了许多。 何泽 初中物理利用自主小实验进行预习的实践研究 上海市崇明县新民中学陈 亮邮编:202156 【摘要】传统的预习模式已不能激发现在中学生的学习兴趣,也不适应新课改下的教学要求。利用自主小实验进行初中物理预习的实践研究,主要是针对目前初中学生对物理预习淡化的现状而寻求的一种新的预习物理的模式。以寻找更好的激发学生学习物理的兴趣,提高学生的各方面能力的有效方法。本文从利用自主小实验进行预习与传统预习的区别,利用自主小实验进行预习的形式和利用自主小实验进行预习的效果等方面进行了论述。 【关键词】自主小实验初中物理预习 古人云:“凡事预则立,不预则废”。教师讲课要备课,学生上课更要备学,这也就是预习。预习是求知过程的一个良好开端,是自觉运用所学知识和已有能力,对一个新的认识对象预先进行了解,求疑和思考的主动求知过程。众所周知,学习是由预习、上课、复习、练习等诸多环节组成的。预习是学习过程的起使阶段,对于学好物理非常重要。然而,很多学生在学习过程中,很少对预习这一学习环节引起足够重视。一方面学生自主学习能力不强,主动学习的意识不高,对学习缺少兴趣;其次,教师对课前预习的布置不够重视,绝大多数教师认为预习就是让学生看书本,了解本节要讲的基本内容;再则,稍微有质量一点的预习也就是给出本节学习的重点内容,让学生在预习过程中找出来。这种预习单调而乏味很难激发学生学习物理的兴趣,而新课程改革则更注重激发学生的学习兴趣,学生学好任何一门学科都应该建立在对该学科的学习兴趣上,而物理实验在激发学生学习兴趣上有着独特的优势。利用自主小实验进行预习,就是教师在布置预习的过程中,由教师设计或学生设计,也可师生共同讨论设计一些小实验,学生通过完成这些实验来达到预习目的。实验过程中学生可以自行完成,也可以分组合作完成。实验器材学生可以自行设计制作,也可由学校提供。 一、自主小实验进行预习与传统预习的区别 传统预习主要分为:粗读教材,找出本节与哪些旧知识有联系,并复习这些知识,写出本节的内容提要,找出本节的重点与难点,找出课堂上应解决的重点问题等步骤。对所学知识点有一个初步的了解,其弊端主要是难以激发学生的学习兴趣。前面说过目前初中学生的自主学习能力不强,主动学习的意识不高。对于传统的预习方法,成绩好的学生则把物理预习当成是被动地完成老师布置的任务,走马观花,匆忙完成,成绩差一点的学生干脆看都不看。而且,枯燥的去读教材,不但不能达到预习的目的,反而在新课教学之前就打消了学生的学习兴趣,1为新课教学设置了障碍,这样的预习还不如不预习。 利用自主小实验进行预习,在预习中完成小实验的设计与探究过程不仅有助于提高学生分析问题和解决问题的能力,也给教师在课堂上的精讲奠定了基础,还为学生听课扫除了障碍。把不理解的推导过程,搞不清的实验现象用笔记下,以便在听课时更能注意老师对相关问题的分析,达到最佳的听课效果。这样,学生课堂上的思维活动更具有方向性,牢牢地把握学习的主动权,提高听课效率。 二、自主小实验进行物理预习的形式 1、教师设计式 教师设计实验,学生进行操作和记录实验现象。这类方法主要适用于初二年级刚刚学习物理时,学生对设计实验,实验探究还不是很熟悉或者探究实验设计起来比较困难的情况下。 如:在初二年级刚刚学习质量时,研究质量是物质的一种属性,不随位置、形状和状态的变化而变化。我设计了这样三个小实验: (1)请同学们回去测量一小石块的质量,在院子里测一次,在屋子里面再测一次;(2)请同学们回去测量一块橡皮泥的质量,把它捏成其他形状以后再测一次;(3)请同学们回去测量一碗水的质量,把它放在冰箱里冻成冰以后再测一次。(并且和同学们一起讨论了测量水的质量的方法) 2、学生自行设计式 在课堂中留下一点时间进行预习的布置,教师可以给予一些提示,待问题提出以后,请同学们课后自行设计实验进行探究。这类方法适用于学生对探究实验有了一定的基础,并且实验设计和操作过程相对简单的情况下。 如:在探究音调与哪些因素有关的教学中,我先让同学们完成了学习活动卡中的活动,提出问题:音调的高低除了与发声体的长短有关是否还与其他因素有关呢?请同学们回去自行设计一些实验,仔细观察现象,认真总结结论。(并且给予一些提示) 第二天的课堂上,同学们便拿出了自行设计的实验,有的用芦苇叶制成的大小不同的哨子;有的用长短或粗细不同麦秆;有的干脆就用宽窄或长短不同的纸条等等。还有的用嘴吹大小不同的小瓶。(当然这个实验是很难控制变量的) 3、师生讨论设计式 在课堂中留下一点时间进行预习的布置,教师可以给予一些提示,待问题提出以后,师生共同讨论设计实验,由学生按照设计的实验课后进行探究。这类实验适用于探究过程比较繁琐,或研究的问题是生活中不常见的问题或不容易关注到的问题。 如:探究电流与电压的关系的实验中,由于电子设备的广泛应用,很少有同学会知道老式手电筒中用三节干电池要比用两节干电池,小灯泡发光亮的现象。因此,可以师生共同进行实验设计,并且提供器材由学生自行探究,便很容易得出导体中的电流随导体两端电压的增大而增大的结论。有了这一体验,课堂上教师提示小灯的电阻是随温度的变化而变化的,改用定值电阻,并用电流表电压表进行探究就很容易得出其中的定量关系。 三、自主小实验进行物理预习的效果 为了解学生对物理预习的实际情况,本人在进行该课题研究之前在本班学生中进行了问卷调查。调查项目和结果如下: 1、平时你经常进行课前预习吗?()A、经常B、偶尔C、没有 2、你的预习是()A、老师的要求B、自己的习惯C、家长的要求 3、你觉得预习对学习新课有帮助吗?()A、帮助很大B、一般C、没有什么效果 4、你最经常预习哪一科目()A、语文B、数学C、外语D、物理 5、你认为利用实验来预习物理会()A、很有效果B、想试一试C、没兴趣 而在本课题研究一个学期以后,在本班学生中又对上述项目进行了一次问卷调查,其结果如下: 从调查的结果来看,在以往的课前预习中对理科的预习较少,大多数学生认为物理是一门实验科学,以为只要课堂上认真听讲,看看老师演示一下实验,把实验现象记下来背会它就可以了,没有必要提前预习。这样不愿动脑,长期不加思考和分析地接受一切,就不能充分发挥自身的主动性和积极性。学生对预习物理没有兴趣,空洞的理论知识理解起来比较困难,干脆等老师去讲,没有养成良好自觉的预习习惯。有的学生虽然也预习,但预习时很多学生不善于思考,敷衍了事。对发现的问题不钻研、不思考,不注重预习质量;有时采取的方法不合理,结果在课堂上抓不住重点,学习困难重重,逐渐对预习失去了信心。上海二期课改的物理教材上文本知识描述的内容比较精简,学生在预习中根本不知道看什么。 利用自主小实验进行预习,通过实验结果的神秘感更好的激发了学生预习物理的兴趣;通过师生共同设计实验,大大提高了学生主动学习的参与力度,对学生的发散性思维得以训练和加强,而且,加强了预习的针对性;通过亲自动手探究实验、观察记录现象、归纳总结结论,使学生的动手操作、观察发现、归纳总结等各方面的能力得到加强。通过经历实验探究,使学生对概念和规律的形成过程有一个认知的过程,还可以为课堂实验探究起到铺垫的作用。 总之,利用自主小实验进行预习则更容易激发学生的学习兴趣,特别是提高后进生的预习效率。通过实验设计代替文字预习,提高学生预习的执行度;通过自主实验代替枯燥的理论学习,提高学生学习物理的兴趣;通过形象的实验现象代替抽象的理论分析,提高学生接收知识的效率;通过动手促进的动脑,提高学生理解知识的能力,从而更好达到预习的目的。 参考文献: [1]《上海市中学物理课程标准》上海市教育委员会上海教育出版社2004年10月 [2]《自主物理实验》倪闽景刘贵兴周鸿烨上海教育出版社2007年1月 [3]《浅谈初中物理课前预习的有效性》杨锐网络 浅谈家庭小实验在中学化学教学中的作用 《九年义务教育全日制初级中学化学教学大纲(试用)》(以下简称新大纲)指出:“化学是一门以实验为基础的学科。实验教学可以激发学生学习化学的兴趣,帮助学生形成化学概念,获得化学知识和实验技能,培养观察和实验能力,还有助于培养实事求是、严肃认真的科学态度和科学的学习方法。”充分认识实验教学在化学教学中的地位和作用,切实采取措施加强实验教学,是提高化学教学质量的重要环节。中国教育学会化学教学专业委员会理事长张健如老先生在2003年11月召开的全国第八届化学实验教学改革研讨会上做了这样一篇专题讲话《加强实验教学改革 发挥实验教育功能》,在讲话中他强调:“除常规课内化学实验外,贴近生活、贴近社会,激发兴趣,赋有探索的趣味实验、家庭小实验、应用性实验(物质简易检测与化学小工艺实验等)、研究性课题实验等,也值得我们关注 新教材配合教学内容,共设置了13个家庭小实验。教学实践表明,家庭小实验的引入使课堂教学延伸至课外,它对激发学习兴趣、巩固知识技能、培养能力、开发智力起到一定作用。当我第一次向学生布置绪言课的家庭小实验--观察蜡烛色态、构造及点燃时的现象,学生感到很新奇。而第二次布置家庭小实验——用玻璃杯、饭碗和小蜡烛来测定空气中氧气的含量,学生开始产生兴趣,大多数学生在家里动手做了这个实验,有的成功,也有的不成功。第二天到课堂上七嘴八舌询问老师,经过简要解释和指导后,有的同学回家又重复做了这个实验,一旦做成功了,其兴奋之情自不必说,学习化学的兴趣也随之激发出来。后来,每逢做演示实验时,学生往往会问老师:“我自己在家里能不能做?”配合课堂教学内容,我们除了布置学生完成新教材中设计的13个家庭小实验外,还另外补充了十 几个既有浓厚生活气息,又与所学化学知识密切相关,同时学生在家庭中又能够找到材料,独立完成的小实验,作为家庭作业。这些实验按教学进度陆续布置给学生完成。并要求每一位学生准备一个家庭小实验记录本,把所完成的实验项目、日期、观察到的现象、得出的结论与所学知识的联系等详细记录下来,半学期检查一次。多数学生都能达到老师提出的要求。二十几个家庭小实验的开发,不仅丰富了学生课余生活,使学生扩大了视野,培养了动手实验能力和观察分析能力,而且由于它们与课堂教学内容同步,也对知识的理解和巩固起到促进作用。 例如,我把教材铁钉生锈演示实验中的(1)当作家庭小实验,提前一周布置给学生在家里做。到了上铁的性质这节课时,将实验室预先做好的铁钉生锈实验的三支试管展示给学生看,并请他们与自己所做的家庭小实验结果对照,学生很自然就接受了“铁在潮湿的空气中能跟氧气发生化学反应,生成铁锈”这一事实。进而再请学生思考:“一半浸在水中的铁钉,哪一部分锈斑最明显,为什么?”启迪学生对教材上的讨论题“你认为铁在什么条件下最容易生锈?”进行探究,从而对铁生锈的原因和防止铁生锈的方法有较深入的了解。 通过家庭小实验,可以使学生不但在化学学科,还有其他学科的学习中都养成良好的品质和习惯 1、培养科学品质 家庭小实验,可以培养学生一丝不苟、严谨求实、追求真理、敢于创新地科学态度。家庭小实验并不是一帆风顺的,当实验不成功时学生就会去分析失败的原因,改进方法,重新实验,直至成功为止。渐渐地学生具有一种不怕失败,锲而不舍的顽强毅力。在实验过程中,学生能尊重实验事实,以实验事实为依据,进行分析、推理,这是一种科学的实验品质。 2、挖掘思想素材,提高学生政治思想素质 在实验中,教师要充分挖掘这样的素材,适时地对学生进行思想教育和情感熏陶,将知识的传授与素质的培养融于一体。例如,在做“碳酸钠性质实验”时,引导学生阅读“侯氏联合 制碱法”简介,学习我国纯碱工业先驱——— 侯德榜先生放弃国外优厚待遇,毅然回国,献身化工事业,为国争光的感人事迹。在做“石油和煤的性质”实验时,向学生介绍我国是世界上最早利用煤、石油和天然气的国家,并结合改革开放以来,我国化学工业得到突飞猛进的发展,钢 铁、石油、煤炭、化肥、水泥、化纤等产量均位居世界前几位的事例,对学生进行爱国主义教育,激发学生的民族自豪感和报国之情。 3、正确引导,培养学生心理素质 培养学生良好的心理素质是一项长期而艰巨的工作。在实验过程中,教师要善于捕捉学生的心理活动,做到因势利导,循循善诱,排忧解难。首先,要鼓励学生克服依赖心理,倡导独立完成实验,只有亲手做、亲眼看、用脑想,才能获得第一手资料,才能体会成功的喜悦;其次,实验中有些学生有畏难情绪,害怕失败,尤其是对一些有毒或有强烈腐蚀性的实验,更是不敢下手。教师要在实验前讲清实验中应注意的事项,指出只要规范操作,就不会出现危险,以增强学生的自信心,培养其良好的心理素质。 4、以实验用品和实验现象为媒介,培养学生的美学素质 规范、洁净的实验台,晶莹剔透的玻璃仪器,整齐有 序的实验装置,五彩缤纷的溶液,巧夺天工的晶体,千变万化的实验现象,都能唤起学生对美的热爱和对科学的追求。在实验教学中启发学生用废玻璃和饮料瓶等制作实验装置,正确画出实验装置图,观察纪录化学实验现象,分析产生结果的原因,使学生置身于美的气氛中做实验,从而培养学生正确欣赏美和创造美的能力。 5、通过布置家庭小实验激发学生的创造精神 基于时代的要求,教育必须改传统的封闭式为开放式,要把学校与生产、生活联系在一起,把学生带向社会,指导学生自己去设计去操作,形成一种创新的自由,表达和选择创意的自由,培养开拓创新精神。家庭小实验可以使学生在一个心理状态比较宽松的环境中不受时间的限制,反复做,反复观察,直到满意为止。同时由于没有明确给出实验用品、步骤、观察的现象等,这对于培养学生的创新精神以及各种能力都起着重要的作用。伟大的化学家门捷列夫在总结成功的原因时说:“中学时代同学间的讨论在我的一生中留下不可磨灭的印象。”在讲完《测定溶液的PH值》后,学生一方面将其扩展到测定土壤、家庭饮用水,以及雨水的酸碱度,并提出改良的方法;另一方面在教师的启发下,用自己的几根头发,放到不同PH值的溶液里,观察溶液的变化情况。同学之间相互交流,最后得出“选用偏酸性”的洗发剂为宜的结论,通过家庭小实验,极大地诱发了学生获取知识的强烈欲望,从而激发了学生的创造精神。 6、以实验为纽带,培养学生环境意识 环境污染严重威胁着人们的身心健康,保护环境、治理污染是全人类的共同要求。化学因素是导致环境污染的主要因素,化学实验中通过实验装置的设计,避免有害气体的任意挥发,做好生活垃圾的回收和处理,极大的培养了学生的环保意识。如作酸雨的PH值的测定、废旧电池的结构研究、公共汽车中化学成分的测定......,这些对学生形成环保意识,以至于将来工作中注意保护环境有直接的影响。 7、善用实验激趣挖掘实验的动机功能 开展“家庭小实验”激趣:如明矾净水、制肥皂、雨水pH的测量、柠檬电池与青苹果电池的比较、食品中常见元素的测定、对驾车司机是否饮酒的分析检测、人吸入气体与呼出气体的成分对比分析、沼气成分的鉴定、水壶的水垢处理,污渍洗涤、消除变酸米酒的酸味、聚乙烯废旧塑料的裂解、从干土墙的泥土中提取KNO 3、摄影中的化学变化等,使化学实验与生活、生产实际紧密相联,使学生认识化学的应用价值,化学对社会发展的贡献。 教材中明显提出“实验是学习化学、体验化学和探究化学过程的重要途径。日常生活中有很多化学现象,对他们的观察、探究和思索,可以加深我们对化学原理的理解,可以开阔我们的眼界。所以,学习化学不限于书本和实验室。成功的关键在于如何激发自己对于自然现象的兴趣,学习并逐步掌握科学探究的方法和培养良好的科学学习习惯。”第二篇:小学期实验心得体会
第三篇:科学小实验
第四篇:物理小实验
第五篇:家庭小实验