单片机电路板焊接实习报告

一:实习目的
1、熟悉手工焊锡的常用工具的使用。
2、基本掌握手工电烙铁的焊接技术,能够独立的完成简单电子产品的安装与焊接。
3、焊接PCB电路板,调试制作的电路板。

二:实习内容与时间安排

第一阶段:实习说明、理论学习、元器件分发

7月19日:实习安排说明、电子工艺基本技能技法学习、单片机开发系统演示。

这是实习的第一天,司杨老师给我们介绍了一些基本的实习内容以及注意事项,让大家都准时来到实习地点,要把这次实习看做是一件很重要的课程来认真对待。虽然第一节课大家由于各种原因没有全部准时到实验室,但是经过老师的一番教诲,大家都懂得了准时的重要性。下午是由张海峰老师带领我们一起了解了电子工艺的基本发展历史和现状,并且讲解了许多关于焊接的知识。在这个过程中,由于是很多人一起在一个教室里,难免会有些热或者闷,很多人都觉得老师的这些讲解都是无意义的,甚至有的人有点反感,但是,那是不认真最终注定了是要付出代价的(像焊接与拆焊练习的时候不合格,最终的PCB板没有结果)。

7月20日:单片机开发系统介绍、元器件分发、清点元件、查阅资料。

     这一天的任务就是大家一起认识了许多类型的元件,当听说我们这次的实习单单元件就涉及了76种时,我们这些孩子们瞬间有点难以接受,但是在我们真正见到这些元件以后,幼小的心灵才有点安稳,原来并不像我们想象中那么难,还是可以接受的。接下来的时间就是分发元件,这种像流水作业一样的分发元件,让我们对老师又有了新的看法,不愧是老师,这样的都能想到,不然那么多元件那么多人还真不知道怎么样才能把元件分下去。由于有了老师的指导,元件很快就分了下去,结果页很是让人满意,至少没有出现什么大的错误。

第二阶段:基本练习

7月21日:元器件分拣、元器件分装。

这一天的实习,在我看来,就是为了锻炼大家,第一点就是锻炼大家是否认识各种元件,第二点就是锻炼大家的耐心,看你在面对那么多的小东西的时候能否保持平静的心态,做到不骄不躁,坚持到最后。上午分拣元件,下午每个人一包元件,把1000个元件分成每10个一小包,再装进一个大包里面,这就看大家是否手快了,而且还不能出错,总的来说,这一天还是很轻松的。

7月22日:焊接练习

7月23日:拆焊练习

进入焊接练习就是考验大家的时候了,每个人发下去一个板子,我们就在上面焊了拆,拆了再焊,有的人很认真的在按照老师教的步骤练习,但是有些人却认为这没有必要,在这两天的实习中我学到了许多焊接的知识。在焊接的过程中,我明白了焊接的原理,即是:焊锡借助于助焊剂的作用,经过加热熔化成液态,进入被焊金属的缝隙,在焊接物的表面,形成金属合金使两种金属体牢固地连接在一起。

我在老师的指导下,更加了解焊接的步骤,即: 左手拿焊锡丝,右手拿电烙铁。把电烙铁以45度左右夹角与焊盘接触,加热焊盘。待焊盘达到温度时,同样从与焊板成45度左右夹角方向送焊锡丝。待焊锡丝熔化一定量时,迅速撤离焊锡丝。最后撤离电烙铁。

在焊接的过程中,我们应该注意:焊接的时间不能太久,大概心里默数1、2即可,然后再撤离焊锡丝,再撤离电烙铁,在撤离电烙铁时,也一样心里默数1、2即可;焊锡要适量,少了可能虚焊,多了又容易连一块。

在焊的过程中,出现虚焊或则焊接不好,要把焊锡吸掉,重新再焊。在把焊锡吸掉的过程中,左手拿这吸锡器,右手拿着电烙铁,先把电烙铁与焊盘接触,加热焊锡,再将吸锡器靠近焊锡,按下吸锡器的按钮,就可以吧焊锡焊掉,重复多次,就可清除焊盘上的焊锡,注意不要将焊盘加热太久,以免把焊盘的铜片给吸掉。

