电子工艺实习报告流水灯的实现

上传人:1888****888 文档编号:37388713 上传时间:2021-11-03 格式:DOC 页数:37 大小:3.87MB
收藏 版权申诉 举报 下载
电子工艺实习报告流水灯的实现_第1页
第1页 / 共37页
电子工艺实习报告流水灯的实现_第2页
第2页 / 共37页
电子工艺实习报告流水灯的实现_第3页
第3页 / 共37页
资源描述:

《电子工艺实习报告流水灯的实现》由会员分享,可在线阅读,更多相关《电子工艺实习报告流水灯的实现(37页珍藏版)》请在装配图网上搜索。

1、西南石油大学 电子工艺实习报告 电子工艺实习报告学生姓名学号教学院系电气信息工程学院专业年级电信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

2、 单片机多机通信原理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所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象

3、方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图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

4、”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

5、图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 Files

6、keilCC51BIN目录中。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,并让其能生成HE

7、X文件,方法如下。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实现主机对从机的通

8、信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 单片机多机通信原理 单片机构成的多机

9、系统通常采用总线型主从式结构。所谓主从式,即在数个单片机中,有一个是主机,其余的都是从机,从机要服从主机的调度、支配。51单片机的串行口方式2和3适于这种主从式通信结构。多机通信时,通信协议要遵守以下原则:(1) 所以从机的SM2位置1,出于接收地址帧状态(2) 主机发送一地址帧,其余8位是地址,第9位为地址/数据的区分标志,该位置1表示该帧为地址帧。所以从机收到地址帧后,都将接收地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0,并把本机地址发回主机作为应答;对于地址不符的从机,仍保持SM=1,对中级随后发来的数据帧不予理睬。(3) 主机发送数据结束后,要发送一帧效验位,并置第9

10、位(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) /扫描按下键盘位置

11、 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&

12、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;t

13、emp=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);

14、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(

15、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

16、); 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)

17、 /从机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)

18、; 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) /是自己的地址,置

19、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) /接收主机发送

20、的数据 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 wri

21、te_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(R

22、ecData=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;d

23、elayms(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

24、(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(ta

25、ble1num);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(

26、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);

27、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)从机接收主机

28、的信号,显示YES图2.7.2 从机答应接收主机的数据(3)从机拒绝接收主机的数据,显示NO 图2.7.3 从机拒绝接收主机数据(4)主机向从机发送数据,主机和从机都显示所发数据 图2.7.4 数据的接收 图2.7.4中,作图为主机1602显示,右图为从机1602显示,显示内容为主机向从机所发数据。(5)主机发送数据完毕,按下f图2.7.5 主机发送数据完毕按下f键代表主机向从机所发数据完毕,图2.7.4为主机和从机各自1602内容。(6)主机在发送数据过程中,从机拒收 图2.7.6 从机中断接收数据 主机发送数据过程中,从机向主机发送不再接收信号,图2.7.6为主机和从机1602显示内容。第

29、三章 提高设计报告任务说明书3.1 小组成员及学号姓名学号陈雷0807040119崔凯08070401173.2 本人工作任务详细说明 我主要构思了本项目期望要达到的效果,在此基础上编译出程序,当然是付出了很多的时间去调试,实现了所有想要实现的功能,电路设计上也做了很多功夫。第四章 实习心得51单片机的串行口是一个可编程全双工的通信接口,具有UART(通用异步收发器)的全部功能,能同时进行数据的发送和接收,也可作为同步移位寄存器使用。51单片机的串行口主要由两个独立的串行数据缓冲寄存器SBUF(一个发送缓冲寄存器,一个接收缓冲寄存器)和发送控制器、接收控制器、输入移位寄存器及若干控制门电路组成

30、。通过本实验,我对单片机串行通信技术更加的熟练了,真正意义上清楚了单片机串口通信的要点。尤为重要的是我学会了Proteus的使用方法,为以后做项目仿真方面打下了很好的基础。这个实验最难实现的就是软件方面,单片机串行通信协议程序的编写,但是通过我查找多方面的资料加上多次的尝试和修改,最终将单片机之间的通信协议弄明白了,并且用上了1602显示器,还有键盘输入功能,让这个设计的功能达到了一个不错的阶层。试验完成后我还总结了一些在编程方面的技巧,也对自己的编程坏习惯改变了不少,总共一千多条指令的程序编写下来有时候会扰乱编程的思路,但是就是在扰乱后理顺思路再扰乱又理顺的循环中明白了许多编程技巧。参考文献:1 郭天祥.新概念51单片机C语言教程北京:电子工业出版社2 万敏、仇芝、李小云、青小渠. 电子工艺实习指导书成都:西南石油大学电子信息工程学院,20103 Proteus各种资料4杨兴瑶、张益清、杨震绪.新编实用电子电路500例北京:化学工业出版社35

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!