最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于LabVIEW的串口通信

来源:动视网 责编:小OO 时间:2025-09-26 05:22:23
文档

基于LabVIEW的串口通信

课程设计(论文)题目:基于Labview的串口通信院(系):电子工程与自动化学院专业:测控技术与仪器学生姓名:学号:指导教师:职称:2013年1月9日第页共页摘要微机与单片机串行通信端口在系统控制的范畴中一直占据着及其重要的地位,它不仅没有因为时代的进步而遭淘汰,反而在规格上越来越完善,应用也越来越广泛。作为一种基本而又灵活方便的通信方式,串口通信被广泛应用于PC与PC或者PC与单片机之间的数据交换以及其他工业控制与自动控制中。本次设计主要解决上位机与下位机之间的通信问题。关键词:串行通信;单
推荐度:
导读课程设计(论文)题目:基于Labview的串口通信院(系):电子工程与自动化学院专业:测控技术与仪器学生姓名:学号:指导教师:职称:2013年1月9日第页共页摘要微机与单片机串行通信端口在系统控制的范畴中一直占据着及其重要的地位,它不仅没有因为时代的进步而遭淘汰,反而在规格上越来越完善,应用也越来越广泛。作为一种基本而又灵活方便的通信方式,串口通信被广泛应用于PC与PC或者PC与单片机之间的数据交换以及其他工业控制与自动控制中。本次设计主要解决上位机与下位机之间的通信问题。关键词:串行通信;单


 课程设计(论文)

题    目:基于Labview的串口通信

                                         

院 (系): 电子工程与自动化学院

专    业:  测控技术与仪器     

学生姓名:                     

学    号:                     

指导教师:                     

          职    称:                     

2013年1月9日

                                                                      第   页    共   页

摘  要

微机与单片机串行通信端口在系统控制的范畴中一直占据着及其重要的地位,它不仅没有因为时代的进步而遭淘汰,反而在规格上越来越完善,应用也越来越广泛。作为一种基本而又灵活方便的通信方式,串口通信被广泛应用于PC与PC或者PC与单片机之间的数据交换以及其他工业控制与自动控制中。本次设计主要解决上位机与下位机之间的通信问题。 

关键词:串行通信;单片机;Max232

Abstract(三号加粗):

There is a kind of automatic access system that use automatic indemnification technology to identify user’s ID and rights, and according to user’s rights to control the door. Serial-communication based on Visual Studio 2005—Visual Basic 2005(VB.NET) is introduced in the paper. With this method, the development cycle of system can be reduced and the reliability of the system can be improved. An example of serial-communication between PC and MCS-51 is also given. The method is very useful to learners who want to learn new serial-communication technology between PC and MCS-51. 

Key words:Serial-Communication; MCU

                                                                      第   页    共   页

引言 …………………………………………………………………………1

1  设计任务与要求(四号黑体)…………………………………………2

2  设计方案 ………………………………………………………………2

2.1 系统框图 …………………………………………………………………6

2.1.1☆☆☆☆☆…………………………………………………………………………6

2.1.2☆☆☆☆☆☆………………………………………………………………………7

• • •  • • •

5 结论……………………………………………………………………34

谢辞 ………………………………………………………………………35

参考文献 …………………………………………………………………35

附录 ………………………………………………………………………36

                                                                      第   页    共   页

引言 

随着计算机技术的迅速发展及其在各领域的广泛应用,远程控制以及数据采集系统多采用上位机和下位机的主从工作方式,由于串行通信具有高效可靠、价格便宜,遵循统一的标准等特点,因而成为主要的通信手段。微机的分析处理能力较强,有很好的人机界面和大容量的多种存储方式,所以上位机一般采用微机。而单片机具有价格低,功能强,抗干扰能力好,以及面向控制等特点,所以下位机采用单片机。本次课程设计主要用单片机实现与微机的串口通信——收发数据的功能。课程设计是理论联系实际的重要实践教学环节,是对学生进行的一次综合性专业设计训练。本次课程设计主要注重的是电子电路的设计、仿真、印制电路板、制作、编程、调试等综合于一体的一门课程,意在培养学生正确的设计思想方法以及思路,理论联系实际的工作作风,严肃认真、实事求是的科学态度,培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。作为一名大学生不仅需要扎实的理论知识,还需要过硬的动手能力,所以认真做好课程设计,对提高我们的动手能力有很大的帮助做到。

 

                                                                      第   页    共   页

1设计任务和要求:

基本要求:

下位机采用51单片机,上位机软件用Labview;做一根串口线;电平转换芯片采用MAX232;测试下位机发三组数据给上位机,上位机接收保存;下位机有四个按键,三个控制3个数据,一个是发送键;便于调试下位机有4位数码管;

