单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx

上传人:b****3 文档编号:8117822 上传时间:2023-05-10 格式:DOCX 页数:19 大小:348.30KB
下载 相关 举报
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第1页
第1页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第2页
第2页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第3页
第3页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第4页
第4页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第5页
第5页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第6页
第6页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第7页
第7页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第8页
第8页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第9页
第9页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第10页
第10页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第11页
第11页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第12页
第12页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第13页
第13页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第14页
第14页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第15页
第15页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第16页
第16页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第17页
第17页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第18页
第18页 / 共19页
单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx

《单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx(19页珍藏版)》请在冰点文库上搜索。

单片机与PC机串行通信系统硬件及上位机程序设计Word格式.docx

一般来说,计算机都有一个或多个串行端口,它们依次为Com1、Com2、Com3等。

这些串口提供了外部设备与计算机进行数据传输和通信的通道[3]。

串行口通信是指外设和计算机间使用3根信号线进行数据传送的一种通信方式,这三根信号分别是数据信号线、地线及控制线。

2.1两种常用接口方式

2.1.1并行接口

并行接口是指8位数据同时通过并行线进行传送,这样数据的传输率能得到极大的提高。

但在并行传输中,干扰会随线路长度的增加而增加,产生传输错误。

因此,并行传输主要应用在近距离数据传输中,如连接打印机端口。

并行接口主要使用36针接头和25针D形接头,目前以25针D形接头为主[4]。

2.1.2串行接口

串行口也是计算机的一种标准接口,PC机一般至少有两个串行口Com1和Com2。

串行口不同于并行口,它的数据和控制信息是一位接一位在一根传输线上传送的,这样串行口较并行口能够进行远距离传送信息。

串行口通常使用9针D形连接器,有些老式则使用25针D形连接器。

由于CPU与接口间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,要由接收移位寄存器把串行方式转换成并行方式,由发送移位寄存器把并行方式转换成串行方式。

完成这种转换功能的电路叫做通用异步收发机UART[4]。

2.2RS-232串行接口标准

目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。

RS-232被定义为一种在低速率串行通信中增加通信距离的单端标准。

RS-232采用不平衡传输方式,收发端的数据信号,是相对信号地。

9针串口引脚和25针串口引脚定义如表2-1所示。

表2-19针串口引脚和25针串口引脚定义

9针串口(DB9)

25针串口(DB25)

针号

功能说明

缩写

1

数据载波检测

DCD

8

2

接收数据

RXD

3

发送数据

TXD

4

数据终端准备

DTR

20

5

信号地

GND

7

6

数据设备准备好

DSR

请求发送

RTS

清除发送

CTS

9

振铃指示

DELL

22

典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在5V~15V,负电平在-5V~-15V;

在接收数据时,接收器的典型工作电平是3V~12V和-3V~-12V。

串口传输数据只要有接收数据针脚和发送数据针脚就能实现,其连接方式如表2-2所示。

表2-2串口通信连接方式

9针—9针

25针—25针

9针—25针

表2-2是对微机标准串行口而言的,还有许多非标准设备则需要根据具体情况而定。

3系统总体设计

3.1系统指标设计

3.1.1通信协议设定

硬件接口:

单片机输出的TTL电平经电平转换芯片转换成为RS-232信号,然后与PC机互连。

字符格式:

1位起始位,8位数据位,1位停止位。

通信波特率:

9600bps。

差错校验:

无奇偶校验。

3.1.2系统实现描述

下位机可以脱机单独工作,并用存储器存储由PC机传送来的数据,通信时由上位机发出通信请求,要求下位机给出回应。

当单片机无应答时,PC机将重发通信请求直到下位机给出响应。

传送数据前先发数据数目,接下来发送数据,下位机接收数据并动态显示在LED数码管上。

3.2总体方案设计

单片机内部有一个全双工的收发缓冲器(SBUF),这两个在物理上独立的接收发射器,即可以接收也可以发射数据,它们共用同一个地址99H。

在串行口的输入输出引脚上加上电平转换器,就可以方便的设计成标准的RS-232接口。

在设计中以PC机为主机,单片机为从机,通过串行接口构成主从系统,设计其串行通信的基本功能,其系统框图如图3-1所示。

 

4硬件接口电路设计

4.1主要芯片

4.1.1AT89C51

在系统设计中使用AT89C51单片机作为下位机,与PC机进行串口通信,接收数据并控制数据在LED数码管上动态显示。

AT89C51是美国ATMEL公司生产的低电压,高性能的CMOS8位单片机片,内置4Kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存储器(RAM),器件采用ATMEL公司的高密度、非易失存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大[5]。

AT89C51单片机可为你提供许多高性价的应用场合,可灵活的应用于各种控制领域。

1)AT89C51性能参数

AT89C51有如下性能参数:

·

与MCS-51产品指令系统的全兼容;

4k字节可重擦写Flash闪速存储器;

