基于Delphi的PC机与AVR单片机的串行通讯

基于Delphi的PC机与AVR单片机的串行通讯
基于Delphi的PC机与AVR单片机的串行通讯

2012年第6期

仪表技术与传感器

Instrument

Technique

and

Sensor 2012No.6

收稿日期:2011-07-31

收修改稿日期:2011-12-14

基于Delphi 的PC 机与AVR 单片机的串行通讯

黄春香,杨

(南通大学电气工程学院,江苏南通226019)

摘要:采用Delphi 中的SPComm 控件实现PC 机与AVR 单片机之间的串行通讯,在上位机和终端设备之间进行数据传输,对空气源热泵进行远程监控,实时掌握各机组的运行情况,以便在发生故障时能及时处理。详细介绍了监控系统的软硬件设计思路。实际使用证明该系统稳定可靠且兼容性高。关键词:Delphi ;Modbus 协议;SPComm ;远程监控中图分类号:TP273

文献标识码:A

文章编号:1002-1841(2012)06-0108-03

Serial Communication between PC and AVR Single Chip Based on Delphi

HUANG Chun-xiang ,YANG Yi

(School of Electrical Engineering ,Nantong University ,Nantong 226019,China )

Abstract :This paper introduced a kind of serial communication between PC and the AVR single-chip by using SPComm com-ponent in Delphi.Air source heat pump can be remotely controlled while data is transmitted between master computer and terminal equipment.Therefore operation condition of various units can be mastered real-timely so that fault can be treated in time.This paper presented the software and hardware design ideas of monitoring systems in detail.The practical use proves the stability and reliabili-ty as well as high compatibility of the system.

Key words :delphi ;modbus protocol ;SPComm ;remote monitoring 1监控系统组成1.1

硬件构成

该监控系统以1台PC 机作为主控单元,系统终端以AVR 单片机ATmega32为核心,上位机与各终端机通过RS -485总线连接。上位机通过USB /RS -485转换器连接到RS -485总线,

AVR 单片机ATmega32通过MAX485连接到RS -485总线实现与上位机通信。上位机通过查询的方式与各终端机之间进行通信,完成监测、控制等功能。各终端机接受上位机的指令,完成实时调整、测量以及信息回传等工作。系统硬件结构如图1所示

图1监控系统框图

1.2监控界面设计

[1]

空气源热泵监控系统上位机控制采用Delphi 7.0设计。监控系统中,通信编程显得及其重要。因此设计监控系统时,Del-phi 安装在上位PC 机上,通过一个USB /RS -485转接口实现上位机与空气源热泵控制系统之间的通信,监控每台机组的运行状态,并存储和管理各机组运行时产生的大量数据。监控系统分为3大部分,机组运行管理是对热泵机组的操作,查询管理可以实时了解热泵机组的状态,用户管理是为管理用户的个人信息,如图2所示。

图3和图4为上位机监控的其中2个界面。图3为登录

图2

空气源热泵监控系统功能框图

录查询界面,包括登录日期、登录时间、操作者和操作说明;图4为实时温度曲线查询界面,用户可以方便地观察温度变化情况

图3

登录记录查询界面

2通讯系统设计

2.1Modbus RTU 信息帧结构

Modbus 协议采取主从应答方式,其物理接口为RS -

485

[2]

。通过此协议可实现控制器相互之间、控制器与其他设

备之间的串行通信。首先,上位机的信号寻址到一台终端机,

第6期黄春香等:基于Delphi的PC机与AVR单片机的串行通讯

109

图4实时温度曲线查询界面

然后终端机发出的应答信号以相反的方向传输给上位机。

该系统采用RTU模式,如表1所示,串口设置为1200bit/ s,无奇偶校验位,8个数据位,2个停止位,采用循环冗余码校验方式(CRC)。

表1Modbus的RTU通讯格式

终端机地址功能码数据位CRC高字节CRC低字节2.2Modbus功能码[2-3]

采用Modbus协议进行通讯时,上位机首先向终端机发送一串请求通讯命令字符串,终端机接收命令字符串之后,根据命令字符串中的命令码,将相关信息回应给上位机,这样就完成一次通讯。该通讯系统中所用到的部分Modbus功能码说明如表2所示。

表2Modbus功能码说明

功能码功能

03查询系统各参数

04查询各机组实时数据段

06修改系统各参数

2.3SPComm控件简介[4]

在Delphi环境下实现串行通信,可以采用多种方法。嵌入汇编语句、利用API通信函数、利用ActiveX的MSComm控件和SPComm控件等。利用ActiveX的控件编程简单,因此详细讨论了在Delphi环境下如何利用SPComm控件实现PC机与AVR 单片机的串行通信。

SPComm的主要事件:OnReceiveData:当有数据进入输入缓存时将触发该事件,在这里可以处理从串行口收到的数据。OnReceiveError:当接收数据时出现错误时将触发该事件。