扩展:

假定三个数据是RGB三色数据,采用颜色处理函数并显示颜色。

2  设计方案

2.1 系统组成 :

系统框图如图2.1所示:

图2.1

2.1.1单片机系统   

单片机采用51系列的ATS51,加上按键复位和11.0592MHZ的晶振一起构成最小系统,如图2.1.1所示:

                                                                      第   页    共   页

图2.1.1

2.1.2数码管显示部分

    单片机P0口接上拉电阻,然后与四位一体共阴数码管的七段发光二级管相连,P2口的低四位作为数码管的位选信号,选用查表法和动态扫描显示将要发送的三位数据,如图2.1.2:

(1)……

① ……

……    ……

图2.1.2

                                                                      第   页    共   页

2.1.3键盘部分电路

     将键盘一段直接接地,另一端与P3口的高四位相连,键盘扫描时只需想将P3.4-P3.7预先全部置1,然后再从此处读入数据,根据数据变化判断键盘按下的位置,例如:如图2.1.3所示电路,置1后,若按下S2,则P3.4=1,其余位数据不变,通过查询方式即可得知结果。

图2.1.3

2.1.4数据转换

      采用Max232芯片及其它电子元器件组成串行接口部分电路,Max232接受从单片机串行通信发送端发送的数据,再将数据传送到上位机即PC机,与上微机进行通信,如图2.1.4所示:

图2.1.4

                                                                      第   页    共   页

2.2 软件设计:

    采用C语言编程,易读性好,可移植性强,方便检测和调试。

程序设计流程图如图2.2所示:

图2.2

                                                                      第   页    共   页

2.2.1初始化设置

初始化主要包括波特率,串口工作方式和定时计数器1工作方式等的设置代码如下:

TMOD = 0x20;    //定时器1 工作在方式2

                SCON = 0x40;   //串口工作方式为1 , 串行禁止接收,允许时0x50

PCON = 0x00;   //SMOD=0,波特率不加倍;SMOD=1,波特率加倍

TH1 = 0xfd;     //波特率 9600bps fosc=11.059MHz

TL1 = 0xfd;

TR1 = 1;

波特率:

            Baud=(2^smod × Fsoc)/(32 ×12×(256-TH1));

计数初值:

            TH1=256-(Fsoc×2smod)/(12×32×Baud)。

波特率的设置要实现单片机与PC机的串行通信,双方的波特率必须一致,波特率根据串行口的工作方式不同而不同:

(1)方式0

波特率串行口方式0的波特率由振荡器的频率所确定:

方式0   波特率=振荡器频率/12

(2)方式2

波特率串行口方式2的波特率由振荡器的频率和SMOD(PCON.7)所确定:

SMOD为0时,波特率等于振荡器频率的六十四分之一;

SMOD为1时,波特率等于振荡器的三十二分之一。

(3)方式1和方式3

波特率串行口方式1和方式3的波特率由定时器T1或T2(8051等单片机)的溢出率和SMOD所确定,T1和T2是可编程的,可以选的波特率范围比较大,因此串串行口方式1和方式3是最常用的方式。

当定时器T1作为串行口的波特率发生器时,串行口方式1和方式3的波特率由下式确定:

方式1和方式3   波特率=2SMOD*(T1溢出率)/32

SMOD为0时,波特率竽T1溢出三十分之一;

SMOD为1时,波特率等于T1的六十四分之一。

定时器T1作为时,应禁止T1中断。通常T1工作于定时方式(C/T=0),计数脉冲为振荡器的十二分频信号。也可以选择外部T1(P3.5)上输入脉冲作为T1计数信号(C/T=1)。T1的溢出率又和它的工作方式有关,一般选方式2定时,此时波特率的计算公式为:

方式1和方式3波特率=2^SMOD*Fosc/[32*12(256-(TH1))]

                                                                      第   页    共   页

表2.1.1(1)常用波特率

表2.1.1(2)SCON寄存器结构

表2.1.1(3)PCON结构

2.2.2键盘改变数据

图2.2中,若键入的是前三个键,则发送的数据分不同的位发生改变,此时还要判别加1之前是否为9,若不为9,则加1,反之变为0,数码管显示改变后的值。此时数据并不发送,知道按下发送键,即最后一个键,才发送最终的数据,并显示当前数据。

若无按键按下,则数码管显示上次发送的数据。

2.2.3数码管显示

数码管的第一个首先显示百位数字,位选控制使该灯亮,其余灯灭,延时后第二个灯亮,显示十位数字,再次延时后第三个灯亮,显示个位数字,最后延时,如此即可动态循环显示一个三位数:

