单片机焊接生产实习报告概述.docx
《单片机焊接生产实习报告概述.docx》由会员分享,可在线阅读,更多相关《单片机焊接生产实习报告概述.docx(29页珍藏版)》请在冰豆网上搜索。
![单片机焊接生产实习报告概述.docx](https://file1.bdocx.com/fileroot1/2023-2/7/ca0585ce-ca25-4b6e-9610-88fca6aa539b/ca0585ce-ca25-4b6e-9610-88fca6aa539b1.gif)
单片机焊接生产实习报告概述
学号10780216
实习报告
(生产实习)
起止日期:
2013年6月24日至2013年7月19日
学生姓名
姜雪峰
班级
10电信科2班
成绩
指导教师(签字)
计算机与信息工程学院
2013年7月19日
目录
第一章实习的目的及意义1
1.1生产实习的目的1
1.2生产实习的意义1
1.3生产实习的重要性1
第二章单片机的最小系统2
2.1部分芯片介绍2
2.1.1STC12C5A60S2芯片2
2.1.2MAX232CPE芯片5
2.1.3LCD1602液晶显示器6
2.1.4DS12C887+芯片6
2.2最小系统的功能介绍7
第三章单片机电路板焊接9
3.1单片机焊接的元器件9
3.2焊接好的单片机图形9
3.3焊接注意事项9
第四章C51语言的应用程序11
4.1KeiluVision的使用11
4.2流水灯程序11
4.3P1.0闪亮程序12
4.4按键控制数码管13
4.5定时一秒15
4.6蜂鸣器音乐盒16
4.7调试中出现的问题21
第五章实习体会22
第一章实习的目的及意义
1.1生产实习的目的
此次生产实习的目的是在理论学习的基础上,通过完成一个设计51单片机的多种资源应用并具有综合功能的最小系统目标板的设计与编程应用。
1.2生产实习的意义
将理论知识与实际应用相结合,从实际出发分析问题、研究问题和解决问题,将单片机的知识系统化,并能对电子电路、电子元器件、印制电路板等方面的知识有进一步的加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机的应用系统的开发设计打下一定基础。
1.3生产实习的重要性
生产实习是电子信息工程专业教学计划的一个重要部分,是培养学生理论学习与实践相结合的重要实践性教学环节。
通过生产实习使学生了解实习单位的工作方式和工作流程;对以后大单片机课程设计,帝业设计做基础,了解一个开发板的开发制作的整个过程以及元器件的采购;对生产现场、生产过程中的电子信息设备、计算机设备的应用状况有较为深刻的认识,掌握常规电子信息设备的使用维护方法;在实践中进一步加强专业教育,了解本专业工程技术岗位和生产劳动岗位的工作情况和工作内容,培养团队精神和吃苦耐劳的精神;同时可以使学生学到企业的管理经验和工人师傅的艰苦创业精神,激励学生奋发向上的开拓精神。
第二章单片机的最小系统
2.1部分芯片介绍
2.1.1STC12C5A60S2芯片
STC12C5A60S2为可电气烧录清洗的8051相容单芯片,其内部程序代码容量为4KB
STC12C5A60S2主要功能列举如下:
1、为一般控制应用的8位单芯片
2、晶片内部具时钟振荡器(传统最高工作频率可至12MHz)
3、内部程式存储器(ROM)为4KB
4、内部数据存储器(RAM)为128B
5、外部程序存储器可扩充至64KB
6、外部数据存储器可扩充至64KB
7、32条双向输入输出线,且每条均可以单独做I/O的控制
8、5个中断向量源
9、2组独立的16位定时器
10、1个全多工串行通信端口
11、8751及8752单芯片具有数据保密的功能
12、单芯片提供位逻辑运算指令
STC12C5A60S2各引脚功能介绍:
图2-1AT89S51引脚图
STC12C5A60S2电源正端输入,接+5V。
VSS:
电源地端。
XTAL1:
单芯片系统时钟的反相放大器输入端。
XTAL2:
系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:
STC12C5A60S2的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:
"EA"为英文"ExternalAccess"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
如果是使用8751内部程序空间时,此引脚要接成高电平。
此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:
ALE是英文"AddressLatchEnable"的缩写,表示地址锁存器启用信号。
STC12C5A60S2可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为STC12C5A60S2是以多工的方式送出地址及数据。
平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。
此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:
此为"ProgramStoreEnable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。
AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
PORT0(P0.0~P0.7):
端口0是一个8位宽的开路汲极(OpenDrain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。
其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。
如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。
设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
PORT2(P2.0~P2.7):
端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。
P2除了当做一般I/O端口使用外,若是在STC12C5A60S2扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
PORT1(P1.0~P1.7):
端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。
如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
PORT3(P3.0~P3.7):
端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
P3.0:
RXD,串行通信输入。
P3.1:
TXD,串行通信输出。
P3.2:
INT0,外部中断0输入。
P3.3:
INT1,外部中断1输入。
P3.4:
T0,计时计数器0输入。
P3.5:
T1,计时计数器1输入。
P3.6:
WR:
外部数据存储器的写入信号。
P3.7:
RD,外部数据存储器的读取信号。
2.1.2MAX232CPE芯片
MAX232CPE是16针SMD封装IC,用于完成计算机232端口数据电平转换,连接CMOS电路的,换言之,如果离开它,我们就无法用软件监控电源状态了(需要串口返回信号)。
而PIC16F870则为24脚8位CMOS闪存控制器。
用于可监控UPS当中。
MAX232CPE完成232电平与TTL电平转换,提供一个本地接口,为调试和维护提供方便。
TXD接SX52的RA2脚,RXD接SX52的RA3脚,RS-RXD和RS-TXD是RS232电平,为标准串口电平。
数据可以从串口输入到单片机SX52,SX52再把数据送到RTL8019AS传出去。
用于嵌入式设备上的应用MAX232Cpe,采用双列直插封装方式。
驱动芯片类型:
线路驱动器/接收器接口:
RS232,V.28/V.24驱动器数:
2电源电压范围:
4.5Vto5.5V封装类型:
双列直插针脚数:
16工作温度范围:
0°Cto+70°C封装类型:
DIP工作温度最低:
0°C工作温度最高:
70°C器件标号:
232器件记:
MAX232Cpe+接口类型:
RS-232温度范围:
商用电源电压最大:
5.5V电源电压最小:
4.5V芯片标号:
232表面安装器件:
通孔安装逻辑功能号:
232接收器数:
2收发器数:
2数据率:
120Kbps电源电流:
5mA线/总线驱动器/接收器/收发类型:
CMOS双RS232发送器及接收器通道数:
2
图2-2MAX232CEP引脚图
2.1.3LCD1602液晶显示器
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在
各类仪表和低功耗系统中得到广泛的应用。
工业字符型液晶,能够同时显示
16x2即32个字符(16列2行)。
引脚介绍:
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时
对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器
调整对比度(建议接地,弄不好有的模块会不显示)。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚(有的用来接背光)
图2-31602引脚图
2.1.4DS12C887+芯片
Clock,Calendar,Alarm封装/箱体:
eDIP时间格式:
HH:
MM:
SS,Binary日期格式:
DW:
DM:
M:
Y,BinaryRTC存储容量:
113B电源电压(最大值):
5.5V电源电压(最小值):
4.5V最大工作温度:
+70C最小工作温度:
0C安装风格:
ThroughHoleRTC总线接口:
Multiplexed
DS12C887实时时钟芯片功能丰富,可以用来直接代替IBMPC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。
由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决了“千年”问题;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
图2-4DS12C887引脚图
图2.5UA741引脚图
2.2最小系统的功能介绍
利用AT89S51的单片机的定时器、中断系统、串行口、4KFlashROM、扩展外部四个按键、8位LED、时钟电路等外设,焊接并实现一个具有综合功能的最小系统。
市面上有STC、AVR、PIC系列的单片机。
AT89S51的特点是低功耗、8位、支持ISP在线编程、JTAG仿真接口。
LED显示模块是在P2口上接8位发光二级管采用共阳极接法用于流水灯等;电源部分采用78L05为单片机提供5V稳压电源;复位电路采用K2按键复位;晶振Y1(11.0592)与2个电容C8、C9构成时钟电路;中断定时功能用四个按键控制,K1、K3、K4、K5分别控制外部中断0、外部中断1、定时器/计数器T0、定时器/计数器T1;在单片机的左上角J1是串行通信的9针串口母线,用于与单片机、计算机相连,此次是基于MAX232cep测评的串行通信;LCD液晶显示模块采用1602的5*8点字符型,用J8、J92个电位器调节背光与对比度;J5是拨码开关控制P2口的8个端位;J6是20针的扩展模块;J2是ISP下载线的接插端,利用一个U口可与单片机进行相连,从而实现在线编程。
图2-5单片机最小系统
第三章单片机电路板焊接
3.1单片机焊接的元器件
元件包含:
1个按键开关(K1-K5),9个发光二极管(D1-D8,D10),1个单片机STC12C5A60S2芯片及对应接插器(U2),2个电位器(J8-J9),1个晶体振荡器11..0592(Y1),5个1uF电容(C1-C5),2个33uF电容(C10,C12),1个22uF电容(C6),2个22pF电容(C8-C9),2个0.1uF电容(C7,C11),10个1K电阻(R1-R10),1个200欧电阻(R11),1个拨码开关(J5),1个MAX232cep芯片及对应接插器(U1),1个三端稳压管(J3),1个RS-232串口(J1),1个LCD1602液晶显示模块(J7),1个扩展模块(J6),2个JUMPER,1个10针JTAG。
焊好后的单片机如图7所示。
3.2焊接好的单片机图形
图3-1实物图
3.3焊接注意事项
焊接操作注意事项有:
①保持烙铁头的清洁,因为焊接时烙铁头长期处于高温状态,其表面很容易氧化并沾上一层黑色杂质形成隔热层,使烙铁头失去加热作用。
②采用正确的加热方法,要靠增加接触面积加快传热,而不要用烙铁对焊件加力。
应该让烙铁头与焊件形成面接触而不是点接触。
③加热要靠焊锡桥,要提高烙铁头加热的效率,需要形成热量传递的焊锡桥。
④在焊锡凝固之前不要使焊件移动或振动用镊子夹住焊件时,一定要等焊锡凝固后再移去镊子。
⑤焊锡量要合适,过量的焊锡会增加焊接时间,降低工作速度。
⑥不要用过量的焊剂,适量的焊剂是非常有必要的。
过量的松香不仅造成焊后焊点周围脏不美观,而且当加热时间不足时,又容易夹杂到焊锡中形成“夹渣”缺陷。
一般焊接的顺序是:
是先小后大、先轻后重、先里后外、先低后高、先普通后特殊的次序焊装。
即先焊分立元件,后焊集成块。
对外联线要最后焊接。
(1)电烙铁,一般应选内热式20~35W恒温230℃的烙铁,但温度不要超过300℃的为宜。
接地线应保证接触良好。
(2)焊接时间在保证润湿的前提下,尽可能短,一般不超过3秒。
(3)耐热性差的元器件应使用工具辅助散热。
如微型开关、CMOS集成电路、瓷片电容,发光二极管,中周等元件,焊接前一定要处理好焊点,施焊时注意控制加热时间,焊接一定要快。
还要适当采用辅助散热措施,以避免过热失效。
(4)如果元件的引线镀金处理的,其引线没有被氧化可以直接焊接,不需要对元器件的引线做处理。
(5)焊接时不要用烙铁头摩擦焊盘。
(6)集成电路若不使用插座,直接焊到印制板上、安全焊接顺序为:
地端→输出端→电源端→输入端。
(7)焊接时应防止邻近元器件、印制板等受到过热影响,对热敏元器件要采取必要的散热措施。
(8)焊接时绝缘材料不不允许出现烫伤、烧焦、变形、裂痕等现象。
(9)在焊料冷却和凝固前,被焊部位必须可靠固定,可采用散热措施以加快冷却。
(10)焊接完毕,必须及时对板面进行彻底清洗,以便残留的焊剂、油污和灰尘等赃物。
在我自己的焊接当中,也出现了焊锡量不足和过多的状况,最后导致接入电源后无法正常使用的现象。
同时注意元件的焊接顺序也很重要,选择合适的焊接顺序,不仅便于焊接,而且不至于导致元件破损。
第四章C51语言的应用程序
4.1KeiluVision的使用
打开“KeiluVision”,点击“project”,在弹出的对话窗口中选择“newproject”新建工程,建立工程文件。
在弹出的窗口中选择“Atmel”中的“AT89S52”确定后即可添加8051源代码。
选中工程文件右键点“Optionfortarget”再点“Output”“CreateHEX”创建HEX文件;点“File”之后点击“NEW”即可在出现的文本框中输入程序,保存路径与工程文件相同,且用英文名,格式为“.c”。
再添加源文件到project。
程序输入完了要保存,编译查看有无错误,有就修改,如果没有,将PC机与单片机用ISP下载线连接起来,USB驱动文件中,选择isp编程下载软件中“progisp”运行程序,在文件夹下选“调入flash”,调入hex文件,之后点击“自动”即可运行程序查看现象。
串行通信的调试可利用串行通信助手软件,查看单片机是如何与PC机进行数据通信的。
4.2流水灯程序
#include//51系列单片机定义文件
#defineucharunsignedchar//定义无符号字符
#defineuintunsignedint//定义无符号整数
voiddelay(uint);//声明延时函数
voidmain(void)
{
uinti;
uchartemp;
while
(1)
{
temp=0x01;
for(i=0;i<8;i++)//8个流水灯逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++)//8个流水灯反向逐个闪动
{
P1=~temp;
delay(100);//调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++)//8个流水灯依次全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++)//8个流水灯依次反向全部点亮
{
P1=temp;
delay(100);//调用延时函数
temp>>=1;
}
}
}
voiddelay(uintt)//定义延时函数
{
registeruintbt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
4.3P1.0闪亮程序
#include
#defineucharunsignedchar
sbitsignal=P1^0;
voiddelay(t);
voidmain()
{
while
(1)
{
signal=0;
delay(20);
signal=1;
delay(20);
}
}
voiddelay(intt)
{
inti;
for(i=0;i{
TH0=0x3c;
TL0=0xb0;
TR0=1;
while(!
TF0);
TF0=0;
TR0=0;
}
}
4.4按键控制数码管
#include
#include"anjian.h"
sbitA13=P2^5;
codeuint8number[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0xff};
int8n=0;
voiddelay()
{
uint16i=2000;
while(i--);
}
main()
{
WR=0;
A13=1;
P0=0xff;
WL4=0;
P0=number[0];
K4=0;
while
(1)
{
if(!
K0)
{
delay();
if(!
K0)
{
if(n>=9)
n=0;
else
n++;
P0=number[n];
while(!
K0);
}
}
if(!
K1)
{
delay();
if(!
K1)
{
if(n<=0)
n=9;
else
n--;
P0=number[n];
while(!
K1);
}
}
}
}
4.5定时一秒
#include
typedefunsignedcharuint8;
typedefunsignedintuint16;
/*sbitA13=P2^5;*/
/*sbitLED1=P0^0;
sbitLED2=P0^1;
sbitLED3=P0^2;
sbitLED4=P0^3;
sbitLED5=P0^4;
sbitLED6=P0^5;
sbitLED7=P0^6;
sbitLED8=P0^7;
*/
main()
{
uint8counter;
inti=0;
/*WR=0;
A13=1;
*/
TMOD=0x01;
TH0=0xb8;
TL0=0x00;
TR0=1;
while
(1)
{
if(TF0==1)
{
TF0=0;
TH0=0xb8;
TL0=0x00;
counter++;
}
if(counter==50)
{
counter=0;
P1=~(1<
if(i==9)
{
i=0;
P1=0x00;
}
}
}
}
4.6蜂鸣器音乐盒
/********************************************************************
*文件名:
蜂鸣器唱歌.c
*描述:
该程序实现控制蜂鸣器演奏音乐。
*创建人:
东流,2009年4月9日
*版本号:
2.0
***********************************************************************/
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharCount;
sbitSpeak=P1^2;//蜂鸣器器控制脚
sbitP36=P3^6;
sbitRS=P2^5;
unsignedcharcodeLED[8]={0xfe,0xfb,0xf8,0xf0,0xe0,0xb0,0x80,0