版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四川师范大学成都学院电子工程学院课程设计报告前言单片机的通信接口是各台仪表之间或仪表与计算机之间进行信息交换和传输的联络装置。主要有五种类型,串行通信接口、并行通信接口、USB接口、现场总线接口以及以太网接口。串行通讯是单片机的一个重要应用。本设计就是利用两块单片机来完成一个系统,实现单片机之间的串行通讯。 随着计算机的不断普及,在我们的周围可能会同时出现多台微型计算机,而且这些计算机的牌号,后型号不同,而且有的格式不兼容。于是利用单片机串行口实现不同计算机之间的相互通信,以达到信息或程序的共享是非常有用的。从智能家用电器到工业上的控制系统都采用了上位机与下位机基于串行通信的主从工作
2、方式,这样就充分利用了微机分析处理能力强、速度快的特点及下位机(单片机)面向控制、使用灵活方便的优势。利用多机通讯构成的分布式系统逐渐普及。本实验就点对点的双机通信进行训练。学习串口的工作方式,初始化编程,和单片机与单片机点对点通信的编程方法以及硬件电路的设计方法。1.总体设计方案1.1 串口通信的设计原理 复位电路 复位电路 单片机 单片机 电源电路 电源电路 时钟电路 时钟电路 按键输入 1位LED数码管 显示电路图1 串口通信的设计原理框图本次设计用于两片89S51,PC机的串行口采用的是标准的RS232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS232的电气特性不匹配,
3、因此为了使单片机的串行口能与RS232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。单片机的发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接收方接收后,在数码管上显示接收的信息,实现串口通讯数据的发送和接收,该系统可采用max232进行串口通讯数据传送。可用LED显示发送的相应据。1.2 数据传输方案比较与选折在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可采用三种方案。方案一:
4、单工制式单工制式是指甲乙双方通信只能单向传送数据。发送器A 接收器B 图2 单工制式方案二:半双工制式半双工制式是指通信双方都具有发送器和接收器,双方既可发送也可接收,但接收和发送不能同时进行,即发送时就不能接收,接收时就不能发送。 B 端发送接收A端发送接收图3 半双工制式方案三:全双工制式全双工制式是指通信双方均设有发送器和接收器,并且将信道划分为发送信道和接收信道,两端数据允许同时收发,因此通信效率比前两种高。 B 端A端发送接收发送接收图4 全双工制式因此,本文选择方案三,全双工制式来实现数据传送。1.3 控制部分的电路由于单片机集成了运算器电路、控制电路、存储器、中断系统、定时器/计
5、数器以及输入/输出口电路等,所以用单片机设计控制电路省去了很多分立元器件。由于单片机是可编程芯片,并且它可以运用C语言编写,对于一些复杂的计算功能,可以调用C语言库函数,使编写程序变得非常简单。且经过上学期对单片机课程的学习,我们对单片机的应用比较熟悉,运用灵活,所以用单片机来实现本次课程设计。2.硬件系统设计本设计选用以89S51单片机为主控单元,显示部分采用8段LED数码管动态显示。2.1 时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在89S51芯片内部有一个高增益反
6、相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。时钟电路如下图:图5 时钟电路2.2 复位电路复位是单片机的初始化操作,进入系统的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。RST引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12MHz的晶振,则复位信号持续时间应超过4 s才能完成复位操作。复位操作有上电自动复位和按键手动复位两种方式。上电自动复位
7、是通过外部复位电路的电容充电来实现的。按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的。在本设计中采用了按键电平方式如下图:图6 按键电平的连接方式2.3 单片机串行通信功能51单片机的串行接口是一个全双工的接口,它可以作为通用异步接受和发送器用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下图所示:图7 单片机串行接口的结构(1) 数据缓冲器(SBUFF)接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,用同一直接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。(2) 串行控制寄存器(SCON)SM0,S
8、M1:串行接口工作方式选择位,串行接口工作方式可有以下四种工作方式: 表1 工作方式SM0SM1工作方式功能波特率0008位同步移位寄存器(用于I/O扩展)fORC/1201110位异步串行通信(UART)可变(T1溢出率*2SMOD/32)10211位异步串行通信(UART)fORC/64或fORC/3211311位异步串行通信(UART)可变(T1溢出率*2SMOD/32)定时器TI溢出率=(fosc/12)*(1/(2k-初值)) 式中T1计数率= fORC/12,(2k-初值)为生溢产出所需机器周期数,K为定时器位数,与定时器设定工作方式有关:方式0时 K=13;方式1时 K=16;方
9、式2时 K=8。SM2:多机通信控制位。主要用于方式2,3.当SM2=1时可以利用收到的RB8来控制是否激活RI,当SM2=0时均可以将数据送入缓存器,并激活RI。REN:接收允许控制位。软件置1允许接收;软件置0禁止接收。TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。RB8:在方式2或3时,RB8位接收到的第9位数据,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。TI:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。RI:接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。
10、(3) 输入移位寄存器接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。(4) 波特率发生器波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。(5) 电源寄存控制器(PCON)其最高位为SMOD即波特率倍增位,当SMOD=1时波特率提高一倍,复位时,SMOD=0。2.4 MAX232芯片电平转换芯片MAX232专用于进行将TTL电平转换为RS232电平的芯片,MAX232内部有泵电源,能将+5V电源电压在芯片内提高到RS232电平所需的+10V或者-10V电平。引脚介绍:第一部分是电荷泵电路。由1、2、3
11、、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。第三部分是供电。15脚GND、16脚VCC(+5v)。图8 MAX232芯片2.5整体连接原理图P1.7P1.0口分别接DP,G,F,E,D,C,B,A,其整体连接图如下:图9 整体连接原理图3.软件设计3.1 串行通
12、信软件设计软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。主机收到BBH后就把数码表TAB16中的10个数据送给从机,并发送检验和。从机收到16个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发送00H给主机;否则发送FFH给主机,重新接受。从机收到16个正确数据后送到一个数码管显示。3.2 程序流程图主动发送数据,检验和输出完成清除标志位主程序开始程序初始化主机发送AAH从机是否回答BBHNN(1) 发送端图10 发送端程序流程图串行口工作于方式1,用定时器1产生9600bit/s的波特率,工作于方式2,即TMOD
13、=0x20。功能:将本机ROM中数码表TAB16中的16个数发送到从机,并保存在从机内部ROM中,从机收到这16个数据后送到一个数码管循环显示。通信协议:主机首先发送连络信号(AAH),从机接收到之后返回一个连络信号(BBH)表示从机已准备好接收。(2) 接收端通信过程使用校验和校验。从机接收到16个数据后,进行校验和检查,若数据没有错误,则返回00H,否则返回FFH。主机发送一个数据后,等待从机返回数据;若为00H,则继续发送下一个数据,若为FFH,则重新发送数据。主程序开始程序初始化接收数据,计算检验和检验和相等?发送OOH至主机接收完成?清除标志位显示N发送FFH,并修改N图11 接收端
14、程序流程图3.3 LED显示原理LED多数情况用于显示数字,对于十六进制的,要将0F的数字用7段显示,必须将数字转换为LED对应七段码的信息,比如,要显示“0”,就是让a、b、c、d、e和f段发光,显示“1”,让b和c段发光,等等如表所示。然后根据LED是共阴极还是共阳极接法确定LED各输入端应接逻辑1还是逻辑0,我选用的是共阴接法,要显示“0” 时,a、b、c、d、e和f段就要输入逻辑1,即其段码为3F,通过从机的P1口将编码输出给LED。4. 系统调试与仿真结果4.1 软件调试 系统软件设计利用Keil进行C语言编写。在系统的软件设计中采用了模块化设计,将系统的各部分功能编写成子模块的形式
15、,这样增强了系统软件的可读性和可移植性。实验的程序通过Keil软件编译,打开Keil软件,首先,建立工程文件,然后新建一文档,输入自己编写的程序,保存为.C文件。然后再单击Add Files to Group Source Group1。然后勾选生成.HEX文件,最后点击编译。图12 编译输出结果此过程是在Keil软件中编写双机通信的C语言程序,通过Keil软件验证程序的对错与否,在此基础上来改正,直至程序编写成功,并由此软件生成HEX文件,可通过此文件调试开发板,验证所做的双机通信是否成功。4.2 仿真结果通过Proteus进行仿真,将所生成的“.HEX”文件加载到已绘制好的Proteus原
16、理图中,使Proteus与Keil真正连接起来,实现联合调试。调试结果如图所示:可以看到,接收端已将接受到的数据完整的显示了出来。按下“开始”后,数码管开始工作,仿真结果如附录所示。5. 设计总结本次课程设计实现的是单片机双机串行通信的功能。在进行设计的初期,先查询了书本知识,了解了相关的原理之后,先进行了自发自收通信功能的设计,由于设计电路比较简单,而且程序也比较好懂,所以在原理方面没有遇到什么问题,主要的问题就是熟悉两个软件KEIL和PROTEUS的使用。但是在后来调试实物的时候,由于单片机整块板子上面有许多可以利用的电路,所以为了方便,修改了一些程序,把输出显示接在了P0口,因为P0口与
17、流水灯相连接,利用流水灯来完成相关的显示,刚开始的时候仿真总是不出来,后来才发现P0口没有自带的上拉电阻,所以在P0口加了上拉电阻之后,仿真开始正常进行。在设计双机串行通信的功能时,由于根据题目的要求甲机发送而乙机接收,所以就选择做了单工通信的功能。对于显示电路来说,由于传送的是两位数据,所以选用了两个数码管进行显示。程序编程方面,刚开始在KEIL中进行编程生成.HEX文件时,总是生成不了,后来经过查询资料得知有可能是我装的软件不是破解版的,当进行短程序编程时可以正常进行,但是当程序比较长时,就不能生成.HEX文件。还有就是程序运行正常之后,数码管的显示跳得太快了,根本无法捕捉到所有数据的显示
18、,刚开始还比较迷茫,不知道该从哪个地方开始调,后来经过同学的帮忙,修改了单片机中的频率之后,可以清楚地看到接收的每一个数据。经过本次课程设计,我知道了团队的力量,一个人是完成不了这么多的。我们不仅掌握了双机串行通信的相关原理和实现方式,还深化了对汇编语言中断程序设计的了解。其实,这整个课程设计不仅需要个人知识的储备,还需要在不断的实践中发现自己存在的不足。同时,与同学的交流不仅能让自己进步,有时候还能点醒自己在哪些方面做得不对,哪些方面需要改正。从这种实践课程我学到了从书本上学不到的知识,提高了我的实践能力和解决问题的能力。6. 参考文献1 谭浩强C语言程序设计M清华大学出版社,1999.12
19、.125-1422 杨恢先,黄辉先单片机原理与应用M人民邮电出版,2009.7.234-2563 朱定华单片机原理与接口技术M电子工业出版社,2001.4.276-284 4 王威HCS12微控制器原理及应用M北京航空航天大学出版社,2007.10.167-179 5 龚运新单片机C语言开发技术M北京清华大学出版社,2006.10.145-163 6 胡洪波单片机原理与应用实验教程M湘潭大学出版社,2009.7.68-837 汪道辉单片机系统设计与实践M电子工业出版社,2006.5.89-104.116-1358 李明,李君君单片机原理与接口技术M大连理工大学出版,2006.5.89-104.
20、116-135附录附录一:元件清单元件名称型号数量单片机AT89C512电平转换芯片Max2322数码管八段LED1电阻RES4晶振CRYSTAL2电容CAP12附录二:源程序1. 主机发送程序#include <reg51.h> /头文件#define uchar unsigned char /定义数据类型void init(); /定义子程序void send();ucharTAB16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /定义数码表uchar i,
21、sum; /定义变量int j;main() /主程序 init(); send(); void init(void) /程序初始化 EA=1; /开CPU中断 ES=1; /允许串行口中断 TMOD=0x20; /设定时器T1为方式2 TH1=0xfd; /赋初值 TL1=0xfd; PCON=0x00; /令SMOD=0波特率不倍增 SCON=0x50; /串行口为方式1 TR1=1; /启动T1 void send(void) /发送子程序do SBUF=0xaa; /主机送AAH给从机 while(!TI); /等待一帧发送结束 TI=0; /发送完后清零 while(!RI); /等
22、待一帧接收结束 RI=0; /接收完后清零 while(SBUF0xbb)!=0); /等待从机回答,返回BBH后继续do sum=0; /清校验和 for(i=0;i<=15;i+) SBUF=TABi; /主机发送数据 sum+=TABi; /求检验和 while(!TI); TI=0; SBUF=sum; /发送校验和 while(!TI); TI=0; while(!RI); RI=0; while(SBUF!=0); /等待2. 从机接收程序#include<reg51.h> /头文件#define uchar unsigned char /定义数据类型#define uint unsigned intvoid delay(int ); /定义子程序void receive(void) ;void init(void);uchar i,sum;int j;ucharTAB16 = 0x3f,0x06,0x5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京市教育合同纠纷仲裁收费标准
- 金鹰颁奖礼仪培训方案
- 灭火与应急疏散培训
- 重庆市第九十四初级中学校2024-2025学年高二上学期期中考试政治试题(含解析)
- 19 C光的干涉 提升版2025新课改-高中物理-选修第1册(21讲)
- 海洋水文气象自动观测系统相关项目投资计划书范本
- 肝功能评定及肝功能储备课件
- 规划设计类答辩
- 碘缺乏病诊治指南
- 跨境物流行业发展趋势报告
- 粮食产后服务体系建设项目总结分析报告
- 爱天使圈降低针刺伤发生率课件
- qc提高隧洞初期支护钢拱架安装合格率
- 初中道德与法治2022版新课程标准测试卷及答案
- (完整版)砖砌排水沟施工工艺
- 人教小学语文6上 单元易错读音词语归类
- 【苏泊尔企业存货管理问题及对策13000字(案例论文)】
- 计算机新技术学术讲座
- 《选煤厂安全规程》全文
- 统编版高中语文选择性必修下册《蜀相》课件整理
- 《婴幼儿行为观察、记录与评价》习题库 (项目三) 0 ~ 3 岁婴幼儿语言发展观察、记录与评价
评论
0/150
提交评论