在系统监控前,需首先打开SPComm控件的串行端口。在初始化程序中添加Startcomm方法即可。如果此时系统串行端口未连接好,就会出现如图5所示的错误。StopComm用于关闭串行端口,没有返回值。函数WriteCommData用于发送一个字符串到写线程,发送成功返回true,发送失败返回false,执行此函数将立即得到返回值,随后执行发送操作。

3通信系统软件实现

3.1串口初始化[4]

根据串口设置,设定SPComm初始化属性为1200bit/s,无奇偶校验位,8个数据位,2个停止位。程序中SPComm可自动识别所使用的端口,用户可

在系统设置中修改串口设置,提高监控系统的兼容性,如图6所示。

SPComm控件初始化后,在Form的OnCreate事件中添加Comm1.StartComm语句和OnClose事件中添加Comm1.Stop-Comm,就可以在应用程序打开和退出的同时进行串口的打开和关闭。

3.2发送数据

调用SPComm控件的WriteCommData函数来进行上位机命令字符串的发送。WriteCommData函数的返回值为布尔型,若返回值为true,则发送字符串数增加,可观察出发送成功。上位机发送命令给终端机时,调用的子程序语句如下。每次发送命令时,只需在SendString()中添加所发命令即可。

procedure TForm1.SendString(const str:string);

begin

if Comm1.WriteCommData(Pchar(str),Length(str))then

begin

FTXNum:=FTXNum+Length(str);//发送字符串数

end;

end;

3.3分析和校验数据

3.3.1接收处理

当有数据输入缓存时将触发SPComm控件的OnReceiveDa-ta事件,在这里可以对从串口收到的数据进行处理。

procedure TForm1.Comm1ReceiveData(Sender:TObject;

Buffer:Pointer;BufferLength:Word);

var Str:string;

begin

SetLength(Str,BufferLength);

move(buffer^,pchar(@Str[1])^,bufferlength);

…//上位机对数据进行处理

end;

3.3.2CRC校验

空气源热泵系统中,当用户重设系统参数时,上位机发送的命令字符串中的CRC校验码要随参数变化而变化。此时命令帧生成的关键是CRC校验码生成的实现方法。CRC校验码的计算有计算法和查表法这两种方法。系统上位机采用计算法,计算CRC码的子程序为:

function ComCRC(buf:PByte;len:Integer):Word;

var i,j:Integer;

chr:Word;

begin

Result:=$ffff;

for j:=0to len-1do begin

chr:=PByte(LongWord(buf)+j)^and$ff;

Result:=Result xor chr;

for i:=0to8-1do begin

if((Result and01)<>0)then

Result:=(Result shr1)xor$a001

110

Instrument Technique and Sensor Jun.2012

else

Result :=Result shr 1;end ;

Result :=Result and $ffff ;end ;end ;

如果用户想查询unit 号机组实时水箱温度数据,可让上位机发送十六进制字符串命令

“unit 0x040x000x030x000x01crch crcl ”给终端机。其中unit 表示要查询的机组号;0x04为功能码,表示查询各机组实时数据段;0x03表示各数据地址;crch crcl =ComCRC (unit 0x040x000x030x000x01)。终端机的unit 号机组回复相应信息“unit 0x040x020x000x22crch crcl ”给上位机。同样,crch crcl =ComCRC (unit 0x040x020x000x22)。0x22即为查询的温度数据,上位机再将十六进制0x22转化为十进制34,在监控界面上显示实时水箱温度34?,如图7所示。4

结束语

系统运行情况表明:运用Delphi 中SPComm 控件实现PC 机与AVR 单片机的串行通讯,系统构建简单、收发数据可靠,具有很好的实时性和兼容性,可推广应用到其他监控系统中。参考文献:

[1]杨盛泉,刘白林.Delphi2007程序设计教程.北京:清华大学出版

社,

2010.图7水箱温度实时曲线图

[2]吕国芳,唐海龙,李进.基于Modbus RTU 的串口调试软件的实现.

计算机技术与发展,

2009,19(9):236-238.[3]XUYUE T.Design of air compressor monitoring system based on modb-us protocol [C ]

.Proceeding of International Conference on Electrical and Control Engineering ,

2010:710-713.[4]廖平,陈峰,马洪秋.Delphi 环境下PC 机与AVR 单片机的串行通

讯.现代电子技术,

2008(2):123-125.作者简介:黄春香(1987-),硕士研究生,主要从事智能控制与检测方

面的研究。E-

mail :huangchunxiang702@163.com (上接第107页

)

图6

AD7891工作流程图

(3)触发信号有效后,开始计时,定时时间到按照AD7891工作时序,对其进行操作实现A /D 转换,在AD 转换结束信号有效后,读取转换结果并保存在FIFO 中。3

试验结果与结论

