资源描述
图书分类号:
密 级:
单片机和PC计算机通信系统的设计
摘 要
本设计以单片机89C52为核心实现了和PC机的串行通信。在硬件电路上,采用MAX232实现PC机与单片机之间的电平转换;在软件编程上,PC机采用VB6.0的通信控件MSCOMM编程,单片机采用C51编程实现了可靠的串行数据传输。单片机接收计算机的命令并将测试数据通过串口发送给计算机,计算机接收数据处理后显示。
关键词 串行通信 ; MAX232; MSCOMM
Abstract
This design with single slice the machine 89 C52s for the core carried out a line to correspond by letter with the string of the PC machine.Adopt MAX232 to carry out PC machine and single slice of the machine to give or get an electric shock an even conversion on the hardware electric circuit;Weave a distance in the software up, the PC machine adopts VB6.0 correspondences control a MSCOMM plait distance, the single slice machine adopted the C51 plait distance to carry out a dependable string line data to deliver.The single slice machine receives the order of calculator and pass test data a string of send out to the calculator, the calculator shows after receiving the data processing.
Keywords The string line corresponds by letter MAX232 MSCOMM
目 录
1 绪论………………………………………………………………………………………….1
1.1 单片机和PC计算机……………………………………………………………………1
1.1.1 单片机的概述…………………………………………………………..………….1
1.1.2 单片机和PC机通信意义………………………………………………………….1
2 Keil开发环境……………………………………………………………………………….2
2.1uVision2的启动………………………………………………………………………2
2.2在uVision2上创建应用程序……………………..………………………………….3
2.3 CPU的仿真调试………………………………………………………………………...7
3 通信系统的硬件设计……………………………………………………………………….9
3.1 通信系统的开发硬件设计…………………………………………………………….9
4 字符型液晶显示器LCD1602………………………………………………………………10
4.1 标准字符型液晶显示器LCD接口……………………………………………………10
4.1.1 显示数据存储器(DDRAM)……………………………………………………...…10
4.1.2 字符存储器(CGRAM、CGROM)…………………………………………………….10
4.1.3 LCD显示模块的控制指令………………………………………………………..10
4.2 单片机与LCD1602的硬件连接原理图………………………………………………12
4.3 液晶显示器LCD1602软件的设计……………………………………………………13
5 通信系统的软件设计……………………………………………………………………...15
5.1 单片机部分软件设计………………………………………………………………...15
5.1.1 串口的工作方式设置…………………………………………………………….15
5.1.2 串口波特率的设定……………………………………………………………….15
5.1.3 握手信号的规定………………………………………………………………….15
5.1.4 数据传送方式…………………………………………………………………….15
5.1.5 通信方式………………………………………………………………………….15
5.1.6 数据帧的格式…………………………………………………………………….15
5.1.7 单片机测试程序………………………………………………………………….16
5.1.8 串口测试程序…………………………………………………………………….16
5.2 PC机通信及数据处理显示程序设计………………………………………………..17
5.2.1 VB6.0特点………………………………………………………………………...17
5.2.2 MSComm控件………………………………………………………………………18
5.2.2.1 MSComm控件的主要属性、事件………………………………………………18
5.2.3 VB程序设计………………………………………………………………………19
5.2.3.1 程序详细设计………………………………………………………………...19
5.2.3.2 系统界面……………………………………………………………………...19
5.3 VB程序设计中遇到的问题与解决方法……………………………………………...19
结论…………………………………………………………………………………………...20
致谢…………………………………………………………………………………………...21
参考文献……………………………………………………………………………………...22
附录…………………………………………………………………………………………...23
附录1:硬件原理图……………………………………….……………………………….23
附录2:设计的程序清单…………………………………………………………………..23
附录 3:外文翻译………………………………………………………………..…….….33
1 绪论
随着世界科技的不断发展,单片机与PC机的联系越来越紧密,单片机的应用也越来越广泛。如:在工业控制、数据采集、家用电器以及仪器仪表自动化等许多领域都起着十分重要的作用。但在实际应用中,在要求数据量大的应用场合,单片机往往难以胜任,而PC机着重发展海量高速数值运算技术,其控制能力是有限的。这时使用多个单片机结合PC机组成分布式系统是一个比较好的解决方案,这样单片机与PC机的数据通信技术就变得十分重要。
1.1 单片机和PC计算机
1.1.1单片机的概述
单片机作为嵌入式系统的一种,从MCS-51系列起,串行通信模块作为一个重要功能,被集成到了单片机内部,已在自动化控制以及家电产品等领域得到了广泛的应用。常见的单片机系统都具备一个串行口(如AT89C51),有的还具备了两个串行口(如DS80C320系列)甚至多个串行口。这些串行口就是单片机的串行通信模块,通过串行通信接口可把单片机与PC机连接起来进行数据传输。
1.1.2单片机和PC机通信意义
单片机技术和PC机技术在现实生活中都起着不可取代的作用,而结合这两种技术的应用有着极大的发展前景。单片机和PC机串行通信技术有着其特有的魅力,现已经在工业、农业、科研等各个领域广泛地应用。它凭着成本低、实现简单等特点,在单片机与PC机的通信中占着一席之地
2 Keil开发环境
本系统的设计、开发和调试采用单片机的C语言编程,使用KEILC51软件对程序进行编辑、编译、调试。
C语言是一种通用的计算机程序设计语言,它提供高效的代码,结构化的编程,和丰富的操作符。其语言简洁,使用灵活方便,可移植性好,表达能力强,具有直接访问机器物理地址的能力。C不是一种大语言,不是为任何特殊应用领域而设计。它一般来说限制较少,可以为各种软件任务提供方便和有效的编程。许多应用程序用C编写比其他语言编写更方便和有效。KEILC51编译器可以直接对51系列单片机的内部特殊功能寄存器和I/O口进行操作,可以直接访问片内或片外存储器,还可以进行各种位操作。
C语言不能执行的操作(如输入和输出)需要操作系统的支持。这些操作作为标准库的一部分提供。因为这些函数和语言本身无关,所以C特别适合对多平台提供代码。
Keil51是德国KEIL公司开发的51系列单片机的开发工具,支持世界上几乎所有的51系列单片机,并不断推出新的版本,支持51系列单片机的新系列、新型号。同样KEIL51也支持uPSD3300系列单片机。
uVision2是KEIL51在Windows环境下的集成化文件管理编译系统,它集成了文件处理、项目管理、编译连接、软件仿真调试等多种功能,支持汇编语言和C语言程序设计。
2.1 uVision2的启动
双击桌面上的图标启动uVision2,
出现如图5-1所示得主窗口。
图2-1 uVision2启动界面
uVision2提供了一个多功能的文件操作环境,包含项目管理窗口、源程序编辑窗口、编译信息窗口等,如图2-2所示。
图2-2 KEILuVision2 IDE界面
2.2 在uVision2上创建应用程序
在uVision2的操作环境下,创建程序分以下步骤:
一 创建一个项目
如图2-3所示,点击Project菜单,选择弹出的下拉式菜单中的New Project。
图2-3 新建项目
接着弹出一个标准Windows文件对话窗口,填写新项目文件名(*.uv2),取名为设计总汇.uv2,单击“保存”按钮。
uVision2会在项目管理窗口中出席那默认的目标名Target1和文件组名Source Group1,接着弹出如图2-4所示的“Select Device for Target ‘Target1’”对话框,为Target1选择合适的CPU的型号,选择ATEML公司的AT89S52芯片,单击“确定”按钮。
二 新建并添加源程序文件
uVision2的集成环境允许编辑汇编语言和C语言程序的源程序,单击File菜单下的NEW…子菜单,可以创建元程序,uVision2具有高亮度显示关键字功能,便于语法检查,如图5-5所示。
创建源程序文件后,就可以把该文件添加到项目中去,在项目管理口中右击Source Group1文件组,出现快捷菜单,选中Add Files to Group‘Source Group1’,如图2-6所示,然后选择相应的汇编语言或C语言源程序。
图2-4 选择芯片对话框
图2-5 源程序编辑窗口
图2-6 添加源程序文件
三 参数设置
为了使编译以后能够输出有效的文件,或是为了调试,以及设定于目标硬件相关的芯片内部的参数,uVision2需要进行必要的参数设置。如图2-7所示,用鼠标右击项目管理窗口中的“Target1”,选择Option for Target ‘Target1’;或是单击Project菜单,选择Options for Target ‘Target1’子菜单。
图2-7 设置编译参数
然后弹出选项卡,如图2-8(a)、2-8(b)所示,设置晶振频率、输出HEX文件。
图2-8(a) 设置晶振频率
图2-8 (b) 输出HEX文件
参数设置中选项卡的意义如表2-1所示。
表2-1 选项卡的意义
选项
意义
Device
选择CPU型号
Target
设置应用程序所使用的硬件环境(晶振频率、存储容量)
Output
定义输出文件,并允许运行便以后的用户文件
Listing
指定所有的列表文件所包含的内容(Symbol、include等)
C51
C语言编译工具的配置
A51
汇编语言编译工具的配置
BL51 Locate
定义存储段的类别和段
BL51 Misc
警告等一些连接的设置
Debug
调试的一些设置
Utilities
定义Flash的一些配置
四 编译
在经过参数设置后,可以是用编译器对源程序进行编译。单击工具按钮或,也可以单击Project菜单下的Build target或Rebuild all target files子菜单,如图2-9所示。
图2-9 编译源程序
当编译的程序有语法错误时,uVision2会在输出窗口(编译信息)中显示出来。可以双击某错误信息,uVision2会打开编辑窗口,并将光标自动移到该错误语句的位置上,从而可以方便的进行编译。
若编译通过,说明没有语法错误,编译器生成若干目标文件,包括HEX文件,但是此时还不能证明程序的功能就一定正确,所以接下来需进行仿真调试。
2.3 CPU的仿真调试
在编译连接完成之后,就可以使用uVision2的调试器进行调试。uVision2的调试器提供了“纯软件”的调试。该调试能够仿真51系列产品的绝大多数功能而不需要任何硬件目标板,用户可以仿真各种外设,包括串口、定时器和并行I/O口等。
单击Debug菜单下的Start/Stop Debug Session子菜单,出现如图2-10所示的界面。
图2-10 uVision2调试器的界面
1:调试按钮
可以进行单步、过程、全速、断点的调试。
2:堆栈指针
只是当前堆栈的位置。sp_max表示程序使用堆栈的最大位置,可以帮助读者了解对堆栈设置的合理性。
3:运行时间
运行时间直观地反映了程序执行到当前指令时所耗费的时间,以秒为单位,它由指令执行周期和系统所使用的晶振频率决定。因此在调试程序时,如果对时间的计算和仿真要求比较高,必须在Project菜单中的Option for Target ‘Simulator’子菜单中的Target选项卡中对目标的晶振频率进行设置。
4:当前程序指针
程序下一条即将执行的指令地址由PC表示,KEIL uVision2 IDE在源程序的窗口中用黄颜色箭头直观的表示在指令的左边,寄存器窗口中的PC的值显示指令的地址。左边的绿线表示程序执行过的指令。
5:存储器区
该区域可以显示内部数据存储器(Ⅰ)、外部数据存储器(X)、以及程序存储器(C)多个存储空间,图3.12上显示的是内部数据存储器(Ⅰ),可以看到在内部数据RA的07H地址位置上有数据为02H,该区域就是工作寄存器的R7,然后再观察寄存器区R7的值为0x02。
在软件仿真中,可以通过菜单Peripheral打开单片机的I/O端口、定时器以及中断等外部功能部件的状态窗口中;可以查看当前的工作状态,或单击其中某些标志位,模拟中断申请和引脚状态的变化,以改变程序执行的走向,完全实现了“纯软件”的仿真。
3通信系统的硬件设计
3.1 通信系统的开发硬件设计
通信系统框图如图3-1所示。
3-1通信系统框图
RS-232是EIA(Electronics Industries Association)电平.信号电平采用负逻辑,逻辑"1"=一12V,逻辑"0"=+12 V。这与单片机的TTL信号电平不兼容,所以RS232C与89C51单片机的串口RXD(串行接收口)和TXD(串行发送口)不能直接连接,需要跨接一个转换器在RS232C与TTL电路之间进行电平转换。市场上电平转换的芯片很多,如早期广泛使用MCl488和MCl489,MC1488是接收TTL电平.输出RS 232C电平.MC1489是接收RS 232C电平,输出TTL电平,该电平转换接口的不便之处是需要±12 V工作电压,并且功耗较大.不适用于低功耗的系统。
所以系统利用了MAXIM公司生产的MAX232实现2种电平之间的转换.其主要优点有:芯片内部有一个电压转换器,可以把输入的+5 V工作电压转换为RS 232C接口所需的±l 2 V电压;同时可以实现2路2种电平的双向转换.在该系统中可代替2片MCl488和2片MCl489,外接1个5 V的电源,而不需像MCl488和MCl489那样外接±12 V电源,所以电路简单,提高性能。
计算机发给单片机的数据在LCD显示器上显示。单片机发给计算机的数据在通信窗口中显示。
4 字符型液晶显示器LCD1602
4.1 标准字符型液晶显示器LCD接口
LCD1602字符型液晶显示器采用与日立公司的HD44780兼容的LCD控制器构成的2*16字符型液晶显示模块,是专用于显示数字、字母、符号,字符型LCD液晶显示模块对外提供统一的接口标准。字符型液晶显示模块接口引脚定义如表4-1所示。
表4-1 字符型液晶显示模块接口引脚定义
引脚编号
引脚名称
引脚功能
14~7
D7~D0
数据线
6
E
片选信号,写数据控制,下降沿触发
5
R/W
读/写方向控制信号,低电平为写入,高电平为读出
4
RS
寄存器选择信号:
RS=0:指令寄存器写入;忙标志读取;地址寄存器读取
RS=1:数据寄存器读/写
3
V0
驱动电压调节
2
VDD
+5V
1
VSS
地线
15
V--
背光电压负端(GND)
16
V+
背光电压正端(+5V)
HD44780芯片中包含显示数据存储器(DDRAM)、字符存储器(CGRAM、CGROM)、指令寄存器、数据寄存器、地址寄存器、地址计数器,,以及液晶行列扫描的驱动电路。
4.1.1显示数据存储器(DDRAM)
LCD控制器的指令系统规定,在发送待显示字符代码的指令之前,先要送DDRAM的地址,实际上是待显示的字符显示位置。若LCD为双行字符显示,每行40个显示位置,第一行地址为00H~27H;第二行地址为40H~67H。双行显示的DDRAM地址与显示位置的对应关系如表4-2所示:
表4-2 双行显示的DDRAM地址与显示位置的对应关系
显示位置
1
2
3
4
5
6
7
……
39
40
DDRAM
Line1
00H
01H
02 H
03 H
04 H
05 H
06 H
……
26 H
27 H
地址
Line2
40 H
41 H
42 H
43 H
44 H
45 H
46 H
……
66 H
67 H
4.1.2字符存储器(CGRAM、CGROM)
字符存储器有随机存储器(CGRAM)和只读存储器(CGROM)组成,CGROM中固化了192个5×7点阵的字符字型编码(包含128个ASCII码),供用户显示使用。如果要显示192个以外的字符,可以在CGRAM中自定义16个自设定的字符。
4.1.3 LCD显示模块的控制指令
字符型液晶显示模块提供了统一的接口,同时提供了统一的控制命令格式,如表4-3所示。
表4-3 LCD命令一览表
命令名称
控制信号
控制代码
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清屏
0
0
0
0
0
0
0
0
0
1
光标返回
0
0
0
0
0
0
0
0
1
X
设置输入方式
0
0
0
0
0
0
0
1
I/D
S
显示开关控制
0
0
0
0
0
0
1
D
C
B
光标或显示屏移动
0
0
0
0
0
1
S/C
R/L
X
X
工作方式设置
0
0
0
0
1
DL
N
F
X
X
设置CGRAM地址
0
0
0
1
A5
A4
A3
A2
A1
A0
设置DDRAM地址
0
0
1
A6
A5
A4
A3
A2
A1
A0
读忙标志和地址
0
1
BF
A6
A5
A4
A3
A2
A1
A0
写数据
1
0
数据
读数据
1
1
数据
HD44780的数据线可以使用8位方式(D7~D0),也可以使用4位方式(D4~D0),由工作方式设置命令中的“DL”(D4)位决定。使用4位方式时,写入(读取)数据分两次完成,先写入(读取)数据的高4位,接着写入(读取)数据的低4位。
下面给出LCD控制命令的功能解释。
清屏显示命令:清显示屏,光标复位到地址00H位置
表4-4 清屏显示命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
0
0
1
光标复位命令:
表4-5 光标复位命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
0
1
X
读/写方式下的光标和显示模式设置命令:
表4-6 读/写方式下的光标和显示模式设置命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
0
1
I/D
S
I/D:表示地址计数器(AC)的变化方向,即光标移动的方向。
I/D=1:AC自动加1,光标右移一个字符。
I/D=0:AC自动减1,光标左移一个字符。
S:显示屏上画面向左或向右全部移动一个字符位。
S=1,I/D=1:当写一个字符时,整屏显示左移。
S=1,I/D=0:当写一个字符时,整屏显示右移。
显示开关控制命令:
表4-7 显示开关控制命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
0
1
D
C
B
D:当D=0时,显示关闭,DDRAM中数据保持不变。
当D=1时,显示DDRAM中的数据。
C:当C=1时,显示光标;C=0时,不显示光标。
B:当B=1时,光标所在字符闪烁;B=0时,光标不显示。
光标或显示屏移动命令:
表4-8 光标或显示屏移动命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
0
1
S/C
R/L
X
X
具体含义如表4-9:
表4-9 光标命令的具体含义
S/C
R/L
0
0
光标左移,地址计数器减1
0
1
光标右移,地址计数器加1
1
0
显示屏左移,光标跟随显示屏移动
1
1
显示屏右移,光标跟随显示屏移动
工作方式设置命令:
表4-10 工作方式设置命令
D7
D6
D5
D4
D3
D2
D1
D0
0
0
1
DL
N
F
X
X
DL=0:数据线宽度为4位,DB7~DB4;DL=1:数据线宽度为8位。
N=0:显示1行;N=1:显示2行;
F=0:显示5×7点阵;F=1:显示5×10点阵。
4.2 单片机与LCD1602的硬件连接原理图
本设计选用AT89C52的P0口和P2口的P2.0、P2.1、P2.2端口,LCD1602采用8位数据线工作方式。AT89C52的P0口与LCD1602的8位数据线连接,AT89C52的 P2口的P2.0、P2.1、P2.2端口分别与LCD1602的使能端口、读\写选择端口、数据\命令选择端口连接。硬件连线原理图如图4-1所示,详细原理图见附录2。
图4-1 单片机与LCD1602的硬件连接图
4.3液晶显示器LCD1602软件的设计
LCD1602基本操作状态如表 4-11所示。
表4-11 基本操作状态
读状态
输入
RS=L,R/W=H,E=H
输出
=状态字
写指令
输入
RS=L,R/W=L,=状态字,E=高脉冲
输出
无
读数据
输入
RS=H,R/W=H,E=H
输出
=数据
写数据
输入
RS=H,R/W=L,=状数据,E=高脉冲
输出
无
此外,用到每个功能模块函数已在程序中定义,如下:
void Lcd_Command(unsigned char bComm) //向Lcd发送命令程序
void Lcd_Cls(void) // 清屏
void Lcd_Write(char wb) //向lcd写入一个字符
void Lcd_Init(void) //初始化:8位接口,2*16字符的工作方式
void Display_oneStr(unsigned char sta, unsigned char intvalue) //定点显示char型数据
void Display_Str(unsigned char sta, unsigned char *str) //指定位置显示字符串
程序流程图如图4-2所示,具体程序见附录1。
LCD初始化
清屏
显示字符
返回
图4-2 LCD1602程序流程图
5通信系统的软件设计
5.1单片机部分软件设计
5.1.1 串口的工作方式设置
通过对单片机的串口控制寄存器(SCON)的设置来完成,由于采用一帧11位的数据格式,所以89C51的串口的工作方式只能设置成方式2和方式3,数据传输的波特率有定时器控制,本系统采用方式3,单片机的串行接收的l帧数据中,奇偶校验位由SCON的TB8和RB8(第9位数据)来完成校验功能。
5.1.2 串口波特率的设定
通过此公式的计算可以进一步验证在设计系统选用的晶振的频率为11.0592 MHz时计算出来的T1初值没有误差。
5.1.3 握手信号的规定
请求信号定为FFH、应答信号定为FEH、错误信号定为FDH、结束信号定为FCH。
5.1.4 数据传送方式
利用RS 232C的2根传输线实现全双工的发送和接收数据。
5.1.5 通信方式
异步通信方式,以字为单位传送数据,由于发送与接收双方使用各自的时钟,所以在异步通信中严格规定数据帧的格式。
5.1.6 数据帧的格式
一帧数据为11位,包括起始位、数据位、奇偶检验位、停止位.
5.1.7 单片机测试程序
在单片机硬件连接好之后,为了防止接线错误,发生不必要的损失,必须要对单片机进行硬件的简单测试。为此,设计了一个简单的单片机测试程序,实现的功能仅仅是让电路板上的两个二极管循环闪烁,证明单片机的连接没有错误。流程图如图5-1所示,详细源代码见附录一。
图5-1 单片机测试流程图
5.1.8 串口测试程序
一开始将所有芯片初始化,单片机检测是否有按钮按下。,若没有,返回;若有按纽按下,开始红绿灯闪烁,表示单片机和串口连接正常,并从00H开始,循环加1,将当前的数据送到串口,在PC机上显示。用来模拟温度的显示。详细源代码见附录二。串口测试流程图如图5-2所示。
5-2 串口测试流程图
5.2 PC机通信及数据处理显示程序设计
开发环境基于VB6.0企业版,利用MScomm控件接收单片机发送的数据,完成接收数据的显示并通过Access写入数据库。
5.2.1 VB6.0特点
Visual Basic6.0的主要功能与特点:
一、易学易用的集成开发环境
VB6.0为用户设计界面、编写代码、调试程序、编译程序和制作应用程序安装盘等提供了友好的集成开发环境。
二、可视化上设计平台
采用传统的程序设计语言编程时,一般需要通过编写程序来设计应用程序的界面(如界面的外观、位置等),在设计过程中看不见界面的实际效果。而在VB6.0中,采用面向对象程序设计方法(Object-Oriented Programming),把程序和数据封装起来作为一个对象,每个对象都是可视的。程序员在界面设计的时候可以直接用VB6.0的工具箱在屏幕上“画”出窗口、菜单、命令按键等不同类型的对象,并为每个对象设置属性。程序员仅需要对要完成事件过程的对象进行编写代码,因而程序设计的效率可大大提高。
三、事件驱动的编程机制
面向过程的程序是由一个主程序和个子程序及函数组成的,程序运行时总是先从主程序开始,由主程序调用若干个子程序和函数,程序员在编程时必须事先确定整个程序的执行顺序。而VB6.0事件驱动的编程是针对用户触发某个对象的相关事件进行编码,从而达到处理、运算目的。每个事件都可以驱动一段程序的运行,程序员只要编写响应用户动作的代码,各个动作之间不一定有联系。这样的应用程序代码短,比较容易编写与维护。
四、结构化的程序设计语言
VB6.0具有丰富的数据类型,众多的内部函数,是模块化、结构化程序设计语言,结构清晰,简单容易学习。
五、强大的数据库功能
VB6.0利用数据控件可以访问Access;Foxpro等多种数据库系统,也可以访问Excel,Lotus1_2_3等多种电子表格。
5.2.2 MSComm控件
串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC机间的通讯以及PC机和单片机之间的通讯之中。 提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。
实际上,只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB中,一样能够实现串口通讯,甚至其实现方法和C、汇编相比,要更加快捷方便。
在Visual Basic中有一个名为Microsoft Communication Control(简称MSComm)的通讯控件。我们只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。
5.2.2.1 MSComm控件的主要属性、事件
一、MSComm的属性
由于MSComm控件属性很多,在此仅介绍与实现串口通讯密切相关的核心属性。
Commport:设置通讯所占用的串口号。如设成1(默认值),表示对Com1进行操作。
Setting:对串口通讯的相关参数。包括串口通讯的比特率,奇偶校验,数据位长度、停止位等。其默认值 是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校验,8位数据位,1个停止位。
Portopen:设置串口状态,值为True时打开串口,值为False时关闭串口。
Input:从输入寄存器读取数据,返回值为从串口读取的数据内容,同时输入寄存器将被清空。
Ouput:发送数据到输出寄存器。
InBufferCount:设置输入寄存器所存储的字符数,当将其值设为0时,则输入寄存器将被清空。
InputMode:设置从输入寄存器中读取数据的形式。若值为0,则表示以文本形式读取;值为1,则表示以二进制形式读取。
OutBufferCount:设置输出寄存器所存储的字符数,当将其值设为0时,则输出寄存器将被清空。
RThreshold:设置在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm事件之前要接受的字符数。
CommEvent属性:返回最近的通讯事件或错误。通过对它具体属性值的查询,我们就可以获得通讯事件和通讯错误的完整信息。当其值是comEvReceive时表示接收到数据。
二、MSComm的事件
除了公共事件之外,MSComm只有一个OnComm事件。当CommEvent属性值变化时将发生OnComm事件,指示发生一个通讯事件或错误。当我们设置Rtheshold属性值为0时,将使得捕获comEvReceive事件无效。
5.2.3 VB程序设计
5.2.3.1 程序详细设计
VB程序详细设计请见附录1。
5.2.3.2 系统界面
系统界面如图5-3所示
图5-3 PC机接收数据软件界面
5.3 VB程序设计中遇到的问题与解决方法
在系统设计中出现了无法接收、接收乱码、接收数据不完整等现像。经过排查和重新设置接收模式、接收方式、处理方法等实现了正确接收。
结 论
通信技术目前在很多测控系统中广泛被使用,而且远距离的通信使用的更为突出,本系统的RS 232C只是用于近距离的通信,在改进的系统中使用RS 485可以扩大传输距离,并是系统稳定性增强。对于给出的简单接口电路具有成本低和占用印制版面积小的优点。通过实验测定的元件取值具有广泛的适用性。上述电路在实验中开发的手持式通用秒表器中得到应用。实际应用中与各种品牌多台PC的通信皆正确,从而证明了本设计的可靠性。
而针对集散控制系统的广泛应用,提出了一种新的由一台PC机和多台单片机组成的一个小型集散控制系统的结构,实现了PC机与多台单片机间的通信任务。
本人论述本文创新点针对:既充分利用PC机丰富的软硬件资源实现友好的人机界面,又通过RS-232C/485总线结构与8251/89C51单片机进行通信,对一台或多台单片机进行数据采集和处理。在实践中证明资源的实用性,从而说明单片机技术和PC机技术在现实生活中都起着不可取代的作用,而结合这两种技术的应用有着极大的发展前景。单片机和PC机串行通信技术有着其特有的魅力,现已经在工业、农业、科研等各个领域广泛地应用。它凭着成本低、实现简单等特点,在单片机与PC机的通信中占着一席之地。
致 谢
本论文是在我的导师高玉芹老师的亲切关怀和悉心指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,高老师老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励,始终给予我细心的指导和不懈的支持。这么久以来,高老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向高老师致以诚挚的谢意和崇高的敬意。对高老师的感激之情是无法用言语表达的。
同时感谢徐州工程学院院长、信电工程系主任、书记、老师们等为我提供了良好的学习和研究条件,谨向各位同仁表示诚挚的敬意和谢忱。
在此,我还要感谢在一起愉快的度过大学生活的各位同学、朋友,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。特别感谢我的兄弟姐妹们,因为他们(她们)对本课题做了不少工作,给予我不少的帮助。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!
感谢我的父母,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我
展开阅读全文