毕业设计-单片机的主从控制系统_第1页
毕业设计-单片机的主从控制系统_第2页
毕业设计-单片机的主从控制系统_第3页
毕业设计-单片机的主从控制系统_第4页
毕业设计-单片机的主从控制系统_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、 毕业设计(论文)任务书学生姓名指导教师职称院系专业题目基于单片机的主从控制系统的设计 任务与要求利用单片机设计一个主从控制系统:主机发送的信号可以被各从机接收,而各从机发送的信息那么只能由主机接收。1 设计并绘制电路原理图如Proteus。2 编写软件:主机程序、从机程序等。3 用Proteus进行硬件仿真,焊接电路板。4进行软硬件联调。 5 完成毕业设计论文。开始日期完成日期院系主任(签字)年 日毕 业 设 计 (论文) 工 作 计 划 学生姓名 指导教师 职称 院系 专业 题目 基于单片机的主从控制系统的设计_工作进程起 止 时 间工 作 内 容3月20日-3月31日 查阅相关资料,完成

2、开题报告,进行整体方案设计4月1日-4月26日 对方案进行细化,进行硬件电路设计,并用Proteus绘制电路原理图4月27日-5月8日 编写主机程序、从机程序等5月9日-6月1日 软、硬件联合调试6月1日-6月12日 完成毕业设计论文,准备毕业辩论 主要参考书目(资料) 主要仪器设备及材料PC机一台 单片机 电容电阻等论文(设计)过程中教师的指导安排每周听取学生工作汇报,并进行专门指导至少12次;随时解决学生设计中遇到的问题。对方案的说明 无毕业设计(论文)开题报告课题名称: 基于单片机的主从控制系统的设计学生姓名: 学号: 指导教师: 报告日期: 随着多微机系统的广泛应用和计算机网络技术的普

3、及,计算机的通信功能显得越来越重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。这种信息交换可以分成两大类:并行通信和串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送。并行通信除了数据线外还有通信网络控制线。数据发送方在发送数据之前,要询问接受对方是否“准备就绪。数据接收方收到数据后,要向数据发送方回送数据已经接受到的“应答信号。并行通信的特点是:控制简单,传输速度快。由于传输线较多,长距离传输时本钱高且接收方的各位同时接受存在困难。串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信时,数据发送设备先将数据代码又并行形式转换成串行形式,然

4、后一位一位地放在传输线上进行传送。数据接收设备将接收到的串行形式转换成并行形式进行存储或处理。串行通行的特点是:传输线少,长距离传送时本钱低,且可以利用 网等现成设备。但数据的传送控制比并行通信复杂。在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。80C51单片机有一个可编程的全双工串行通信口,它可作为UART通信异步收发器,也可作同步移位存放器。其帧格式可为8位、10位或11位,并可以设置多种不同的波特率。通过引脚RXDP3.0,串行数据接收引脚和引脚TXDP3.1,串行数据发射引脚与外界进行通信。80C51单片机的串行口位计算机间的通信提供了极为便利的条件

5、。利用单片机的串行口还可以方便地扩展键盘和显示器,对于简单的应用非常便利。单片机构成的多级系统常采用主从式结构结构。所谓主从式,即在数个单片机中,有一个是主机,其余的是从机,从机要服从主机的调度和支配。80C51单片机的串行口方式2和方式3适于这种主从式的通信结构。采用不同的通信标准时,还需要进行相应的电平转换,有时还要对信号进行光电隔离。在实际的多级应用系统中,常采用RS485串行标准总线进行数据传输,如下列图所示。2本课题需要重点研究的关键问题、解决的思路及实现预期目标的可行性分析1主从控制系统的解决思路 在主从控制系统中,主机要与各个从机进行通信,因此首先必须解决从机识别这个问题,这属于

6、通信协议的范畴。常常采用的方法是地址识别,即给从机分别设定地址信息,方法是在数据前加地址字段或者直接在数据传送之前先发送地址帧,主机通过不同的地址信息来识别数据源。地址信息的识别过程如下:首先,从机处于只接受地址帧的状态;主机发送一帧地址信息;从机接收到地址帧后,将本机地址与地址帧中的地址进行比拟,如果地址相同,那么准备接收数据,否那么丢弃当前帧,依然处于只接收地址帧的状态;主机发送数据帧,相应的从机接收数据,数据传输完毕后,从机继续回到只接受地址帧的状态。这一过程中,其他从机不受影响;当主机需要与其他从机进行数据传输时,可以再次发送地址帧呼叫从机,重复这一过程。2实现思路51单片机的自带串口

