
生产实习报告
系 别: 电 子 信 息 系
专 业: 电气工程及其自动化
班 级: B****** 学 号: B********
* ** * *
**** * *
实习题目: LED摇摇棒制作
实习地点: 电子实验室
教务处印制
2011 年 9 月 27日
指导教师填阅
| 指导教师评语: |
| 实习报告成绩: |
| 指导教师签名: 时间: 年 月 日 |
前言
人的眼睛存在视觉暂留现象,而正因为眼睛的反应迟钝,才丰富了人的视觉感受。16LED摇摇棒正是很好地利用了人眼的视觉暂留特性,而产生了奇妙的效果!本次试验通过掌握单片机及其开发流程,综合模拟电子技术和数字电子技术,掌握以单片机为核心的电子系统体系,从而更熟悉单片机在实际生活中的应用
实习目的
1.非常重要的实践教学环节
2.培养理论知识与生产实际相结合的能力
3.了解单片技术
4.锻炼实际动手能力,掌握电子线路焊接、装配的基本技能
5.了解并掌握本专业软硬件设计的一些基本问题
实习时间,及进程安排
9月6日:理论学习及讲座阶段
9月7日:发放元器件,进行焊接准备
9月7日~9月8日:硬件焊接及组装,及硬件调试
实习地点
电子实验室
实习单位、部门、地点
实习单位 西安工业大学北方信息工程学院
实习部门 电子信息系
实习地点 电子实验室
实习内容
1关键技术介绍
1LED发光二极管
发光二极管简称为LED。由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。发光二极管的特点是:工作电压很低;工作电流很小;抗冲击和抗震性能好,发光均匀稳定、响应速度快,可靠性高,寿命长。发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流
2C51单片机介绍
C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的C51是一种高效微控制器,C2051是它的一种精简版本。其主要特性有:与MCS-51 兼容,4K字节可编程闪烁存储器 寿命:1000写/擦循环,全静态工作:0Hz-24MHz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。
C51结构特点:
8位CPU;
片内振荡器和时钟电路;
32根I/O线;
外部存贮器寻址范围ROM、RAMK;
2个16位的定时器/计数器;
5个中断源,两个中断优先级;
全双工串行口;
布尔处理器;
C51主要特性:
与MCS-51 兼容
4K字节可编程闪烁存储器
寿命:1000写/擦循环
数据保留时间:10年
全静态工作:0Hz-24MHz
三级程序存储器锁定
128*8位内部RAM
32可编程I/O线
两个16位定时器/计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
3晶振
计算机都有个计时电路,尽管一般使用“时钟”这个词来表示这些设备,但它们实际上并不是通常意义的时钟,把它们称为计时器(timer)可能更恰当一点。计算机的计时器通常是一个精密加工过的石英晶体,石英晶体在其张力限度内以一定的频率振荡,这种频率取决于晶体本身如何切割及其受到张力的大小。有两个寄存器与每个石英晶体相关联,一个计数器(counter)和一个保持寄存器(holdingregister)。石英晶体的每次振荡使计数器减1。当计数器减为0时,产生一个中断,计数器从保持计数器中重新装入初始值。这种方法使得对一个计时器进行编程,令其每秒产生60次中断(或者以任何其它希望的频率产生中断)成为可能。每次中断称为一个时钟嘀嗒(clocktick)
4水银开关
因为重力的关系,水银水珠会随容器中较低的地方流去,如果同时接触到两个电极的话,开关便会将电路闭合,开启开关。
水银开关是恨据封装在玻璃外壳或金属外壳内的水银移动来实现开关通断的,因而水银开关与机械开关相比,有许多特点:
1.可以在恶劣环境条件下使用。由于水银开关是密封的,内部的水银和外界是隔绝的,因此它可以使用在有油、蒸汽、灰尘及腐蚀性气体的环境中。
可移动,使开关实现通断。
3.水银的导电性较好,水银开关电极间的接触电阻一般小于100mΩ。
4.水银开关允许通过的电流取决于电极的材料,钨丝电极最大允许电流为10A,而一般合金丝最大允许电流一般为1A。
5.由于水银开关的通断由水银重力确定,所以它可以长期可靠地工作。
6.电极的接点是液态接触,无任何噪声。
7.由于水银可以流动,只要加速度达到设定值以上,水银开关就可以通或断,因而可以作为振动的敏感元件使用。 2.通断所需的外力小。水银是惟一能在常温下保持液态的金属,它的表面张力和比重都较大,只要稍加外力使水银开关产生倾斜,水银便
8.体积小,形式多样,且为全密封式器件。
9.结构简单,价格低廉。
10.质量高,产品优质,适合初学者使用
2原理介绍
①电路原理图
②基本原理
人的眼睛存在视觉暂留现象,正因为眼睛反应迟钝,才丰富了人的视觉感受,LED摇摇棒很好地利用了人眼的视觉暂留特性。运用最新专利电子技术研制而成的线阵LED运动成像的高科技产品。LED摇摇棒是在手摆动到不同位置的时候,让位于一条直线上的LED显示二维图像的不同的列,利用人眼的视觉暂留效应,实现图形扫描显示。输出信号频率的控制通过单片机来实现,用16个发光二极管进行不同频率的亮灭刷新。当进行摇动时,由于人的视觉暂留原理,会在发光二极管摇动区域产生一个视觉平面,在视觉平面内的二极管通过不同频率的刷新,会在摇动区域内产生图像,从而达到在该视觉平面上传达信息的作用。
具体地说,已知摇摇棒从一侧摆动到另一侧所需的时间是0.8秒,把0.8秒分成份,则每一列的图形显示时间为0.0125秒。每一列对应两个八位的字节,16位字节对应16个LED发光二极管,然后在这每一份的时间里显示图形的相应一列,则可以得到完整的图形显示。
③功能原理
系统电源VCC为5V-6V,下载程序和调试时一定要保证5V电压,实际使用时将两节CR2032的纽扣电池串联成6V即可。C51单片机作为控制器,在它的P0、P2接口接有16个以共阳的方式连接的高亮度的LED发光二极管,由单片机输出低电平点亮。K2是芯片的复位按键;K1是画面切换按键,用于切换显示不同内容;水银开关信号送给int0。
系统的扩展接口有三个:J1用于和LED显示及水银开关扩展板进行连接;J6 用于串孔的扩展,同时可以利用该串孔进行ISP程序下载,该接口为5V的电平,如需和计算机连接需要外接电平转换模块;J7为扩展接口,可以连接其他扩展功能模块。这三个扩展接口将单片机的资源全部引出,因此摇摇棒的核心板可以单独作为一个单片机的开发板使用。
3PCB显示板及主控板图
4PCB板的安装和调试
①检查元器件数量与质量,并将元器件归类
②对元器件的引脚进行整形以方便焊接时使用。
③对烙铁镀锡,并清洁焊接部位。
④焊接最小电路部分。
⑤焊接LED部分。先将16个LED发光二极管插入PCB板上的指定位置,LED发光二极管的引脚是“长正短负”,PCB板上的焊盘是“方正圆负”。先将每个LED发光二极管的长引脚点上锡,轻焊在电路板上,以便于调整在PCB板上的姿态。
⑥焊接其余元器件。其中水银开关里的水银珠很活跃,导致在接通时容易产生抖动,所以将水银开光斜向上放置,靠水银珠自身重力的作用减少抖动。
⑦检查焊接质量,对不符合要求的进行修整。
⑧剪去多余的引脚
⑨下载程序进行调试
5问题与分析
①在软件设计程序编程时,延时子程序设计的时间长短会出现一些问题。时间设的太长,在摇晃过程中,LED发光二极管点亮的速度会很慢,致使在使用过程中左右摇晃的频率,幅度会很大,画面就不容易显示或者不清晰,只出现部分画面等情况;时间设的太短,LED发光二极管点亮的速度会很快,那么摇晃过程中,甚至有些应该亮的频率比较高的二极管根本来不急点亮,那么在人眼看来,那些二极管根本就没点亮。因此,在设置延时子程序时间的问题上,要计算出单向甩出摇摇棒所需的具体时间。这样,LED灯亮的速度才会适中,致使演示效果完好。
②在字模选取时,字模走向,点阵格式等方面选取不当会导致显示出的图像,文字信息等不完整或不能显示;那么,字模的选取方面,点阵格式,字模走向等的选择必须与硬件电路中的一一对应;
实验总结
1.实习中的收获和感受
单片机是计算机技术,大规模集成电路技术和控制技术的综合产物。现在,单片机早已成为人类生活中的不可缺少的助手。作为本专业的核心课程之一,我意识到,要学好单片机,不仅要在理论上弄清楚其工作原理和工作方式,更好在实践中加强自己的动手能力,培养软硬件结合的意识,以全面的掌握单片机开发技术。
本次电路综合实习意在以单片机开发为核心,培养锻炼同学们自主设计电子系统的能力,综合模电和数电基础,整合电路基础、信号与系统知识,构建完整的电子系统开发知识体系。
单片机应用系统设计不断要求熟练掌握单片机程序和编程技术,而且还要具备扎实的单片机硬件方面的理论和实践知识。一开始我们在PCB板上焊接存在盲区,因为毕竟PCB板不是自己动手设计,但是通过熟读PCB板的原理图,配合有关资料,我们逐渐了解了各个系统单元的功能和原理,更好的在实践中学习了单片机的有关知识,也在其后的焊接过程中,在动手实践的过程中养成了完成自主思考的良好习惯。
2.实习中遇到的问题和教训
虽然在实习中有很多收获,但是这过程却不是一路顺风的,在实习中我们也有过非常大的挑战,犯过很多错误,也正是因为这些错误和纠正错误的过程,我们才能不断进步。
第一,在焊接过程中,由于没有吃透电路图的设计,对某些原件的焊接顺序等技巧没有合理掌握,造成焊接焊反的结果,这是十分值得警惕注意的,在后来的过程中,由于需要添加别的原件以及通过并口下载线烧写程序,某些之前没有仔细布局好的地方成了很大的障碍。
第二,由于使用C51编写程序还不熟练,在复习C语言的过程中浪费了大量的时间,其直接结果就是只完成了最基本的液晶模块,其他模块因为时间仓促,修改不善只能忍痛放弃。
第三,在调试过程中,由于对KEIL环境的陌生,不得不请老师和同学,有时限于软件知识的缺乏,只能手动从源程序中寻找BUG,没有合理运用软件的辅助,这使得自己在调试过程中总是比别人慢半拍,这个教训值得谨记。
第四,虽然老师帮助我们解决了自己设计PCB板的现实障碍,但是在设计PCB板,学习使用Protel 99SE方面,其实我们应该责无旁贷的通过自主学习培养技巧,掌握技能,在这方面,我一开始存在误区,以至于在后来软硬件结合的过程中有了很多盲区。
这些经验教训一方面让我认识到了所学知识的局限,一方面也加深了我对电子电路知识的理解。可以说,正是因为有了这些经验教训,我才能在这其中真正学到东西。
心得体会
通过此次实习,我学会了仿真环境KEIL的使用方法,也学会了焊接PCB板的必要技巧。这是个磨练意志的过程,但是更重要的是通过不断的尝试,不断的校对,不断的修改,最后完成一个合理的设计过程,需要明确了自己专业的方向。
实习时培养学生综合运用所学知识,发现、提出、分析、和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,通过电路综合实习我们能够比较系统的了解理论知识,把理论和实践相结合,并且应用到生活当中去。在设计过程中我们遇到的问题,在努力寻求最佳路径解决问题时,无形中提高了我们的动手能力和动脑能力,并且同学之间还能互相探讨问题,研究解决方法,增进大家的团队意识。
实习是短暂的。但是影响确是长远的。本次电路综合实习,我们对本专业的研究内容和研究方法有了比较深入的了解,也相信通过这种实践活动,能够培养我们自主的意识,为了以后的设计打下基础。
附录
源程序
#include #include "ziku.h" unsigned int n=0; unsigned char m=0; unsigned char d=0; void delayms() { int i; //for(i=0;i<160;i++); //晶振22.1184M for(i=0;i<120;i++); //晶振14.7456M } void delay(char x) { int i,j; for(i=0;i } void init() { EA=1; //打开中断总开关 EX0=1; //打开中断0的允许开关 EX1=1; //打开中断1的允许开关 IT0=0; //设置中断0的中断方式为低电平触发 IT1=1; //设置中断1的中断方式为脉冲出发 } void ins_0() interrupt 0 { delay(4); for(n=0;n<128;n=n+2) { //P2=~hanzi[m][n]; P0=~hanzi[m][n+1]; /* d=0; if((hanzi[m][n]&0x01) == 0) d|=0x80; if((hanzi[m][n]&0x02) == 0) d|=0x40; if((hanzi[m][n]&0x04) == 0) d|=0x20; if((hanzi[m][n]&0x08) == 0) d|=0x10; if((hanzi[m][n]&0x10) == 0) d|=0x08; if((hanzi[m][n]&0x20) == 0) d|=0x04; if((hanzi[m][n]&0x40) == 0) d|=0x02; if((hanzi[m][n]&0x80) == 0) d|=0x01; P0=d; */ d=0; if((hanzi[m][n]&0x01) == 0) d|=0x80; if((hanzi[m][n]&0x02) == 0) d|=0x40; if((hanzi[m][n]&0x04) == 0) d|=0x20; if((hanzi[m][n]&0x08) == 0) d|=0x10; if((hanzi[m][n]&0x10) == 0) d|=0x08; if((hanzi[m][n]&0x20) == 0) d|=0x04; if((hanzi[m][n]&0x40) == 0) d|=0x02; if((hanzi[m][n]&0x80) == 0) d|=0x01; P2=d;//P2口的硬件定义和软件定义需要转换 delayms(); } } void ins_2() interrupt 2 { m++; delayms(); if(m==2) m=0; } void main() { init(); while(1) { P0=0xff; P1=0xff; } } reg51.h char code hanzi[][128]= //第一维控制显示屏幕的屏幕数,第二维度控制每个屏幕显示的文字个数 { //新[16*16]上下列排 0x02,0x04,0x22,0x88,0x2A,0x92,0xA6,0x81, 0x63,0xFE,0x26,0x80,0x6B,0xA0,0x22,0x94, 0x02,0x18,0x3F,0xE0,0x22,0x00,0x42,0x00, 0xC3,0xFF,0x46,0x00,0x02,0x00,0x00,0x00, //年[16*16]上下列排 0x00,0x20,0x04,0x20,0x08,0x20,0x33,0xE0, 0xE2,0x20,0x22,0x20,0x22,0x20,0x3F,0xFF, 0x22,0x20,0x22,0x20,0x22,0x20,0x26,0x20, 0x62,0x20,0x20,0x60,0x00,0x20,0x00,0x00, //快[16*16]上下列排 0x01,0x00,0x0E,0x00,0x00,0x00,0xFF,0xFF, 0x08,0x41,0x04,0x42,0x08,0x44,0x08,0x58, 0xFF,0xE0,0x08,0x50,0x08,0x48,0x08,0x44, 0x1F,0xC2,0x08,0x43,0x00,0x42,0x00,0x00, //乐[16*16]上下列排 0x00,0x00,0x01,0x02,0x03,0x04,0x3D,0x08, 0x21,0x30,0x21,0x02,0x21,0x01,0x2F,0xFE, 0x41,0x00,0x41,0x00,0xC1,0x20,0x41,0x10, 0x01,0x0C,0x03,0x06,0x01,0x00,0x00,0x00, //万[16*16]上下列排 0x20,0x00,0x20,0x01,0x20,0x02,0x20,0x04, 0x20,0x08,0x20,0x70,0x3F,0x80,0x22,0x00, 0x22,0x02,0x22,0x01,0x22,0x02,0x27,0xFC, 0x22,0x00,0x60,0x00,0x20,0x00,0x00,0x00, //事[16*16]上下列排 0x20,0x20,0x20,0x20,0x2E,0xA8,0x2A,0xA8, 0x2A,0xA8,0x2A,0xAA,0x2A,0xA9,0xFF,0xFE, 0x2A,0xA8,0x2A,0xA8,0x2A,0xA8,0x2A,0xA8, 0x2E,0xFC,0x60,0x20,0x20,0x20,0x00,0x00, //如[16*16]上下列排 0x08,0x00,0x08,0x41,0x0F,0xA2,0xF8,0x14, 0x08,0x08,0x08,0x34,0x0F,0xC2,0x00,0x00, 0x0F,0xFE,0x08,0x04,0x08,0x04,0x08,0x04, 0x08,0x04,0x1F,0xFE,0x08,0x00,0x00,0x00, //意[16*16]上下列排 0x08,0x02,0x08,0x0C,0x48,0x00,0x4B,0xEE, 0x6A,0xA1,0x5A,0xA1,0x4A,0xB1,0xCA,0xA9, 0x4A,0xAD,0x5A,0xA1,0x6A,0xA1,0xCF,0xE7, 0x4A,0x00,0x18,0x08,0x08,0x06,0x00,0x00,}; 实物图
