文档库 最新最全的文档下载
当前位置:文档库 › 上位机和下位机通信学习资料

上位机和下位机通信学习资料

上位机和下位机通信学习资料
上位机和下位机通信学习资料

目录

摘要

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机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。

2方案选择

2.1硬件方案选择

2.1.1单片机的选择

本设计采用的是AT89C51单片机,AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。它是一种高效微控制器,因为它更经济实惠,用起来灵活方便,而且习惯了用这种型号的单片机,所以选择AT89C51单片机。

2.1.2电平转换

本设计采用MAX232芯片进行电平转换,MAX232芯片是美信公司专门为电脑的RS232标准串口设计的接口电路,使用+5V单电源供电,它的作用就是完成TTL 电平与RS232电平的转换。PC机的串行口采用的是标准的RS 232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS 232的电气特性不匹配,因此为了使单片机的串行口能与RS 232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。

2.1.3单片机与pc机通信原理

MCS-51单片机有一个全双工的串行通讯口UART。利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据)、RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MO·

DEM方式,简单三连线结构。IBM—PC机有两个标准的RS.232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了Pc机与MCS-51机之间能可靠地进行串行通信,需要用电平转换芯片,我们采用了MAXIM 公司生产的专用芯片MAX232进行转换。电路如图所示。

图2.2 MAX232工作原理图

2.2软件方案选择

2.2.1 上位机编程方案选择

本设计采用VC6.0++来实现编程,上位机与单片机进行通信的程序编写可用VB、VC等软件。由于VB作为面向对象的编程工具不够完全,效率比VC低,提供的命令语言环境较弱,通过串口设备一次最多只能交换16B的数据,对较大数据量的传输存在很大的局限性,很难实现较为复杂的数据处理,VC6.0++是一种功能强大的面向对象的Windows编程开发平台。VC6.0的优点是界面简洁,占用资源少,操作方便。所以本设计采用VC作为串口编程工具。

2.2.2单片机编程方案选择

本设计单片机的编程选择C语言编写,因为它简洁紧凑、灵活方便、运算符丰富、数据结构丰富、C是结构式语言、C语法限制不太严格,程序设计自由度大、C语言允许直接访问物理地址,可以直接对硬件进行操作、C语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10へ20%、C语言适用范围大,可移植性好C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。所以我选用C语言来编写此程序。

2.3 总体方案选择

温度传感器测量出来的温度值由单片机采集出来,然后单片机再将采集出的温度数据处理后,通过串行口发送给上位机。

2.1总体设计方案流程图

3硬件设计

3.1 单片机主要特性

·与MCS-51 兼容

·4K字节可编程闪烁存储器

·寿命:1000写/擦循环

·数据保留时间:10年

·全静态工作:0Hz-24MHz

·三级程序存储器锁定

·128×8位内部RAM

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

单片机AT89C51的引脚说明:

图3.1 AT89C51的引脚排列引脚描述:

VCC:电源电压

GND:地

P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。

P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。

P2口:P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。

P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。

P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示

表2..1 P3口第二功能

P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。

RST:

复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。

ALE/PROG:

当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。

PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。

EA/VPP:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA 端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V 编程电压VPP。

XTAL1:震荡器反相放大器及内部时钟发生器的输入端。

XTAL2:震荡器反相放大器的输出端。

时钟震荡器:AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。用户也可以采用外部

时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。

图3.2内部振荡电路图3.3闲散节电模式

AT89C51有两种可用软件编程的省电模式,它们是闲散模式和掉电工作模式。这两种方式是控制专用寄存器PCON中的PD和IDL位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是闲散等待方式,当IDL=1,激活闲散工作状态,单片机进入睡眠状态。如需要同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在闲散工作模式状态,中央处理器CPU保持睡眠状态,而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内随机存取数据存储器和所有特殊功能寄存器的内容保持不变。闲散模式可由任何允许的中断请求或硬件复位终止。终止闲散工作模式的方法有两种,一是任何一条被允许中断的事件被激活,IDL被硬件清除,即刻终止闲散工作模式。程序会首先影响中断,进入中断服务程序,执行完中断服务程序,并紧随RETI指令后,下一条要执行的指令就是使单片机进入闲散工作模式,那条指令后面的一条指令。二是通过硬件复位也可将闲散工作模式终止。需要注意的是:当由硬件复位来终止闲散工作模式时,中央处理器CPU通常是从激活空闲模式那条指令的下一条开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期有效,在这种情况下,内部禁止中央处理器CPU 访问片内RAM,而允许访问其他端口,为了避免可能对端口产生的意外写入:激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的写入指令。

掉电模式:

在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在中指掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将从新定义全部特殊功能寄存器但不改变RAM 中的内容,在VCC恢复到正常工作电平前,复位应无效切必须保持一定时间以使振荡器从新启动并稳定工作。

表2.2闲散和掉电模式外部引脚状态。

程序存储器的加密