7、专门为这种一点对多点的多级通信提供了识别功能,该功能是利用串口控制存放器SCON的SM2位实现的。当串口以方式2或方式3工作时,发送和接收的每一帧信息都是11位,其中,第9位数据位是可编程的,此为用于区别发送的是地址帧还是数据帧,为1那么为地址帧,为0那么为数据帧,此位是通过对SCON存放器的TB8位赋值来置位的。假设从机的控制位SM2设置为1,那么当接受的是地址帧时,数据装入SBUF,并置RI=1,向CPU发出中断申请;当接受的是数据帧时,不产生中断,信息被丢弃。假设SM2设置为0,那么无论是地址帧还是数据帧都将产生RI=1中断标志,数据装入SBUF。利用51单片机串口的此多级通信功能可按如

8、下步骤实现点对点的数据传输。将所有从几的SM2位置1,使其处于只接受地址帧的状态;主机发送一地址帧,其中前8位数据位表示要求与之通信的从机地址,第9位为1,表示当前帧为地址帧;从机接收到地址帧后,将本机地址与地址帧中的地址进行比拟,如果地址相同,那么将SM2置0,准备接受数据,否那么丢弃当前帧,SM2位不变,依然处于只接受地址帧的状态;主机发送数据帧,相应的从机接收数据,数据传输完毕后,从机继续将SM2位置1,回到只接受地址帧的状态,在这一过程中,其他从机不受影响;当主机需要与其他从机进行数据传输时,可以再次发送地址帧呼叫从机,重复这一过程。熟悉80C51单片机根本原理,了解Proteus软件

9、及Keil C软件。第一周;对方案进行细化,进行硬件电路设计,并用Proteus绘制电路原理图。第二周至第四周; 编写主机程序、从机程序等。第五周至第七周;对已建立的模型进行仿真,并进行反复调试,调试成功,在电路板上进行实际验证,实现设计的目的,完成设计。第八周至第十一周;形成毕业设计论文,请指导老师批改,修整并且完善论文,完成毕业设计。 第十二周;撰写毕业论文,准备辩论第十三周至第十四周。4指导教师审阅意见 指导教师(签字): 年 月 日说明:本报告必须由承当毕业论文(设计)课题任务的学生在毕业论文(设计) 正式开始的第1周周五之前独立撰写完成,并交指导教师审阅。毕业设计 (论文)成绩评定表

10、学生姓名性别学号专 业班 级课题名称基于单片机的主从控制系统的设计课题类型科研题目难度一般毕业设计论文时间 指导教师课题任务完成情况论 文 (千字); 设计、计算说 明书 (千字); 图纸 (张);其它(含附 件):指导教师意见 分项得分:开题调研论证 分; 课题质量论文内容 分; 创新 分;论文撰写标准 分; 学习态度 分; 外文翻译 分指导教师审阅成绩: 指导教师(签字): 年 月 日评阅教师意见分项得分:选题 分; 开题调研论证 分; 课题质量论文内容 分; 创新 分;论文撰写标准 分; 外文翻译 分评阅成绩: 评阅教师(签字): 年 月 日验收小组意见 分项得分:准备情况 分; 毕业设

11、计论文质量 分; 操作答复下列问题 分验收成绩:验收教师(组长)(签字): 年 月 日答辩小组意见分项得分:准备情况 分; 陈述情况 分; 答复下列问题 分; 仪表 分辩论成绩: 辩论小组组长(签字): 年 月 日成绩计算方法(填写本院系实用比例)指导教师成绩 () 评阅成绩 () 验收成绩 () 辩论成绩 ()学生实得成绩(百分制)指导教师成绩 评阅成绩 验收成绩 辩论成绩 总评 辩论委员会意见毕业论文(设计)总评成绩(等级): 院系辩论委员会主任(签字): 院系签章) 年 月 日备注毕业论文(设计)成绩评定表(续表)目录 TOC o 1-3 h z u HYPERLINK l _Toc26

12、3454116 摘要 PAGEREF _Toc263454116 h I HYPERLINK l _Toc263454117 Abstract HYPERLINK l _Toc263454118 引言 PAGEREF _Toc263454118 h 1 HYPERLINK l _Toc263454119 1 单片机的串行通信和多机通信原理 PAGEREF _Toc263454119 h 1 HYPERLINK l _Toc263454120 1.1 根本概念 PAGEREF _Toc263454120 h 2 HYPERLINK l _Toc263454121 1.2 MCS-51的串行口和控