焊接电路板的图片:

7月24日:基本焊接技能考核

这一天的下午是我们2班的考核时间,老师给大家每人发了一个小的板子和一个芯片,同学们都认真的把自己技术发挥到极致,按照老师的讲解一个一个的把电阻焊在板子上,直到自己认为很满意的时候才去让老师检查,功夫不负有心人啊,我的检查结果竟然是A+,心里还算是很满意,后来老师又让我们把焊上去的元件给拆下来,其中最困难的要数那个芯片了,这真是焊上去容易取下来难啊,很多人都在这个上面浪费了不少时间。可能是拆的时候有点心急了,不小心弄下来4个铜片,结果得了A。

第三阶段:单片机开发系统制作

7月25、26日:单片机开发系统制作

这两天的实习,实际上就是检验我们之前的练习情况,包括焊接与心态,因为很多的元件必须一一对应放到它的位置,有一个放错或者焊接不好的话都会影响最终的结果,导致调试结果不正确。

PCB电路板的焊接:

焊接的时候注意电解电容可从引脚长短来识别,长脚为正,短脚为负,

注意事项:

(1).外壳整合要到位,不然会因接触不良而无法显示数字。

(2).一些小的零件也要小心安装,如图中没有经过焊接安装上的,如不小心很容易掉。

(3) 注意电解电容、发光二极管、蜂鸣器的正负极性不能接反、三者均是长的管脚接正极、短的管脚接负极。使用电解电容的时候,还要注意正负极不要接反,还有排阻的同名端,三极管的三个引脚的对应位置。

下面是自己拍的几张PCB板的图片

焊接完整没有插接芯片的PCB板

焊接完整插上芯片的PCB板正面

当把这个板子做出来以后,心里总算感觉有点平衡了,因为这么长时间的实习,这是唯一的一个感觉属于自己的东西,而且这个板子凝结了自己心血,所以对它十分的珍惜,向来都是轻拿轻放的,生怕会受到损害,但是后来想想,如果自己焊接的牢固也不用担心会受到损害。到这时才知道以前认为很难做出来的东西原来自己也可以做的很好,我想这就是我们实习的目的吧,让我们了解电子元件的制作,让我们知道那些我们认为的困难并不是真的那么难以克服,只要你去做,就一定会有收获。

7月27日:单片机开发系统制作考核

10天的实习已经接近尾声了,今天是实习中最重要的一天,因为这一天关系到我们前面一段时间所有的付出,如果调试成功是对我们这几天的付出最好的回复,每个人都有点激动又有点担心,由于我不是第一组去调试的,当看到有人拿着自己调试完全成功板子回来以后,心里挺担心的,生怕自己的会出什么错误,尽管经常对自己充满信心,但是在结果出来之前,内心平静不下来。

这是自己在去调试之前的一张照片,所有的元件都已经完整了,只剩下去老师那里调试了,怀着忐忑的心情,看着老师在那里操作,一直到最后调试结束,在确定老师说完全正确以后,悬着的心总算是放下来了,当然啦,有点小激动又有点小骄傲啊,付出会有收获的。

调试结果

调试显示LED跑马灯实验后,跑马灯一个个循环的亮,测试程序,蜂鸣器也响了 ,最后显示传感器温度,其他的程序调试也一样能实现相应的功能。

第四阶段:总结

7月28日:撰写实习报告

实习心得体会

这次电路板焊接实习就是培养我们的动手能力,电子技术实习就要我们对电子元器件识别,相应工具的操作,相关仪器的使用。对理论知识有了更深的理解,对平常学习工作的态度和能力培养有一定的认识,打好日后深入学习各种工作能力的基础。

在实习中,我锻炼了自己的动手技巧,提高了自己解决问题的能力。比如做电路板组装与调试时,芯片触角的间距特别小,稍不留神,就焊在一起了,这就是在考验自己,所以我很认真的对待这些,争取做到一个错误都不出现。