AT89C51可使用对芯片上的三个加密位LB1,LB2,LB3进行编程(P)或不编程(U)得到如下表所示的功能:

表2.3程序存储器的加密

当LB1被编程时,在复位期间,EA端的电平被锁存,如果单片机上电后一直没有复位,锁存起来的初始值是一个不确定数,这个不确定数会一直保存到真正复位位置。为了使单片机正常工作,被锁存的EA电平与这个引脚当前辑电平

一致。机密位只能通过整片擦除的方法清除。

3.2MAX232电平芯片介绍

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)。

电平转换电路如下:

图3.4 MAX232电平芯片

3.3 硬件电路设计图

3.3.1 PC机与单片机通信接口电路设计框图

本文采用MAx232作为PC机与单片机的串行通信接口芯片。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

图3.5 PC机与单片机通信接口电路设计框图

3.3.2整体设计原理图

总体设计按照整体设计思路方案绘制原理图如下所示:

图3.6整体设计原理图

4软件设计

4.1上位机程序设计

void CTem_conDlg::OnOnCommMscomm1()

{

// TODO: Add your control notification handler code here

m_strRXData=" "; //每次进入则将编辑框内容清空等待显示新的数据

VARIANT variant_inp;

LONG len,k;

BYTE rxdata[2048]; //设置BYTE数组

CString strtemp;

if(m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符

{ //以下你可以根据自己的通信协议加入//处理代码

variant_inp=m_ctrlComm.GetInput();//读缓冲区

safearray_inp=variant_inp; //VARIANT型变量转换为

//ColeSafeArray型变量

len=safearray_inp.GetOneDimSize();//得到有效数据长度

for(k=0;k

safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组

for(k=0;k

{

BYTE bt=*(char*)(rxdata+k);//字符型

strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放

m_strRXData+=strtemp; //加入接收编辑框对应字符串

}

}

UpdateData(FALSE); //更新编辑框内容}

4.2下位机程序设计

#include

#define XTAL 11059200 // CUP 晶振频率

#define baudrate 9600 // 通信波特率

#define uchar unsigned char

#define uint unsigned int

sbit DQ = P3^3; // 定义DS18B20端口DQ

sbit BEEP = P3^7;

unsigned char presence ;

unsigned char code LEDData1[ ] ={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};

unsigned char code LEDData[ ] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0xff};

unsigned char data temp_data[2] = {0x00,0x00};

unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00};

unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,

0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

void beep();

sbit DIN = P0^7; // 小数点

bit flash=0; // 显示开关标记

bit flag_zf=0; // 正负温度标志

/**********************************************************/

void Delay(unsigned int num)// 延时函数

{

while( --num );

}

/**********************************************************/

uchar Init_DS18B20(void) // 初始化ds1820

{

DQ = 1; // DQ复位

Delay(8); // 稍做延时

DQ = 0; // 单片机将DQ拉低

Delay(90); // 精确延时大于480us

DQ = 1; // 拉高总线

Delay(8);

presence = DQ; // 如果=0则初始化成功=1则初始化失败Delay(100);

DQ = 1;

return(presence); // 返回信号,0=presence,1= no presence

}

/**********************************************************/ uchar ReadOneChar(void) // 读一个字节

{

unsigned char i = 0;

unsigned char dat = 0;

for (i = 8; i > 0; i--)

{

DQ = 0; // 给脉冲信号

dat >>= 1;

DQ = 1; // 给脉冲信号

if(DQ)

dat |= 0x80;

Delay(4);

}

return (dat);

}

/**********************************************************/

void WriteOneChar(unsigned char dat)// 写一个字节

{

unsigned char i = 0;

for (i = 8; i > 0; i--)

{

DQ = 0;

DQ = dat&0x01;

Delay(5);

DQ = 1;

dat>>=1;

}

}

/*********************************************************/ void Read_Temperature(void)// 读取温度

{

Init_DS18B20();

if(presence==1)

{

beep();

flash=1;

} // DS18B20不正常,蜂鸣器报警

else

{

flash=0;

WriteOneChar(0xCC); // 跳过读序号列号的操作

WriteOneChar(0x44); // 启动温度转换

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作

WriteOneChar(0xBE); // 读取温度寄存器

temp_data[0] = ReadOneChar(); // 温度低8位

temp_data[1] = ReadOneChar(); // 温度高8位

}

/*********************************************************/

void Disp_Temperature()// 显示温度

{

unsigned char n=0;

if(temp_data[1]>7) //当温度高八位中的高五位全为O { flag_zf=1; // 所测温度为负时,要进行转换

temp_data[1]=!( temp_data[1]);

temp_data[0]=!( temp_data[0]);

temp_data[0]= temp_data[0]+1;

if(temp_data[0]=0)

{ temp_data[1]= temp_data[1]+1;}

}

Else

{flag_zf=0} //判断测得的温度数据是正还是负,如果为正,不做任何

//理

display[4]=temp_data[0]&0x0f;

display[0]=ditab[display[4]]; // 查表得小数位的值

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);

display[3]=display[4]/100;

display[1]=display[4]%100;

display[2]=display[1]/10;

display[1]=display[1]%10;

if(flag_zf=1)

{p0=0xbf;

P2=0x02;

Delay(300);} //温度为负数时第二个数码管显示负号

if(!display[3]) // 高位为0,不显示

display[3]=0x0a;

if(!display[2]) // 次高位为0,不显示

display[2]=0x0a;

}

P0 = 0xc6; // 显示C

P2 = 0xfe; // 位选线为P2.7口,LED为共阳极显示,当位选线为低电平时选通

Delay(300);

P0 = 0x9c; // 显示°

P2 = 0xfd; // 选中P2.6口

Delay(300);

P0 =LEDData[display[0]] ; // 显示小数位

P2 = 0xfb; //p2.5

Delay(300);

P0 =LEDData1[display[1]]; // 显示个位

P2 = 0xf7;

Delay(300);

P0 =LEDData[display[2]]; // 显示十位

P2 = 0xef;

Delay(300);

P0 =LEDData[display[3]]; // 显示百位

P2 = 0xdf;

Delay(300);

P2 = 0xff; // 关闭显示

上位机和下位机通信

目录 摘要 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、命令帧格式 帧头标志参数校验帧尾 命令字 01累加和 2030 1Byte1Byte2Byte1Byte1Byte 说明:1、累加和校验:各字节累加和与100的模。 2、 10进制输入;16进制传输。

2、信息帧格式 帧头标志参数校验帧尾 命令字 2030 02累加和 1Byte1Byte2Byte1Byte1Byte 说明:1、累加和校验:各字节累加和与100的模。 2、 10进制输入;16进制传输。

3、数据帧格式 (文件mokuaideng.txt (模块指示灯地址) 20 Byte ) 帧头标志校验帧尾203003累加和数据数据1Byte 16Byte 1Byte 1Byte 1Byte 标志:03 数据帧 文件mokuaideng.txt (模块指示灯地址) 20 Byte 04 数据帧 文件daotongbiao.txt (导通表) 40 Byte 05 数据帧 文件canshu.txt (控制参数) 6 Byte 06 数据帧 校验文件mokuaideng.txt (模块指示灯地址) 20 Byte 07 数据帧 校验文件daotongbiao.txt (导通表) 40 Byte 08 数据帧 校验文件canshu.txt (控制参数) 6 Byte 4、信息帧格式 定位物理针位 下位机-》上位机 上位机-》下位机 点亮指示灯 帧头标志参数校验帧尾203011累加和物理针位1Byte 1Byte 2Byte 1Byte 1Byte 说明:1、累加和校验:各字节累加和与100的模。 2、 10进制输入;16进制传输。 标志位 13 ,单点检测 判断单点导通关系是否真确 5、信息帧格式 下位机-》上位机 自检、线检测 帧头标志参数1校验帧尾203012累加和起始针位1Byte 1Byte 2Byte 1Byte 1Byte 参数2终点针位2Byte 参数3状态1Byte 状态:00 导通 01 断路 02 短路/错路

基于C#的串口通信上位机和下位机源程序

基于单片机串口通信的上位机和下位机实践 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 首先亮出C#的源程序吧。 主要界面: 只是作为简单的运用,可以扩展的。 源代码: using System; using System.Collections.Generic; using https://www.wendangku.net/doc/5b14557297.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) { MessageBox.Show("请先选择串口!", "Error"); return; } sp.Close(); sp = new SerialPort(); sp.PortName = comboBox1.Text;//串口编号 sp.BaudRate = int2;//波特率 switch (str4)//停止位 { case "1": sp.StopBits = StopBits.One; break; case "1.5": sp.StopBits = StopBits.OnePointFive; break; case "2": sp.StopBits = StopBits.Two; break;

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

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

using System; using System.Collections.Generic; using https://www.wendangku.net/doc/5b14557297.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)

上位机与下位机之间的连接

第一章上位机与下位机 1.1 上位机与下位机的概念 上位机和下位机,一般是指集中控制系统中的PC机和现场的工控机。上位机(PC 机)主要用来发出操作指令和显示结果数据,下位机(工控机)则主要用来监测和执行上位机的操作指令。举个例子,蓄电池生产中,需要按工艺要求进行充电和放电。现场有许多工位,各自配有智能的充放电设备,它们就是“下位机”。整个车间有一台PC机来集中管理,这就是“上位机”。 上位机软件一般用高级语言编程,如BASIC、C,有比较丰富的图形界面。下位机的编程,依所用的MCU而异,以汇编为主。 上位机和下位机之间的通讯,常见是RS-232,RS-485,当然还有很多,但都是串行方式。特别是“一对多”的RS-485用得最普遍。 上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。简言之如此,真实情况千差万别不离其宗。上下位机都需要编程,都有专门的开发系统。 另外,上位机和下位机是通过通讯连接的“物理”层次不同的计算机,是相对而言的。一般下位机负责前端的“测量、控制”等处理;上位机负责“管理”处理。下位机是接收到主设备命令才执行的执行单元,即从设备,但是,下位机也能直接智能化处理测控执行;而上位机不参与具体的控制,仅仅进行管理(数据的储存、显示、打印......人机界面等方面)。常见的DCS系统,“集中-分散(集散)系统”是上位机集中、下位机分散的系统。 在概念上,控制者和提供服务者是上位机.被控制者和被服务者是下位机.也可以理解为主机和从机的关系.但上位机和下位机是可以转换的. 两机如何通讯,一般取决于下位机。TCP/IP一般是支持的。但是下位机一般具有更可靠的独有通讯协议,购买下位机时,会带一大堆手册光盘,告诉你如何使用特有协议通讯。里面会举大量例子。一般对编程人员而言一看也就那么回事,使用一些新的API罢了。多语言支持功能模块,一般同时支持数种高级语言为上位机编程。 上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信

上位机与下位机通过蓝牙通讯协议

文档名称:蓝牙通信协议编制审定:解晓飞

目录 1 前言 (2) 2帧定义 (2) 2同步字 (2) 3帧类型 (3) 4通讯流程 (3) 4.1设置采集信息 (3) 4.2采集测试命令 (3) 4.3开始采集、结束采集 (4) 5通信原则 (4)

PDA与下位机蓝牙通讯协议 1 前言 本协议用于定义PDA通过蓝牙与下位机进行数据通信的底层操作。数据传输以信息帧格式传输,且帧长度为非定长信息。 2帧定义 系统中共有三种帧格式,根据类型的不同帧的格式也不同具体定义如下: 3.1、命令帧 3.2 回复帧 3、2数据帧 其中命令帧是由PDA发给单片机的,回复帧和数据帧是由单片机发给PDA 的。 2同步字 为保证数据正确传输,帧格式中设有起始同步字和结束同步字,起始同步字包括两个字节,内容为0xaa、0xaa,结束同步字包括两个字节,内容为0x55、0x55。

3帧类型 类型字包括一个字节,表示发送的数据的类型,本系统中包括三个类型:命令、回复、数据三类。具体定义如下: 4通讯流程 操作过程中PDA均采用主动模式,单片机采用被动模式。 4.1设置采集信息 单片机启动后等待接收蓝牙命令首先进行参数设置,本部分由PDA控制。 PDA发送设置命令(帧类型0x30)并将信息发送到单片机,单片机接收到数据后检测数据个数是否正确,如果检测正确返回接收正确命令否则返回接收错误命令。 如果单片机返回的数据为接收错误,PDA重新发送命令。 从数据发送时起PDA进行计数等待,等待500ms后没有接收到返回值,自动重新发送命令并等待,重复上述操作。 发送三次都没有返回值时弹出警告对话框,提示蓝牙通讯故障。 如发送数据正常则提示设置成功信息对话框。 4.2采集测试命令 1、PDA发送采集命令 PDA发送采集设置命令(帧类型0x30),单片机接收到数据后检测数据是否正确,如果检测错误则返回接收错误命令。PDA接收到单片机返回接收错误回复,PDA重新发送命令。 从数据发送时起PDA进行计数等待,等待500ms后没有接收到返回值(采集数据或错误回复值),自动重新发送命令并等待,重复上述操作。

上位机下位机串口通信

大连海事大学 课程设计报告 课程名称:计算机微机原理课程设计 成员: 成员1:2220133293 范凯锋 成员2:2220132642 唐绍波 成员3:2220130079 曹晓露 设计时间:2016年3月7日至3月18日

考核记录及成绩评定

目录 1.设计任务与要求 (1) 1.1课程设计题目 (1) 1.2课程设计的背景 (1) 1.3课程设计的目的 (1) 1.4课程设计的意义 (1) 1.5设计任务 (1) 2.设计方案 (2) 2.1参数采集和传输设计 (2) 2.2参数显示设计 (2) 2.3模拟信号采样设计 (2)

2.4硬件研制过程 (2) 3.详细设计 (3) 3.1硬件系统框图与说明 (3) 3.2硬件设计 (4) 3.3软件主要模块流程图与说明 (7) 4.设计结果及分析 (8) 5.成员分工及工作情况 (9) 5.1成员分 工 (9) 5.2工作情 况 (9) 5.3实验总结 (9) 6.参考文献 (9) 7. 附录 (10)

一、设计任务与要求 1.1课程设计题目 双机数据采集系统设计 1.2 课程设计的背景 二十一世纪是信息化高速发展的世纪,产业的信息化离不开微型计算机的支持。微型计算机的进步是推动全球信息化的动力。因此在二十一世纪掌握微型计算机接口技术是十分有必要的。本次课题是双机参数采集系统设计,这次课题旨在通过自己对所需功能芯片的设计与实现来巩固以前所学的微机原理课程知识,同时也提高动手实践的能力,还有为将来进行更大规模更复杂的开发积累经验。 随着软件规模的增长,以及随之而来的对软件开发进度和效率的要求,高级语言逐渐取代了汇编语言。但即便如此,高级语言也不可能完全替代汇编语言的作用。 1.3课程设计的目的 《微机原理与汇编语言》是一门实践性和实用性都很强的课程,本次课程设计是在课程学习结束后,为使学生进一步巩固课堂和书本上所学知识,加强综合能力,充分理解和运用所学到的知识,通过简单的应用系统的设计,提高系统设计水平,启发创新思想。通过本课程设计希望达到以下目地: ?培养资料搜集和汇总的能力; ?培养总体设计和方案论证的意识; ?提高硬件,软件设计与开发的综合能力; ?提高软件和硬件联合调试的能力; ?熟练掌握相关测量仪器的使用方法;

上位机与下位机之间通信编程

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

目录 摘要 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)

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