为了验证系统,用VC 开发了上位机软件,采用底波高度法对尼龙试件进行检测,随机的一次双特征提取结果如图7所示,当有缺陷时,幅度变低,回波时间增大。试验表明系统可靠性强,双特征量的提取保证了检测的精度,可用于工程实践

图7上位机时间幅度成像图

4结束语

文中设计的超声双特征量实时提取系统解决了异形构件

伤信号识别难题,同时该系统也可用在其他超声在线检测系统中,其2kHz 的采样频率大大的提高了系统的检测效率,双特征量也保证了缺陷识别率。

参考文献:

[1]曹海军,杨录,张艳花.异形构件超声检测技术.硬质合金,

2010,27(3):167-171.

[2]张丕壮,宋文爱,杨录,等.一种基于视频操作系统超声在线监测

技术.测试技术学报,

2004,18(2):177-180[3]张丕壮.超声检测系统中数据采集电路的柔性设计.测试技术学

报,

2005,19(2):226-229作者简介:岳文豹(1986-),硕士研究生,主要从事超声检测及信号处

理方向的研究。E-

mail :slkywb999@163.com

上位机与51单片机串口通信

上位机与51单片机串口通信 目录: 1、单片机串口通信的应用 2、PC控制单片机IO口输出 3、单片机控制实训指导及综合应用实例 4、单片机给计算机发送数据: [实验任务] 单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。 个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。 [硬件电路图] [实验原理] RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串 行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。 RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps。RS-232协议以-5V-15V表示逻辑1;以+5V-15V 表示逻辑0。我们是用MAX232芯片将RS232电平转换为TTL电平的。一个完整的RS-232接口有22 根线,采用标准的25芯插头座。我们在这里使用的是简化的9芯插头座。 注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置 需要11.0592M的。 “串口调试助手V2.1.exe”软件的使用很简单,只要将串口选择‘CMO1’波 特率设置为‘9600’数据位为8 位。打开串口(如果关闭)。然后在发送区里 输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六 进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中, 则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。

//参考源程序 #include "reg52.h" //包函8051 内部资源的定义 unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbit gewei=P2^4; //个位选通定义

组态人机界面与单片机通信案例

组态人机界面与单片机通信案例 很多时候,工业控制或者产品设计方面受到PLC这种功能确定,扩展麻烦,成本昂贵等方面的制约因素,需要独立开发一种特殊功能,但是又需要连接触摸屏通讯,工程师在这个方面往往需要花费很大功夫,现在我要帮大家解决的问题就是单片机与人机界面触摸屏通讯的最简单,最有效的2种方法,其实就是分为2种通讯协议,即工业标准的Modbus RTU协议和工程师自己定义的自由协议。 本实例采用微嵌组态软件,因为公司提供一系列的技术支持和公布单片机源代码,加上公司的人机界面支持自由协议等等先天优势,开发工程方便有效。方案比较: 方案一modbus—rtu协议: 优点:工业标准通讯协议,具有通用性,,传输数据量大 缺点:需要时间去了解协议的格式和以及按照规定编写通讯程序(需要MODBU S-RTU源代码) 方案二自由协议: 优点:数据格式客户自己定义,灵活多变,定制性强,可以模拟任何已知报文的通讯协议 缺点:传输数据量不大,通用性不强,移植不方便 工程师可以根据以上两种通讯协议的优缺点来选择理想的方案;

新建一个工程文件 型号对应的是公司出产产品型号。新增一个通信口,微嵌的人机界面有两个通讯口COM1,COM2,这两个串口既可以做RS232,又可以做RS485,通讯协议对应的是单片机工程师需要用到的协议,其中有modbus RTU协议,自由协议Free Protocol,当然还包括西门子S7-200,台达PLC,欧姆龙,三菱等协议,这里我们选择COM1自由协议Free Protocol,通讯速率57600,数据位8,1位停止位,偶校验:

首先我们随便建一个比较简单实用的画面,用位按钮开关控制单片机的指示灯,采集单片机的模拟数据显示在组态软件的数码管(可以通过电脑串口连接单片机在线模拟实际应用)

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.360docs.net/doc/bb9389575.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.360docs.net/doc/bb9389575.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

触摸屏与单片机的通讯实现

