文档详情

单片机和VB串行通信的实现.doc

发布:2018-06-05约4.33千字共7页下载文档
文本预览下载声明
编辑导读:I2C总线的单片机C语言实现及其应用|Keil C51开发系统基本知识2|PIC18FXX8单片机通用同步异步收发器的编程应用|Proteus软件调试实现的数字式指针温度计|基于MCU的多机并行通信|基于SST89C58型单片机的远程灯控箱系统|飞利浦51LPC系列单片机用于控制交流电机|基于单片机实现遥控编码器PT2262的软件解码|微型低功耗大容量心电记录仪的研制(图)|基于PIC 单片机的热水控制器设计| 正文: ???? 摘要:介绍了AT89C52单片机与PC机串行通信的实现方法,串行存储器24C256的读写操作流程,并给出了具体通信接口电路、单片机串行通信程序流程以及利用VB6.0的通信控件MSComm实现PC机串行通信的程序。系统经过实际应用,效果令人满意 关键词:串行通信;单片机;Visual Basic6.0;MSComm;24C256 1. 引言: ??? 随着计算机系统的应用和微机网络的发展,各种控制设备之间的通信功能越来越显得重要。在设计的减振控制系统中,控制器(下位机)采用两片AT89C52单片机,分别用于对左右减振器实施控制,同时将测量的温度、电流、速度等信号按一定采样时间保存在E2PROM ATC256中。为了能测试控制器的工作情况,包括初始安装时的状况测试和读取历史记录并做测试诊断以及能根据参数变化情况进行故障诊断,为此,同时开发了通信系统,上位机采用便携式PC机,上、下位机之间通过MAX485芯片实现串行数据通信。 2. 通信系统硬件电路设计 ??? 通信系统硬件电路设计的突出特点是,控制器的外围一改传统的并行扩展,而采用新型串行芯片进行串行总线扩展。与传统的并行扩展相比,具有体积小、性能价格比高、工作可靠性高的优点。存储器ATC256、通信芯片MAX485均是I2C总线器件。单片机AT89C52的串行数据发送端TXD和串行数据接受端RXD分别与MAX485驱动器输入端DI和驱动器输出端D0,接受器输出使能端RE接地,驱动器输出使能端DE接单片机的T1端(P3.5脚)。存储器ATC256的串行数据线SDA和串行时钟线SCL分别AT89C52的P3.7和P3.6相连,具体硬件电路框图如图1所示: ?? 3.数据的存储—ATC256① ??? 测得的温度、电流和速度等信号需实时保存,以便根据参数变化情况进行故障诊断和对加速度变化情况进行分析等。系统设计存储器采用美国ATMEL公司推出的串行E2PROM——24C256。24C256遵从I2C总线协议,通过数据线SDA和时钟线SLA两根线直接与单片机相连,不需要其它器件和外围电路。它具有256Kbit的位存储容量,按8位一个字节的方式可提供32K字节的存储空间。对ATC256的读写操作完全符合I2C总线的数据传送,传送的每一帧数据为一个字节,要求每传送一个字节后,对方回应一个应答位。发送时先放送数据最高位,每次传送开始有起始信号,结束时有停止信号。在系统的设计中,对ATC256的写操作采用字节写,读操作采用顺序读的方式。根据系统要求,每到一分钟就向ATC256中写入1条记录(包括三个温度、电流、速度等5个数据),上位机需要读取数据时,可根据上位机的读取指令读取任意条记录 对ATC256的读/写程序流程如图2所示: ? ????????????????????????????????????????????????????????? ???????????????????????????????????????????????? 图2 字节写(左),连续读(右)程序流程???????????? 4.串行数据通信程序设计 4.1通信协议 ??? 本系统串行通信采用异步通信方式。协议如下: ??? 1. 一帧数据由1位起始位、8位数据位、无奇偶校验位、1位停止位共10位组成。 ??? 2. 波特率设为2400bps。单片机串行口按方式1工作,波特率由定时器T1控制, ??? PC机串口波特率通过VB通讯控件的Settings属性设置,为保证数据传送的准确性,两者的波特率必须一致。 4.2下位机(单片机)串行通信及程序设计 ??? 单片机可以采用中断方式或查询RI(接受中断标志位)或TI(发送中断标志位)方式进行数据通信②。设计采用查询方式,在定时器T2中断子程序中查询RI,一旦检测到RI=1则转入接受数据子程序,在子程序中单片机读取从上位机发送的通信指令、读取记录个数等数据,经校验正确后,即从ATC256存储器中将历史记录数据上传给PC机,单片机发送数据子程序流程图如图3: ? 图3单片机发送数据子程序流程图 4.3上位机(PC机)串行通信及程序设计 ??? 1.编程方法 ??? 上位机利用Visual Basic 6.0编程。用V
显示全部
相似文档