上位机和下位机控制功能对比

【修改】上位机和下位机控制功能对比 本文上位机控制和下位机控制组态软件进行了简单的对比,通过一些典型示例说明了分别适合上位机和下位机控制的场合。 当前组态软件在工业控制中得到了日益广泛的应用。组态软件依据自身的过程数据库,下连各种硬件设备,并通过动态人机界面可以将采集处理的数据展现给用户,或者传递给其他应用程序。其结构如图所示: 图1 组态软件结构图 组态软件的出现,由于其预先提供了各种常用组件和相关设备驱动,一方面将监控系统设计的难度大为降低,开发相关系统的时间也大为缩短,另一方面,由于可以自由连接多种设备,提供了一个平台,用户可以依据需要设计出成本最优的工程。 对于硬件设备,特别是可编程的PLC等硬件,自身具有一定的控制功能,而可以连接PLC等硬件的组态软件也可以通过脚本等执行一定的控制功能,那么控制是交给上位机的组态软件,还是下位机的PLC呢?这里先对两者做一个简单的比较: 下位机控制 下位机可以执行一些相关的控制动作,优点在于其速度快,可靠性高,稳定。其缺点在于受到其自身的限制,对于一些特殊的复杂控制,以及和其他特殊设备相关或者

涉及到关系数据库等控制功能作无法执行。 上位机控制 上位机的组态软件同样可以执行一定的控制动作,其优点在于脚本编写更容易,而且可以方便可执行涉及到多个设备以及关系数据库或者其他数据的控制动作,能充分发挥自身系统的优势。缺点在于有时会遇到上位机和下位机通讯的时间瓶颈,而且通常组态软件运行工控机在其他操作系统上,其稳定性和PLC等有差距。 在实际工程中,应该根据需要来进行相关的控制分布。下面通过一些典型示例进行说明: 适合下位机控制场合 对于一些实时性要求较高,或者上位机和下位机通讯较慢或容易受到干扰的情况下,建议把关键的控制放在下位机执行。比如对于一些典型的水利项目,比如水质监测,其运行监测系统的子站和运行组态软件的中心站可能相距较远,其通讯可能采用数传电台,拨号,GSM,GPRS等方式。在这种情况下,由于其通讯距离远,可能会有些延迟,所以控制功能更多的放在了下位机,而上位机主要负责数据的采集,存储和显示,也可包含一些对下位机的设置功能。 适合上位机控制的场合 对于一些和关系数据库或者多种设备相关的控制功能,单纯的依靠下位机进行控制,可能非常麻烦或者难以实现,这种情况下建议由上位机进行控制。比如车站的灯光控制,需要获取火车的行车信号以及其他数据来进行判断是否亮灯,而行车信号一般存在数据库或者需要从引导系统中获取,这种情况下,如果其控制几乎全部由上位机实现。 在更多的时候,是根据控制功能自身的特点来进行相关设置。下位机和上位机可以根据需要各执行相关部分控制功能,实时性要求较高的控制可以放到下位机,复杂的,关联其他数据的控制可以放在上位机,两者在一起构成一个完备的控制系统。合理的进行分配,不仅可以减少劳动量,而且可以提高工程的健壮性。

