电子工程实习报告.docx
- 文档编号:10956960
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:40
- 大小:273.32KB
电子工程实习报告.docx
《电子工程实习报告.docx》由会员分享,可在线阅读,更多相关《电子工程实习报告.docx(40页珍藏版)》请在冰点文库上搜索。
电子工程实习报告
CompanyDocumentnumber:
WTUT-WT88Y-W8BBGB-BWYTT-19998
电子工程实习报告
中国地质大学(武汉)
课程:
电子工程实习报告
学号:
班级:
姓名:
指导老师:
陈分雄、叶敦范、罗大鹏、杨勇、王勇
第一阶段软件使用与仿真·····································3
单片机系统原理图绘制·································3
PCB制板·············································3
编程训练·············································4
第二阶段焊接电路板········································18
单片机最小系统板焊接································18
第三阶段电路调试与程序设计································18
电路调试及功能测试·································18
蜂鸣器调试·········································19
串口通信调试······································19
液晶显示调试·······································19
数码管及键盘控制调试·······························20
系统综合功能设计···································20
附录·······················································21
实习小结···················································38
第一阶段软件使用与仿真
﹑单片机系统原理图绘制(指导老师:
罗大鹏)
1.地点:
信息楼503
2.目的:
熟练掌握protel99的使用方法,绘制单片机最小系统原理图,且保证ERC校验无误,并生成网络报表
3.内容:
⑴﹑文件管理
先新建设计数据库,再在数据库中新建各种文件,主要用到SchematicDocument和PCBDocument。
在使用中学会及时保存原理图或PCB文件以及熟练文件的导入导出。
⑵﹑protel的绘图方法
通过学习掌握绘图的一些方法。
要对键盘上的快捷键熟练应用,比如:
把原理图的放大PageUP,缩小PageDown,追踪鼠标视野Home,删除Delete,空格键转换元件以及撤销选择区域X-A等。
元器件或区域的复制,粘贴,删除等。
熟悉界面中的工作条功能。
⑶﹑绘制原理图
首先添加元件库,包括自制元件和下载的元件库,加上protel自带的元件库。
把需要用到的元件在自定义合适大小的图纸上合理摆布,再用导线把各器件连接起来,注意各电源及接地符号,节点,总线等的设置方法,使用绘图工具实现文字注释或其他注释。
⑷﹑ERC校验
待原理图绘制完毕,然后进行电气法则测试,即ERC校验,若产生错误,则根据错误提示对原电路图进行修改,直至通过ERC校验,原理图无误。
⑸﹑修改元器件封装
当ERC校验无错时,然后对照元件清单及PCB元件库,对每一个元器件封装进行修改,产生元件清单。
修改器件封装,修改其属性中的footprint即可。
修改完以后,再进行一次ERC校验,若出现错误,则根据错误提示修改,直至能通过ERC校验无错误产生。
⑹﹑生成网络报表
待修改封装之后,并再次通过ERC校验无错误产生,生成网络报表。
然后对照原电路图把网络报表仔细检查一遍,检查每一个器件与其他器件间的连接是否有误,及是否有元器件的丢失,检查VCC与GND的连接,是否全部连上。
若有遗漏或错误,则返回修改,在进行ERC校验,生成网络报表,直至无遗漏和错误。
此工作非常繁琐,需耐心和仔细对待。
但由于前些工作比较仔细所以原理图基本没有太大错误。
原理图见附录1。
﹑PCB制板
1.地点:
信息楼503
2.目的:
熟练掌握protel99的使用方法,绘制单片机最小系统原理图
3.内容:
⑴﹑新建PCB文件,并添加老师要求的PCB元件库。
⑵﹑导入网络报表
导入上一阶段产生的网络报表,在导入过程中会进行错误检查,若产生错误,则需返回上一阶段,根据错误提示,修改元器件的封装等等,然后按步骤生成网络报表,再次导入网络报表,直至导入无错误。
⑶﹑手工布局
在PCB图纸上KeepOutLayer层放置线定义板宽,在导入网络报表无错误之后,然后执行,在将导入的各元器件进行布局摆放,其中键盘按照矩阵形式排列,我们所用的是16个键,按4×4矩阵进行排列,其中外部扩展及下载口及电源及串口等等器件应放置在PCB板边缘,在元件布局应按原理图的各个模块的具体分布进行,把每一模块的各器件尽量摆放在一起,并标注各个模块,再逐步调整,使所用PCB板面积尽量小,利用效率最大。
⑷﹑自动布线及手工改动
首先设计规则,主要是电线宽度,孔大小约束。
待手工布局结束后,进行自动布线,自动布线结束后,仔细检查布线效果,布线应遵循导线走钝角,线尽量走近路,尽量保证TopLayer层走横线,BottomLayer层走竖线。
然后去掉自动布线所产生的毛刺,修改走直角或锐角的连线,并使线程尽量短。
此过程中应逐个局部仔细检查修正。
修正结束后,可以对PCB添加泪滴焊盘,进行覆铜或放置汉字,防止实际硬件电路静电干扰。
PCB板见附录2。
⑸﹑设计规则检查
对已经布局布线的PCB图进行设计规则检查,对PCB图进行查错,以保证其正确无误。
⑹﹑观看3D图
单PCB图画好后,可以观看其3D效果图,以验证其布局布线合理,和提前知晓制成板后的效果。
PCB3D效果图见附录3
⑺﹑生成PCB报表
最后可以生成PCB报表,包括电路板状态信息报表,引脚信息报表,元件信息报表,网络分析信息报表等,以对板子有个清晰的认识。
、编程训练:
(指导老师:
杨勇)
(一)熟悉keil软件的使用和仿真步骤
Keil集成开发软件基本操作
1、新建一个项目文件
2、首先点击KeiluVision2,进入uVision2界面。
点击工具栏Project选项中的NewProject,准备开始建立自己的项目
3、输入工程文件名称,并选择保存工程文件的目录。
4、为项目文件选择一个目标器件(如AT89C51),如图所示。
5、用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择“为目标‘目标1’设置选项”如下图所示。
6、在“为目标‘目标1’设置选项”中,点击“调试”菜单,在此菜单中可选择是使用硬件仿真,还是软件仿真,连接实验箱做实验时选择硬件仿真,点击硬件仿真选项后面的[设置]选项,在此对对话框中选择串口和波特率,串口根据所连电脑来决定。
7、点击“文件/新建”创建源程序文件并输入程序代码。
8、在文本框中输入原程序
9、点击“文件/保存“对程序进行保存。
10、用鼠标对项目工作区的目标1,点击右键在弹出的菜单中选择添加文件到原代码组,如下图所示:
11、在弹出的添加文件框中,选择需要添加到项目中的文件。
12、点击编译连接的图标,对项目文件进行编译
13、点击“调试/启动/停止调试”进入调试界面
若要查看内存中的数据,点击“视图/存储器窗口”
(二)实训100例部分
LED显示
#include<>
sbitled=P3^2;
voiddelay_ms(unsignedcharx_ms)
{
unsignedchari;
while(x_ms--)
{
for(i=124;i>0;i--)
{
}
}
}
voidmain(void)
{
while
(1)
{
led=1;
delay_ms(100);
led=0;
delay_ms(100);
}
}8只数码管滚动显示单个数字
#include<>
#include<>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
voidDelayMS(uintx)
{
uchari;
while(x--)for(i=0;i<120;i++);
}
voidmain()
{
uchari,k=0x80;
while
(1)
{
for(i=0;i<8;i++)
{
P2=0xFF;
k=_crol_(k,1);
P0=DSY_CODE[i];
P2=k;
DelayMS(300);
}
}
}
8只数码管显示多个不同字符
#include<>
#include<>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
voidDelayMS(uintx)
{
uchari;
while(x--)for(i=0;i<120;i++);
}
voidmain()
{
uchark,m=0x80;
P0=0xff;
P2=0x00;
while
(1)
{
for(k=0;k<8;k++)
{
m=_crol_(m,1);
P2=m;
P0=DSY_CODE[k+1];
DelayMS
(2);
}
}
}
定时器控制数码管动态显示
#include<>
#include<>
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeDSY_CODE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF};
ucharcodeTable_OF_Digits[][8]=
{
{0,9,10,1,2,10,2,5},
{2,1,10,5,7,10,3,9}
};
uchari=0,j=0;
uintt=0;
voidmain()
{
P3=0x80;
TMOD=0x00;
TH0=(8192-4000)/32;
TL0=(8192-4000)%32;
IE=0x82;
TR0=1;
while
(1);
}
voidDSY_Show()interrupt1
{
TH0=(8192-4000)/32;
TL0=(8192-4000)%32;
P3=_crol_(P3,1);
P0=DSY_CODE[Table_OF_Digits[i][j]];
j=(j+1)%8;
if(++t!
=350)return;
t=0;
i=(i+1)%2;
}
报警器和旋转灯
#include<>
#include<>
#defineucharunsignedchar
#defineuintunsignedint
sbitSPK=P3^7;
ucharFRQ=0x00;
voiddelayms(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
voidmain()
{
P2=0x00;
TMOD=0x11;
TH0=0x00;
TL0=0xFF;
IT0=0;
IE=0x8B;
IP=0x01;
TR0=0;
TR1=0;
while
(1)
{
FRQ++;
delayms
(1);
}
}
voidEX0_INT()interrupt0
{
TR0=!
TR0;
TR1=!
TR1;
if(P2==0x00)
P2=0xE0;
else
P2=0x00;
}
voidT0_INT()interrupt1
{
TH0=0xFE;
TL1=FRQ;
SPK=~SPK;
}
voidT1_INT()interrupt3
{
TH1=-45000/256;
TL1=-45000%256;
P2=_crol_(P2,1);
}
1602字符液晶滚动显示程序
#include""
#include""点:
信息楼405
2.目的:
完成电路板和JTAG下载线的硬件焊接
3.内容:
(1)首先对照元件清单和电路图,检查器件是否完整,型号﹑规格﹑安装是否
正确。
(2)然后将各器件根据焊接规则焊接到电路板上,其中对于器件的摆放方向和
位置需十分注意。
先焊发热器件电阻和较低的电容,再焊较大的器件
(3)而后,焊接JTAG线,JTAG线里面的芯片电阻,电阻电容均为贴片封装,
焊接时需小心谨慎,对于各条线引的焊接也需谨慎,按照其对应的顺序进行焊接,焊接结束后,自行组装。
第三阶段电路调试与程序设计
(指导老师:
陈分雄王勇叶敦范)
﹑电路调试及功能测试
1.地点:
信息楼503
2.目的:
检查已经焊好的电路板和JTAG下载线是否无误
3.内容:
⑴﹑先用万用表检查电路板焊接是否都正确。
⑵﹑当检查没有短路,断路,虚焊,漏焊等错误后,给电路板供电,看二极管是否亮,是否有器件过热,有可能二极管或三极管会在焊接的过程中被烧坏,那样的话就要重新焊器件。
⑶﹑再用Keil软件给板子拷正确的程序,检查是否能按功能正常工作。
单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试中被发现和纠正的。
﹑蜂鸣器调试
1.目的:
主要是检验程序能否下载到芯片,蜂鸣器能正常工作,掌握程序的编译下载到芯片的方法。
2.内容:
⑴﹑在Keil环境中用C语言编写简单是蜂鸣器程序或音乐播放程序。
⑵﹑对Keil软件和程序下载软件进行相关配置设置。
⑶﹑将编译产生的hex文件下载到芯片,检测其工作是否正常,若工作不正常,则从软件及硬件两方面进行检查。
有用的报警声程序见附录3
﹑串口通信调试
1.地点:
信息楼503
2.目的:
实现计算机与单片机之间相互通讯功能
3.内容:
⑴﹑将编写的串口调试程序经过编译,下载到单片机。
⑵﹑串口实现功能为在计算机上能显示单片机的输出。
检测串口是否能正常工作,此阶段需用到串口软件及串口线。
若不能正常工作,则需从软件和硬件两方面进行检查。
⑶﹑正确功能为在电脑超级终端不停显示输出内容,与预期相同,工作正常。
串口调试程序见附录4
﹑液晶显示调试
1.地点:
信息楼503
2.目的:
保证液晶屏LCD能正常工作,输出效果有所扩展。
3.内容:
⑴﹑在编写程序前,认真阅读LCD液晶屏资料,掌握LCD1602及1602液晶模块数据手册(中文)中的液晶的使用和编程方法,了解其工作时序,及各个指令及初始化。
⑵﹑对照电路图中LCD连接情况,编写LCD1602移动显示程序,经编译下载至单片机,检测输出,若无输出,则调整电位器,若仍无输出则从软件及硬件两方面进行检查,找出错误原因,直至液晶屏能正常工作。
⑶﹑在程序编写时应时刻注意各个指令间的延时控制。
以保证液晶屏呈现效果移动循环显示,液晶屏工作正常。
之后也可用LCD做数字钟,这将在综合程序里被用到,液晶移屏显示程序见附录5
﹑数码管及键盘控制调试
1.地点:
信息楼503
2.目的:
保证数码管能正常显示,以及按键能控制数码管的显示
3.内容:
⑴﹑在编写程序前,应认真阅读LED和ZLG7289A资料,了解和掌握其工作时序,及各个指令及初始化,在程序编写时应时刻注意各个指令间的延时控制。
⑵﹑对照电路图中ZLG7289模块的连接情况,编写程序,经过编译,然后下载到单片机,检测展现效果,是否与程序预期相同。
⑶﹑实现效果逐个闪烁,逐个消隐,键盘控制改变数据并移动,与预期相同,工作状态正常。
再利用单片机内部时钟中断,编写数码管时钟程序,使数码管能够实现计时功能,键盘能够控制时分秒。
数码管显示及键盘控制程序见附录6
﹑系统综合功能设计
1.地点:
信息楼503
2.目的:
综合单片机开发板上的各个功能模块,以实现一个完整的系统功能
3.内容:
根据前面对各模块功能的理解和程序编写,结合各个模块实现一个整体系统,把各模块功能综合起来。
设计一综合系统。
系统设计程序见附录7。
验收程序设计:
仿手机按键如图
功能概述:
1,LED:
12个按键仿手机按键(按“按键”一下LED显示对应的数字,按两下显示后面的字母,以此类推
2,蜂鸣器:
有按键按下则响一下
3,数码管部分:
0,1位置显示按下的按键的对应键值
附录
附录1:
附录2:
附录3:
#include<>
#defineucharunsignedchar
sbitBUZZ=P3^3;
voiddelay()
{
uchari;
for(i=0;i<1000;i++)
}
main()
{while
(1)
{
BUZZ=0;
delay();
BUZZ=1;
delay();
}
}
附录4:
#include<>
#include<>
#ifdefMONITOR51
charcodereserve[3]_at_0x23;
#endif
voidmain(void){
unsignedinti=100;
#ifndefMONITOR51
SCON=0x50;
TMOD|=0x20;
TH1=0xE6;
TR1=1;
TI=1;
#endif
while(i--){
printf("%d",i);
printf("Helloeveryone\n");
}
while
(1);
}
附录5:
#include<>
unsignedcharcodedispcode1[]={"happybirthdy!
!
"};//要显示的字符串
unsignedcharcodedispcode2[]={"happyeveryday!
!
"};
unsignedchari,j,k,l;
sbitRS=P2^0;//IO口定义
sbitRW=P2^1;
sbitE=P2^2;
voiddelay()//延时函数
{
for(l=0;l<=100;l++);
}
voidLCD_cmd(unsignedcharcmd)//写指令函数
{
P0=cmd;
RS=0;RW=0;E=0;delay();E=1;
}
voidLCD_dat(unsignedchardat)//写数据函数
{
P0=dat;
RS=1;RW=0;E=0;delay();E=1;
}
voidLCD_table(unsignedchartable[],intn)//写字符串函数
{
inti=0;
for(i=0;i { LCD_dat(table[i]); } } voidinitializtion()//初始化函数 { LCD_cmd(0x01); LCD_cmd(0x38); LCD_cmd(0x0f); LCD_cmd(0x06); } voidmain() { initializtion(); LCD_cmd(0x80); LCD_table(dispcode1,16); LCD_cmd(0xc0); LCD_table(dispcode2,16); } 附录6: #include<> sbitCS=P1^0;//IO定义 sbitCLK=P1^1; sbitDIO=P1^2; sbitINT=P3^2; voiddelay(unsignedintn) {while(n--);} voidwrite(chardat) {intt=8; do{DIO=(bit)(dat&0x80);dat<<=1;CLK=1;delay(30); CLK=0;delay(30); }while(--t! =0);} charread() {chardat;intt=8;DIO=1; do{CLK=1;delay(50);dat<<=1;if(DIO)dat++; CLK=0;delay(20); }while(--t! =0); returndat;} voidcmd(charcmd)//写指令的函数 {charsav=IE;IE&=0xFA;//关闭外部中断 CS=0;delay(30);write(cmd);CS=1;delay(20); IE=sav;}//恢复IE voidcmd_dat(charcmd,chardat)//带数据指令的函数 {charsav=IE;IE&=0xFA;CS=0;delay(30); write(cmd);delay(20);write(dat);CS=1;delay(20);IE=sav;} voidDownload(unsignedcharmod,charx,bitdp,chardat)//选择位,译码方式函数 {codecharModDat[3]={0x80,0xC8,0x90};chard1;chard2; if(mod>2)mod=2;d1=ModDat[mod];x&=0x07;d1|=x; d2=dat&0x7F;if(dp)d2|=0x80; cmd_dat(d1,d2);///下载数据并且按方式0进行译码 } charkey()//读按键值的函数 {charkey;CS=0;delay(200);write(0x15);delay(200);key=read(); CS=1;delay(100);returnkey;} voidkeydisp()//数码管显示按键的函数 {chark,dat;chari=150; while(i) {if(INT==0)//有键按下 {k=key
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 工程 实习 报告