触摸屏与单片机的通讯实现 摘要:在当前的嵌入式设备中,触摸屏作为人机接口得到了广泛的应用。文章讨论了基于HIT6600触摸屏模块与富士通16位单片机90F340串口通讯实现的软硬件设计。 关键词:HIT6600 90F340 触摸屏单片机 1、引言 随着后PC 时代的到来,嵌入式系统在信息家电、移动计算设备、网络设备、工业控制 和仪器仪表等众多领域中得到了广泛的应用,在这些产品中,触摸屏因方便灵活、节省空间、 直观等特点,已经逐渐取代键盘成为嵌入式计算机系统主流的输入设备。触摸屏输入系统由 触摸屏、触摸屏控制器、微控制器及其相应的驱动程序构成。本文介绍触摸屏控制器与富士通16位单片机90f340串口通讯实现的软硬件设计。 2、触摸屏与单片机的硬件连接 采用HIT6600触摸屏与90F340单片机一对多通信。把触摸屏的COM1 9孔插座与串口通讯的90F340单片机相连接。注意:通信电缆DB9是1-485的正极、6 -485的负极。由于是一对多的通讯,所以增加串口通讯芯片MAX1487满足分机负载要求。 3、建立触摸屏与单片机通讯的软件设置 打开触摸屏组态软件,从[应用]下拉菜单中选[设定工作参数],弹出如图1所示工作参数设置对话框。触摸屏的系统参数中装置名称设置成ModBus Master,通信参数设置必需与单片机通信参数设置一致。通信口/连线方式设置成COM1,数据位设置成8位,1个停止位,波特率9600,校验位设置与单片机编程一致,PLC站号是单片机定义的站地址一样,站号需从1开始。参数设置完成,按确定键。 4、触摸屏的主态软件通讯设置编辑 HIT6600触摸屏提供了一种既方便又功能强大的宏指令应用方式,使人机得以经由内部宏指令(Macro Function)功能执行数值运算,逻辑判断,流程控制,数值

汇编语言实现串口通信(PC和单片机间)教学文案

8.用C语言或汇编语言实现串口通信(PC和单片机间) 上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS-232或者RS-485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示 1 硬件电路的设计 MCS-51单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MODEM方式,简单三连线结构。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51 机之间能可靠地进行串行通信,需要用电平转换芯片,可以采用MAXIM公司生产的专用芯片MAX232进行转换。电路如图1所示。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

总体设计按照整体设计思路方案绘制原理图如下所示: 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信, 1上位PC机与下位单片机异步串行通信的通信协议

实验单片机与PC机串口通信

实验单片机与PC机串口通信(C51编程)实验 要求: 1、掌握串行口的控制与状态寄存器SCON 2、掌握特殊功能寄存器PCON 3、掌握串行口的工作方式及其设置 4、掌握串行口的波特率(bondrate)选择 任务: 1、实现PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。要求:单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机时用查询方式。 采用软件仿真的方式完成,用串口调试助手和KEIL C,或串口调试助手和PROTEUS分别仿真。 需要用到以下软件:KEIL,VSPDXP5(虚拟串口软件),串口调试助手,Proteus。 (1)虚拟串口软件、串口调试助手和KEIL C的联调 首先在KEIL里编译写好的程序。

打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。在其网站上可以下载,但使用期为2周)。 左边栏最上面的是电脑自带的物理串口。点右边的addpair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。 接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入 modecom39600,0,8,1 %分别设置com3的波特率、奇偶校验 位、数据位、停止位 assigncom3sout %把单片机的串口和COM3绑定到一 起。因为所用的单片机是

(以上参数设置注意要和所编程序中设置一致!) 打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出来。也可以通过串口调试助手发送数据,在KEIL中接收。 实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。在调试助手上(模拟PC)发送数据,单片机收到后将收到的结果回送到调试助手上。 2、以下在Proteus和串口调试助手实现的结果: 将编译好的HEX程序加载到Proteus中,注意这里需要加上串口模块,用来进行串行通信参数的设置。 点击串口,可以对串口进行设置: 用串口调试助手发送数据,即可看到仿真结果。 实验参考程序源文件在exp2-comm文件夹中。

单片机与上位机通信系统设计说明

JIU JIANG UNIVERSITY 《单片机原理与应用》大作业 题目单片机与上位机通信系统设计院系信息科学与技术学院 专业计算机应用设计 姓名 班级学号 指导教师 2011年12月14 信息科学与技术学院

单片机大作业任务书 作业名称基于AT89C52单片机与上位机通信系统设计 2、设计要求 (1)可以由上位机通过串口操作单片机模块。 (2)利用单片机自身功能实现通信。 完成时间2011-2012学年第一学期

目录 一、摘要 (4) 二、总体方案设计与论证 (5) 1、设计 (5) 2、框图设计 (5) 3、知识点 (5) 三、系统硬件设计 (7) 1、电路原理图··················································· 四、系统软件设计 (11) 五、系统硬件PROTEUS仿真原理图 (13) 六、系统PROTEUS运行情况图 (13) 七、心得体会 (18) 八、致 (2)