通过十多天的实习,我觉得我在以下几个方面都有很大的提高:对电子工艺的理论有了初步的了解。我了解到如何焊接普通元件与单片机电路的焊接与组成元件的作用等。这些在以后的学习中有很大的启发作用,而且我学到了很多课堂上学不到的技巧和知识,了解了理论与实践的重要性,对自己在以后的学习和生活都有很大的意义。

最后,感谢老师给我们这次实习的机会,也感谢老师指导和带领我们参加这次实习,在这里真诚的说一句:老师,您辛苦了。

电子技 

术基础实习

                               院系

班级: 

姓名:                      

学号:   

指导老师:                                  

 

第二篇:单片机焊接生产实习报告

学   号    10780216

 

实习报告

起止日期:   2013 年 6 月 24 日 至   2013 年 7 月 19 日

  计算机与信息工程学院

20## 7 19

                           目 录

 第一章 实习的目的及意义...................................................... 1

1.1生产实习的目的......................................................... 1

1.2生产实习的意义......................................................... 1

1.3生产实习的重要性....................................................... 1

第二章 单片机的最小系统....................................................... 2

2.1部分芯片介绍........................................................... 2

2.1.1 STC12C5A60S2芯片................................................. 2

2.1.2 MAX232CPE芯片.................................................... 5

2.1.3 LCD1602液晶显示器................................................ 6

2.1.4 DS12C887+芯片.................................................... 6

2.2 最小系统的功能介绍..................................................... 7

第三章 单片机电路板焊接....................................................... 9

3.1 单片机焊接的元器件..................................................... 9

3.2焊接好的单片机图形..................................................... 9

3.3 焊接注意事项........................................................... 9

第四章 C51语言的应用程序..................................................... 11

4.1 Keil uVision的使用................................................... 11

4.2 流水灯程序............................................................ 11

4.3 P1.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.1 STC12C5A60S2芯片

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各引脚功能介绍:

 

STC12C5A60S2 电源正端输入,接+5V。

VSS:

电源地端。

XTAL1:

单芯片系统时钟的反相放大器输入端。

XTAL2:

系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。

RESET:

STC12C5A60S2的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。

EA/Vpp:

"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。

ALE/PROG:

ALE是英文"Address Latch Enable"的缩写,表示地址锁存器启用信号。STC12C5A60S2可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为STC12C5A60S2是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。

PSEN:

此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。AT89S51可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。

PORT0(P0.0~P0.7):

端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有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个LS TTL负载,同样地若将端口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.2 MAX232CPE芯片

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.5V to 5.5V封装类型:双列直插针脚数:16工作温度范围:0°C to +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-2 MAX232CEP引脚图

2.1.3 LCD1602液晶显示器

      液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在

各类仪表和低功耗系统中得到广泛的应用。工业字符型液晶,能够同时显示

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-3 1602引脚图

2.1.4 DS12C887+芯片

Clock,Calendar,Alarm封装/箱体:eDIP时间格式:HH:MM:SS,Binary日期格式:DW:DM:M:Y,BinaryRTC存储容量:113B电源电压(最大值):5.5V电源电压(最小值):4.5V最大工作温度:+70C最小工作温度:0C安装风格:ThroughHoleRTC总线接口:Multiplexed

DS12C887实时时钟芯片功能丰富,可以用来直接代替IBM PC上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887相兼容。

由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决了“千年”问题; DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节 RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM使用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。

图2-4 DS12C887引脚图

 

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口可与单片机进行相连,从而实现在线编程。

 

 

 

 

第三章 单片机电路板焊接

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.1 Keil uVision的使用

打开“Keil uVision”,点击“project”,在弹出的对话窗口中选择“new project”新建工程,建立工程文件。在弹出的窗口中选择“Atmel”中的“AT89S52”确定后即可添加8051源代码。选中工程文件右键点“Option for target”再点“Output”“Create HEX”创建HEX文件;点“File”之后点击“NEW”即可在出现的文本框中输入程序,保存路径与工程文件相同,且用英文名,格式为“.c”。再添加源文件到project。

