电气工程大四实习报告
一、实习目的
生产实习是电气自动化专业教学计划中重要的实践性教学环节,是对学生进行专业基本训练,培养实践动手能力和实践学习,理论联系实际的重要课程。通过实习,我们可以更广泛的直接接触社会,了解社会需要,加深对社会的认识,增强对社会的适应性,将自己融合到社会中去,培养自己的实践能力,缩短我们从一名大学生到一名工作人员之间的思想与业务距离,为我们毕业后社会角色的转变打下基础。同时通过运用所学的专业知识进行观察,也锻炼了提出、分析并解决问题的能力。
此次校内实训,要实现以下3个目的:要初步了解了嵌入式系统技术,知道Linux操作系统对软件开发的优越性以及Linux操作系统的简单使用;要熟练掌握单片机开发板的各个模块,使用单片机开发板实现一个目标;学习Protel软件的使用并熟练掌握PCB板子的制作方法。
二、实习单位
此次实习分为校内实习和校外实习,校内实习内容为由西安海尔森电子科技有限公司派人在学校展开为期2周的嵌入式培训,校外实习为参观实习,分别参观变电站和汉斯啤酒厂,以下是两个单位的简单介绍。
陕西省电力公司变电技能培训基地,陕西省电力公司变电技能位于西安市城北龙首北路西段,距离市中心约8公里,地下主体建筑占地约2000平方米。依托已经退役的旧110kv地下变电站,在西安高压供电局变电运行培训基地的基础上,由省公司筹资、西安高压供电局负责改造建设而成,于2005年五月正式投入使用。青岛啤酒西安汉斯啤酒厂,位于陕西省太华北路啤酒路一号。成立于1986年的汉斯啤酒,1988年在西安市各界的关注和支持下,首批汉斯啤酒生产下线。
三、实习安排
此次实习分为三个大的部分:2周学习嵌入式简单开发,做到基本掌握Linux 操作系统的使用和了解嵌入式开发的过程;3周单片机开发板实践和Protel软件的理论学习与上机操作;陕西省电力公司变电技能培训基地实习,西安汉斯啤酒厂实习。
具体安排如下:实习时间共3周,前两周的早上完成单片机开发板的实践,下午进行嵌入式培训,晚上自学Protel软件,期间第一周周六有为期半天的陕西省电力公司变电技能培训基地的实习,第三周周二有半天的西安汉斯啤酒厂实习。
四、实习内容及过程
1.inux操作系统的学习
1.1 Linux命令学习
Linux是一类Unix计算机操作系统的统称。Linux 是以 Unix 操作系统为原型的多任务、多用户的系统。实习的主要内容是学习了解Linux的安装过程;熟悉Linux的若干操作基础操作,Linux 很少使用图形界面,大多数使用终端。启动终端命令是Ctrl + Alt + t ,在终端中输入的是命令,以下是Linux的若干命令:ls 查看当前目录文件
ls –l 长格式查看文件, 查看文件属性
ls 路径名 eg: ls /home/linux
ls 路径名–l 查看某个文件夹下的文件,以长格式方式
mkdir 文件夹名 => 创建文件夹
rmdir 文件夹名 => 删除文件夹
cd 改变工作目录。
touch 文件名创建文件
rm 文件名删除文件
gcc 源文件编译源文件生成a.out文件
关闭重启命令:shutdown、reboot;
cat 直接显示文件内容
cp 复制文件。
mv 移动或重新命名文件和目录。
reboot 重新启动计算机,它的使用权限是系统管理者。
1.2 Linux GCC编辑器的使用
经过几天的学习,已经对linux的基本指令有了初步了解。同时还学到了很多访问权限,例如:w 写访问权限,r 读访问权限, x 执行权限,u(文件拥有者),g(所属用户组),o(其他用户)权限。
此外,在Ubuntu 中有许多文字编辑工具,其中最常用的应该是 vi。首先,可以使用命令“vi 文件名”打开一个文件。其次,在刚启动的时候,vi 处于命令状态,不能够输入任何字符。在这个状态下,可以使用方向键进行移动,而需要输入内容时,你需要输入“i”命令进入编辑状态。同时,编辑完成
后,需要按下“ESC”键回到命令状态。在命令状态下,可以输入“:q!”不存盘退出,输入“:wq”存盘退出。接下来利用Linux的GCC编辑器、GDB调试器。在Linux下编辑、编译、调试运行C程序。过程如下:
1)在Linux里输入一个程序。首先建立一个文件:#vi a.c。并在其中输入一段C语言代码。
2)输入“gcc a.c”,对程序进行测试。若此代码有错误,则会出现错误提示,输入“vi a.c”,对代码进行修改;若代码无误,则可继续输入下一条语句。
3)然后是使用gdb。但在使用之前,应先载入可执行文件,所以输入“gcc –g a.c -o aaa”指令,然后启动gdb。
4)接下来是gdb对程序的调试阶段。可以输入不同的命令:例如list、next、run、quit、continue、break等操作。
1.3 liunx环境下的双机互联
(1)首先将两台pc用网线连接,然后在linux系统下配置两台电脑的ip 配置IP命令 ifconfig
eth0 网卡别名
ip地址用点分制表示
使用: Ifconfig 网卡名 ip地址
在指令前加 sudo 例如sudo ifconfig eth0 192.168.0.3
(2)检测两台主机是否连接,能相互传输数据
ping 命令用于测试网络若,连接成功,则自动发送数据检测。
ping 目标IP 例如ping 192.168.0.3
(3)TFTP服务器配置
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
步骤:1)配置服务器端
2) 修改配置文件
在/etc/default下修改tftp服务的配置文件tftpd-hpa:
创建文件夹/tftpboot, 修改权限为777
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot
3)手动启动/停止服务
重新启动包括tftp在内的网络服务。 sudo service tftpd-hpa restart
4) tftp服务器测试
1.4 Linux环境下驱动开发和应用程序的编写以及外设控制
接下来的一周内,主要是进行对开发板的研发工作,其主要项目包括嵌入式Linux开发环境的搭建,驱动开发和应用程序的编写,界面和外设控制,网络远程控制等一系列内容,逐步实现对嵌入式系统开发板的控制功能,从而熟悉并掌握嵌入式系统的各种功能运用,对老师所讲的知识举一反三,实现预期效果。
a.搭建嵌入式Linux开发环境:
配置ubuntu ip:使用sudo vi /etc/network/interfaces命令创建脚本修改IP。
配置ubuntu nfs共享目录:使用sudo vi /etc/exports命令更改共享目录。连接电路板:连接USB转232模块,主机网口和开发板网口连接,连接电源适配器
设置ip电路板:setenv serverip 192.168.0.3
setenv ipadddr 192.168.0.100
镜像下载至电路板:将zImage拷贝至/tftpboot,电路板上输入tftp 50008000 zImage,输入bootm 50008000启动操作系统。
b.嵌入式程序测试
设置文件系统nfs共享:利用主机的/source/rootfs目录,ARM开发板从该目录获取文件。
c.设备驱动设计
利用软件程序调用驱动程序进行硬件操作,对于Linux 操作系统,操作驱动的接口主要是open(),read,write,close,ioctl,mmap(),fcntl,select,poll,dup,dup2等一部分。
d.定制好自己zImage
主要应用以下命令实现驱动加载,查看,调用,卸载等功能,从而实现系统借助其他各种外设实现多种功能。
命令: mydriver.ko
insmod mydriver.ko 加载驱动
lsmod 查看系统已经加载的驱动
rmmod mydriver 卸载驱动
2. Protel99SE 学习
2.1简要介绍Protel软件
Protel是protel公司在80年代末推出的一款功能强大的电路CAD软件,其所设计的电子电路产品范围,涵盖了从小型的电子产品,一直到复杂的电子计算机,是目前国内电子行业使用最广泛的电子电路设计软件。Protel 99 SE 应用于电路原理图设计、电路板设计等,他基于Windows环境,功能强大,人机界面友好,能让人们在具有最完整的功能环境下,提升设计上的品质和效率。
2.2 Protel99SE软件的组成。
Protel 99 SE主要由原理图设计系统、印制电路板设计系统两大部分组成:原理图设计系统(Schematic 99):这是一个易于使用的具有大量元件库的原理图编辑器,主要用于原理图的设计;印制电路板设计系统(PCB99):它是一个功能强大的印制电路板设计编辑器,具有非常专业的交互式布线及元件布局的特点,用于印制电路板(PCB)的设计并最终产生PCB文件,直接关系到印制电路板的生产。
2.3 用Protel99SE进行电路设计的基本步骤。
a.设计电路原理图
电路原理图的设计是整个电路设计的基础,因此电路原理图要设计好,以免影响后面的设计工作。电路原理图的设计一般有如下步骤:
(1)设置原理图设计环境;(2)放置元件;(3)原理图布线;(4)编辑和调
整;(5)检查原理图;(6)生成网络表。
b.设计印刷电路板
印刷电路板设计是从电路原理图变成一个具体产品的必经之路,因此,印刷电路板设计是电路设计中最重要、最关键的一步。通常,印刷电路板设计的具
体步骤如下:
(1)规划电路板;(2)设置参数;(3)装入网络表;(4)元器件布局;(5)自动
布线;(6)手工调整。
3 陕电变电站技能培训基地和汉斯啤酒厂实习
3.1变电站技能培训实习
(1)安全教育
(2)学习和了解变电所的主要结构型式,结构种类和特点。
(3)学习和了解变电所的主要部件的生产技术资料,包括:各种技术标准,图纸,专用设备说明书等。
(4)了解变电所的主要技术要求以及有关标准。
3.2汉斯啤酒厂实习
(1)安全教育
在实习开始时,学校组织我们到公司由专业人士对我们进行安全教育,讲解了安全问题的重要性和在实习中所要遇到的种种危险和潜在的危险等等。
(2)组织参观
在实习开始时,学校组织我们对实习单位的参观,以便了解其概况。在实习期间,我们还到其它有关车间去进行专业性的参观,获得了更加广泛的生产实践知识,和更加准确理解了工厂的运作模式。参观中我们着重了解了先进的设计思想和方法、先进工艺方法、先进工装、先进设备的特点以及先进的组织管理形式等。
(3)车间实习
我们在车间实习是生产实习的主要方式。我们按照实习计划在指定的车间进行实习,通过观察、分析计算以及向车间工人和技术人员请教,圆满完成了规定的实习内容。
四、心得体会
Linux操作系统实习,让我接触了一种全新的事物,走出Windows走进Linux,我感受到了不同操作系统之间的差别和优缺点,让我学到了很多课本上没有的知道的知识。本次实习,不仅使我开阔了视野,拓宽了思路,增长了知识,而且为今后的学习打下了牢固的基础,也增强我对计算机学习的兴趣。
通过对PROTEL99SE的学习使我知道电路板基本的制作流程。PROTEL99SE 是个很有用途的软件,通过这个软件可以使我们对单片机知识加以巩固,还可以初步的实现理论原理图与实践的相结合。在学习protel 99se做板子的过程中,发现理论模拟电路很重要,这些是基础中的基础。由于时间比较紧,感觉学的不是很好,只是知道了一些基本操作步骤及原理。以后应该抽点时间再多加练习,努力做到能熟练使用protel软件。
在变电站参观过程中,使我对变电所的主要结构、生产技术和工艺过程,以及使用的主要工装设备等内容有了进一步的了解,同时加深了我对变电所的工作原理、设计、试验等基本理论的理解,使我了解和懂得了变电所的工作原理和结构等方面的知识。在对啤酒厂的参观实习中,使我获得了更加广泛的生产实践知识,和更加准确理解了工厂的运作模式。通过对不同车间的参观实习使我们了解了先进的设计思想和方法、先进工艺方法、先进工装、先进设备的特点以及先进的组织管理形式等。
此次实习使我知道了理论知识是基础,我们要注意理论与实践的相结合,平时应多接触专业相关知识,同时要学习多方面相关的知识,只有这样我们才能适应这个多元化的社会,才能不被社会淘汰。
单片机实践完成了以下目标:用实验版上的模块设计了一个时钟(1)时间显示在1602液晶上,并且按秒实时更新。
(2)能使用版上的按键随时调节时钟的时、分、秒,按键分别为功能选择键,数值增大键和减小键。
程序如下:
#includ e
#d efine uint unsigned int
#d efine uchar unsigned char
sbit rs=P2^6; //写数据/命令选择
sbit rw=P2^5; //读/写选择
sbit e=P2^7; //液晶使能
sbit k1=P3^0; //功能键
sbit k2=P3^1; //增大键
sbit k3=P3^2; //减小键
sbit been=P2^3; //定义蜂鸣器控制端
char miao,shi,fen;
uchar count,s1num;
uchar tabl e[]="2015-9-2 THUR";
void d elay(uint z) //延时
{ uint x,y;
for(x=0;x for(y=110;y>0;y--); } void write_com(uchar com) //液晶写命令函数 { rs=0; rw=0; e=0; P0=com; d elay(5); e=1; d elay(5); e=0; } void write_date(uchar date) //液晶写数据函数 { rs=1; e=0; rw=0; P0=date; d elay(5); e=1; d elay(5); e=0; } void write_sfm(uchar ad d,uchar date) //写时分秒函数 { uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); //设置显示位置 write_date(0x30+shi); //0x30对应ASC值为0,送去液晶显示十位 write_date(0x30+ge); } //送去液晶显示个位 void init() //1602初始化,定时器初始化 { uchar num; e=0; shi=miao=fen=0; count=s1num=0; write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口 write_com(0x0c); //设置开显示,不显示光标 write_com(0x06); //写一个字符后,地址加一 write_com(0x01); //显示清0,数据指针清0 write_com(0x80); //设置显示初始坐标 for(num=0;num<15;num++) { write_date(tabl e[num]); d elay(5); } write_com(0x80+0x40+6); write_date(':'); d elay(5); write_com(0x80+0x40+9); write_date(':'); d elay(5); miao=0x00; fen= 0x00; shi= 0x00; write_sfm(10,miao); write_sfm(7,fen); write_sfm(4,shi); TMOD=0x01; //设置定时器0工作模式 TL0=0x00; TH0=0x4C; EA=1; //开总中断 ET0=1; //开定时器中断0 TR0=1; } //开定时器 void timer0() interrupt 1 //定时器0中断服务程序 { TL0=0x00; TH0=0x4C; //定时50ms count++; if(count==20) //20*50ms=1s { miao++; count=0; if(miao==60) //秒加到60进位分 { fen++; miao=0; //秒清0 if(fen==60) //分加到60进时 { fen=0; //时清0 shi++; if(shi=23) { shi=0; } write_sfm(4,shi); } write_sfm(7,fen); } write_sfm(10,miao); } } void keyscan() //按键扫描函数 { if(k1==0) { d elay(5); if(k1==0) //确认功能键被按下 { s1num++; //记录功能键被按下次数 whil e(!k1); //按键释放 if(s1num==1) { TR0=0; write_com(0x80+0x40+10); //光标定位到秒位置 write_com(0x0f); } //光标开始闪烁 if(s1num==2) { write_com(0x80+0x40+7); //光标定位到分位置 } if(s1num==3) { write_com(0x80+0x40+4); //光标定位到时位置 } if(s1num==4) { s1num=0; write_com(0x0c); //取消光标闪烁 TR0=1; } } } if(s1num!=0) { if(k2==0) { d elay(5); if(k2==0) { whil e(!k2); di(); if(s1num==1) { miao++; if(miao==60) miao=0; write_sfm(10,miao); write_com(0x80+0x40+10); } } if(s1num==2) { fen++; if(fen==60) fen=0; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) { shi++; if(shi==24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); } } if(k3==0) { d elay(5); if(k3==0) { whil e(!k3); if(s1num==1) { miao--; if(miao==0) miao=59; write_sfm(10,miao); write_com(0x80+0x40+10); } if(s1num==2) {fen--; if(fen==0) fen=59; write_sfm(7,fen); write_com(0x80+0x40+7); } if(s1num==3) { shi--; if(shi==0) shi=23; write_sfm(4,shi); write_com(0x80+0x40+4); } } } } } void main() { init(); whil e(1) { keyscan(); } }