摘要 本文介绍了一种基于AT89C52 单片机与上位机通信系统, 并对其工作原理及软、硬件的设计和实现方法进行了详细的阐述。 在单片机的输入输出控制中,除直接上小键盘和LCD显示等方法外,一般都通过 串口和上位机PC进行通信,后面一种方法由于能实现远程控制并且PC机拥有强大的数据处理功能以及友好的控制界面所以显得尤为有用。此系统可以由上位机控制通过串口操作 单片机模块 本单元就是来完成由上位机通过串口控制来实现以发光二极管的发光状态模拟开关电路的 通断,用上位机的DOS命令对其进行控制 通过此次作业能够更加牢固的掌握单片机的应用技术,增强动手能力、硬件设计能力以及软件设计能力。 关键词:AT89C52; 上位机,单片机 二.总体方案论证与设计 1设计 本论文是设计一基于AT89C52单片机应用系统,可以由上位机通过串口操作控制单片机模块以发光二极管的发光状态模拟开关电路的通断,用上位机DOS命令来控制 2框图设计 基于AT89C52单片机与上位机通信系统设计由电源电路,单片机主控电路,按键控制电路数码管控制对像和上位机接口组成,系统框图如图所示

51单片机与PC串口通讯

目录 第1章需求分析 ............................................................................................................................ - 1 - 1.1课题名称 (1) 1.2任务 (1) 1.3要求 (1) 1.4设计思想 (1) 1.5课程设计环境 (1) 1.6设备运行环境 (2) 1.7我在本实验中完成的任务 (2) 第2章概要设计 ............................................................................................................................ - 2 - 2.1程序流程图 (2) 2.2设计方法及原理 (3) 第3章详细设计 ............................................................................................................................ - 3 - 3.1电路原理 (3) 3.1.1STC89C52芯片 ............................................................................................................. - 3 -3.2串口通信协议 (4) 3.3程序设计 (5) 3.3.1主程序模块 .................................................................................................................... - 5 - 3.3.2串口通讯模块 ................................................................................................................ - 6 - 3.3.3控制部分文件 ................................................................................................................ - 8 - 3.3.4公共部分模块 .............................................................................................................. - 11 -3.4电路搭建 (12) 3.4.1电路原理图 .................................................................................................................. - 12 -第4章上位机关键代码分析 ...................................................................................................... - 12 - 4.1打开串口操作 (12) 4.2后台线程处理串口程序 (15) 4.3程序运行界面 (18) 第5章课程设计总结与体会 ...................................................................................................... - 19 -第6章致谢 .................................................................................................................................. - 19 -参考文献........................................................................................................................................... - 19 -

(合同制定方法)单片机与上位机通信协议的制定

(合同制定方法)单片机与上位机通信协议的制定

单片机和上位机通信协议的制定 单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定!上行协议,即由单片机向上位机发送数据。 下行协议,即由上位机向单片机发送数据。 而通信协议又要分固定长度和不定长度俩种 本文所介绍的协议属于简单的固定字长的通信协议! 下行协议由四个字节构成

上表是简单的上位机对单片机的控制指令 下述函数是C#中封装的串口通信类中的发送函数的封装publicvoidSerSendCommu(byteorderDef,bytedata)//参数1为命令字,参数二为要发送的数 //据,需要时可直接调用 { Byte[]BSendTemp=newByte[SEND_LENTH]; BSendTemp[0]=PRE; BSendTemp[1]=orderDef; BSendTemp[2]=data; BSendTemp[3]=END; this.serialPort1.Write(BSendTemp,0,SEND_LENTH); } 下位机中用中断方式接收字符,本文用的是GCC语言,下面是串口接收数据中断 ISR(USART_RXC_vect)//串口接收中断