程序输入完了要保存,编译查看有无错误,有就修改,如果没有,将PC机与单片机用ISP下载线连接起来,USB驱动文件中,选择isp编程下载软件中“progisp”运行程序,在文件夹下选“调入flash”,调入hex文件,之后点击“自动”即可运行程序查看现象。

串行通信的调试可利用串行通信助手软件,查看单片机是如何与PC机进行数据通信的。

4.2 流水灯程序

#include     //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int    //定义无符号整数

void delay(uint);     //声明延时函数

void main(void)

{

uint i;

uchar temp;

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;

    }

}

}

void delay(uint t)     //定义延时函数

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

4.3 P1.0闪亮程序

#include

#define uchar unsigned char

sbit signal=P1^0;

void delay(t);

void main()

{

   while(1)

   {

       signal=0;

       delay(20);

       signal=1;

       delay(20);

   }  

}

void delay(int t)

{

   int i;

   for(i=0;i

   {

       TH0=0x3c;

       TL0=0xb0;

       TR0=1;

       while(!TF0);

       TF0=0;

       TR0=0;

   }

}

4.4 按键控制数码管

#include

#include"anjian.h"

sbit A13=P2^5;

 code uint8 number[]={0xc0,0xf9,0xa4,0xb0,0x99,

                      0x92,0x82,0xf8,0x80,0x90,

                     0xff};

     int8 n=0;

void delay()

{

   uint16 i=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

typedef unsigned char uint8;

typedef unsigned int uint16;

/*sbit A13=P2^5;*/

/*sbit LED1=P0^0;

sbit LED2=P0^1;

sbit LED3=P0^2;

sbit LED4=P0^3;

sbit LED5=P0^4;

sbit LED6=P0^5;

sbit LED7=P0^6;

sbit LED8=P0^7;

*/

main()

{

  uint8 counter;

   int i=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

* 描述    :  该程序实现控制蜂鸣器演奏音乐。             

* 创建人  : 东流,20##年4月9日

* 版本号  : 2.0

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

#include

#define uchar unsigned char

#define uint  unsigned int

uchar Count;

sbit Speak =P1^2;                  //蜂鸣器器控制脚

sbit P36=P3^6;

sbit RS=P2^5;

unsigned char code LED[8]={0xfe,0xfb,0xf8,0xf0,0xe0,0xb0,0x80,0x00};

/*以下数组是音符编码*/

unsigned char code SONG[] ={      //祝你平安

0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,

0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,

0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,

0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,

0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,

0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,

0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,

0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,

0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,

0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,

0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,

0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,

                                  //路边的野华不要采

0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,

0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,

0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,

0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,

0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,

0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,

0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,

0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,

0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,

0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,

};

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

* 名称 : Time0_Init()

* 功能 : 定时器的初始化,定时时间可用光碟中软件计算,11.0592MZ晶振,10ms

* 输入 : 无

* 输出 : 无

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

void Time0_Init()

{

   TMOD = 0x01;

   IE  = 0x82;

   TH0  = 0xDC;

   TL0  = 0x00;     

}

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

* 名称 : Time0_Int()

* 功能 : 定时器中断,中断中实现 Count 加一

* 输入 : 无

* 输出 : 无

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

void Time0_Int() interrupt 1

{

   TH0 = 0xDC;

   TL0 = 0x00;

   Count++;           //长度加1

}

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

* 名称 : Delay_xMs()

* 功能 : 延时子程序,经过软件调试,测得延时程序大概为55us.

* 输入 : x

* 输出 : 无

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

void Delay_xMs(uint x)

{

    uint i,j;

    for(i=0; i

    {

        for(j=0; j<3; j++);

    }

}

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

* 名称 : Play_Song()

* 功能 : 播放蜂鸣器控制程序

* 输入 : i (选择播放哪首歌曲,0为“祝你平安”,1为“路边的野花你不要采”

* 输出 : 无

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

void Play_Song(uchar i)

{

   uchar Temp1,Temp2;

   int a;

   uint Addr;

   Count = 0;                     //中断计数器清0

   Addr = i * 217;

   while(1)

   {

       Temp1 = SONG[Addr++];        //音符地址加一

       if (Temp1 == 0xFF)          //休止符

       {

          TR0 = 0;

          Delay_xMs(100);

       }

       else if (Temp1 == 0x00)   //歌曲结束符

       {

          return;

       }

       else

       {

          Temp2 = SONG[Addr++];    //街拍地址加一     注释: 音符地址始终是偶数   节拍地址是奇数

          TR0 = 1;

           while(1)

           {

              Speak = ~Speak;         //音符①    这两句话是确定音符的

               a=(int)(Temp1/8);   // LED 一     有音符判断LED亮多少

               P0=LED[a];           // LED 二     让LED亮相应的个数

              Delay_xMs(Temp1);   //音符②    一二组合确定音符

              if(Temp2 == Count)     //有Temp2   判断节拍

              {

                  Count = 0;

                  break;

              }

          }

       }

   }

}

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

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

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

void Main()

{

       RS=1;

   P36=0;

   Time0_Init();         //定时器0中断初始化

   while(1)

   {

       Play_Song(0);     //Play_Song(0)为祝你平安    Play_Song(1)为路边的野花你不要裁

//     Play_Song(1);

   }

}

  

4.7 调试中出现的问题

学STC12C5A60S2的时候都是用汇编语言编写程序的,对于用C51语言来编写程序不是很熟,但在看了很多书查了很多资料之后,熟悉了C51语言,在编程时也就比较顺利了。流水灯调试时没有出现大问题;中断控制流水灯的时候一定要初始化寄存器,考虑周到,否则中断就不会起作用;在调1602液晶字符显示程序时我的现象怎么也不能出现,可是检查程序又没有错误,后来自习看1602引脚才注意到它的4脚RS、5脚R/W、6脚E分别与52芯片的P2.0、P2.1、P2.2相连,而拨码开关又控制着P2的端位,当时我的拨码开关应该都是处于接地状态,把控制P2.0、P2.1、P2.2三个端口的开关拨到高点平时显示器就可一正常显示了。

这些程序调试完之后,让我真正了解了单片机的软件与硬件的联系:按键是如何控制数码管的,如何控制单片机复位;ISP下载线与PC机的连接使用;9针的串行通信与PC 机的连接使用;调LCD的灯,J9调字符显示,J5拨码开关又起着控制作用;电源插的时间不宜过长,加重78L05稳压作用,

 

 

第五章 实习体会

生产实习是电子信息工程专业教学计划的一个重要部分,是培养学生理论学习与实践相结合的重要实践性教学环节。通过生产实习使学生了解实习单位的工作方式和工作流程,它要求学生在掌握坚实的电子信息工程的理论知识的基础上,对生产现场、生产过程中的电子信息设备、计算机设备的应用状况有较为深刻的认识,掌握常规电子信息设备的使用维护方法;掌握理论学习与实践相结合的方法;在实践中进一步加强专业教育,了解本专业工程技术岗位和生产劳动岗位的工作情况和工作内容,培养团队精神和吃苦耐劳的精神;同时可以使学生学到企业的管理经验和工人师傅的艰苦创业精神,激励学生奋发向上的开拓精神。

在实习中,我们进行了各种实战行的练习,把平时课本上学到了知识运用到生产实际中,我从中发现。原来实际生产没有那么简单,从电路板的焊接到元器件调试都遇到了课本中没有的这样和那样的问题,但经过老师的指导和自己的钻研是这些问题最终都被我攻破。

此次实习中我们分组互相帮助…其中遇到的好多问题都是在同学们的集思广益下成功解决的!这次实习又增加了同学之间的团队精神。此外最重要的一点是老师的耐心帮助讲解让我们学习的激情空前的高啊。

通过这次生产实习,使我对本专业和以后的就业路线有了更进一步的认识,以及让我明白了,只学会了课本上的知识是没有用了,会动手才是我们今后在社会工作立足的根本。

最后还要谢谢我们尊敬的导师,谢谢老师这一个月以来的帮助与教导!

相关推荐