13、制存放器 PAGEREF _Toc263454121 h 2 HYPERLINK l _Toc263454122 1.2.1 串行口和控制存放器 PAGEREF _Toc263454122 h 2 HYPERLINK l _Toc263454123 HYPERLINK l _Toc263454124 1.2.2 串行口工作方式 PAGEREF _Toc263454124 h 4 HYPERLINK l _Toc263454125 1.2.3 波特率的计算 PAGEREF _Toc263454125 h 5 HYPERLINK l _Toc263454126 1.3 多机通信 PAGEREF _

14、Toc263454126 h 6 HYPERLINK l _Toc263454127 1.3.1 硬件连接 PAGEREF _Toc263454127 h 6 HYPERLINK l _Toc263454128 1.3.2 通信协议 PAGEREF _Toc263454128 h 6 HYPERLINK l _Toc263454129 1.3.3 应用程序 PAGEREF _Toc263454129 h 7 HYPERLINK l _Toc263454130 2 硬件 PAGEREF _Toc263454130 h 8 HYPERLINK l _Toc263454131 2.1 总体设计方案:

15、 PAGEREF _Toc263454131 h 8 HYPERLINK l _Toc263454132 2.2 硬件结构框图 PAGEREF _Toc263454132 h 8 HYPERLINK l _Toc263454133 2.3 硬件电路主要模块: PAGEREF _Toc263454133 h 9 HYPERLINK l _Toc263454134 2.3.1 单片机最小系统电路 PAGEREF _Toc263454134 h 11 HYPERLINK l _Toc263454135 2.3.2 LED数字显示电路 PAGEREF _Toc263454135 h 12 HYPERL

16、INK l _Toc263454136 2.3.3 LCD1602a液晶显示模块 PAGEREF _Toc263454136 h 13 HYPERLINK l _Toc263454137 2.3.4 温度传感器18b20模块 PAGEREF _Toc263454137 h 15 HYPERLINK l _Toc263454138 3 软件局部 PAGEREF _Toc263454138 h 17 HYPERLINK l _Toc263454139 3.1 主机 PAGEREF _Toc263454139 h 17 HYPERLINK l _Toc263454140 3.2 从机 PAGEREF

17、 _Toc263454140 h 18 HYPERLINK l _Toc263454141 4 结论 PAGEREF _Toc263454141 h 20 HYPERLINK l _Toc263454142 致谢 PAGEREF _Toc263454142 h 21 HYPERLINK l _Toc263454143 参考文献 PAGEREF _Toc263454143 h 22 HYPERLINK l _Toc263454144 附录 PAGEREF _Toc263454144 h 23摘要单片机应用于数据采集或工业控制时,往往需要安装在工业现场,远离主机,构成单片机多机系统,在多机系统中经

18、常采用总线型主从多机控制系统。主机发送的信息可传送到各个从机,而各从机发送的信息只能被主机接受。单片机的相互通信有并行通信和串行通信两种,在主从多机控制系统中,经常采用串行通信来交换数据和信息,采用串行通信的方式将现场数据发送给主机处理。本课题所讨论的就是基于STC89C52单片机的主从控制系统,采用串行通信的方式,主机和从机可以实现全双工通信,主机可以向从机发送数据,从机也可以向主机发送数据。关键词:单片机 主从控制 串行通信 全双工AbstractMicrocontroller used in data acquisition and industrial control often ne

19、eds to be installed in the industrial field, away from the host, constitute a single chip multi-machine system, often in multi-machine system using bus-based master-slave multi-machine control system. Host sends the information can be sent to each slave, and the information sent from the machine can

20、 only be host to accept. MCU communicate with each other are two kinds of parallel communication and serial communication, in the main from the multi-machine control systems, often using serial communication to exchange data and information, using serial communication means to send to the host proce

21、ssing field data.The subject under discussion is based on master-slave control STC89C52 SCM system, using serial communication means, master and slave can be full-duplex communication, the host can send data to the slave, the slave can send data to the host.Key words: SCM Master Control Serial Commu

22、nication Full-duplex引言随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能显得越来越重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。这种信息交换可以分成两大类:并行通信和串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送。并行通信除了数据线外还有通信网络控制线。数据发送方在发送数据之前,要询问接受对方是否“准备就绪。数据接收方收到数据后,要向数据发送方回送数据已经接受到的“应答信号。并行通信的特点是:控制简单,传输速度快。由于传输线较多,长距离传输时本钱高且接收方的各位同时接受存在困难。串行通信是将数据字节分成一位一位的形式在

23、一条传输线上逐个地传送。串行通信时,数据发送设备先将数据代码又并行形式转换成串行形式,然后一位一位地放在传输线上进行传送。数据接收设备将接收到的串行形式转换成并行形式进行存储或处理。串行通行的特点是:传输线少,长距离传送时本钱低,且可以利用 网等现成设备。但数据的传送控制比并行通信复杂。在数据通信、计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息。80C51单片机有一个可编程的全双工串行通信口,它可作为UART通信异步收发器,也可作同步移位存放器。其帧格式可为8位、10位或11位,并可以设置多种不同的波特率。通过引脚RXDP3.0,串行数据接收引脚和引脚TXDP3.1,串行

