加急见刊

大连海事大学毕业设计(一)

未知  2009-05-29

1引言

1.1 设计的目及意义

一般的PC与单片机之间的串行通信,需要单片机采集数据,然后用异步串行通讯方式传给PC机。相对而言比较的烦琐,而本文着重用VB具有面向对象的设计方法,友好的用户来探讨在VB环境下来实现PC机与51单片机之间串行通讯的方法。实现起来要简捷方便。

随着计算机系统的应用和微机网络的发展,各种控制设备之间的通信功能越来越显得重要。尤其是伴随着单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。在本系统中,下位机采用一片AT89S51单片机,用于对发送的数据实施控制,为了实现对输入数据的接收,上位机采用便携式PC机,上、下位机之间通过MAX232芯片实现串行数据通信。PC 机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC 机的RS-232 串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。

本文将论述在VB 环境下PC 机与单片机之间实现串行通讯的软硬件方案。实现单片机与 PC 机的相互通信。单片机部分由汇编语言实现,PC 机的通讯程序使用Visual Basic 编写,VB 是Microsoft 公司推出的Windows 应用程序开发工具,因其具有界面友好,编程简便等优点而受到广泛的使用,而且Visual Basic 6.0 版本带有专门实现串行通讯的MSCOMM 控件。因此如何实现PC 机与单片机之间的通讯具有非常重要的现实意义。

利用VB6.0 的事件驱动方式可以很方便地开发数据采集与监控系统,用单台PC 机可以测量和监控多路控制信号,整控制系统设计方便,对小型测控系统的设计具有很大的实用性。

1.2 设计实现的功能

实现单片机与 PC 机的相互通信。具体要求有以下两点:

①单片机发固定编好的代码,在用 VB 编好的界面上接收;

②在 VB 编好的界面上发送数字,在单片机板上的数码管上显示出来。

2 硬件设计方案

为了实现PC机与单片机之间的串行通信,我们首先要清楚了解整个系统所采用的原理图。原理图就象一根红线贯穿于整个系统设计,通过此图我们就能很清楚的看到系统所涉及的内容,然后鉴于此,我们将在以后的章节中依次对所牵涉的内容作详细的论述。下面对原理图作一点说明:从MAX232芯片中的两路发送接收中任选一路作为接口,要注意其发送与接收引脚对应,否则可能对器件或计算机串口造成永久性损坏。如选他T1IN接单片机的发送端TXD,则PC机、的RS—232的接收端RD一定要对应接T1OUT引脚。同时,R1OUT接单片机的接受端RXD引脚,则PC机的RS—232的发送端TD一定要对应接R1IN引脚。

上图为采用MAX232芯片接口的PC机与51单片机串行通信接口原理图

2.1 AT89S51单片机

2.1.1 AT89S51单片机简介

AT89S51 为 ATMEL 所生产的可电气烧录清洗的 8051 相容单芯片,是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器, 128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

2.1.2 AT89S51单片机的功能

AT89S51主要功能列举如下:

1)为一般控制应用的8位单芯片2)晶片内部具有时钟振荡器

3)内部程式存储器(ROM)为 4KB4)内部数据存储器(RAM)为 128B

5)外部程序存储器可扩充至 64KB6)外部数据存储器可扩充至 64KB

7)32 条双向输入输出线,且每条均可以单独做 I/O 的控制

8)5个中断向量源9)2组独立的 16 位定时器

10)1个全多工串行通信端口11)8751 及 8752 单芯片具有数据保密的功能

12)单芯片提供位逻辑运算指令

2.1.3 AT89S51各引脚功能介绍:

VCC:AT89S51 电源正端输入,接+5V。

VSS:电源地端。

XTAL1:单芯片系统时钟的反相放大器输入端。

XTAL2:系统时钟的反相放大器输出端。

RESET:AT89S51的重置引脚,高电平动作。

EA/Vpp:存取外部程序代码,低电平动作。

ALE/PROG:地址锁存器启用信号。

PSEN:程序储存启用,通常这支脚是接到EPROM的OE脚。

PORT0(P0.0~P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当作I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。

PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当作一般I/O端口使用外,若是在AT89S51扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当作I/O来使用了。

PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。

PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。

其引脚分配如下:

P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。

P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。

P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。

本系统所采用的AT89S51芯片如下图所示:

2.1.4 AT89S51 ISP

ISP为在线编程接口。ISP在线编程接口为89S51单片机提供了方便的在线编程方法,使用时将ISP下载线一端与PC并口相连接,一端与ISP接口相连,使用ISP下载软件即可实现MCU在线编程。

下载线插接说明:两排十针下载口,板图上都有一个小方框,为1号引角;下载线的凸口为正方向,凸口的右侧边的第一个插孔为1号引角,这一点一定要切记,不然的话程序下载不进去。

本系统中所用AT89S51 ISP原理图如下示:

AT89S51 ISP

2.2串行通讯

2.2.1串行通讯的概念

串行通讯:一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。

串行通讯的特点是:数据位传送,传送按位顺序进行,最少只需一根传输线即可完成,成本低但传送速度慢。串行通讯的距离可以从几米到几千米。

分类:根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。

RS-232C是目前最常用的串行接口标准,用来实现计算机与计算机之间,计算机与外设之间的数据通信。

RS-232C串行接口总线适用于设备之间的通信距离不大于15米,传输速率最高为19.2kb/s的场合。RS-232C标准规定的数据传输速率为50、75、100、150、300、600、1200、2400、4800、9600、和19200b/s。RS-232C属单端信号传送,存在共地噪声和不能抑制的共模干扰等问题,因此一般用于短距离通信。

1)RS-232C接口信号