上位机与下位机通讯

单片机课程设计 ——上位机与下位机通讯

目录 目录............................................................................................................................... I 1.引言.. (1) 1.1实习目的 (1) 1.2实习要求 (2) 1.3 实验内容 (2) 2.企业参观 (2) 3. C51单片机开发设计 (4) 3.1设计意义 (4) 3.2系统功能设计 (4) 3.2.1功能特点 (4) 3.2.2负责工作 (4) 3.3硬件设计及描述 ........................................................ 错误!未定义书签。 3.3.1时钟与复位模块 ..................................................... 错误!未定义书签。 3.3.2按键选择模块...................................................... 错误!未定义书签。 3.3.3LCD显示模块 ......................................................... 错误!未定义书签。 3.3.4 硬件原理图 (6) 3.4软件设计流程与描述 ................................................ 错误!未定义书签。 3.4.1编程思路简介......................................................... 错误!未定义书签。 3.4.2 程序流程图 (7) 3.4.3 部分程序 (9) 4.心得体会 (12) 5.参考文献 (13)

上位机与下位机通讯

上位机与下位机通讯 ——上位机与下位机通讯 目录 目录...................................................................... ...................... 错误~未定义书签。 1. 引言...................................................................... .................. 错误~未定义书签。 1.1 实习目 的 .................................................................... 错误~未定义书签。 1.2 实习要 求 ..................................................................... (2) 1.3 实验内容...................................................................... ............................... 2 2. 企业参观...................................................................... ............................................ 2 3. C51单片机开发设 计 ......................................................... 错误~未定义书签。