24、数据发射引脚与外界进行通信。80C51单片机的串行口位计算机间的通信提供了极为便利的条件。利用单片机的串行口还可以方便地扩展键盘和显示器,对于简单的应用非常便利。单片机构成的多级系统常采用主从式结构结构。所谓主从式,即在数个单片机中,有一个是主机,其余的是从机,从机要服从主机的调度和支配。80C51单片机的串行口方式2和方式3适于这种主从式的通信结构。1 单片机的串行通信和多机通信原理MCS-51单片机内部有一个 全双工的串行接收和发射缓冲器SBUFF,这两个在物理上独立的接收发射器,即可以接收也可以发射数据,但接收缓冲器只可以读出不能写入,而发送缓冲器只能写入不能读出,它们的地址是99H。这

25、个通信口即可以用于网络通信,亦可以实现串行异步通信,还可以构成同步移位存放器使用。如果在串行口的输入输出引脚上加上电平转换器,就可以方便的构成标准的RS-232接口。下面我们分别介绍。1.1 根本概念数据通信的传输方式:常用于数据通信的传输方式有单工、半双工、全双工和多工方式。1单工方式:数据仅按一个固定的方向传送。因为这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。2双工方式:数据可以实现双向传送,但不能同时进行,实际的应用采用某种协议实现收发开关转换。3全双工方式:允许双方同时进行数据双向传送,但一般全双工电路的线路和设备比拟复杂。4多工方式:以上三种传输方式都是

26、同一线路传输一种频率信号,为了充分的利用线路资源,可通过使用多路复用器或多路集线器,采用频分、时分、或码分复用技术,即可实现在同一线路上资源共享功能,我们称之为多工传输方式。串行通信的两种通信形式:异步通信:在这种通信方式中,接收器和发射器有各自的时钟,他们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,紧接着是假设干个数据位,图 是传输45H的数据格式。同步通信:同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步传输中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送的数据量较大的3串行数据通信的传输速率:串行数据传输率有两个概念,既美

27、秒传送的位数bps(Bit per second)和美秒符号数-波特率Band rate,在具有调治解调器的通信中,波特率与调治速率有关。1.2 MCS-51的串行口和控制存放器1.2.1 串行口和控制存放器MCS-51单片机串行口专用存放器结构如下图。SBUF为串行口的收发缓冲器,它是一个可寻址的专用存放器,其中包含了接收器和发射器存放器,可以实现全双工通信。但这两个存放器具有同一地址99H。MCS-51的串行数据传输很简单,只要向缓冲器写入数据就可发送数据。而从接收缓冲器读出数据既可接收数据。此外,接收缓冲器前还加上一级输入移位存放器,MCS-51这种结构的目的在于接收数据时防止发生重叠现

28、象,文献称这种结构为双缓冲结构。而发送数据就不需要这样设计,因为发送时,CPU是主动的,不可能出现这种情况。A:串行通信存放器SCON控制存放器是一个可寻址的专用存放器,用于串行数据通信的控制,单元地址是98H,其结构格式如下:表1-1 SCON存放器结构表1 存放器SCON结构SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH8DH9CH9BH9AH99H98H下面对个控制位功能介绍如下:SM0、SM1:串行口工作方式控制位 SMO SM1 工作方式 功能说明 0 0 方式0 移位存放器方式用于I/O扩展 0 1 方式1 8位UART,波特

29、率可变T1溢出率/ n 1 0 方式2 9 位UART,波特率为fosc/64或fosc/32 1 1 方式3 9位UART,波特率可变T1溢出率/ n 2SM2:多机通信控制位多机通信是工作方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作方式2或3,以及SM2=1时,只有当接收到第9位数据RB8为1时,才把接收的前8位数据送入SBUF,且置位RI发出中断申请,否那么会将收到的数据放弃。当SM2=0时,只有在接收到有效停止位时才启动RI,假设没接收到有效停止位,那么RI清“0。在方式0中SM2应该为“0。REN:允许接收控制位。由软件置“1时,允许接收;软件置“0时,不许