{ unsignedcharstatus,data; status=UCSRA;//**首先读取UCSRA的值,再读取UDR值,顺序不能颠倒,否则读取UDR后的UCSRA的 //值即会改变** data=UDR; if(!Uart_RecvFlag)//判断缓存中的数据是否读完,读完则接收指令 { if((status&((1<

单片机接口与触摸屏控制

四线电阻式触摸屏控制和单片机接口 人机对话的界面种类有很多,比如显示器、LED、LCD及带触摸屏的LCD等。其中后者是最近几年刚发展起来的一项新技术,它通过计算机技术处理声音、图像、视频、文字、动画等信息,并在这些信息间建立一定的逻辑关系,使之成为能交互地进行信息存取和输出的集成系统。换言之,它能综合信息发布者的意愿和接受者对信息的需求及接受习惯,对信息进行收集、加工、整合并双向式传播。触摸屏系统符合简便、经济、高效的原则,具有人机交互性好、操作简单灵活、输入速度快等特点。它与迅猛发展的计算机网络和多媒体技术相结合,使用者仅仅用手指触摸屏幕,就能进行信息检索、数据分析,甚至可以做出身临其境、栩栩如生的效果;较键盘输入简单、直观、快捷,具有丰富多采的表现能力,比以往任何传媒更具亲合力。 触摸屏和单片机接口,可以使一些小系统的操作更加方便、快捷。使用触摸屏时最重要的问题是确定触摸点的坐标位置,本文以四线电阻式触摸屏为例,通过单片机控制准确地采样到被触摸点的坐标位置,至于该点响应何种按键只是交给相应的处理软件进行处理即可。 一、四线电阻式触摸屏 电阻触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也涂有一层透明导电层,在两层导电层之间有许多细小(小于千分之一英寸)的透明隔离点把它们隔开绝缘,见图1。 图1 四线式触摸屏结构示意图 当手指触摸屏幕时,平常相互绝缘的两层导电层就在触摸点位置有了一个接触,因其中一面导电层接通Y轴方向的Vref均匀电压场,使得侦测层的电压由零变为非零, 控制器侦测到这个接通后,进行A/D转换,并将得到的电压值与Vref

PC机串口与多个单片机红外无线通信的实现

《工业控制计算机》!""#年$%卷第%期&’机串口与多个单片机红外无线通信的实现 周文举山东枣庄师专计算机系 (!%%$(")&’机与一台或多台单片机的通信系统中的数据通讯一般 采用的是串行通信方式。串行通信可采用有线与无线两种方式,作者根据单片机串行通信原理、脉冲编码调制)&’*+技术和红外无线通信技术,开发设计了单片机编解码红外无线通信接口。用该接口构成的多机通信系统,由于采用红外线为传输介质,而不是电缆线和电磁波,所以特别适用于那些不适合或不方便架设电缆线及电磁干扰较强的工作环境。本文就利用红外技术实现&’机与多台单片机无线串行通信的实现作一介绍。 !多机通信原理 在多机数据通信系统中,&’机与单片机之间的数据通信采 用一对多的主从模式,利用波长为,#"!-的远红外波通信。其原理示意图如图$。主机为&’机,从机选择*’./0$系列单片机,在&’机上用12345675328(9"编制一个主程序,负责发送从机地址、控制命令和从站之间的信息传输及调度,从站则负责收集现场信息,进行一定的数据处理,根据主站的要求返回数据,并执行主站发出的命令。主站&’机与从站之间的信息交换是通过*.’:--控件来实现。在采用主从式多机串行通信系统中,从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只有一台&’机作为主机,各从机之间不能直接相互通讯,即使有信息交换也必须通过主机转发。由于发送和接收共用同一物理信道因此在任意时刻只允许一台从机处于发送状态,其余的从机不能发送。只有被主机呼叫的从机才能占用总线, 对主机做出应答。 图$&’机与一单片机串行通信 每台从机均分配有一个唯一的从机地址,主机与从机通信时,主机先呼叫某从机地址,唤醒被叫从机后,主、从两机之间进行数据交换,而未被呼叫的从机则继续进行各自的工作。主机发送的信息可以传到多个从机或指定的从机,各从机发送的信息只能被主机接收。单片机通过对多机通信控制位.*!进行置位和复位来控制正确接收地址和数据信号,在返回数据时通过设 ;7<为"或$来区别返回的是数据还是地址。只有正确地完成 了接收和发送任务,才能触发有效的;=,>=信号,进而完成下一步的通信。接收时,检测>=是否建立起来,当>=为高电平,表示接收完毕。发送时,检测;=是否建立起来,当;=为高电平时说明 发送已经完成。而在主机上也要设立相应的多机通信机制,这一任务是通过改变*.’:--控件的.?@@2AB 属性中的奇偶校验位来实现的。发送和接收地址时置奇偶校验位为*,则主机在发送地址过程中发送的第,位;7<为$,而在接收地址时,只有接收到的第,位>7<为$时才能引起’:--CD?A@属性的变化,从而触发EA’:--事件;发送和接收数据时,置该位为.。则主机在发送数据过程中发送的第,位;7<为",而在接收数据时,只有接收到的第,位>7<为"时才能引起’:--CD?A@属性的变化,从而触发EA’:--事件。 在本设计中主机微机发送字符与接受字符均采用查询方式,发送前先读取通信或状态寄存器,查询发送保持寄存器空否?接收前先读取通信或状态寄存器,查询一帧数据收完否?从机采用中断方式,即接收到地址帧后就进行串行口中断申请,’&F 响应后, 进入中断服务程序。在通信协议中规定:"单片机以方式G 进行通信,一帧数据的第,位为“$”,代表地址帧,为“"”,代表数据帧。#设定通信波特率为,(""HI3;$地址帧为"$JKLLJ 代表!00台从机地址。%""J 是以地址帧形式发送的一条对所有从机起作用的控制命令,命令各从机恢复.*!M$,等待接收状态。 为了实现多机通信,所有发射电路的振荡频率和所有的接收电路的振荡频率都必须调整一致,为保证正常通信,防止自己发自己接,数据传送方向必须为半双工传送,收发器在发射时,必须屏蔽自己的接收中断,发射结束后再开放中断。 多机通信过程为: $)主机*.’:--的属性.?@@2AB3M “,("",*,<,$”,所有从机的.*!M$,处于地址帧接收状态。 !) 主机发送一帧地址信息,其中包含<位地址,第,位为“$”,与所需的从机进行联络。 G ) 从机接收到地址信息后,各自将其与自己的地址相比较;对于地址相符的从机使>=M",;7

上位机和下位机通信

目录 摘要 1 引言 (1) 2 结构设计与方案选择 (2) 2.1设计任务 (2) 2.1.1单片机的选择 (2) 2.1.2电平转换 (2) 2.1.1单片机的选择 (2) 2.1.3单片机与pc机通信原理 (2) 2.2软件方案选择 (2) 2.2.1 上位机编程方案选择 (3) 2.2.2 单片机编程方案选择 (3) 2.3 总体方案选择 (2) 3 硬件设计 (8) 3.1单片机主要特性 (5) 3.2 MAX232电平芯片介绍10 (10) 3.3 硬件电路设计图 (11) 3.3.1 PC机与单片机通信接口电路设计框图 (11) 3.3.2整体设计原理图 (11) 4软件设计 (12) 4.1上位机程序设计 (12) 4.2下位机程序设计 (13) 5 软硬件调试部分 (21) 5.1 PROTEUS软件仿真 (21) 5.1.1 Protues简介 (21) 5.1.2 Protues仿真电路图 (22) 5.2 VC软件仿真 (21) 结束语 (27) 致谢 (28) 参考文献 (29)

摘要 本文主要描述了利用PC机与AT89C51单片机之间的通信程序设计实现温度显示。并详述了在VC6.0环境下,上位机利用MSCOMM通信控件与单片机之间串口通信实现温度显示。由单片机采集一个温度信号,将采集到的温度信号传送给PC机显示,PC机用VC6.0编写程序,单片机程序用C语言编写,最后用PROTUES软件进行仿真实现温度显示。 关键词:单片机MSCOMM控件VC6.0 AT89C51 温度显示

1引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。 现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。加之单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。

上位机与单片机之间的通讯

1.注册MSComm控件 众所周知,C++Builder本身并不提供串行通讯控件MSComm,但我们却可以通过注册后直接使用它。启动C++Builder5.0后,然后选择C++Builder主菜单中的Component菜单项,单击Import Active Control命令,弹出Import Active窗口,选择Microsoft Comm Control6.0,再选择Install按钮执行安装命令,系统将自动进行编译,编译完成后即完成MSComm控件在C++Builder中的注册,系统默认安装在控件板的Active页,接下来我们就可以像使用C++Builder本身提供的控件那样使用新注册的MSComm控件了。(前提条件是你的机子上安装了Visual Basic,或者有它的库) 2.具体实现 新建一个工程Project1,把注册好的MSComm控件加入到窗体中,然后再加入5个ComboBox用来设置串口的属性,4个Button分别用来"打开串口" "关闭串口""发送数据""保存数据" ,2个Memo控件分别用来显示接收到的数据和发送的数据。再加入一个Shape控件用来标明串口是否打开。 ComboBox1用来设置串口号,通过它的Items属性设置1,2,3,4四个列表项分别表示COM1,COM2,COM3,COM4口。ComboBox2用来设置波特率,ComboBox3用来设置奇偶校验位,ComboBox4用来设置数据位,ComboBox5用来设置停止位。他们的缺省值分别是9600,n,8,1。 Button1用来打开串口,Button2用来关闭串口,Button3用来发送数据,Button4用来保存数据。Memo1用来显示发送的数据,Memo2显示接收的数据。Shape1的Shape属性设置为stCircle。 下面给出部分源码: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)

