欢迎来到天天文库
浏览记录
ID:14330204
大小:48.50 KB
页数:6页
时间:2018-07-28
《串行口传输各种数值数据》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用串口传输各种数值数据二、MCS-51单片机端设计1、通信协议为做演示说明我们仅发送3个数据顺序依次为:字符型数据、整型数据、浮点型数据,字符型数据、整型数据、浮点型数据在MCS-51单片机的C语言中分别占用1、2、4个字节。由于是采用周期性的数值数据发送方法,为使PC机端能准确接收所发送数据设计数据包如下:所有数据按发送顺序及占用字节数顺序排列,等待发送。数据包以两个字节的数据0XFF表示数据包结尾。当等待发送数据为0XFF时,插入转义字符0X27,避免发送数据中出现连续的两个0XFF,造成虚假的数据包结尾。插入的转义字符在接收时自动
2、删除,为避免发送数据为0X27时被自动删除,在其后也插入转义字符0X27。2、单片机程序设计由于发送、接收双方距离较近,故波特率设置为9600bps、数据位数为8位、没有奇偶校验位、1位停止位。系统的定时器/记数器T0、T1已另作它用,故选择T2做为波特率发生器。使用T2做为波特率发生器时不会产生通讯中断。单片机发送程序由两个子程序组成:串口初始化、数据发送。代码如下:voidinit232(void)//串口初始化子程序{SCON=0x50;PCON=0x80;T2CON=0x34;RCAP2L=0xb2;RCAP2H=0xff;TL2
3、=0xb2;TH2=0xff;TR2=1;}voidsenddata()//数据发送子程序{uchardata*datapd;uchari;pd=&char_data;//sendchardataSBUF=*pd;while(TI==0);TI=0;if(((*pd)==0xff)
4、
5、((*pd)==0x27)){SBUF=0x27;while(TI==0);TI=0;}pd=&int_data;//sendintdatafor(i=0;i<2;i++){SBUF=*pd;while(TI==0);TI=0;if(((*pd)==0xff
6、)
7、
8、((*pd)==0x27)){SBUF=0x27;while(TI==0);TI=0;}pd++;}pd=&float_data;//sendfloatdatafor(i=0;i<4;i++){SBUF=*pd;while(TI==0);TI=0;if(((*pd)==0xff)
9、
10、((*pd)==0x27)){SBUF=0x27;while(TI==0);TI=0;}pd++;}SBUF=0xff;//sendendflagwhile(TI==0);TI=0;SBUF=0xff;while(TI==0);TI=0;}数据发送子程序
11、利用指针指向要发送数据,然后根据数据占用字节数,确定循环次数,在循环体内发送。由于我们定义的指针是字符型,在其指向整型数据、浮点型数据在内存的首地址时,编译器会给出WARNING性提示:“pointertodifferentobjects”,它并不会影响程序的执行效果,可不予理会。要避免出现WARNING性提示,可采用计算机端的方法定义联合体型数据来解决,但代码会很长;另外编译器一般会按定义的次序顺序为变量分配内存,所以指针只要指向要发送的第一个数据,再根据全部数据占用字节数进行循环,可极大减少代码长度。三、计算机端设计VisualC++
12、6.0是Windows环境下的一种简单、高效的可视化编程语言开发系统,以其可视化界面设计风格和面向对象的程序设计等特点在工程实践中得到了广泛的应用,其简洁性和实用性已经受到了众多计算机用户和程序员的欢迎,尤其是其6.0版本,功能强大且易于掌握。它不但提供了良好的界面开发环境,而且具有功能强大的通信控件MicrosoftCommunicationsControl(MSComm)实用性强、功能完善,是实现计算机与外部设备数据交换的强有力工具,提供了很强的串口通信能力。计算机端设计过程如下:1、在程序中嵌入通讯控件启动VisualC++6.0,
13、利用MFC的AppWizard新建一个项目文件,并命名为CommTe。在Appwizard第一步选择基于对话框的应用程序类型(Dialogbased)。在第二步将ActiveXControls复选框选中,表示本程序支持ActiveXControls控件。其他均接收缺省设置,AppWizard将自动生成一个以对话框为主窗口的应用程序。单击Progect菜单,从菜单中选AddtoProject,再单击CommponentsandControl,从弹出对话框中单击RegisteredActiveXControls,在列表框中选Microsoft
14、CommunicationsControl,单击OK。这时会询问你是否加入CMSComm类,单击OK,返回后看到控件工具条上添加了一个通讯控件(在图中用标有“电话”的方框表示),将其拖放到对话
此文档下载收益归作者所有