30、接收。TB8:在方式3和方式3中要发送的第9位数据,需要时用软件置位和清零。TB8:在方式2和方式3中是接收到的第9位数据。在方式1时,如SM2=0,RB8接收到的停止位。在方式0中,不使用RB8。TI:发送中断标志。由硬件在方式0发送完第8位时置“1,或在其它方式中串行发送停止位的开始时置“1。必须由软件清“0。RI:接收中断标志。由硬件在方式0串行发射第8位结束时置“1B:特殊功能存放器PCONPCON:主要是是CHMOS型单片机的电源控制而设置的专用存放器,单元地址为87H其机构格式如下表:表1-2 特殊功能存放器PCON PCOND7D6D5D4D3D2D1D0位符号SMODGF1GF

31、0PDIDLC:中断允许存放器IE中断允许存放器这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位,ES=1允许串行中断,ES=0,禁止串行中断。1.2.2 串行口工作方式一、方式0方式0时,串行口为同步移位存放器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXDP3.0引脚输入或输出,同步移位脉冲由TXDP3.1引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。 二、方式1方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如下图。其中1位起始位,8位数据位,1位停止位。用软件置REN为1时,接收器以

32、所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,那么说明起始位有效,将其移入输入移位存放器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位存放器右边移入,起始位移至输入移位存放器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0或接收到的停止位为1时,将接收到的9位数据的前8位数据装入接收SBUF,第9位停止位进入RB8,并置RI=1,向CPU请求中断。三、方式2和方式3方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚 。方式2和方式3时起始位1位,数据9位含1位附加的第9位,发送时为SCON中的TB8,

33、接收时为RB8,停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。发送开始时,先把起始位0输出到TXD引脚,然后发送移位存放器的输出位D0到TXD引脚。每一个移位脉冲都使输出移位存放器的各位右移一位,并由TXD引脚输出。第一次移位时,停止位“1移入输出移位存放器的第9位上 ,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。 方式2和方式3输入接收时,数据从右边移入输入移位存放器,在起始位0移到最左边时,控制电路进行最后一

34、次移位。当RI=0,且SM2=0或接收到的第9位数据为1时,接收到的数据装入接收缓冲器SBUF和RB8接收数据的第9位,置RI=1,向CPU请求中断。如果条件不满足,那么数据丧失,且不置位RI,继续搜索RXD引脚的负跳变。1.2.3 波特率的计算在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =

35、2SMOD/64 fosc 方式1的波特率 =2SMOD/32T1溢出率当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式即方式2,且TCON的TR1=1,以启动定时器。这时溢出率取决于TH1中的计数值。T1 溢出率 = fosc /12256 TH1在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表1-3所示。表1-3 常用波特率与定时器1的参数关系串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:确定T1的工作方式编程TMO

36、D存放器;计算T1的初值,装载TH1、TL1;启动T1编程TCON中的TR1位;确定串行口控制编程SCON存放器;串行口在中断方式工作时,要进行中断设置编程IE、IP存放器。1.3 多机通信1.3.1 硬件连接单片机构成的多机系统常采用总线型主从式结构。所谓主从式,即在数个单片机中,有一个是主机,其余的是从机,从机要服从主机的调度、支配。80C51单片机的串行口方式2和方式3适于这种主从式的通信结构。当然采用不同的通信标准时,还需进行相应的电平转换,有时还要对信号进行光电隔离。在实际的多机应用系统中,常采用RS-485串行标准总线进行数据传输。图1-1 多机通信系统的硬件连接1.3.2 通信协

37、议所有从机的SM2位置1,处于接收地址帧状态。主机发送一地址帧,其中8位是地址,第9位为地址/数据的区分标志,该位置1表示该帧为地址帧。 所有从机收到地址帧后,都将接收的地址与本机的地址比拟。对于地址相符的从机,使自己的SM2位置0以接收主机随后发来的数据帧,并把本站地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。从机发送数据结束后,要发送一帧校验和,并置第9位TB8为1,作为从机数据传送结束的标志。主机接收数据时先判断数据接收标志RB8,假设RB8=1,表示数据传送结束,并比拟此帧校验和,假设正确那么回送正确信号00H,此信号命令该从机复位即重新等

38、待地址帧;假设校验和出错,那么发送0FFH,命令该从机重发数据。假设接收帧的RB8=0,那么存数据到缓冲区,并准备接收下帧信息。主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号数据帧中TB8=1;如果地址相符,那么清TB8,开始发送数据。从机收到复位命令后回到监听地址状态SM2=1。否那么开始接收数据和命令。1.3.3 应用程序主机发送的地址联络信号为:00H,01H,02H , 即从机设备地址,地址FFH为命令各从机复位,即恢复SM2=1。主机命令编码为:01H,主机命令从机接收数据;02H,主机命令从机发送数据。其它都按02H对待。 RRDY=1:表示从机准备好接收。TR