上位机及下位机程序编写规范及建议

PLC程序编写规范及建议 为了提高程序的可读性,稳定性,高效性,易调用,方便各部门PLC程序的编写,调试及维护工作,有必要也务必要制定一项通用的程序编写规范,鉴于此,本人提出以下几个方面的规范建议,以供大家共同商讨。 控制功能方面: 阀门的控制,由于电动阀门的控制中,一个控制周期较长,为了不让在调试或者阀门的误操作上面,让阀门开关过程影响相关设备的控制,造成设备安全影响,故需要将阀门的控制做一个逻辑上的中间停止中断操作,即可让阀门处于一个中间状态,然后再进行开关控制选择。 各设备控制 每个参与控制的设备,必须事先预留自控、触摸屏、故障屏蔽接口,以便功能扩展。设备在控制方式转变后必须考虑设备安全的前提下,值得注意的是,建议转换开关由远程切换到手动时,上位机给出输出的指令一律清零,以免造成再次将设备由手动转换到远程,设备继续执行上一次的转换前动作,造成手动动作造成的远程指令! 自动控制必须事先了解整个工艺流程的情况下,预先考虑到每个设备间的各种组合搭配,一一做出相应的条件判断,然后做出相应符合条件的指令。在程序编译前,应详尽的做出中文注释,注释包含组合搭配条件,运行条件,在每一符合条件的程序段必

