已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西南石油大学 电子工艺实习报告 电子工艺实习报告学生姓名学号教学院系电气信息工程学院专业年级电信1班指导教师李杰完成日期2011年6月22日目录第一章 基础设计报告21.1 设计题目21.2 工艺流程21.3 设计任务21.4 proteus的基本使用31.5 keil uv4的使用41.5.1创建新工程51.5.2选择单片机51.5.3新建文件并保存61.6 编写程序61.7 keilc与proteus连接调试71.8 显示结果8第二章 提高设计报告102.1 设计题目102.2 工艺流程102.3 设计任务112.4 设计步骤112.5 设计所能实现的功能112.7 软件部分142.7.1 单片机多机通信原理142.7.2 部分程序说明142.8 显示结果30第三章 提高设计报告任务说明书333.1 小组成员及学号333.2 本人工作任务详细说明33第四章 实习心得33参考文献:33第一章 基础设计报告1.1 设计题目:流水灯的实现1.2 工艺流程初始化开始延时1秒循环移动一位图1.2.1 流水灯流程图1.3 设计任务利用单片机实现8个发光二极管从左到右每隔一秒钟循环点亮。1.4 proteus的基本使用(1)工作界面proteus isis的工作界面是一种标准的windows界面,如图1.4.1所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图1.4.1 proteus isis的工作界面(2)建立工程 文件-新建设计保存(3)添加元器件 图1.4.2 添加元器件1 图1.4.3 添加元器件2(4)设计图图1.4.3 设计图1.5 keil uv4的使用1.5.1创建新工程图1.5.1 keil uv4创建新工程1.5.2选择单片机图1.5.2 新建工程图 本实验选择atc89c51。1.5.3新建文件并保存 新建文件名为shiyan1.c的文件并保存,添加到“source group 1”中,如图1.5.3。图1.5.3 添加到“source group 1”1.6 编写程序#include#include#define uchar unsigned char#define uint unsigned intvoid delayms(uint);uchar aa;void main() aa=0xfe; while(1) p0=aa; delayms(1000); aa=_cror_(aa, 1); void delayms(uint mxs) uint i,j; for(i=mxs;i0;i-) for(j=110;j0;j-);1.7 keilc与proteus连接调试双击proteus图中atc89c51,弹出编辑元件窗口,如图1.7.1 图1.7.1 编辑元件窗口点击program file后面的打开文件夹选项,将keil生成的hex文件导入,如图1.7.2。 图1.7.2 选择hex点击proteus的开始按钮,运行程序,并进行调试。1.8 显示结果 显示结果结果如图1.8,8个发光二极管中同一时刻只有一只点亮,并以一秒间隔循环左移。图1.8 显示结果注意:1、假若keilc与proteus均已正确安装在c:program files的目录里,把c:program fileslabcenter electronicsproteus 6 professionalmodelsvdm51.dll复制到c:program fileskeilcc51bin目录中。2、用记事本打开c:program fileskeilcc51tools.ini文件,在c51栏目下加入:tdrv5=binvdm51.dll (proteus vsm monitor-51 driver)其中“tdrv5”中的“5”要根据实际情况写,不要和原来的重复。(步骤1和2只需在初次使用设置。)3、进入keilc vision2开发集成环境,创建一个新项目(project),并为该项目选定合适的单片机cpu器件(如:atmel公司的at89c51)。并为该项目加入keilc源程序。4、在调试程序时,必须为程序所选单片机给晶振频率12mhz,并让其能生成hex文件,方法如下。41、在keil软件工具栏中选择“project“选项,在出现的下拉菜单中选择”options for target 1“选项,在出现的窗口中选择”target“选项中将所选单片机的晶振改为12mhz,如图04.1。然后在窗口中选择”output“选项,将”create hxe-file“选项勾上,如图04.2。 图04.1 选择晶振图04.2 选择生成hex文件第二章 提高设计报告2.1 设计题目:单片机多机串口通信系统设计 2.2 工艺流程开始 初始化开中断循环等待1602显示中断入口判断从机返回值1602显示键扫描返回图2.1 流程图2.3 设计任务1实现主机对从机的通信2实现从机对主机的通信3扩展部分2.4 设计步骤 1.根据要求确定设计思路 2.在自己的思路上搭建硬件电路 3.根据搭建的硬件电路编写程序2.5 设计所能实现的功能1. 主机能能主动选择想要发送信息的主机2. 从机能选择接受主机发送信息和拒绝接收 3. 主机向从机发送的信息是0到9和a到e的信息4主机在发送过程中能中断发送,从机不再接收数据并显示给从机5. 从机在接收过程中也能拒绝接收主机所发数据并显示给主机2.6 硬件电路图 图 2.2 直观图图2.3 主机电路图图2.4 从机电路图图2.5 扫描键盘图图2.6 1602显示图2.7 软件部分2.7.1 单片机多机通信原理 单片机构成的多机系统通常采用总线型主从式结构。所谓主从式,即在数个单片机中,有一个是主机,其余的都是从机,从机要服从主机的调度、支配。51单片机的串行口方式2和3适于这种主从式通信结构。多机通信时,通信协议要遵守以下原则:(1) 所以从机的sm2位置1,出于接收地址帧状态(2) 主机发送一地址帧,其余8位是地址,第9位为地址/数据的区分标志,该位置1表示该帧为地址帧。所以从机收到地址帧后,都将接收地址与本机的地址比较。对于地址相符的从机,使自己的sm2位置0,并把本机地址发回主机作为应答;对于地址不符的从机,仍保持sm=1,对中级随后发来的数据帧不予理睬。(3) 主机发送数据结束后,要发送一帧效验位,并置第9位(tb8)为1,作为从机数据传送结束的标志。(4) 主机收到从机应答地址后,确认地址是否相符,如果地址不符,则发复位信号;如果地址相符,则tb8清0,开始发送数据。 2.7.2 部分程序说明(1)键盘扫描程序void keyscan() /键盘扫描 uchar temp,key; p0=0xfe; /p0口扫描键盘 temp=p0; temp=temp&0xf0; /判断是否有按键按下 if(temp!=0xf0) delayms(8);temp=p0;temp=temp&0xf0;if(temp!=0xf0) /确定有键盘按下 temp=p0; switch(temp) /扫描按下键盘位置 case 0xee:key=0; break;case 0xde:key=1; break;case 0xbe:key=2; break;case 0x7e:key=3; break; while(temp!=0xf0) /等待键盘释放 temp=p0;temp=temp&0xf0; init(); display(key); /1602显示所按下键值 tb8=0; putc_to_serialport(key); /向从机发送按下键值 p0=0xfd; temp=p0; temp=temp&0xf0; if(temp!=0xf0) delayms(8);temp=p0;temp=temp&0xf0;if(temp!=0xf0) temp=p0; switch(temp) case 0xed:key=4; break;case 0xdd:key=5; break;case 0xbd:key=6; break;case 0x7d:key=7; break; while(temp!=0xf0) temp=p0;temp=temp&0xf0; init(); display(key); tb8=0; putc_to_serialport(key); p0=0xfb; temp=p0; temp=temp&0xf0; if(temp!=0xf0) delayms(8);temp=p0;temp=temp&0xf0;if(temp!=0xf0) temp=p0; switch(temp) case 0xeb:key=8; break;case 0xdb:key=9; break;case 0xbb:key=a; break;case 0x7b:key=b; break; while(temp!=0xf0) temp=p0;temp=temp&0xf0; init(); display(key); tb8=0; putc_to_serialport(key); p0=0xf7; temp=p0; temp=temp&0xf0; if(temp!=0xf0) delayms(8);temp=p0;temp=temp&0xf0;if(temp!=0xf0) temp=p0; switch(temp) case 0xe7:key=c; break;case 0xd7:key=d; break;case 0xb7:key=e; break;case 0x77:key=f; break; while(temp!=0xf0) temp=p0;temp=temp&0xf0; if(key=f) /主机终止向从机发送数据 write_com(0x01); delayms(1000); write_com(0x80); for(num=0;num10;num+) write_data(table2num); putc_to_serialport(key);else init();display(key);tb8=0;putc_to_serialport(key); (2)1602显示程序void write_com(uchar com)/1602写入命令 lcdrs=0; lcdrw=0; p2=com; delayms(5); lcden=1; delayms(5); lcden=0;void write_data(uchar date) /1602写入数据 lcdrs=1; lcdrw=0; p2=date; delayms(5); lcden=1; delayms(5); lcden=0;void init()/1602的初始化 lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01);void display(uchar key) /1602的显示 write_com(0x80); for(num=0;num14;num+) write_data(table3num); /1602显示初始数字 write_data(key); delayms(5);com_int(void) interrupt 4 /返回的值 if(ri=1) ri=0; if(sbuf=n) /从机a答应接收数据 tb8=0; while(1) keyscan(); /向从机a发送数据 if(ri) ri=0; if(sbuf=i) /从机a拒绝接收数据 write_com(0x01); delayms(1000); write_com(0x80); for(num=0;num10;num+) write_data(table2num); if(sbuf=m) /从机b答应接收数据 tb8=0; while(1) keyscan(); /向从机b发送数据 if(ri) ri=0; if(sbuf=i) /从机b发送数据 write_com(0x01); delayms(1000); write_com(0x80); for(num=0;num10;num+) write_data(table2num); if(sbuf=i) write_com(0x01); delayms(1000); write_com(0x80); for(num=0;num10;num+) write_data(table2num); (3)从机接收数据程序com_int(void) interrupt 4 /串行口中断 uchar p360=1,p370=1; if(ri=1) recdata=sbuf; ri=0; if(rb8=1) /地址 if(recdata=m) /是自己的地址,置sm2=0,准备接受数据 sm2=0; write_com(0x80+1);for(num=0;num14;num+) write_data(table2num);delayms(5); while(p370=1&p360=1) if(p36=0) /拒绝接收主机发送的数据 p360=0;init(); write_com(0x80+1);for(num=0;num5;num+) /1602显示no write_data(table4num);delayms(5); putc_to_serialport(i); /回送给主机i,主机将不发送数据 sm2=1; if(p37=0) /接收主机发送的数据 p370=0; init(); write_com(0x80+1); for(num=0;num5;num+) /1602显示 yes write_data(table3num);delayms(5); putc_to_serialport(m); /将自己的自己回送给主机,主机将发送数据给从机 else /不是自己的地址 sm2=1; if(rb8=0) /收数据 if(recdata=f) /接收数据完毕 sm2=1; init();p00=1;delayms(1500);write_com(0x80);for(num=0;num16;num+) /显示tx is over write_data(table5num); if(recdata=e) /接收e write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+) write_data(table1num);write_data(e);/1602显示所接收的e if(recdata=d) /接收d write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(d); /显示d if(recdata=c) /接收c write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(c);/显示c if(recdata=b) /接收b write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(b); if(recdata=a) /接收a write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(a); /显示a if(recdata=9) /接收9 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(9); /显示9 if(recdata=8) /接收8 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(8); /显示8 if(recdata=7) /接收7 write_com(0x01); p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(7); /显示7 if(recdata=6) /接收6 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(6); /显示6 if(recdata=5) /接收5 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(5); /显示5 if(recdata=4) /接收4 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(4); /显示4 if(recdata=3) /接收3 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(3); /显示3 if(recdata=2) /接收2 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(2); /显示2 if(recdata=1) /接收1 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(1); /显示1 if(recdata=0) /接收0 write_com(0x01);p00=0;delayms(1500);write_com(0x80);for(num=0;num14;num+)write_data(table1num);write_data(0);/显示0 2.8 显示结果 (1)主机向从机发送请求发送信号,主机询问从机是否接收数据 图2.7.1 主机询问从机是否接收数据 (2)从机接收主机的信号,显示yes图2.7.2 从机答应接收主机的数据(3)从机拒绝接收主机的数据,显示no 图2.7.3 从机拒绝接收主机数据(4)主机向从机发送数据,主机和从机都显示所发数据 图2.7.4 数据的接收 图2.7.4中,作图为主机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水池流水施工方案
- 企业法律顾问服务项目方案范文
- 交叉装修施工方案
- 小学英语单词认读训练及测试卷
- 精神科患者护理计划模板
- 电力系统维护与故障排查手册
- 初中英语话剧剧本改编教学案例
- 老年人日常保健知识与健康指导手册
- 职业健康安全标准培训资料
- PLC与上位机通信应用案例
- 人工智能在智能交通系统中的应用
- 5.3细胞呼吸的原理和应用课件高一上学期生物人教版(2019)必修1-1
- 《世界法制史专题》课件
- 高中地理课堂教学培训
- 全屋智能培训
- 企业安全生产费用提取和使用管理办法(财企〔2012〕16号)
- 五年级语文上册 古诗专项(部编版)
- 人教版(2024新版)七年级上册英语Starter Unit3单元测试卷(含答案)
- 专升本-英语高频词汇
- 《梦溪笔谈》 公开课一等奖创新教学设计中职语文外研版拓展模块
- 金融学期末考试卷及答案
评论
0/150
提交评论