39、DY=1:表示从机准备好发送。ERR=1: 表示从机接收的命令是非法的。程序分为主机程序和从机程序。约定一次传递数据为16个字节,以01H地址的从机为例。 2 硬件2.1 总体设计方案:本系统共三个模块,分别是:单片机控制模块、数据采集模块、液晶和数码管显示模块。其中单片机控制模块作为核心控制器,协调各局部的工作;数据采集模块用温度传感器来采集温度;利用液晶和数码管显示模块分别显示从机采集的温度和主机发送给从机的数据。2.2 硬件结构框图硬件电路分两大块:主机局部和从机局部。硬件结构框图如下所示:图2-1主机结构框图图2-2 从机结构框图2.3 硬件电路主要模块:硬件电路主要由四局部构成:第一

40、局部是单片机最小系统模块电路;第二局部是LED数字显示电路;第三局部是LCD1602a液晶显示模块;第四局部是温度传感器18b20模块。总体硬件原理图如下列图2-3所示见下页:图2-3总体硬件原理图图2.3.1 单片机最小系统电路单片机最小应用系统是指仅使用单片机内部内部资源辅以必须的外围电路所构建的简单的应用系统。时钟电路和复位电路就可以构成一个最小系统。51单片机有一个构成内部振荡器的反相放大器,引脚XTAL1和XTAL2分别是放大器的输入、输出端。外接石英晶体和陶瓷电容构成自激振荡器。这种方式称为内部时钟方式,如下列图所示。如果振荡器已开启,那么在XTAL2引脚上输出左右的正弦波。振荡器

41、的频率取决于晶振的频率。电容C1和C2主要作用是帮助启振谐振,其值的大小对振荡频率也有影响。因此常用调节C1和C2的容量大小对频率进行微调,电容容量通常在20pF100pF之间选择,当时钟电路为12MHz时,其典型值为30pF。 复位是单片机的初始化操作。单片机启动运行时必须先复位,其作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。此外,在系统工作异常时的特殊情况下,也可以人为地复位。复位是由外部复位电路来实现的,可分为上电自动复位和人工复位两种方式。将一个按钮开关并联于上电自动复位电路,就是人工复位电路,如下图。按一下开关就会在RST端出现一段时间的高电平,使单片

42、机复位。电容和电阻的参考值是:C=10uF,R=10。图2-4单片机最小系统图2.3.2 LED数字显示电路 LED显示是用发光二极管显示字段的显示器件,也可称为数码管,数码管具有设计简单、工作电压低、响应速度快、价格低廉等优点。在显示时给出和显示数字对应的显示码即可,通过不同的组合可用来显示09、AF及小数点。LED显示器分为共阴极和共阳极,共阴极是将8个发光二极管阴极连接在一起作为公共端,而共阳极是将8个发光二极管的阳极连接在一起作为公共端。在本课题中采用的是共阴极数码管来显示显示主机发送给从机的数据,从机1控制的数码管显示奇数,从机2控制的数码管显示偶数,选用共阴数码管。共阴数码管管脚图

43、如下列图所示: 图2-5数码管管脚图和原理图 单片机的P1口用作数码管的选择信号,控制数码管的字段LED发光。把单片机芯片STC89C52的P1.0到P1.7端口连接到LED数码管显示模块的ah端口上,注意要将P1.0端口对应接a,P1.1端口对应接b,P1.7端口对应着h。数码管的3脚和8脚是连通的,这两个都是公共脚,需要将它们接地。总体连接图2-6如下:图2-6 数码管与单片机连接电路图2.3.3 LCD1602a液晶显示模块 LCD1602a液晶用来显示从机发送的数据,即显示不同从机所测量的温度,LCD1602a液晶管脚图如下列图2-7所示:图2-7 液晶LCD1602a管脚图管脚功能如

44、下表2-1所示:表2-1 液晶LCD1602a管脚功能LCD1602a液晶与单片机的连接采用有总线方式和模拟口线方式两种,在电路设计中采用模拟口线方式:图2-8 LCD1602a液晶与单片机的模拟口线方式具体连接电路图2-9如下:将单片机芯片STC89C52的P0.0到P0.7端口连接到LCD1602a的D0D7端口上,注意要将P0.0端口对应接D0,P0.1端口对应接D1,P0.7端口对应着D7,将LCD1602a的RS端与单片机的P2.0连接,RW端与P2.1相连,E端与P2.2相连,VDD接+5V高电平,VSS接地,VEE接一个1K的滑动变阻器,用来调节液晶屏的亮度。 图2-9 LCD1

