电子工艺实训报告
孔繁尧 计控1401
1系统总体设计
以51单片机为核心,制作一个LCD显示的智能电子钟。
1.1系统功能要求
l 具有年,月,日,时,分,秒等功能;
l 具备年,月,日,时,分,秒校准功能;
1.2方案论证
1.2.1单片机芯片的选择方案和论证
方案一:89C51芯片,采用Flash ROM,内部具有4KB ROM存储空间,能于3V的超低压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损失。
方案二:AT89C52芯片,片内ROM全都Flash ROM;能以3V的超低工作。芯片内部储存器为8KB ROM储存空间,同样具备89C51的功能,且具有在线编程可檫除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
方案三:stm32f103c8t6芯片,该芯片是意法半导体所产生的32为微控制芯片,具有低功耗的特点,其内核是Cortex-M3,63k flash,2.0-3.6V供电和I/0引脚,最高可达到72Mhz,采用3级流水线,处理能力是AT89C52的几十倍,但是成本太高。
1.2.2显示模块选择方案和论证
方案一:数码管显示。数码管具有:低能耗,低损耗,低压,寿命长,耐老化,防晒,防潮,防火,防高低温,对外界环境要求低,易于维护,同时其精度高,称量块,精确可靠,操作简单。数码显示是采用BCD编码显示数字,程序编译容易,资源占用较少。单片机I/O端口资源有限,系统如果用到多个数码管时,需采用动态显示和扩展外部电路。
方案二:液晶屏显示。液晶显示屏具有轻薄短少,低耗电量,无辐射危险,平面直角显示以及摄像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强的特点。
方案三:tft液晶显示,tft液晶价格昂贵,具有16为数据输入引脚,对于32单片机操作已是不宜,8为单片机更是给写程序带来了更大的困难,而且反应速度较慢,还占用大量的I/0口。
1.2.3时钟芯片的选择方案和论证
方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年,月,日,星期,时,分,秒计数。采用此种方案虽然减少芯片使用,节约成本,但是,实现的时间误差较大。
方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片 ,可自动对秒,分,时,日,周,月,年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作压2.5V~5.5V范围内,2.5V时耗小于300mA。
终上所述,根据实际条件,本次电子钟实训选择STC90C51单片机芯片,LCD1602、DS1302时钟芯片。
2系统硬件电路设计
2.1电子钟结构框架图
2. 2电子钟PROTEUS仿真电路
本电路是由AT89C51单片机作为控制核心,能在3V超低点呀工作,AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以度年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部偶一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部分由LCD1602液晶显示器完成,该显示器为工业字符型液晶,能够同时显示16x02即32个字符(16列2行)。
2.4 DS1302时钟采集模块
2.4.1 DS1302芯片介绍
DS1302是美国DALLAS公司推出的一种高性能、低消耗、带RAM的实时时钟芯片,他可以对 年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采取突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31X8的用语临时性存放数据的RAM寄存器。DS1302是DS1201的升级产品,与DS1202兼容,但增加了主电源/后背电压双电源引脚,同时提供了对吼背电源进行涓细电流充电的能力。
2.4.2 DS1302引脚封装
DS1302包含了DIP和SOIC两种封装形式,DS1302引脚功能如下:
l Vcc2:主电源,一般接+5V电源
l Vcc1:辅助电源,一般接3.6V可充电电源
DS1302的引脚排列,其中Vcc为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当VCC2大于VCC1+02V,Vcc2给DS1302供电。当Vcc1时,DS1302由VCC1供电。
l X1和X2:晶振引脚,接32.768Khz晶振,通常该引脚上还接补偿电容
l GND:电源地,接主电源及辅助电源的地端
l SCLK:串行时钟输入端
l I/0:数据I/0端
I/0为串行数据输入输出端(双向)
l RST:复位输入端
RST是复位/片选先,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列哦送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平是,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据的传送,I/0引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在你SCLK为低电平时,才能将RST置为高电平。
2.4.3 DS1302内部结构
DS302D 的内部结构图如下所示:
它包括输入移位寄存器,控制逻辑,晶振,实时时钟和31*8RAM等。
·DS1302控制字
DS1302的控制字如下图所示:控制字节的高有效位(位7)必须是逻辑1 ,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
·数据的输入输出
在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位 的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。
·DS1302内部寄存器
DS1302有12个寄存器,其中有7个寄存器与日历,时钟相关,存放的数据为BCD形式,其日历,时间寄存器及其控制字如下图所示:
此外,DS1302还有年份寄存器,控制寄存器,充电寄存器,时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为COH-FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写),FFH(读)。
2.4.4 DS1302与单片机电路连接
2.5 LCD1602液晶显示模块
2.5.1 LCD1602 液晶模块介绍
字符型液晶显示模块由字符型液晶显示屏(LCD).控制驱动主电路HD44780及其扩展驱动电路HD44100或其兼容的IC,少量阻,容元件,结构件等装配在PCB板上而成。
1) LCD液晶 显示模块基本特点
l 液晶显示屏是以若干个5*8或5*11点阵组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。
l 主控制驱动电路为HD44780 (HITACHI)及其他公司全兼容电路,如SED1278 (SEIKOEPSON), KS0066 (SAMSUNG), NJU6480 (NERJAPANRADIO).
l 具有字符发生器ROM可显示192种字符(160个5*7点阵字符和32个5*10点阵字符)。
l 具有64个字节的自定义字符RAM,可自定义8个5*8点阵字符或4个5*11点阵字符。
l 具有80个字节的RAM.
l 标准的接口特性,适配M6800系列MPU的操作时序。
l 模块结构紧凑,轻巧,装配容易
l 单+5v电源供电
l 低功耗,长寿命,高可靠性。
2.5.2 LCD1602 液晶模块引脚说明
LCD1602是字符式液晶显示器,该液晶显示器可以显示两行字符,每行16个字符,显示容量为16*2字符,带有背光源,采用时分割驱动的形式,并行接口,可与单片机直接相连,其引脚如下:
2.5.3 HD44780控制电路
HD44780是用低功耗CMOS技术制造的大规模点阵LCD控制器,具有简单而功能较强的指令集,可实现字符移动,闪烁等功能,与MCU相连能使LCD显示大小英文字母,数字和符号。HD44780控制电路主要由DDRAM, CGROM, IR, DR, BF, AC等大规模集成电路组成。
(1) HD44780控制器内部结构图:
l DDRAM为数据显示RAM,用于存放需要LCD显示的数据,能存储80个,只要将标准的ASCCII码放入DDRAM,内部的控制线路会自动将数据传送到显示器上,并显示该ASCII码对应的字符。
l CGROM为字符产生器ROM,它存储了由8位字符码生成的192个5*7点阵字符和30种5*10点阵字符,8位字符编码和字符的对应关系,即内置字符集。
l CGRAM为字型、字符产生器,可供使用者存储特殊造型的造型码,CGRAM最多可存8个造型码。
l IR为指令寄存器,负责存储MCU要写给LED的指令码,当RS及R/W引脚信号为0切E引脚信号由1变为0时,D0~D7引脚上的数据便会存入到IR寄存器中。
l DR为数据寄存器,负责存储MCU要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM读出的数据。因此,可将DR视为一个数据缓冲区,当RS及R/W引脚信号为1且E引脚信号为1,读取信号;当RS引脚信号为1当R/W引脚信号为0时,存入数据。
l BF 为忙碌信号,当BF为1时,不接受MCU送来的数据或者指令;当BF为0时,接受外部数据或指令,所以在写数据或指令到LCD前,必须查看BF是否为0。
l AC 为地址计数器,负责计数写入/读出CGRAM或DDRAM的数据地址,AC依照MCU对LCD的设置值而自动修改它本身的内容。
(2)显示位与RAM的对应关系(地址映射)
1602内部带有80*8bit的RAM缓冲区,显示位与RAM的对应关系。
(3)指令操作
指令操作包括清屏、回车、输入模式控制、显示开关控制、移位控制、显示模式控制等。
l 清平指令:设置清平指令,使DDRAM的显示内容清零,数据指针AC清零,光标对到右上角的原点。
l 回车指令:设置回车指令,现实回车,数据指针AC清零,使光标和光标所在的字符回到原点,DDRAM单元内容不变。
l 输入模式控制指令:用于设置光标、显示面面移动方向。当数据写入DDRAM(CGRAM)或从DDRAM(CGRAM)读取数据时,N控制AC自动加1或自动减1,若N为1时,AC加1;N为0时,AC减1,S控制显示内容右移或左移,S=1且数据写入DDRAM时,显示将全部右移(N=1)或(N=0)右移,此时光标看上去未动,仅显示内容移动,但读出时现实内容不移动;S=0时,显示把移动,光标左移或右移。
l 显示开关控制指令:用于设置显示、光标、闪烁开关。D为显示控制位,当D=1时,开显示,当D=0时,关显示,此时DDRAM的内容保持不变。C为光标控制位,当C=1时,开光标显示;C=0,关光标显示。B为闪烁控制位,当B=1时,当光标和光标所指的字符共同以1.25HZ速率闪烁;B=0,不闪烁。
l 移动控制指令:使光标或显示画面在没有对DDRAM进行读/写操作是被左移或右移。该指令没执行1次,屏蔽字符与光标即移动1次。在两行显示方式下,光标为闪烁的位置从第1行移到第2行。
l 显示模式控制指令:用于设置数据总线位数、点阵方式。
l GCRAM地址设置指令:用于设置CGRAM地址指针,地址码D5~D7被送入AD,设置此指令后,就可以将用户自己定义的现实字符数据写入CGRAM或从CGRAM中读出。
l DDRAM地址指针设置指令:用于设置两行字符显示的起始地址。
l 忙状态检查指令:是通过读取数据的D7位是否为1来判断,若为1,表示总线正忙碌。
2.5.4LCD液晶与单片机连接电路
3系统软件设计
电子钟系统软件设计主要包括显示子程序、时钟子程序、按键子程序,现将程序流程图演呈现如下:
3.1 系统主程序
3.2显示子程序
显示子程序包括LCD初始化、LCD显示初始化字符格式、LCD显示读取DSS1302时间,其中这三个字程序中分别调用LCD写命令和LCD写数据子程序,程序流程图如下:
3.3时钟子程序
时钟子程序包括设置DS1302初始时间、读时间。其中设置DS1302初始时间程序包括DS1302写入两个字节子程序、读时间程序包括从DS1302读两个字节子程序。
4系统调试
按照电路图在万用板上进行焊接,焊接完毕后将编写好的程序下载在单片机,上电,观察结果,如果没有按要求现实需要进行硬件、软件调试。
4.1硬件调试环境
硬件调试要用到的工具有焊烙铁、万用表电源、示波器。由于本次实训用到的LCD显示模块、DS1302模块等都是集成模块,所以整个系统焊接及调试问题不大。上电后LCD显示屏不亮,首先确定51单片机、LCD显示模块、DS1302模块是否完好,其次是确定电路板上所有电源和地的连接是否正确,再确定单片机最小电路是否存在问题,最后确定每个模块与单片机链接是否正确。
5分析总结
本次实训综合性较强,在已有单片机知识的基础上,需要同学们掌握LCD1602及时间芯片DS1302的工作原理。本次实训是对单片机课程的知识总结和同学们能力提高。
6附录:程序代码清单
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define BCDHEX(X) ((X&0x70)>>4)*10+(X&0x0F)
#define LCD_DATA P0
int nian[]={31,28,31,30,31,30,31,31,30,31,30,31};
int rnian[]={31,29,31,30,31,30,31,31,30,31,30,31};
sbit key0=P3^0;
sbit key1=P3^1;
sbit key2=P3^2;
unsigned char num,flag;
char hour,minute,second,day,month,year;
uchar table[]={0x15,0x14,0x13,0x12,0x10,0x14};
uchar digit[]={"0123456789"};
sbit LCD_EN=P2^7;
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit SCK=P3^6;
sbit SDA=P3^4;
sbit RST=P3^5;
void delay_ms(uint temp)
{
uint x,y;
for(x=temp;x>0;x--)
for(y=110;y>0;y--);
}
void LCD_w_com(uchar com)
{
LCD_RS=0;
LCD_RW=0;
LCD_DATA=com;
delay_ms(5);
LCD_EN=1;
delay_ms(5);
LCD_EN=0;
}
void LCD_w_data(uchar dat)
{
LCD_RS=1;
LCD_RW=0;
LCD_DATA=dat;
delay_ms(5);
LCD_EN=1;
delay_ms(5);
LCD_EN=0;
}
void LCD_int()
{
LCD_EN=0;
LCD_w_com(0x38);
LCD_w_com(0x0c);
LCD_w_com(0x06);
LCD_w_com(0x01);
}
void Write_Ds1302_Byte(unsigned char temp)
{
unsigned char i;
for(i=0;i<8;i++)
{
SCK=0;
SDA=temp&0x01;
temp>>=1;
SCK=1;
}
}
void Write_Ds1302(unsigned char address,unsigned char dat)
{
// RST=0;
// _nop_();
// SCK=0;
// _nop_();
// RST=1;
// _nop_();
// Write_Ds1302_Byte(address);
// Write_Ds1302_Byte(dat);
// RST=0;
// void ds1302_write(uchar com,uchar dat)
uint i;
RST=1;
for(i=0;i<8;i++)
{
SCK=0;
SDA=(dat&(0x01<<i))>>i;
SCK=1;
}
SCK=0;
RST=0;
}
unsigned char Read_Ds1302(unsigned char address)
{
// unsigned chari;temp=0x00;
// RST=0;
// _nop_();
// _nop_();
// SCK=0;
// _nop_();
// _nop_();
// RST=1;
// _nop_();
// _nop_();
// Write_Ds1302_Byte(address);
// for(i=0;i<8;i++)
// {
// if(SDA)
// temp|=0x80;
// SCK=0;
// temp>>=1;
// _nop_();
// _nop_();
// _nop_();
// SCK=1;
// }
// RST=0;
// _nop_();
// _nop_();
// RST=0;
// SCK=0;
// _nop_();
// _nop_();
// _nop_();
// _nop_();
// SCK=1;
// _nop_();
// _nop_();
// SDA=0;
// _nop_();
// _nop_();
// SDA=1;
// _nop_();
// _nop_();
// return (temp);
uchar i;
uchar rdat=0x00,temp;
RST=1;
for(i=0;i<8;i++)
{
SCK=0;
SDA=(address&(0x01<<i))>>i;
SCK=1;
}
for(i=0;i<8;i++)
{
rdat>>=1;
SCK=0;
if(SDA)
rdat|=0x80;
SCK=1;
}
SCK=0;
RST=0;
// tmp=rdat;
// rdat=rdat/16;
// tmp=tmp%16;
return(rdat);
}
void set_time()
{
Write_Ds1302(0x8e,0x00);
Write_Ds1302(0x8c,table[5]);
Write_Ds1302(0x88,table[4]);
Write_Ds1302(0x86,table[3]);
Write_Ds1302(0x84,table[2]);
Write_Ds1302(0x82,table[1]);
Write_Ds1302(0x80,table[0]);
Write_Ds1302(0x8e,0x80);
}
void read_time()
{
year=BCDHEX(Read_Ds1302(0x8d));
month=BCDHEX(Read_Ds1302(0x89));
day=BCDHEX(Read_Ds1302(0x87));
hour=BCDHEX(Read_Ds1302(0x85));
minute=BCDHEX(Read_Ds1302(0x83));
second=BCDHEX(Read_Ds1302(0x81));
}
void display(int a,uchar address)
{
int b,c;
b=a/10;
c=a%10;
LCD_w_com(address);
LCD_w_data(digit[b]);
LCD_w_com(address+1);
LCD_w_data(digit[c]);
}
void displaychar()
{
LCD_w_com(0x80);
LCD_w_data('D');
LCD_w_data('a');
LCD_w_data('t');
LCD_w_data('a');
LCD_w_data(':');
LCD_w_com(0x87);
LCD_w_data('-');
LCD_w_com(0x8a);
LCD_w_data('-');
LCD_w_com(0x80+0x40);
LCD_w_data('T');
LCD_w_data('i');
LCD_w_data('m');
LCD_w_data('e');
LCD_w_data(':');
LCD_w_com(0x87+0x40);
LCD_w_data(':');
LCD_w_com(0x8a+0x40);
LCD_w_data(':');
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan()
{
if(key0==0)
{
delay(10);
if(key0==0)
{
while(!key0);
num++;
switch(num)
{
case 1:Write_Ds1302(0x80,0x80);
flag=1;
LCD_w_com(0x0f);
LCD_w_com(0x80+5);
break;
case 2:LCD_w_com(0x80+8);
break;
case 3:LCD_w_com(0x80+0x0b);
break;
case 4:LCD_w_com(0x80+0x40+5);
break;
case 5:LCD_w_com(0x80+0x40+8);
break;
case 6:LCD_w_com(0x80+0x40+0x0b);
break;
default :num=0;
LCD_w_com(0x0c);
Write_Ds1302(0x80,0x00);
Write_Ds1302(0x80,(second/10*16)+second%10);
Write_Ds1302(0x82,(minute/10*16)+minute%10);
Write_Ds1302(0x84,(hour/10*16)+hour%10);
Write_Ds1302(0x86,(day/10*16)+day%10);
Write_Ds1302(0x88,(month/10*16)+month%10);
Write_Ds1302(0x8c,(year/10*16)+year%10);
Write_Ds1302(0x8e,0x00);
flag=0;
break;
}
}
}
if(num!=0)
{
if(key1==0)
{
delay(20);
if(key1==0)
{
while(!key1);
switch(num)
{
case 1:year++;
if(year==100)year=0;
display(year,0x85);
LCD_w_com(0x80+5);
case 2:month++;
if(month==13)month=1;
display(month,0x88);
LCD_w_com(0x80+8);
break;
case 3:day++;
if(day==(nian[month-1]+1)||day==32)
day=1;
display(day,0x8b);
LCD_w_com(0x80+0x0b);
break;
case 4:hour++;
if(hour==24)hour=0;
display(hour,0x85+0x40);
LCD_w_com(0x80+0x40+5);
break;
case 5:minute++;
if(minute==60)minute=0;
display(minute,0x88+0x40);
LCD_w_com(0x80+0x40+8);
break;
case 6:second++;
if(second==60)second==0;
display(second,0x80+0x40);
LCD_w_com(0x80+0x40+0x0b);
break;
default:break;
}
}
}
if(key2==0)
{
delay(20);
if(key2==0)
{
while(!key2);
switch(num)
{
case 1:year--;
if(year==0)year==99;
display(year,0x85);
LCD_w_com(0x80+5);
break;
case 2: month;
if(month==0)month=12;
display(month,0x88);
LCD_w_com(0x80+8);
break;
case 3: day--;
if(day==0)day=nian[month-1];
display(day,0x8b);
LCD_w_com(0x80+0x0b);
break;
case 4: hour--;
if(hour==-1)hour=23;
display(hour,0x85+0x40);
LCD_w_com(0x80+0x40+5);
break;
case 5: minute--;
if( minute==-1)minute=59;
display(minute,0x88+0x40);
LCD_w_com(0x80+0x40+8);
break;
case 6: second--;
if(second==-1) second=59;
display( second,0x8b+0x40);
LCD_w_com(0x80+0x40+0x0b);
break;
default:break;
}
}
}
}
}
void main()
{
LCD_init();
displaychar();
set_time();
while(1)
{
keyscan();
if(flag==0)
{
read_time();
display(year,0x85);
display(month,0x88);
display(day,0x8b);
display(hour,0x85+0x40);
display(minute,0x88+0x40);
display(second,0x8b+0x40);
}
}
}
电子工艺实训总结
孔繁尧
为期两周的电子工艺实习过得很快,似乎一下子就结束了,还真有点不舍得。实习前就听人说,实习是个很枯燥乏味的事情,但事实上,我觉得它是一个忙碌而快乐的长知识和见识的过程,就像那句实践出真知,我们真的从中学到了书本的理论知识无法给我们的技能技巧和经验。
实习前,指导老师徐老师先给我们进行了实习安排、操作技能、注意事项等等的指导,尤其是用到的最多的焊接,讲解了很多关于焊接的基础知识以及电烙铁的使用。最初听完讲解,我只是觉得把该注意的注意好,原来实习很简单么。然而真正到我自己去亲手操作时,我才知道自己错得有多离谱。
我们最先进行了电子元件焊接练习,电烙铁不太够用,所以分组进行。因为对电烙铁不熟悉,同组的同学开始几次都没焊好,于是我试了试,居然一下就好了,特别高兴觉得自己领悟能力真不错,就做一边发呆去了,看着别人忙活。当我想再试试熟练一下的时候,突然发现其实自己第一次的成功只是凑巧,并不会用电烙铁,有时候锡不下来,有时候焊点很难看,老师给我看了视频过后,我老实的坐下来,一遍遍练习,终于能够焊到看着好看有合格了。但当老师验收时,再一次发现自己错了,我焊出来的几乎都没有光泽度,本该放好烙铁拿锡迅速绕焊件接点一周,我把光泽度的事给忘了,下次得好好记老师说过的话了,心里这样想到。
焊接练习结束了,的确得到不少经验教训,这个看似普通简单的事情,原来有那么多的小知识处处都在。只是遗憾的是,我没有把那些教训好好应用在接下来的实习中,只在结束实习的这一刻,好好回想实习过程,才记起这些来。
大家都掌握了焊接这个基本技能之后,就是真正的实际操作了。第一个是步骤比较简单的电路,按照组装图,一步步终于焊接好了,但是我拿上去给老师验收时,老师说我的焊点亮度不够光泽,出自自己手的东西真的是会让人欣喜的。这一次,我明白了,只要不是故意拖沓,不必太在意别人的进度,一定是有人脑快手快的早早完成作品,而自己按照自己的速度就好,就像揠苗助长,就像国家那个时期的大跃进,有的事情急是急不来的,而是该有条不紊再在稳中求快,力求每一步踏实认真。
学以致用,真的是非常重要,学到的理论,只是理论,不一定能够应用到实际中去。电路的焊接只是一个开始,接下来我可爱的作品们无一幸免的加入了返工队伍,真是心疼那些单薄的零件啊,被烫来烫去的,真可怜。我真的是太缺乏踏实谨慎的精神了,总是会想当然的做下去,在结束后,发现哪个地方出错了,再去认真的纠错,这就是一个错误。
接下来是期待已久的时钟了,前边几天都是时间宽裕,以至于发下材料来就没急着安装焊接。接好线,我的LED屏幕没有亮,别人都验收好了,我的还没亮呢,情绪上开始急躁了,有点放弃的感觉,但是知道不应该,硬着头皮坚持吧,可是看不出错啊,那种感觉真是难受。后来,同学发现了一个不起眼的零件,被我安反了,怎么会亮呢,装回来终于好了。怎么会这么不小心呢,这句话几乎成了口头禅,小心小心啊,马马虎虎的毛病一直跟了我这么多年,还是没改,记得一定要改,有了焊接电路的经验,以为这个应该是照图操作很简单的,真正开始着手时,就不太一样了,因为电路零件少安装简单,而时钟相比来说就是相对复杂的工艺了。贴焊片,焊元件,看似一步步有流程不难的程序,做起来,还是觉得每一步都在小心翼翼,不仅是拆焊麻烦,还怕一些不禁烫的元件损毁。虽然如此,我的时钟装好后,还是和很多人没有数字显示,于是恨不得拿个显微镜找找错在哪以修正。还是集体的力量大,再次体会了团结合作的重要性,当我把所有点再焊一遍仍然没显示数字后,在同学的提醒下,我把两个没标大小以为一样的电阻调了位置,天啊,问题在这,我的终于出声了。遗憾的是,最终到老师验收,我的时钟不是前几个完成的,不过,对于能发现自己错误我来说,独立完成了还是很高兴。
电子时钟让我知道了,有的事情不是必须有别人提醒自己才去注意,就像两个电阻很可能大小不一,事实是一个六点多,一个九点几,但是只凭自己的想法去安装,只有返工的结果。比如在职场,不会有人提醒我们该怎么样,只能靠自己去学习,这也是实习的心得之一吧。
生活里可以有小虎,但是电子工艺里是不能有马虎的,即使有可以改回来,甚至改不了了,但是将来的工作了,马虎而来的错误是不被老板或者领导原谅的,就意味着丢了饭碗。还有就是不能随便放弃一件事,有时候就是功亏一篑,坚持一下可能就成功了,并用一颗平和的心去做自己必须要完成的事情。要热爱自己从事着的事情,好好做。
这次实习总体来说是轻松有趣的,通过老师的讲解我懂得了很多有关电子的专业知识,掌握了贴片技术和了解到各种工艺流程,认识到一些仪器及他们的功能和使用方法。同时,知道了在操作过程中,我们应该注意什么才能保证操作的正确。在实践中会遇到各种问题,之后要细心检查去发现错误,然后想办法去改正错误以解决这些问题,这是一个培养我们责任感的重要过程。
实习虽然结束了,但是它教给我的很多东西我会永远珍藏,这不仅是一次有意义的回忆,更让我学到了书本上没有的东西,也把书本里一些抽象的知识转为了实际应用,我觉得我们多一些类似的实习对我们的学习会有很好的促进作用。
孔繁尧
2015.6.8