- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串行口传输各种数值数据
利用串口 传输各种 数值数据
二、MCS-51单片机端设计
1、通信协议
为做演示说明我们仅发送3个数据顺序依次为:字符型数据、整型数据、浮点型数据,字符型数据、整型数据、浮点型数据在MCS-51单片机的C语言中分别占用1、2、4个字节。由于是采用周期性的数值数据发送方法,为使PC机端能准确接收所发送数据设计数据包如下:
所有数据按发送顺序及占用字节数顺序排列,等待发送。
数据包以两个字节的数据0XFF表示数据包结尾。
当等待发送数据为0XFF时,插入转义字符0X27,避免发送数据中出现连续的两个0XFF,造成虚假的数据包结尾。
插入的转义字符在接收时自动删除,为避免发送数据为0X27时被自动删除,在其后也插入转义字符0X27。
2、单片机程序设计
由于发送、接收双方距离较近,故波特率设置为9600bps、数据位数为8 位、没有奇偶校验位、1位停止位。系统的定时器/记数器T0、T1已另作它用,故选择T2做为波特率发生器。使用T2做为波特率发生器时不会产生通讯中断。
单片机发送程序由两个子程序组成:串口初始化、数据发送。代码如下:
void init232(void) //串口初始化子程序
{
SCON=0x50;
PCON=0x80;
T2CON=0x34;
RCAP2L = 0xb2;
RCAP2H = 0xff;
TL2 = 0xb2;
TH2 = 0xff;
TR2=1;
}
void senddata()//数据发送子程序
{
uchar data * data pd;
uchar i;
pd=char_data; //send char data
SBUF=*pd;
while(TI==0); TI=0;
if(((*pd)==0xff) || ((*pd)==0x27))
{
SBUF=0x27;
while(TI==0); TI=0;
}
pd=int_data; //send int data
for(i=0;i2;i++)
{
SBUF=*pd;
while(TI==0); TI=0;
if(((*pd)==0xff) || ((*pd)==0x27))
{
SBUF=0x27;
while(TI==0); TI=0;
}
pd++;
}
pd=float_data; //send float data
for(i=0;i4;i++)
{
SBUF=*pd;
while(TI==0); TI=0;
if(((*pd)==0xff) || ((*pd)==0x27))
{
SBUF=0x27;
while(TI==0); TI=0;
}
pd++;
}
SBUF=0xff;//send end flag
while(TI==0); TI=0;
SBUF=0xff;
while(TI==0); TI=0;
}
数据发送子程序利用指针指向要发送数据,然后根据数据占用字节数,确定循环次数,在循环体内发送。由于我们定义的指针是字符型,在其指向整型数据、浮点型数据在内存的首地址时,编译器会给出WARNING性提示: “pointer to different objects”,它并不会影响程序的执行效果,可不予理会。要避免出现WARNING性提示,可采用计算机端的方法定义联合体型数据来解决,但代码会很长;另外编译器一般会按定义的次序顺序为变量分配内存,所以指针只要指向要发送的第一个数据,再根据全部数据占用字节数进行循环,可极大减少代码长度。
三、计算机端设计
Visual C++6.0是 Windows环境下的一种简单、高效的可视化编程语言开发系统 ,以其可视化界面设计风格和面向对象的程序设计等特点在工程实践中得到了广泛的应用 ,其简洁性和实用性已经受到了众多计算机用户和程序员的欢迎 ,尤其是其 6. 0版本 ,功能强大且易于掌握。它不但提供了良好的界面开发环境 ,而且具有功能强大的通信控件Microsoft Communications Control (MSComm)实用性强、功能完善 ,是实现计算机与外部设备数据交换的强有力工具 ,提供了很强的串口通信能力。计算机端设计过程如下:
1、在程序中嵌入通讯控件
启动VisualC++6.0,利用MFC的AppWizard新建一个项目文件,并命名为CommTe。在Appwizard第一步选择基于对话框的应用程序类型(Dialog based)。在第二步将ActiveX Controls 复选框选中,表示本程序支持ActiveX Controls控件。其他均接收缺省设置,AppWizard将自动生成一个以对话框为主窗口的应用程序。
单击Progect菜单,从菜单中选Ad
文档评论(0)