须注释条件及指令。当自动控制从最小满足条件的集合跳出为无法满足条件后,

必须考虑相关设备的安全,能关闭的关闭,必须记录并将输出报警,并将报警反馈到上位机。 自动触发条件参数应以变量设定可调,有多个变量参数可能产生冲突时,在程序中加以判断,并做出相应的调整或恢复默认值,并以提示的方式告知用户,避免程序冲突而让用户产生不必要的损失。 手动、远程、自动三级控制应该严格区分,各级控制权限不得越级。 在硬件配置上,为了更好的检查模块是否正常的情况先,建议每个数字量输入输出模块必须预留一个点,以此来检查模块是否正常状态。 模拟量输出方面: 建议每个仪表的量程上限必须以变量的方式预留接口,以便仪表进行维修、更换或者重新设置时造成额外不必要的问题。以此也更为方便用户的需求。 PLC的IP地址设置规范要求,为了维护方便,建议将IP地址设置为192.168.1.2xx段。 项目归档名称格式要求,要求以项目名或项目名简写字母加日期,例如:changyang_120329.程序的归档备份原则上,建议备份在上位机硬盘的最后一个分区,在其分区的根目录下建立一个项目名称的文件夹里。在同一文件夹下,应存储下位机地址表信息文档,以便在调试或维护过程中进行检查、修改等。

上位机与下位机的定义

学习的路上,越努力越渺小。 ——单片机初学者有很多刚从学校踏入社会的职场新手,在听到前辈们讨论:我们上位机要实现这个功能,你们下位机需要这样配合,之类的话题时都是一脸的蒙:什么是上位机、什么又是下位机。其实在学校都是接触过,只是不知道其在职场应用中的专业名词而已。 上位机通常是指可以直接发出控制命令的计算机,一般是PC/host computer/master computer/upper computer。通常上位机存在可视化的操作界面,例如显示屏,便于使用者进行控制操作。 下位机是直接控制设备、获取设备状态的计算机,一般是PLC、STM32等。通常下位机不为用户所知,有点类似幕后实施者。 上位机与下位机从概念上分析:上位机属于控制者,下位机属于被控制者;从执行角度去分析:上位机属于命令发布者,下位机属于命令实施者。一般工作的流程是:用户通过界面、语音或者按键等操作将用户意图通知给上位机,上位机将用户意图转换为操作命令,通过两者间的通信协议将操作命令传递给下位机,下位机再根据命令去控制对应的相关设备。 上位机与下位机之间的通信通常取决于下位机,通过下位机支持的通信接口,例如:UART、SPI、SCI、I2C、CAN等接口。基于底层接口对通信协议进行设计扩展,可参考各接口标准协议进行开发,亦可根据需求自定义通信协议。 不论是上位机还是下位机,都是可编程设计的。上位机编程,可以选用不同的编程语言,比如:C/C++、C#、JAVA、LABVIEW等。不同的编程语言适用于不同的编程软件,实现出不同风格的监控显示界面。当然使用何种编程语言,主要根据个人爱好、水平以及公司需求。下位机编程通常是嵌入式编程,在硬件资源上进行代码设计,通常使用汇编、C语言、VHDL等等。 下面以一实例描述下上、下位机在项目中的实际功能应用: 上位机:IMAX6,ARM芯片 下位机:STM32F091RC 功能:根据电源电压的变化控制LED0、LED1,提醒操作者工作状态。 通信方式:UART