128×

8字节内部RAM;

1000次可擦写周期;

全静态操作:

0Hz-24MHz;

三级加密程序存储器;

32个可编程I/O口线;

2个16位定时/计数器;

1个全双工异步串行口;

6个中断源,2个中断优先级;

低功耗空闲和掉电模式。

2)AT89C51内部结构及管脚图

AT89C51包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线[7],其方框图如图4-1所示。

图4-1AT89C51方框图

AT89C51单片机采用40Pin封装的双列直接DIP结构,其引脚配置如图4-2所示。

图4-2AT89C51引脚配置

(1)RESET/Vpd(9脚)复位信号

当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。

初始化后,程序计数器PC指向0000H。

RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。

其复位电路如图4-3所示。

图4-3AT89C51复位电路

(2)

(30脚)地址锁存信号

当访问外部程序存储器时,ALE的输出用于锁存地址的低位字节,而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。

更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。

(3)

(29脚)片外程序存储器读选通

当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。

(4)EA/Vpp(31脚)内部和外部程序存储器选择信号

程序存储器的内外部选通线,8051和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。

如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。

3)AT89C51串行口结构

(1)数据缓冲器SBUF

串行口是一个可寻址的专用寄存器,有两个物理空间上各自独立的发送缓冲器和接受缓冲器,可以实现全双工通信,这两个寄存器具有同一地址(99H)。

单片机的串行数据传输很简单,只要向缓冲器写入数据就可发送数据,从接收缓冲器读出数据既可接收数据。

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

它是一个可寻址的专用寄存器,用于串行通信的控制,单元地址是98H,其结构格式如表4-1所示。

表4-1 

SCON寄存器结构

SCON

D7

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

位地址

9FH

9EH

8DH

9CH

9BH

9AH

99H

98H

(3)特殊功能寄存器PCON可

其字节地址为87H,没有位寻址功能,与串行口有关只有PCON的最高位,其结构如表4-2所示。

表4-2特殊功能寄存器PCON

PCON

位符号

SMOD

GF1

GF0

PD

IDL

SMOD:

波特率选择位。

当SMOD=1时,波特率加倍。

4.1.2单电源转换芯片MAX232

MAX232是MAXIM公司生产的、包含两路接收/驱动器的芯片。

芯片内部有一个电源电压变换器,可以将输入的+5V电源电压变换成为RS-232输出电平。

硬件接口简单,被广泛使用。

芯片的引脚配置及典型就工作电路如图4-4所示。

(a)引脚图(b)典型电路图

图4-4MAX232芯片引脚配置和典型工作电路

4.1.374LS245LED驱动芯片

74LS245是常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。

当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。

当片选端

低电平有效时,DIR=“0”,信号由B向A传输;

DIR=“1”,信号由A向B传输;

为高电平时,A、B均为高阻态,其引脚配置如图4-5所示。

图4-574LS245引脚配置

4.2LED显示器

4.2.1LED显示器工作原理

LED(lightemittingdiode)显示是用发光二极管显示字段的显示器件,也称数码管,其外形结构如图4-6所示,由图可知它由8个发光二极管构成,通过不同的组合可用来显示0~9、A~F及小数点。

图4-6“8”字形数码管

LED显示器一般分为共阴极和共阳极两种,共阴极是将8个发光二极管的阴极连接在一起作为公共端,而共阳极则是将8个发光二极管的阳极连在一起作为公共端[8],其构成如图4-6所示。

4.2.2LED显示器接口

在单片机系统中,LED显示接口一般采用静态驱动和动态扫描两种驱动方式。

静态驱动方式工作原理是每一个LED显示器有一个I/O端口驱动,亮度大,占用I/O端口多,显示位数多时很少采用;

动态扫描驱动方式的工作原理是将多个显示器的段码同名端连接在一起,位码分别控制,利用眼睛的余晖暂留效应,分别显示。

动态扫描驱动方式下,只要保证一定的显示频率,看起来的效果和一直显示是一样的。

4.3系统设计

系统中采用AT89C51单片机作为下位机,PC机作为上位机,两者通过RS-232串行口收发数据。

RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换,系统中使用集成电平转换芯片MAX232实现RS-232/TTL电平转换。

单片机系统总体电路如图4-7所示。

图4-7单片机系统总体电路

5PC机程序设计

VisualBasic(简称VB)是Windows操作系统下简单、易学、高效的应用软件开发工具。

因其具有面向对象的设计方法,友好的用户界面、编程高效、数据处理及驱动底层硬件功能强等优点而受到广泛的使用。

在设计PC机程序时,使用面向对象的编程方法。

5.1MSComm控件

MSComm控件全称为MicrosoftCommunicationsControl,是Microsoft公司提供的简化Windows下串行通行编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

通过对此控件的属性和事件进行相应编程操作,就可以轻松实现串口通信。

5.1.1MSComm控件处理通信的方式

MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。

MSComm控件提供两种处理通信的方式:

事件驱动方式和查询方式。

1)事件驱动方式

事件驱动通信是处理串行端口交互作用的一种非常有效地方法。

这种方式下,在事件发生时,如在串口接收缓冲区有字符等,可以利用MSComm控件的OnComm事件捕获并处理这些通信事件,OnComm事件还可以检查和处理通信错误。

在编程过程中,可以在OnComm事件处理函数中加入自己的代码。

这种方法的优点使程序响应及时、可靠。

2)查询方式

查询方式实质上还是事件驱动,在有些情况下,这种方式显得更为便捷。

在程序的关键功能后,可以通过检查CommEvent属性的值来查询事件和错误,编写自己的程序代码。

5.1.2MSComm控件的主要属性

MSComm控件很多重要的属性,常用属性的功能如下:

CommPort属性:

设置并返回通信端口号;

Input属性:

返回并删除接收缓冲区中的数据流;

Output属性:

往传输缓冲区中写数据流;

PortOpen属性:

设置并返回通信端口的状态(开或关);

Settings属性:

设置并返回波特率、奇偶校验、数据位和停止位参数;

InputLen属性:

确定被Input属性读取的字符数,设置InputLen为0时,则Input属性读取缓冲区中的全部数据;

InputMode属性:

确定用Input属性读取的数据类型,设置InputMode为comInputModeText时,Input属性通过一个Variant返回文本数据,设置为comInputModeBinary时,Input属性通过一个Variant返回一个二进制数据数组。

5.2应用界面设计流程

5.2.1创建项目文件

(1)单击“开始”按钮,选择“程序|MicrosoftVisualBasic6.0”进入VB6.0窗口。

VB6.0启动后,会弹出“NewProjiect”对话框,如图5-1所示。

图5-1新建工程

(2)在“NewProject”对话框中选择“New”选项卡。

(3)单击“StandardEXE”项,再单击“打开”按钮,或直接双击“StandardEXE”建立程序开发窗口。

(4)选择“File|SaveProject”命令,保存文件。

5.2.2加入串口通信控件

(1)默认的控件工具栏中没有MSComm控件,因此要先把它加入到控件工具栏上。

在控件工具栏上单击鼠标右键,在弹出的对话框中选择“Components”,弹出“Components”对话框,如图5-2所示。

图5-2添加MSComm控件

(2)选择“Controls”选项卡中的“MicrosoftCommControl6.0”项,单击“确定”按钮把它加入到控件工具栏中。

5.2.3设计窗体界面

窗体主要完成如下功能:

对整个程序初始化、串行端口设置、输入发送数据、对各个按钮响应、显示当前通信端口及端口信息,。

在窗体中添加需要的控件,调整控件的大小及在窗体中的位置,得到如图5-3所示的窗体界面,其控件属性及功能如表5-1所示。

图5-3添加控件后的窗体

表5-1主要控件属性

类型

名称

属性

功能

Form

Form1

Caption=上位机串口通信

Commandbutton

Send

Caption=发送

数据发送

Cancel

Caption=退出

结束数据发送

Label

Label1

Caption=发送数据:

Label2

Caption=串口选择:

Label3

Caption=状态

TextBox

Txtsend

Text=请输入要发送

的数字字符串!

输入发送数据

Txtport

显示串行通信端口

Txtmsg

显示端口的状态

Mscomm

默认

串口通信

Timer

Eaable=false

Interval=250

应答超时控制

5.3代码实现

单片机与PC机串口通信应用界面程序流程图如图5-4所示。

图5-4PC机程序流程图

源程序代码如下:

DimhandAsBoolean

'

等待回应时间到标志位,为FALSE时时间没有到,TRUE时时间到

PrivateSubcancel_Click()

UnloadMe

End

EndSub

PrivateSubsend_Click()

变量定义

Dimstrsend$,strbit$

Dimintsend%'

发送的字符长度

DimwritebuffAsVariant'

写输出缓冲区

Dimreadbuff$'

读输入缓冲区数据

strsend=txtsend.Text

intsend=Len(strsend)

Ifintsend=0Then

MsgBox"

请输入数字字符!

"

,"

错误"

ExitSub

EndIf

数据完整性验证

Fori=1TointsendStep1

strbit=Mid(strsend,i,1)

SelectCasestrbit

CaseIs<

"

0"

Is>

9"

输入的数据中存在非数字字符!

&

vbCrLf&

请重新输入!

vbRetryCancel,"

txtsend.Text="

EndSelect

Nexti

OnErrorGoTocomrserror

串行通信口参数设置

MSComm.CommPort=1'

使用Com1做为串行通信口

MSComm.Settings="

9600,n,8,1"

串口属性设置

MSComm.InputLen=1'

每次从接收缓冲区读取一个字符

MSComm.InputMode=comInputModeTex

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2