代码如下:

P0=table[hdr];

        P2=0xf7;

        delay(1);

        P0=table[ten];

        P2=0xfb;

        delay(1);            

        P0=table[svr];

        P2=0xfd;        

        delay(1);

                                                                      第   页    共   页

   其中,table为0—9的段码表,delay为延时,hdr,ten,svr分别表示百位,十位和个位数据,计算方式如下:

       temp中存储将要发送的数据:

hdr=temp/100;

        ten=temp/10-hdr*10;

        svr=temp%10;

2.2.4发送数据

      发送数据主要是将待发送数据存入SBUF,并查询TI标志位,若TI为0,表示发送尚未完成,继续等待,直至TI变为1,表示发送完成,可以进行下一次发送,这是需要将TI清0

void sout(uint dat)         //串口发送一个数据

{

      SBUF = dat;           //待发送的数据写入缓冲区

    while(!TI);           //等待发送完成

    TI = 0;                 //清零发送标志位

 }

3  调试

3.1 分步调试

3.1.1直接将P0口置全1,P2口置全0,看数码管是否点亮

     实际操作中发现数码管没显示,且P0和P2口全部为1,检查后发现复位键连接错误,直接将两个相连的管脚焊接在两个不相连的节点,导致单片机始终处于复位状态。修改后数码管正常显示。

3.1.2加入键盘扫描,通过数码管观察其能否正常工作

      键盘正常工作,且改变数据功能完全实现。

3.1.3单独看发送部分,直接循环无条件发送,看电脑是否能正常接收

      实际中发现不能发送数据,而电脑的接收功能正常,则问题必定为制作的系统上,经老师帮助后发现是串口通信处的电路连接出现错误,接收线与发送线接反,修正后发送功能正常。

串口调试接收区数据如图3.1.3所示:

图3.1.3

由于是循环发送同一个数据,所以显示的数据全部相同。

                                                                      第   页    共   页

3.2 整体调试

将所有程序下载至单片机中,然后运行,发现数码管显示和键盘部分功作完全正常,

但发送键按下后没有数据发送。

再次单独无条件发送,发现正常工作,则确定为其它部分影响;

在单独发送的程序部分加入数码管显示电路,工作正常,则确定非数码管部分问题;

再次加入键盘扫描部分程序,系统不能正常工作,此时确定问题在该部分程序中。

检查程序后发现是P3口的数据初始化出现问题,改正后,整个系统正常工作,所有功能全部实现。

4最终结果显示

系统最终实现功能为:三个按键分别实现个位,十位和百位上数据的修改,然后通过最后一个键确定发送数据。数据修改工程和最终数据都在数码管上进行显示。发送数据成功后电脑接收数据如图4所示:

图4

键盘修改数据后每按下一次发送键,则发送一个数据。

                                                               第   页    共   页

5结论

通过将近一个星期的实践,我体会到了完成一份设计的成就感,但是更多的还是一种充实的感觉,我们这次所设计的实验,对我们的考验很大,在整个设计的过程中,我觉得理清自己的设计思路,并且具有坚实的理论基础是非常重要的。

刚刚接触这个设计的时候,我可以说对设计一个基于单片机的串口通信没有太准确的概念,尤其是编程几乎忘记得差不多了,所有的一切好像都得重头再来!

拿到课程设计的课题时,我只能大概的理解着看这个题目,好多的东西像零星的记忆碎片,都不能拼凑在一起,我查阅了图书馆和网上的相关资料后终于通过自己的努力设计出了切实可行的电路。

本次课设完成后使我得到了一定的锻炼,并在一定程度上增强了自身发现问题、分析问题、解决问题和实践的能力。并且使我明白了知识不用就很大可能“全部还给课本“的事实,以后一定要更加努力,学会的知识要时常思考和应用,将理论与实践结合起来,真正是知识发挥它应有的作用,也不枉费我们大学的学习,不辜负老师的教育和家长的期盼。

                                                                      第   页    共   页

谢  辞(黑体四号)

☆☆☆☆☆☆ (首行缩进两个字,宋体小四号)

另起一页,“谢辞”二字中间空两格、四号字、黑体、居中。内容限1页,采用小四号宋体。

参考文献(黑体四号、顶格)

参考文献要另起一页,一律放在正文后,不得放在各章之后。只列出作者直接阅读过或在正文中被引用过的文献资料,作者只写到第三位,余者写“等”,英文作者超过3人写“et al”。

                                                                      第   页    共   页

几种主要参考文献著录表的格式为:

⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码.

⑵期   刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码.

⑶论 文 集:[序号]著者.篇名[A]编者.论文集名[C] .出版地:出版者,出版者. 出版年:起~止页码.