上位机和下位机的程序

一.上位机程序: 1.添加MScomm控件,并在窗体装入时进行初始化 Private Sub Form_Load() Timer1.Enabled = False MSComm1.InBufferSize = 40 '初始化串口 MSComm1.InBufferCount = 0 MSComm1.InputMode = comInputModeBinary '二进制方式 https://www.wendangku.net/doc/5b14557297.html,mPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.RThreshold = 1 MSComm1.InputLen = 0 '每次读入缓冲区所有字符 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True '打开串口 End If End Sub 2.添加一个命令按钮Command“应用”用于确认信息无误后发送。 Private Sub Command1_Click() Dim A,B A =Check1(0).Value + Check1(1).Value * 2 + Check1(2).Value * 4 + Check1(3).Value * 8 B = Check1(4).Value + Check1(5).Value * 2 + Check1(6).Value * 4 + Check1(7).Value * 8 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True '打开串口 End If MSComm1.OutBufferCount = 0 MSComm1.Output = Chr(CInt(B)) '向单片机发送数据MSComm1.OutBufferCount = 0 MSComm1.Output = Chr(CInt(A)) End Sub 3.添加Text,用于显示单片机返回的数据(在此只是为了演示接收) Private Sub MSComm1_OnComm() If https://www.wendangku.net/doc/5b14557297.html,mEvent = comEvReceive Then Text1.Text = AscB(MSComm1.Input)

上位机与下位机之间通信编程

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

目录 摘要 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)

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

上位机与下位机通讯方式的比较

这要看哪种单片机,常用的是串口远距离是rs485,有一些高档的单片机也用CAN总线通信,这种方式汽车上常用。 https://www.wendangku.net/doc/5b14557297.html,/apply/html/2007-12-7/n25043.html 上位机与下位机通信的设计初步 1 引言 现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。加之单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。 2 PC机与单片机8051之间的通信特点 在工业控制系统中,各种数据的采集和执行机构的控制都是由下位机或探测站来完成。由于单片机具有体积小、价格低廉、可应用于恶劣工业环境的特点,在分布式控制系统中大多采用单片机作为下位机来进行数据采集和现场控制。在这些应用中,单片机只是直接面向被控对象底层。而对采集到的数据进行进一步分析和处理的工作是由功能强大的主控PC机来完成的。因此,PC机和单片机之间就有着大量的数据交换。 3 PC机与单片机8051通信的硬件设计 通常PC机和单片机之间的通信是通过串行总线RS-232实现的。因此采用一种以MAX232为核心的通信接口电路。该接口电路适用于由一台PC机与多个8051单片机串行通信的设计,其原理和方法同样适用于PC机与其它单片机之间的串行数据通信。其原理框图见图1: 图1 单片机与PC机通信原理框图 该框图中,起着重要作用的是RS-232C通信接口电路。它是上位机和下位机之间信息传递的枢纽,一切数据的传输必需由它完成,上位机直接利用它的RS-232串行口,为此,采用了RS-232串行通信来接收或上传数据和指令。但RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换。在此电路中,采用MAX232实现TTL逻辑电平和RS-232电平之间的相互转换。MAX232由单一的+5V电源供电,只需配接5个高精度10μF/50V的钽电容即可完成电平转换。因此,避免了用1488和1489时必需两路电源的麻烦。转换后的串行信号TXD、RXD直接与PC机的串行口连接。如此设计,既可发挥出PC

上位机与下位机通信设计