45、602a液晶与单片机连接电路图2.3.4 温度传感器18b20模块温度传感器18b20体积小,硬件开消低,抗干扰能力强,测量精度高,用来测量温度作为从机发送给主机的数据。18b20管脚图如下所示:图2-9 温度传感器18b20管脚图引脚功能如下表2-2:表2-2 温度传感器18b20引脚功能 DS18B20与单片机相连时,DS18B20的DQ端只需要接到单片机的一个P2.0口上,由于单总线为开漏所以需要外接一个4.7K的上拉电阻,具体连接图如下:图2-10 温度传感器18b20与单片机连接电路图3 软件局部软件局部分为主机程序和从机程序:主机程序用来控制主机向从机发出命令并接受从机发送的数据和

46、,也可以发送数据给从机;从机程序用来接受主机的命令,并且显示主机发送的数据。3.1 主机流程图如下:开始初始化中断1?中断0?Y第二次?第二次?第一次?第一次?发送从机1 ID发送从机1 ID接收到从机1地址响应?N接收到从机1地址响应?发送从机1命令Y发送从机1命令接收到从机1命令响应?接收到从机1命令响应?发送从机1接收数据命令发送从机1数据命令Y接收到从机1数据命令响应?接收到从机1接收数据命令响应?向从机1发送数据接收数据向从机1发送发送数据命令显示处理3.2 从机流程图如下:开始N初始化采集温度值Y是否产生中断串口中断接收到地址码?发送地址响应码码接收到命令码?发送命令响应码接收到发

47、送转化结果命令?发送响应码接收到数据?显示奇数接收到发送数据命令?发送数据4 结论本文通过对基于STC89C52单片机的主从控制系统设计的分析研究,主要实现了串行全双工通信。用18B20温度传感器测量温度送给从机,从机通过串行口发送给主机,主机的液晶LCD1602A显示从机测量的温度,用LED数码管分别显示主机发送给从机1和从机2的数据:奇数和偶数。总体上包括系统总体设计、各局部硬件电路设计、软件设计等。 本课题所设计的主从控制系统,由于时间关系,无论软件设计还是硬件设计,都还存在缺乏的地方,还需要在技术水平和可靠性方面进一步改良和完善。 致谢参考文献附录附录1 主机程序 /*主机代码* #i

48、nclude #include Clicent_Setting.h #include LCD_Funtion.h #include Futions.h #include Host_Interrupt_Funtion.h int num1=1; /从机数码管起始数 int num2=0; /*void main(void)Serial_Set(); /串口设置 Lcd_Init(); /LCD初始化Interrupt_Init();/中断初始化 ClrScreen();/LCD清屏while(1) if(Intval1&Int_pro1)/如果第一次中断0,采集从机1温度 Serial_Init

49、();/初始化串口SBUF=STD1;/发送从机1 IDwhile(!TI);/等待发送完成TI=0;while(Int_pro1)/如果没触发第二次中断if(Serial1)/从机1响应是否正确 if(Serial1=1) /如果从机正确接收到地址SCON=0 xd0; /串口允许接收数据Serial1=0;SBUF=Clicent_Command1; /发送命令给从机1,告知从机这是命令while(!TI);TI=0;if(Serial1=2&SendTo1=1) /Serial1=0;SBUF=Clicent_Receive_Data1; /发送从机1接收数据的命令while(!TI);

50、TI=0;if(Serial1=2&ReceiveFrom1=1) /如果从机1正确接受到命令Serial1=0;/SBUF=Clicent_Data_Command1; /发送把从机1结果送主机的命令while(!TI);TI=0;if(Serial1=3) /接收从机1 温度数据 Serial1=0;SBUF=Clicent_Send_Data1; /发送给从机发送数据命令while(!TI);TI=0;while(!RI);RI=0;DS18B20_Data0=SBUF; /接收温度数据while(!RI);RI=0;DS18B20_Data1=SBUF; ClrScreen(); /L

51、CD清屏GotoXY(0,0);Print_Str(NUM1);/LCD显示从机号temperature_process(DS18B20_Data0,DS18B20_Data1); /温度数据处理 if(!flag) /正 LCD显示正温度 GotoXY(0,1);Print_Str(zhen_temp);if(dot_dis)Print_Str(.);Print_Str(xiaoshu_temp);Print_Char(0 xdf);Print_Str(C); else /负LCD显示负温度 GotoXY(0,1);Print_Str(-);Print_Str(zhen_temp);Prin

52、t_Str(.);Print_Str(xiaoshu_temp); Print_Char(0 xdf);Print_Str(C); if(Serial1=4)/主机向从机发送数据 Serial1=0; SBUF=num1;/发送数据1 3 5 7 9.给从机1测试奇数递增while(!TI);/等待发送完成 TI=0;num1=num1+2; /*/* if(Intval2&Int_pro2)/如果第二次中断0,采集从机2温度 Serial_Init();/初始化串口SBUF=STD2;/发送从机2 IDwhile(!TI);/等待发送完成TI=0;while(Int_pro2)/如果没触发下

