电子工艺实习总结.docx
《电子工艺实习总结.docx》由会员分享,可在线阅读,更多相关《电子工艺实习总结.docx(13页珍藏版)》请在冰点文库上搜索。
电子工艺实习总结
电子工艺实习总结
自动化学院2010211401班10211708赵寅达
一、实习目的
电子工艺实习是机电与检测等相关专业重要的实践教学环节,以电子产品为工程背景,通过实习使学生通过理论联系实际,巩固和扩大已学过的电子技术的基础知识,获得电子产品生产工艺的基本知识和基本操作技能,了解电子产品制造过程,为专业基础课和专业课程的学习建立初步的感性认识,并提高工程实践能力。
二、实习任务
通过电子工艺实习学生应具备以下实践动手能力:
焊:
掌握电子元件的焊接、拆焊技术;
选:
能够熟练进行元器件识别、性能简易测试、筛选;
装:
具备电子电路和电子产品装配能力;
调:
具备电子电路与电子小产品调试能力;
测:
会正确使用电子仪器测量电参数;
读:
具备电子电路读图能力;
编:
会编写简单控制程序,驱动硬件完成预定功能;
写:
培养编写实习报告的能力;
校:
具备电子产品质量检验的能力;
触:
提前触及模电、数电及单片机三大技术,与数码产品接轨。
第一周:
学习单片机基本概念
61板硬件构成和开发环境
掌握焊接工艺,完成焊接练习(100点以上)
掌握常用电子元件、61板测试技术
完成61板焊接及测试。
第二周:
掌握61板硬件原理:
IO口,定时/计数器,语音程序的编写;
熟悉编译调试环境,学习单片机汇编语言编程和C语言编程;
编写程序:
1)十字路口交通信号灯控制,2)语音播放控制。
三、工艺基础知识
1.凌阳的16位单片机
CPU内核采用凌阳最新推出的μ’nSP™(MicrocontrollerandSignalProcessor)16位微处理器芯片(以下简称μ’nSP™)。
μ’nSP™内核是一个通用的核结构。
除此之外的其它功能模块均为可选结构,可形成各种不同系列派生产品,以适合不同的应用场合。
具有更强的功能和更低的成本。
2.μ’nSP™家族
围绕μ’nSP™所形成的16位μ’nSP™系列单片机。
采用的是模块式集成结构,它以μ’nSP™内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件。
μ’nSP™家族有以下特点:
(1)体积小、集成度高、可靠性好且易于扩展
(2)具有较强的中断处理能力
(3)高性能价格比
(4)功能强、效率高的指令系统
(5)低功耗、低电压
3.SPCE061A简介
(1)总述:
SPCE061A是μ’nSP™系列产品中的一款16位结构的微控制器。
SPCE061A里只内嵌32K字的闪存(FLASH)。
较高的处理速度使μ’nSP™能够非常容易地、快速地处理复杂的数字信号。
以μ’nSP™为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。
(2)性能:
16位μ’nSP™微处理器;工作电压(CPU)VDD为2.4~3.6V(I/O)VDDH为2.4~5.5VCPU时钟:
0.32MHz~49.152MHz;内置2K字SRAM;内置32KFLASH;可编程音频处理;晶体振荡器;系统处于备用状态下(时钟处于停止状态),耗电仅为2μA/3.6V;
2个16位可编程定时器/计数器(可自动预置初始计数值);2个10位DAC(数-模转换)输出通道;32位通用可编程输入/输出端口;14个中断源可来自定时器A/B,时基,2个外部时钟源输入,键唤醒;具备触键唤醒的功能;使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据;锁相环PLL振荡器提供系统时钟信号;32768Hz实时时钟;7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器;声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能;具备串行设备接口;具有低电压复位(LVR)功能和低电压监测(LVD)功能;内置在线仿真电路ICE(In-CircuitEmulator)接口;具有保密能力;具有WatchDog功能。
(3)芯片的引脚排列和说明
SPCE061A有两种封装片
一种为84个引脚,PLCC84封装形式;它的排列如图1.3所示;在PLCC84封装中,有15个空余脚,用户使用时这15个空余脚悬浮。
另一种为80个引脚,LQFP80封装。
在LQFP80封装中有9个空余脚,用户使用时这9个空余脚接地。
(4)SPCE061A最小系统
在OSCO、OSCI端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP和VSSP端接上相应的电阻电容后即可工作。
其它不用的电源端和地端接上0.1μF的去耦电容提高抗干扰能力。
(5)SPCE061A开发方法
A.SPCE061A的开发是通过在线调试器PROBE实现的。
它既是一个编程器(即程序烧写器),又是一个实时在线调试器。
用它可以替代在单片机应用项目的开发过程中常用的软件工具——硬件在线实时仿真器和程序烧写器。
它利用了SPCE061A片内置的在线仿真电路ICE(In-CircuitEmulator)接口和凌阳公司的在线串行编程技术。
B.PROBE
工作于凌阳IDE集成开发环境软件包下,其5芯的仿真头直接连接到目标电路板上SPCE061A相应管脚,直接在目标电路板上的CPU---SPCE061A调试、运行用户编制的程序。
另一头是标准25针打印机接口,直接连接到计算机打印口与上位机通讯,在计算机IDE集成开发环境软件包下,完成在线调试功能。
C.集成开发环境IDE182使用
仿真结束,确认功能完全实现,则可以拔下下载线5针头,SPCE061A的内部代码就可以脱机运行。
(6)应用领域
家用电器控制器:
冰箱、空调、洗衣机等白色家电仪器仪表:
数字仪表(有语音提示功能)电表、水表、煤气表、暖气表工业控制智能家居控制器通讯产品:
多功能录音电话、自动总机、语音信箱、数字录音系统产品医疗设备、保健器械(电子血压计、红外体温监测仪等)体育健身产品(跑步机等)电子书籍(儿童电子故事书类)、电教设备等语音识别类产品(语音识别遥控器、智能语音交互式玩具等)
四、61板硬件原理
1.μ’nSP™的内核组成:
总线、算术逻辑运算单元、寄存器组、中断系统、堆栈
2.算术逻辑运算单元ALU
16位基本的算术逻辑运算带移位操作的16位算术逻辑运算16位×16位的乘法运算Mul,12个时钟周期内积运算Muls,10n+6个时钟周期(n为乘积求和的项数)
3.寄存器组
8个16位寄存器通用型寄存器:
R1~R4专用型寄存器:
堆栈指针寄存器SP、基址指针寄存器BP:
[BP+IM6]、段寄存器SR、
程序计数器PC
段寄存器SR:
代码段选择字段CS:
SR中B5~B0数据段选择字段DS:
SR中BIT15~BIT10标志位NZSC:
SR中BIT6~
进位标志C、零标志Z、负标志N、符号标志S
4.SPCE061A输入/输出接口
SPCE061A有两个16位通用的并行I/O口:
A口和B口
每一位都可通过编程单独定义成输入或输出口
A口的IOA0~IOA7用作输入口时具有唤醒功能
5.时钟电路
μ’nSP™时钟电路采用晶体振荡器电路。
外接晶振采用32768Hz。
推荐使用外接32768Hz晶振,因阻容振荡的电路时钟不如外接晶振准确。
32768Hz实时时钟通常用于钟表、实时时钟延时以及其它与时间相关类产品。
SPCE061A通过对32768Hz实时时钟源分频而提供了多种实时时钟中断源。
例如,用作唤醒源的中断源IRQ5_2Hz,表示系统每隔0.5秒被唤醒一次,由此可作为精确的计时基准。
除此之外,SPCE061A还支持RTC振荡器强振模式/自动模式的转换(参考系统时钟部分)。
6.锁相环PLL(PhaseLockLoop)振荡器
PLL电路的作用是将系统提供的实时时钟的基频(32768Hz)进行倍频,调整至49.152MHz、40.96MHz、32.768MHz、24.576MHz或20.480MHz。
系统默认的PLL自激振荡频率为24.576MHz。
7.系统时钟
32768HzRTC振荡器有两种工作方式:
(1)强振模式RT振荡器始终运行在高耗能的状态下。
(2)自动弱振模式系统在上电复位后的前7.5s内处于强振模式,然后自动切换到弱振模式
以降低功耗。
CPU被唤醒后默认的时钟频率为Fosc/8,用户可以根据需要调整该值。
CPU被唤醒后经过32个时钟周期的缓冲时间后再进行其它的操作,这样可以避免在系统被唤醒后造成ROM读取错误。
8.定时器/计数器
(1)SPCE061A提供了两个16位的定时/计数器:
TimerA和TimerB。
(2)定时器/计数器用途
它会作为定时器中断信号传输给CPU中断系统;它又会作为4位计数器计数的时钟源信号,输出一个具有4位可调的脉宽调制占空比输出信号APWMO或BPWMO(分别从IOB8和IOB9输出),可用来控制马达或其它一些设备的速度。
定时器溢出信号还可以用于触发ADC输入的自动转换过程和DAC输出的数据锁存。
定时器发生溢出后会产生一个溢出信号(TAOUT/TBOUT)。
(3)定时器/计数器B
P_TimerB_Data(读/写)(700CH)P_TimerB_Ctrl(写)(700DH)用户可以通过设置该单元的第0~2位来选择TimerB的时钟源。
设置第6~9位,TimerB将输出不同频率的脉宽调制信号,即对脉宽占空比输出BPWMO进行控制。
9.睡眠与唤醒
睡眠
IC在上电复位开始工作,直到接收到睡眠信号后,才关闭系统时钟(PLL振荡器),
进入睡眠状态。
用户可以通过对P_SystemClock(读)(7013H)单元写入CPUCLKSTOP控制字(CPU
睡眠信号)使系统从运行状态转入备用状态。
系统进入睡眠状态后,程序计数器(PC)会停在程序的下一条指令计数上,当有任
一唤醒事件发生后开始由此继续执行程序。
唤醒
系统接收到唤醒信号后接通PLL振荡器,同时CPU会响应唤醒事件的处理并进行
初始化。
IRQ3_KEY为触键唤醒源(IOA7~IOA0),其它中断信号(FIQ、IRQ1~IRQ6及UART
IRQ)都可以作为唤醒源。
唤醒操作完成后,程序将会从进入睡眠后指令计数的断点处开始被继续执行。
关于触键唤醒源,请参考I/O端口结构。
10.模-数转换器ADC
8路可复用10位ADC通道7路通道(Line_In)和IOA[0~6]管脚复用一路通道(MIC_In)用于语音输入,模拟信号经过自动增益控制器和放大器放大后进行A/D转换。
最大的模拟信号输入电压范围:
0V~AVdd。
11.DAC方式音频输出
SPCE061A为音频输出提供两个DAC通道,
DAC1和DAC2输出的模拟电流信号通过DAC1和DAC2管脚输出。
和DAC2的输出数据应写入P_DAC1(写)(7017)和P_DAC2(写)(7016)单元。
12.低电压监测/低电压复位(LVD/LVR)
SPCE061A可通过编程设置低电压监测和低电压复位功能,目的是为了通过对系统的电源电压进行监控,而使系统运行在一个正常、可靠的工作环境,并在一旦出现电源异常的情况下能立即采取相应的措施,使系统及时恢复正常。
13.串行设备输入输出端口(SIO)
串行输入输出端口SIO提供了一个1位的串行接口,用于与其它设备进行数据通讯。
在SPCE061A内通过IOB0和IOB1这2个端口实现与设备进行串行数据交换功能。
IOB0用来作为时钟端口(SCK),IOB1则用来作为数据端口(SDA),用于串行数据的接收或发送。
参见IOB口的特殊功能。
14.保密设定
如果希望将内部的闪存进行保密设定,可将PFUSE接5V,PVIN接GND并维持2s以上即可将内部保险丝熔化,此后就无法再完成read,download和debug等功能。
因此用户使用过程中一定要慎重。
15.看门狗计数器(WatchDog)
SPCE061A的WatchDog的清除时间周期为0.75s。
因为WatchDog的溢出复位信号WatchDog_Reset是由4Hz时基信号经4分频之后产生的,即每4个4Hz时基信号(1s)将会产生一个WatchDog_Reset信号。
而清除WatchDog的WatchDog_Clear信号却可以发生在4Hz信号(0.25s)之间的任意一个时刻点上。
假如WatchDog_Clear信号发生在4Hz信号尾端的0.01s即第0.25s时刻,此时虽然WatchDog被清掉,但由于它发生在4Hz信号之后,再经3个4Hz信号即0.75s,如果一直没有WatchDog_Clear信号,便会产生出一个WatchDog_Reset信号。
五、焊接步骤
1.焊接SPY0029A。
2.焊接电阻(18个)。
3.焊接二极管(3个)。
4.焊接晶振。
5.焊接独石电容(19个)。
6.焊接瓷片电容(5个)。
7.焊接电解电容(C33,C35)。
8.电源整体初测。
9.点元器件初测。
10.完成所有电解电容的焊接(12个)。
11.焊接按键及电位器。
12.焊接发光二极管。
13.焊接电源座。
14.第二次电源测试。
15.焊接单排插针。
16.焊接五针座。
17.焊接麦克风。
18.芯片座焊接。
19.管脚整修
六、焊接问题分析、测试结果分析
焊接问题分析
1.若短路,用万用表查PCB板上J10两管脚,查清楚短路的原因,可能是因为二极管坏掉或者电源部分电容有问题,请排除错误再往下执行。
用万用表查SPY0029A的三个管脚之间是否短路,若短路,可能是因为第二个二极管坏掉或者SPY0029A没有焊接好,请排除错误再往下执行。
2.焊接完电源座,电源部分已全部焊接完,这时可以上电,会看到电源指示灯点亮,如没亮请立刻断电并查清原因。
3.焊接麦克风。
测试结果分析
1.测试61板电源和地是否有短路
现象:
电阻大于320欧
结论:
正常
2.测试61板电源部分器件是否工作正常
现象:
发光二极管D1点亮
结论:
正常
3.测试61板上各器件电源供电是否正常
现象:
U1第7脚电压3.33v
U4第20脚电压3.31v
J4第1脚电压3.17v
U2第7,8脚电压4.41v
J6,J7,J8,J9“+”端电压4.4v
结论:
正常
4.测试按键
现象:
电压为高电平
结论:
正常
5.测试晶振工作是否正常
现象:
有正弦波
结论:
正常
七、流程图
八、源程序及注释
实验一:
十字路口交通信号灯控制实验
#defineP_IOA_Data(volatileunsignedint*)0x7000//声明地址
#defineP_IOA_Buffer(volatileunsignedint*)0x7001
#defineP_IOA_Dir(volatileunsignedint*)0x7002
#defineP_IOA_Attrib(volatileunsignedint*)0x7003
#defineP_IOB_Data(volatileunsignedint*)0x7005
#defineP_IOB_Dir(volatileunsignedint*)0x7007
#defineP_IOB_Attrib(volatileunsignedint*)0x7008
#defineP_Watchdog_Clear(volatileunsignedint*)0x7012
unsignedintKeyScan(void);//扫描是否按下起始键
unsignedintKeyScan1(void);//扫描是否按下终止键
voidDelay(unsignedlongx);//延迟灯的状态
voidbegin();
unsignedinti;
unsignedintuiKey;//储存起始键键值
unsignedintikey;//储存终止键键值
intmain(void)
{
*P_IOA_Dir=0xfff7;//定义管脚属性
*P_IOA_Attrib=0xfff7;
*P_IOA_Data=0x0000;
*P_IOB_Dir=0xff7f;
*P_IOB_Attrib=0xff7f;
*P_IOB_Data=0x0000;
while
(1)
{
begin();
}
}
voidbegin()//控制亮灯主程序
{
uiKey=KeyScan();//扫描是否按下起始键
if(uiKey!
=0)
{
while
(1)//若按下起始键,进入亮灯循环状态
{
*P_IOA_Data=0x2000;
*P_IOB_Data=0x0002;
Delay(500000);
*P_Watchdog_Clear=0x0001;
i=0;
while(i<3)
{
*P_IOA_Data=0x4000;*P_IOB_Data=0x0001;Delay(20000);*P_Watchdog_Clear=0x0001;
*P_IOA_Data=0x0000;*P_IOB_Data=0x0000;Delay(20000);*P_Watchdog_Clear=0x0001;
i++;
}
*P_IOA_Data=0x1000;
*P_IOB_Data=0x0001;
Delay(500000);
*P_Watchdog_Clear=0x0001;
i=0;
while(i<3)
{
*P_IOA_Data=0x1000;*P_IOB_Data=0x0001;Delay(20000);*P_Watchdog_Clear=0x0001;
*P_IOA_Data=0x0000;*P_IOB_Data=0x0000;Delay(20000);*P_Watchdog_Clear=0x0001;
i++;
}
*P_Watchdog_Clear=0x0001;
}
}
*P_Watchdog_Clear=0x0001;
}
unsignedintKeyScan(void)//按下起始键则返回1
{
unsignedintuiData;
unsignedintuiTemp;
uiData=*P_IOA_Data;
uiData=uiData&0x0008;
*P_Watchdog_Clear=0x0001;
returnuiData;
}
unsignedintKeyScan1(void)//按下终止键则返回1
{
unsignedintiData;
unsignedintiTemp;
iData=*P_IOB_Data;
iData=iData&0x0080;
*P_Watchdog_Clear
=0x0001;
returniData;
}
voidDelay(unsignedlongx)//延迟程序
{
unsignedlongk;
unsignedlonguiCount;
for(uiCount=0;k!
=1,uiCount<=x;uiCount++)
{
if(KeyScan1()!
=0)
for(;KeyScan()==0;*P_IOA_Data=0x0000,*P_IOB_Data=0x0000,begin());
*P_Watchdog_Clear=0x0001;
}
}
实验二:
语音播放
#include"s480.h"#defineP_Watchdog_Clear(volatileunsignedint*)0x7012voidPlaySnd_Auto(unsignedintuiSndIndex,unsignedintuiDAC_Channel);unsignedintKey;voidcheck(){Key=SP_GetCh();//获取键值switch(Key){case0x0001:
//1号键PlaySnd_Auto(0,3);break;case0x0002:
//2号键PlaySnd_Auto(1,3);break;case0x0004:
//3号键PlaySnd_Auto(2,3);break;default:
break;}System_ServiceLoop();//按键扫描}intmain(void){System_Initial();//系统初始化while
(1){check();*P_Watchdog_Clear=0x0001;}}//uiSndIndex:
语音资源序号//uiDAC_Channel:
语音播放通道voidPlaySnd_Auto(unsignedintuiSndIndex,unsignedintuiDAC_Channel){SACM_S480_Initial
(1);//初始化为自动播放方式SACM_S480_Play(uiSndIndex,uiDAC_Channel,3);//播放while((SACM_S480_Status()&0x0001)!
=0){//判断播放状态,如还在播放则继续循环check();SACM_S480_ServiceLoop();//播放系统服务程序*P_Watchdog_Clear=0x0001;}SACM_S480_Stop();//停止播放}
九、总结
在两星期的电子工艺实习中,我学到了61板单片机的原理、硬件结果及相应的编程运用知识,同时锻炼了动手操作能力。
第一周,我们学习了单片机的原理和焊接61板的实际操作。
由于基础知识掌握不充分,我在初始学习时遇到了很大困难,后来通过反复阅读课件,查找相关知识而有所缓解。
焊接61板也遇到了麻烦,由于调试不当,我的61板出现短路,险些烧坏。
幸好有老师的指导,经过部分元件的重新焊接,61板的调试和验收得以完成。
第二周我们主要学习了单片机汇编语言编程和C语言编程。
在周一到周五这几天里,我一度一筹莫展,周三时勉强完成雏形,但仍然漏洞百出。
经过交流才发现,大家都有这样那样的问题。
我们充分发挥团队作用,相互校对,到周四晚纷纷完工。
在我编程的过程中,一位同学教给我的键位扫描程序起到了决定性的作用。
这次实习使我发现,我的知识储备量远远不够,动手能力也不够理想。
虽然两周的学习对我的知识水平和操作能力起到了提高的作用,但相对一个合格北邮人的标准,仍然差距甚远。
这也是我今后学习的一大动力。
路漫漫其修远兮!