单片机与PC机串口通信实现正文

毕业设计(论文)课题:单片机与PC机串口通信实现 学生: 孙波系部: 通信工程 班级: 通信1301 学号: 2013120325 指导教师: 童华 装订交卷日期: 2016年x月x日 装订顺序: (1)封面(2)毕业设计(论文)成绩评定记录(3)标题、中文摘要及关键词(4)正文(5)附录(6)参考文献

毕业设计(论文)成绩评定记录表 注:1.此表适用于不参加毕业答辩学生的毕业设计(论文)成绩评定; 2.平时成绩占40%、卷面评阅成绩占60%,在上面的评分表中,可分别按40分、60分来量化评分,二项相加所得总分即为总评成绩,总评成绩请转换为优秀、良好、中等、及格、不及格五等级计分。 教务处制

重庆电子工程职业学院 毕业设计(论文)开题报告 系别通信工程专业通信技术班级通信1301 学生姓名孙波学号2013120325 指导教师童华 一、毕业设计的内容和意义: 目前,随着计算机和微电子技术的高速发展,单片机在国民经济的各个领域的智能化控制中得到了非常广泛的应用。单片机已成为信息处理、物联网络、通信设备、工业控制、家用电器等各个领域不可缺少的智能部件。在一些工业控制中,经常需要以单片机作为下位机执行对被控对象的直接控制,以PC机为上位机完成复杂的数据处理,组成主从式控制系统。 为了提高系统管理的先进性,计算机工业自动控制和监测系统越来越多的采用主从式系统。较为常见的形式是由一台做管理用的上位机计算机(主机)和一台直接参与控制检测的下位机单片机(从机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是向从机发送各种命令及参数;二是要及时收集、整理和分析从机发回的数据,供进一步的决策。从机被动的接收、执行主机发

基于C#的串口通信上位机和下位机源代码

基于单片机串口通信的上位机和下位机实践串口 Universal Serial Bus或者USB RS232 GPIB兼容的设备也带有RS-232 获取远程采集设备的数据。 bit byte 发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488 202 1200米。 首先亮出C#的源程序吧。

using System; using System.Collections.Generic; using https://www.360docs.net/doc/bb9389575.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Timers; namespace 单片机功能控制 { public partial class Form1 : Form { public Form1() {

InitializeComponent(); } SerialPort sp = new SerialPort(); private void button1_Click(object sender, EventArgs e) { String str1 = comboBox1.Text;//串口号 String str2 = comboBox2.Text;//波特率 String str3 = comboBox3.Text;//校验位 String str4 = comboBox5.Text;//停止位 String str5 = comboBox4.Text;//数据位 Int32 int2 = Convert.ToInt32(str2);//将字符串转为整型Int32 int5 = Convert.ToInt32(str5);//将字符串转为整型groupBox3.Enabled = true;//LED控制界面变可选 try { if (button1.Text == "打开串口") { if (str1 == null)

单片机课设pc与单片机串口通信

哈 尔 滨 理 工 大 学 荣 成 学 院
单片机 课程设计
题目:PC 与单片机的串口通信 班级:电气 姓名: 学号:

一、题目简介
如今,在很多场合中,要求单片机不仅能独立完成单机的控制任 务,还要能与其他数据控制设备(单片机、PC 机等)进行数据 交换。串口通讯对单片机而言意义重大,不但可以实现将单片机 的数据传输到电脑端,而且也能实现电脑对单片机的控制。 89C52 有一个全双工的串行通讯口,所以单片机和电脑之间可以 方便地进行串口通讯。 串行口是计算机与外部设备之间进行数 据交换的重要介质,所以串行通信在工程中有着广泛的应用。这 种通信的实现,主要是靠上位 PC 机与下位单片机组成的二级系 统通过 RS232 进行通信。 此次设计通过计算机输入数据通过串口 传送给单片机进而在 LED 上显示。
二、实现方案
将程序写好后生成.HEX 文件,将其发送至 AT89C52 单片机上, 应用串口助手调好通讯端口与波特率后,打开串口助手实现 PC 发送字符给单片机,单片机接受到后即在 LED 屏幕上进行显示, 同时将其回发给 PC 机。



三、电路原理图







四、软件流程图
开始
初始化定时/计数器 1 和串口控制寄存器
启动定时/计 数器 1
取存储区数据并 启动串行口发送
N
发送完毕
Y
所有数据发送 完毕
N
等待 PC 机发送 命令数据
结束

PIC单片机与触摸屏串行通信的MODBUS协议实现

PIC单片机与触摸屏串行通信的MODBUS协议实现 摘要:介绍一种在PIC单片机与触摸屏之间采用Modbus协议实现异步串行通信的方法。简单介绍了Modbus通信协议,给出了硬件电路连接图、程序流程图以及用PIC单片机C语言编写的部分通信程序。实际使用证明该方法数据传输稳定可靠,并提供了良好的人机交互环境。 关键词:触摸屏PIC单片机Modbus协议通信 工控中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。本文以PIC16F877单片机和人机电子有限公司的eView MT510T型触摸屏为例,介绍其通信程序的开发过程。 1 系统结构 实现触摸屏与单片机的通讯,主要是解决通讯协议的问题。本文使用开放的Modbus通讯协议,以触摸屏作主站,单片机作从站。eView触摸屏本身支持Modbus通讯协议,如果单片机也支持Modbus协议,就可以进行通信了。触摸屏与单片机之间采用的RS-232C兼容接口直接连接,传输速率设置为9600kb/s。图1为该系统的电路图。 将PIC16F877单片机RC6、RC7口设置为异步串行通信模式,经过MAX232芯片将TTL电平转换为RS232电平,再与eView触摸屏PLC[RS-232]接口相连,即完成了硬件连接。eView触摸屏PLC[RS-232]接口的管脚2为TXD,管脚3为RXD。 2 Modbus通信协议介绍 Modbus 通信协议是一种串行的主从通信协议,网络里仅有一台设置可作为主机(称Master),其它设备作为从机(称Slaver),主机不需编号,从机必须编号。协议定义了主机查询及从机应答的信息帧格式。通信时,主机首先向从机发出请求信息,符合相应地址码的从机接收通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务,然后把执行结果返给主机。若从机接收到的校验码与本机计算的不同,则说明数据在通信过程中出现错误,从机把这次请求视为无效,功能代码将被修改以用于指出

相关文档
最新文档