⑷学位论文:[序号]著者.题名[D] .保存地:保存单位,授予年.

⑸专利文献:专利所有者.专利题名[P] .专利国别:专利号,出版日期.

⑹标准文献:[序号]标准代号 标准顺序号—发布年,标准名称[S] .

⑺报    纸:责任者.文献题名[N].报纸名,年—月—日(版次).

附  录

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号)

(另起一页。附录的[1]有[1 无根据说明[1]书(设计)情况而定,内容一般包括正文内不便列出的冗长公式推导、符号说明(含缩写)、计算机程序等。“附”“录”中间空两格、四号字、黑体、居中。)

  课程设计(论文)5000-6000汉字。

1、元件清单

序 号

名      称

数 量

单  价

备  注

1单片机S51

1
2MAX2321
3四位共阴数码管1
4串口母头1
5晶振12M

  1
6排阻2
710*15双面版

1
8电容104(0.1uf)

7
9电容30PF

2
10

电容10uf

2
11

电容105(1uf)

4
12

电阻1K

6
13

电阻100欧姆

  1
14

小按键  5
15

1*40圆针插座

2
 16

1*40排针

1
17圆孔珠槽1
18发光二级管(红色)2
2、程序

#include

#define uchar unsigned  char

#define uint unsigned int

uint temp,tsd,hdr,ten,svr;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,0x66,

0x6d,0x7d,0x07,0x7f,0x6f      };

 

void init();

void display(uint hdr,uint ten,uint svr);

void delay(uint z);

void keyscan();

void sout(uint dat);

void main()

{   init();          //初始化程序

    temp=65;

    sout(temp);

    while(1)

    {   hdr=temp/100;

        ten=temp/10-hdr*10;

        svr=temp%10;

        keyscan();

     display(hdr,ten,svr);

     if (tsd==0x11)

     sout(temp);

  }

}

void init()    

{    tsd=0x11;

    temp =0;

    TMOD = 0x20;     //定时器1 工作在方式2

    SCON = 0x40;     //串口工作方式为1 , 串行禁止接收

    PCON = 0x00;       //SMOD=0,波特率不加倍;SMOD=1,波特率加倍

    TH1 = 0xfd;     //波特率 9600bps fosc=11.059MHz

    TL1 = 0xfd;

    TR1 = 1;

    ET1=1;

}

void keyscan()      //矩阵键盘扫描

{    uint temp1;

    P3=P3|0xf0;

    temp1=P3 & 0xf0; 

    if(temp1!=0xf0) 

     { 

           delay(15);  

           if(temp1!=0xf0)

           {   temp1=P3 & 0xf0; 

            if(temp1==0xb0)

                {                                  

                    if(hdr==0x09)

                       hdr=0;

                    else hdr++;                             

                         }

                   else     if(temp1==0xd0)

                    {

                            if(ten==0x09)

                           ten=0;

                            else ten++;

                             }

                            else     if(temp1==0xe0)

                            {                            

                            if(svr==0x09)

                                svr=0;

                                 else  svr++;

                             }                             

                else tsd=0x11;

    }   

temp=hdr*100+ten*10+svr;

}

       while(temp1!=0xf0)

    {     P3=P3|0xf0;

        temp1=P3 & 0xf0; 

    }

}

void delay(uint z)         //延时

{

    uint x,y;

for(x=z;x>0;x--)

        for(y=110;y>0;y--);

}

void display(uint hdr,uint ten,uint svr)     //显示

{        

        P0=table[hdr];

        P2=0xf7;

        delay(1);

        P0=table[ten];

        P2=0xfb;

        delay(1);

            

        P0=table[svr];

        P2=0xfd;        

        delay(1);

}

void sout(uint dat) //串口发送一个字节

{

      SBUF = dat;     //待发送的数据写入缓冲区

    while(!TI);     //等待发送完成

    TI = 0;    //清零发送标志位

    tsd=0;

     }

3、原理图:

4、PCB图:

文档

基于LabVIEW的串口通信

课程设计(论文)题目:基于Labview的串口通信院(系):电子工程与自动化学院专业:测控技术与仪器学生姓名:学号:指导教师:职称:2013年1月9日第页共页摘要微机与单片机串行通信端口在系统控制的范畴中一直占据着及其重要的地位,它不仅没有因为时代的进步而遭淘汰,反而在规格上越来越完善,应用也越来越广泛。作为一种基本而又灵活方便的通信方式,串口通信被广泛应用于PC与PC或者PC与单片机之间的数据交换以及其他工业控制与自动控制中。本次设计主要解决上位机与下位机之间的通信问题。关键词:串行通信;单
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top