1 引言 现代化集中管理需要对现场数据进行统计、分析、制表、打印、绘图、报警等,同时,又要求对现场装置进行实时控制,完成各种规定操作,达到集中管理的目的。加之单片机的计算能力有限,难以进行复杂的数据处理。因此在功能比较复杂的控制系统中,通常以PC机为上位机,单片机为下位机,由单片机完成数据的采集及对装置的控制,而由上位机完成各种复杂的数据处理及对单片机的控制。 2 PC机与单片机8051之间的通信特点 在工业控制系统中,各种数据的采集和执行机构的控制都是由下位机或探测站来完成。由于单片机具有体积小、价格低廉、可应用于恶劣工业环境的特点,在分布式控制系统中大多采用单片机作为下位机来进行数据采集和现场控制。在这些应用中,单片机只是直接面向被控对象底层。而对采集到的数据进行进一步分析和处理的工作是由功能强大的主控PC机来完成的。因此,PC机和单片机之间就有着大量的数据交换。 3 PC机与单片机8051通信的硬件设计 通常PC机和单片机之间的通信是通过串行总线RS-232实现的。因此采用一种以MAX232为核心的通信接口电路。该接口电路适用于由一台PC机与多个8051单片机串行通信的设计,其原理和方法同样适用于PC机与其它单片机之间的串行数据通信。其原理框图见图1: 图1 单片机与PC机通信原理框图 该框图中,起着重要作用的是RS-232C通信接口电路。它是上位机和下位机之间信息传递的枢纽,一切数据的传输必需由它完成,上位机直接利用它的RS-232串行口,为此,采用了RS-232串行通信来接收或上传数据和指令。但RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换。在此电路中,采用MAX232实现TTL逻辑电平和RS-232电平之间的相互转换。MAX232由单一的+5V电源供电,只需配接5个高精度10μF/50V的钽电容即可完成电平转换。因此,避免了用1488和1489时必需两路电源的麻烦。转换后的串行信号TXD、RXD直接与PC机的串行口连接。如此设计,既可发挥出PC机强大的计算和显示功能,又可以体现出单片机灵活的控制功能,有利于对现场信号的实时采集、处理和监控。 3.1 8051与PC机之间的通信协议 在许多场合的测控系统中,约定PC机和8051单片机的通信协议为:

上位机和下位机通讯代码

#include #include #define led P1 unsigned char RX_FLAG; unsigned char TX_FLAG; unsigned char j=0;//j=0; unsigned char ch[30]; unsigned char dda[13]; //串口接收中断函数 void serial () interrupt 4 using 3 { unsigned char chh; if(RI) //接收中断{ EA=0; if(TX_FLAG==0) { chh=SBUF; if(chh == 0xCC) { RX_FLAG = 1; } if(chh == 0xFF) { TX_FLAG=1; } } else { led =ch[28]; ch[j]=SBUF; j++; if(j==30) { j=0; TX_FLAG=0; } dda[0]=ch[1]*256+ch[0]; //整形 dda[1]=ch[3]*256+ch[2]; dda[2]=ch[5]*256+ch[4]; dda[3]=ch[7]*256+ch[6]; dda[4]=ch[9]*256+ch[8];

dda[5]=ch[10]; //字符 dda[6]=ch[11]; dda[7]=ch[12]; dda[8]=ch[13]; dda[9]=(ch[17]*256+ch[16])+(ch[15]*256+ch[14])/1000; //浮点 dda[10]=(ch[21]*256+ch[20])+(ch[19]*256+ch[18])/1000; dda[11]=(ch[25]*256+ch[24])+(ch[23]*256+ch[22])/1000; dda[12]=(ch[29]*256+ch[28])+(ch[27]*256+ch[26])/1000; } EA=1; RI=0; //清除接收中断标志位 } } void init_serialcomm(void) { SCON = 0x50; //SCON: 串口工作方式1,允许接收 TMOD |= 0x20; //TMOD: 定时器1的工作方式2 PCON |= 0x80; //SMOD=1; TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz IE |= 0x90; //开总中断,开串口中断 TR1 = 1; // 开启定时器1 } //延时函数 void delay (void) { unsigned int i; for(i=0;i<5000;i++); } //向串口发送一个字符 void send_char_com(unsigned char ch) { SBUF=ch; while(TI==0); TI=0; } void send_int_com(unsigned int zhengshu) //发送整型,2字节数

上位机下位机 无线模块资料

上位机和下位机,一般是指集中控制系统中的PC机和现场的工控机。上位机(PC机)主要用来发出操作指令和显示结果数据,下位机(工控机)则主要用来监测和执行上位机的操作指令。举个例子,蓄电池生产中,需要按工艺要求进行充电和放电。现场有许多工位,各自配有智能的充放电设备,它们就是“下位机”。整个车间有一台PC机来集中管理,这就是“上位机”。 上位机软件一般用高级语言编程,如BASIC、C,有比较丰富的图形界面。下位机的编程,依所用的MCU而异,以汇编为主。 上位机和下位机之间的通讯,常见是RS-232,RS-485,当然还有很多,但都是串行方式。特别是“一对多”的RS-485用得最普遍。 上位机是指:人可以直接发出操控命令的计算机,一般是PC,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。简言之如此,真实情况千差万别不离其宗。上下位机都需要编程,都有专门的开发系统。在概念上 控制者和提供服务者是上位机 被控制者和被服务者是下位机 也可以理解为主机和从机的关系 但上位机和下位机是可以转换的 两机如何通讯,一般取决于下位机。TCP/IP一般是支持的。但是下位机一般具有更可靠的独有通讯协议,购买下位机时,会带一大堆手册光盘,告诉你如何使用特有协议通讯。里面会举大量例子。一般对编程人员而言一看也就那么回事,使用一些新的API罢了。多语言支持功能模块,一般同时支持数种高级语言为上位机编程。 无线传输

相关文档
相关文档 最新文档