53、次中断0,循环 if(Serial2)/从机2响应是否正确 if(Serial2=1) /如果从机2正确接收到地址SCON=0 xd0;Serial2=0;SBUF=Clicent_Command2; /发送从机2命令while(!TI);TI=0;if(Serial2=2&SendTo2=1) /Serial2=0;SBUF=Clicent_Receive_Data2; /发送从机2接收数据命令while(!TI);TI=0;if(Serial2=2&ReceiveFrom2=1) /如果从机正确接受到命令Serial2=0;/SBUF=Clicent_Data_Command2; /发送把

54、从机结果送主机的命令while(!TI);TI=0;if(Serial2=3) /如果从机发送结果完成 /ClrScreen();Serial2=0;SBUF=Clicent_Send_Data2;/从机可发送数据 while(!TI);TI=0;while(!RI);RI=0;DS18B20_Data0=SBUF; /接收温度数据while(!RI);RI=0;DS18B20_Data1=SBUF;ClrScreen(); /LCD清屏GotoXY(0,0);Print_Str(NUM2);/LCD显示从 机号temperature_process(DS18B20_Data0,DS18B20

55、_Data1); /温度数据处理 if(!flag) /正 GotoXY(0,1);Print_Str(zhen_temp);if(dot_dis)Print_Str(.);Print_Str(xiaoshu_temp);Print_Char(0 xdf);Print_Str(C); else /负 GotoXY(0,1);Print_Str(-);Print_Str(zhen_temp);Print_Str(.);Print_Str(xiaoshu_temp);Print_Char(0 xdf);Print_Str(C); /*/ if(Serial2=4) /向从机2发送数据 Serial

56、2=0; num2=num2+2; SBUF=num2;/发送数据2 4 6 8.测试偶数递增while(!TI);/等待发送完成 TI=0; 附录2 从机1程序/*从机1代码*#include #include Funtion_T.h#include Clicent_Setting.hchar TTemp;unsigned char code SEG710=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;int ss=2;int num=1;sbit c1=P36;void delay_50ms() int s=5000

57、; while(-s);/*void Serial_Init(void)/串口初始化SCON = 0 x50;/ 设定串行口工作方式 TMOD=0 x20;TH1 = 0 xfD;/ 11.0952MHZ 波特率9600TL1 = 0 xfD;TR1=1;ES=1; /*void Interrupt_Init(void)/中断初始化EA=1;EX0=1;/*void interrupt4(void) interrupt 4 using 2 /串口中断触发EA=0;if(TI) TI=0;if(RI)RI=0;if(SBUF=STD1) /如果接收到主机的地址码SBUF=Address_Resp

58、ond1;/发送地址响应码while(!TI);/必须TI=0;SCON=0 xd0;/并且把SCON中的SM2置0,允许响应数据中断if(SBUF=Clicent_Command1)/如果接收到主机的启动的命令SBUF=Command_Respond1;/发送响应码返回给主机while(!TI);/必须TI=0;if(SBUF=Clicent_Data_Command1) /如果接受到主机的发送转化结果的命令SBUF=Data_Command_Respond1;/发送响应码while(!TI);/必须TI=0;if(SBUF=Clicent_Receive_Data1) SBUF=Data_

59、Receive_Respone1; while(!TI);/必须 TI=0;while(!RI);/接收数据 测试RI=0;TTemp=SBUF;P1=SEG7TTemp%10;c1=0; SCON=0 xf0; /并且把SCON中的SM2置1if(SBUF=Clicent_Send_Data1) /发送数据SBUF=DS18B20_Data0;/发送温度数据while(!TI);TI=0;SBUF=DS18B20_Data1;while(!TI);TI=0;SCON=0 xf0;EA=1;/*void DS18B20_Run(void) DS18B20_Read_Temperature();

60、/*/void main(void)P1=0;Interrupt_Init();Serial_Init();while(1)delay_50ms();/延时50ms左右读一次温度,读得太多太快可能会出现乱数DS18B20_Run();delay_50ms();/延时50ms左右读一次温度,读得太多太快可能会出现乱数附录3 从机2程序/*从机2代码*#include #include Clicent_Setting.h#include Funtion_T.hextern char DS18B20_Data2;unsigned char code SEG710=0 x3f,0 x06,0 x5b,

温馨提示

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

评论

0/150

提交评论