基于单片机流水灯设计.doc_第1页
基于单片机流水灯设计.doc_第2页
基于单片机流水灯设计.doc_第3页
基于单片机流水灯设计.doc_第4页
基于单片机流水灯设计.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西南石油大学 单片机课程设计 电子工艺实习报告学生姓名学号教学院系电子信息工程学院专业年级指导教师李杰完成日期2011年6月23日22目 录第1章 基础实验报告11.1设计题目11.2 工艺流程11.3 设计任务11.4 软件使用指南11.5 硬件电路81.5.1元件清单81.5.2电路原理图81.6 程序设计91.6.1 源程序91.6.2 调试与仿真91.7成果展示10第2章 提高设计报告102.1 设计题目102.2 设计任务102.3 设计基本原理102.3.1 串行通信的基本原理102.3.2串行通信的基本方式112.3.3 通信中数据的传送方式112.3.4接口处相应元件122.4辅助软件介绍142.5硬件部分162.5.1 元件清单162.5.2 设计电路172.6程序设计172.6.1流程图172.6.2 源程序182.6.3 调试与仿真202.7 成果展示20第3章 提高设计报告任务说明书213.1 小组成员及其学号213.2 本人工作任务说明21第4章 实习心得21参考文献22第1章 基础实验报告1.1设计题目基于单片机流水灯设计1.2 工艺流程1.3 设计任务基于AT89C51单片机来设计一款简单的流水灯。结合Uvision3和 ISIS 7 Professional这两款软件来设计和模拟。利用51 单片机来控制发光二极管的点亮和熄灭,主要实现延时控制和循环移位。1.4 软件使用指南一、进入Keil双击桌面Keil uVision3图标,或者“开始”“程序”“Keil uVision3”。二、工作界面图1.4.1(1) Keil工作界面三、建立工程1.点击“Project”“New Project”。如图1.4.1(2)、(3)所示。在弹出的窗口选择工程要保存的路径,输入工程文件名,然后点击“保存”按钮。图1.4.1(2)建立工程截取图图1.4.1(3)建工程菜单栏2.在弹出的对话框要求选择单片机的型号,因为51内核单片机具有通用性,所以我们任选一款89C52就行。在这里我们选择Atmel的89C52或89C51,然后点击“确定”按钮。如图1.4.1(4)所示。图1.4.1(4)建工程元件选择至此,我们已经建立一个工程,但工程中海没有任何文件及代码。下面我们学习如何加载文件。四、添加文件及代码1添加代码到文件。点击“File” “New”或者点击来新建文件。新建文件后,窗口界面如图1.4.1(5)所示。图1.4.1(5)新建文件2.在当前编辑框中输入程序,程序输入完毕后,如图1.4.1(6-1)所示。 图1.4.1(6-1)编写程序 3.点击“File” “Save”或者点击,弹出窗口如图所示,在“文件名”处输入要保存的文件名(例:pmd.c),必须输入正确的扩展名(如果用C语言编写程序,则扩展名必须是.c;如果用汇编语言编写程序,则扩展名必须是 .asm)。这里的文件名不一定和工程名相同,可以随意填写文件名,然后单击“保存”按钮。看到图1.4.1(6-2)。此时这个新建文件与我们刚刚建的工程还没有直接联系。图1.4.1(6-2)保存程序4.添加文件到工程单击“Target 1”前面的“”号,然后右键单击“Source Group 1”,选择“Add Files to Group Source Group 1”,如图1.4.1(7)所示。在弹出对话框中,选中pmd.c,单击“Add”按钮,再单击“Close”按钮,然后再单击左侧“Source Group 1”前面的“”号,屏幕窗口如图1.4.1(8)所示。这时,源代码文件就与工程关联起来了。图1.4.1(7) 加载程序图1.4.1(8)加载完毕五、编译、连接1.点击“Project” “Rebuild all target files”或者点击。信息输出窗口中显示了编译过程和编译结果,如图1.4.1(9)、(10)所示。如果源代码中有语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复修改之后,最终会得到“”pmd”- 0 Error(s),0 Warning(s).”的结果。图1.4.1(9)编译图1.4.1(10)编译结果六、生成HEX文件单击“Project” “Options for Target Target 1”或者单击,弹出窗口如图1.4.1(11),选择“Output”,然后选中“Create HEX File”,使程序编译后产生HEX代码,供下载器下载到单片机中。再次单击,编译工程,编译过程和编译结果如图1.4.1(12)所示。我们发现编译过程多出一行“creating hex file from“pmd”。当创建并编译一个工程时,生成的HEX文件名与工程名是相同的。现在,我们就可以把HEX文件加到单片机内使用了。图1.4.1(11)图1.4.1(12)1.5 硬件电路1.5.1元件清单 元件名称所属类所属子类AT89C51MicroprpcessorICs8051FamilyCAPCapacitorsGenericCAP-ELECCapacitorsGenericCRYSTALMiscellaneous-RESResistorsGenericLED-redOproeletronicsLEDs1.5.2电路原理图1.6 程序设计1.6.1 源程序#include#include#define uchar unsigned charuchar bianma8=0x80,0x40,0x20,0x10,0x08,0X04,0X02,0X01;void main() int i,j,k; while(1) for(i=0;i0;j-)for(k=110;k0;k-); P2=bianmai; 1.6.2 调试与仿真1.7成果展示第2章 提高设计报告2.1 设计题目 基于单片机与上位机的通信系统2.2 设计任务 利用uvision软件设计实现单片机和上位机(即计算机)之间的通信系统。要求计算机发送数据给单片机,单片机通过数码管现实,并且能反馈信息给单片机。2.3 设计基本原理2.3.1 串行通信的基本原理 串行通信是指数据按位顺序传送的通信。串行数据传送的特点是:通信线路简单,最多只需一对传输线即可实现通信,成本低但速度慢,其通信线路既能传送数据信息,又能传送联络控制信息;它对信息的传送格式有固定要求,具体分为异步和同步两种信息格式与此相应有异步通信和同步通信两种方式;在串行通信中,对信息的逻辑定义与TTL不兼容,需要进行逻辑电平转换:计算机与外界的数据传送大多是串行的,其传送的距离可以从几米到几千公里。单片机中使用的串行通信通常都是异步方式的。2.3.2串行通信的基本方式1.单片机串行口有四种不同的工作方式:方式0:移位寄存器输入/出方式,波特率固定为:fosc/12。方式1:10位UART(通用异步接口电路),一帧数据包括1位起始位(0),8位数据位和1位停止位(1)。波特率可变,公式为:其中X为定时器T1的初值,当然我们一般都是先确定波特率然后算初值的,所以我们更想知道X等于多少。把上面的式子变一下就可以得到初值X了:方式2/3:这两种方式都是11位的UART,它们比方式1多了一个第9位数据。他们不同的是:方式2波特率固定为fosc/32或fosc/64,由SMOD位决定,方式3的波特率同方式1。2.本实验中采用方式1,波特率为9600(计算机默认值),根据波特率算出初值X=253(定时器T1工作方式2)。我们以9600的波特率循环发送和接收数据。2.3.3 通信中数据的传送方式通常在串行通信中。数据在两个站之间是双向传送的,既可以A站作发送端,B站作接收端:也可以B站作发送端,A站接收端。根据具体的需要,又可分为半双工(Half Duplex)和全双工(FullDuplex),半双工只有一条传输线,尽管传输也可以双向进行,但每次只能有一个站发送,另一个站接收。即可以是A发送到B,也可以是B发送到A,但A,B不能同时发送。当然也不能同时接收。而全双工有两条传输线,因此两个站既可以同时发送,又可以同时接收,或者说一个站可以同时进行发收。2.3.4接口处相应元件 1. RS-232C是异步通信中应用最广的标准串行接口,它定义了数据终端设备(DTE)和数据通信设备(DCE)之间的串行接口标准,主要包括了有关串行数据的电气和机械方面的规定。目前的PC机都配有标准的RS-232接口,RS-232C标准规定了25针连接器,但在实际应用中并不一定用到RS-232C的全部信号线,所以,PC机配置的都是9针“D”型连接器。图2.3.4 (1) 为RS-232C的“D”型9针插口的引脚图。在通常的异步串行通信中只使用其中三个引脚,即引脚2(接收RXD)、引脚3(发送TXD)、引脚5(信号地SG)各引脚功能如图2.3.4(2)所示图2.3.4 (1) 9针“D”型连接器引脚号符号方向功能1DCD输入数据载体检测2TXD输出发送数据3RXD输入接收数据4DTR输出数据终端准备好5GND信号地6DSR输入数据通信设备准备好7RTS输出请求发送8CTS输入清除发送9RI输入振铃指示图2.3.4(2)PC机的RS-232C接口信号2.由于TTL电平和RS-232C电平互不兼容,所以两者对接时,必须进行电平转换。RS-232C与TTL电平转换最常用的芯片是MC1488、MC1489和MAX232等,各个生产的此类芯片虽然不一样,但原理相似。一般选用MAX232。MAX232的引脚图如下所示:图2.3.4(3) MAX232的引脚图管脚说明如下: C0+、C0-、C1+、C1- 是外接电容端;R1IN、R2IN是2路RS-232C电平信号接收输入端;RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,送8051的RXD接收端;TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线;V+经电容接电源+5V;V-经电容接地。这种连接的传输介质一般采用双绞线,通信距离一般不超过15m,传输率小于20kB/s。3.图2.3.4(4)给出了采用MAX232芯片的PC机与单片机串行通信接口电路,与PC机相连采用PC机的9芯标准插座。图2.3.4(4) PC机与单片机串行通信接口电路(注意:本实验为仿真实验,为使实验电路简单明了,所以实际电路中未加电平 转换器件,并不影响仿真结果,但是如上原理我们必须理解。)2.4辅助软件介绍1.打开虚拟串口的文件夹,可以看见如图2.4(1)两个文件,一个是破解用的,一个是安装用的。图2.4(1)2双击安装图标开始安装。选择同意,一路NEXT即可。安装后再将破解用 的文件粘贴到C:Program FilesEltima SoftwareVSPD XP 5.1目录下,覆盖原来的文件即可。在桌面就可以看到快捷方式。双击快捷方式后会看到图2.4(2) 图2.4(2)虚拟串口界3上面为实际的物理串行口,下面是虚拟的物理串行口。下面来增加一对虚拟串行口。因为一般的电脑最多为两个串行口,我们设置first为com3,second为com4,点击add pair就可以增加一对虚拟串口(如下图2.4(3)、(4)所示)。这两对端口是通过这个软件物理连接的,并且是rs232电平连接。这样我们就完成里串口的设置,可以把此软件关闭,这两个端口将会一直存在电脑中,下次直接使用就可以了。 图2.4(3) 图2.4(4)4下面对串口进行设置和邦定,在proteus右键单击图2.3.4 (1)所示的图选定,然后左键单击此元件打开它的属性对话框。如下图2.4(5)所示: 图2.4(5) 5下面就是对串口调试工具的设置了,设置如下图2.4(6):因本例proteus用了com3,那么串口调试工具这里就要绑定为com4了,并且设置为16进制发送和显示,这样准备工作就做好了。图2.4(6)串口调试工具设置界面2.5硬件部分 2.5.1 元件清单元件名称所属类别所属子类AT89C51MicroprpcessorICs8051FamilyCOMPIMMicroprpcessorICs7SE-COMCATHODEOPTOELECTRONICS7-SEGMENT DISPLAY 2.5.2 设计电路2.6程序设计 2.6.1流程图 2.6.2 源程序#include reg51.h#include string.hchar receive_data=0123456789;char flag;unsigned char code table=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;/串口初始化 晶振为11.0592M方式1 波特率30057600void InitCom(unsigned char BaudRate)unsigned char THTL;switch (BaudRate)case 1: THTL = 64; break; /波特率300case 2: THTL = 160; break; /600case 3: THTL = 208; break; /1200case 4: THTL = 232; break; /2400case 5: THTL = 244; break; /4800case 6: THTL = 250; break; /9600case 7: THTL = 253; break; /19200case 8: THTL = 255; break; /57600default: THTL = 208;SCON = 0x50; /串口方式1,允许接收TMOD = 0x20; /定时器1定时方式2TCON = 0x40; /设定时器1开始计数TH1 = THTL;TL1 = THTL;PCON = 0x80; /波特率加倍控制,SMOD位RI = 0; /清收发标志TI = 0;TR1 = 1; /启动定时器/从串口接收一个定长字符串(非中断方式,只用于字符需有一个的idata字符串数组)/如unsigned char *Str;/unsigned char i=abcd;/InHandStr = &i;void ComInStr(unsigned char *Str)while(*Str != 0x00) /判断是否到了字符串的尾部while(!RI); /空语句判断字符是否收完*Str = SBUF; /保存字符RI = 0; /清RISBUF=*Str;while(!TI);TI=0;Str+; /字符串指针加一void delay1s(void) unsigned char i,j,k; for(k=40;k0;k-) for(i=20;i0;i-) for(j=248;j0;j-); void main() InitCom(6); EA=1; ES=1; ET1=0; while(1) char i; ComInStr(receive_data); for(i=0;i10;i+) /P2=table1; P2=tablereceive_datai-48; delay1s(); flag=0; /串口接收中断函数 /void serial () interrupt 4 using 3/ /ComInStr(receive_data); /flag=1;/ 2.6.3 调试与仿真图2.6.3 调试仿真运行结果截取图2.7 成果展示点击proteus的播放键,切换到串口调试工具,即可收到数据。然后再发送一些数据给单片机,便可在数码管上看到结果第3章 提高设计报告任务说明书3.1 小组成员及其学号姓名学号徐正磊0807040224巩雅琨08070401023.2 本人工作任务说明 在实验过程中,我和队友分工协作。由于我编程方面还有欠缺,所以我主要负责电路的设计以及绘制等硬件部分,另外前期查阅资料、软件学习、制定具体的设计方向以及后期的整理、实验报告的撰写

温馨提示

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

评论

0/150

提交评论