一个完整的RS-232C接口有22根线,采用标准的25芯连接器。

2)RS-232C 典型应用

用RS-232C总线连接系统时,有近程通信方式和远程通信方式之分。近程通信是指传输距离小于15米的通信,这时可以用RS-232C电缆直接连接。15米以上的长距离通信,需要采用调制解调器。

下图a)是计算机与终端之间利用RS-232C直接通信的最常用的交叉连线图。图中“发送数据”与“接收数据”是交叉相连的,使得两台设备都能正确地发送和接收。“数据终端变绪”与“数据装置就绪”两根线也是交叉相连的,使得两设备都能检测出对方是否已经准备好。

在最简单的全双工系统中,公用发送数据、接收数据和信号地三根即可。对MCS-51单片机来说,利用RXD(串行数据接收端)线、TXD(串行数据发送端)线以及一根地线,就可以构成符合RS-232C接口标准的全双工串行通信口。(见图b)

(a)直接连接

(b)最简单的RS-232C数据通信连接 3)RS-232C接口电平转换

RS-232C是早期为促进公用电话网络进行数据通信而制定的标准,其逻辑电平对地是对称的,完全与TTL、CMOS逻辑电平不同。

RS-232C采用负逻辑,即:

逻辑1:-5V~-15V。 逻辑0:+5V~+15V。

由于MCS-51采用TTL电平,若用RS-232C标准接口通信必须进行电平转换。目前RS-232C与TTL电平转换最常用的集成电路芯片是传输线驱动器MC1488传输线接收器MC1489。其内部结构和引脚如下图(c)所示。

MC1488可完成TTL电平到RS-232C的电平转换,输入为TTL电平,输出为RS-232C电平。其内部有3个与非门和1个反相器。采用±12V或±15V电源供电。

MC1489可完成由RS-232C到TTL电平转换,输入为RS-232C电平,输出为TTL电平。其内部有4个反相器,采用+5V电源供电。MC1489中每个反相器都有一个控制端,高电平有效,可作为RS-232C操作的控制端。图(d)给出了RS-232C接口电路原理图。

(c)RS-232C电平转换芯片MC1488和MC1489

(d) RS-232C接口电路

MAX232芯片

MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。它的内部结构基本可分三个部分;

第一部分是电荷泵电路。由1、2、3、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)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。

第三部分就是供电。15脚DNG、16脚VCC(+5v)。

2.2.3串行接口

控制串行接口的寄存器有两个,即特殊功能寄存器PCON和SCON。

1)PCON中的波特率选择位

PCON是一个特殊功能寄存器(如下图所示),没有位寻址功能,字节地址为87H。其中D7位(SMOD)为波特率选择位。其他位均无意义。复位时的SMOD值为0。可用MOV PCON。#80H或MOV 87H,#80H指令使该位置1。当SMOD=1时,在串行接口方式1、2或3情况下,波特率提高一倍。

D7 D0

PCON SMOD

PCON SMOD

PCON

波特率选择位| 无定义位 |

2)串行接口控制寄存器 SCON

特殊功能寄存器SCON用于定义串行接口的操作方式和控制它的某些功能。其字节地址为98H。寄存器中各位内容如下:

位D7D6D5D4D3D2 D1 D0

位地址 9F 9E 9D 9C 9B 9A 99 98 SM0 SM1 SM2 REN TB8 RB8 TI RI

位地址

9F

9E

9D

9C

9B

9A

99

98

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0,SM1串行接口操作方式选择位。两个选择位对应于四种状态,所以串行接口能以四种方式工作。

SM2允许方式2和3的多机通信使能位。

REN允许串行接收位。由软件置位或清0,使允许接收或禁止接收。

TB8是在方式2和3中要发送的第9位数据可按需要由软件置位或复位

RB8 是方式2和3中已接收到的第9位数据。

TI 发送中断标志。

RI 接收中断标志。

串行接口工作方式

串行接口的操作方式由SM0、SM1定义,编码和功能如下表所示

串行接口方式选择

SM0SM0 方式 功能说明 波特率 0 0 0 移位寄存器方式 Fosc/12 0 1 1 8位UART 可变 1 0 2 9位UART Fosc/64或fosc/32 1 1 3 9位UART 可变

SM0SM0

方式

功能说明

波特率

0 0

0

移位寄存器方式

Fosc/12

0 1

1

8位UART

可变

1 0

2

9位UART

Fosc/64或fosc/32

1 1

3

9位UART

可变

2.2.4TMOD介绍

定时器/计数器T0、T1 的方式寄存器TMOD

字节地址为89H。TMOD的格式如下:低4位用来定义T0,高4位用来定义T1D7

D7D6 D5 D4 D3 D2 D1D0

GATE C/T M1 M0 GATE C/T M1 M0

GATE

C/T

M1

M0

GATE

C/T

M1

M0

|

T1 | T0 |

各位的意义如下:

1、 GATE——门控位。

GATE=1时,由外部中断引脚、和TR0、TR1共同来启动定时器。当引脚为高电平时,TR0置位启动定时器T0;当引脚为高电平时,TR1置位,启动定时T1。

GATE=0时,仅由TR0和TR1置位来启动定时器T0和T1。

下载