实验二RS-232串口通信实验

时间:2024.4.20

昆明理工大学信息工程与自动化学院学生实验报告

2011   2012   学年第  2  学期

课程名称:嵌入式技术基础与实验   开课实验室:信自楼234   2012 年 5 月 10 日

注:报告内容按实验须知中七点要求进行。

一、实验目的

通过该实验实习,进一步熟悉CodeWarrior嵌入式开发系统环境、汇编和C语言以及调试方式;加强串口通信(SCI)基本原理及编程原理;理解课本中的程序代码;分别运用查询方式、中断方式实现通信。

二、实验原理及基本技术路线图(方框原理图)

AW60 MCU的SCI有2个,能接收其他设备信息供MCU处理,也能将MCU内部的信号输出给外部设备,显示数据或者控制对象。SCI的使用涉及波特率寄存器、控制寄存器、状态寄存器和数据寄存器。接收方和发送方必须在相同的波特率和模式的条件下接收和发送信息。引脚连接图如图4-1所示。

 

 

图4-1  SCI的连接图

三、所用仪器、材料(设备名称、型号、规格等)

飞思卡尔试验箱

四、实验方法、步骤

1、资源使用

SCI连接图雷同演示实验,即MCU的SCI发送引脚E口的1号引脚接MAX232的TTL电平接收引脚11号,MCU的SCI接收引脚E口的0号引脚接MAX232的TTL电平发送引脚12号。

另外,要讲SCI线一头接PC的COM1,一头接实验箱的COM1或COM2,小灯的连接是用D口的1号引脚和一个小灯接口连接。

波特率为19200bps,计算波特率寄存器的值,计算过程:

公式为

      SCI1BD=fsys/(波特率*16)(其中fsys=sysclk*1000000)

      SCI1BD=20000000/(19200*16)=65

然后将其结果供后语句使用。

SCI1BDH=0x00;

SCI1BDL=0x41;

2、硬件设计

先阅读源程序,查看相应的端口的宏定义,再根据端口号来接线。

3、软件设计(主要的程序流程图)

MCU端程序流程图

4、编程(关键性程序段)

串行通信中断方式的主程序部分代码:

//-------------------------------------------------------------------------*

#include "Includes.h"

void main(void)

{

   //1 关总中断

    DisableInterrupt();     //禁止总中断

    //2 芯片初始化

    MCUInit();

    //3 模块初始化

    //3.1 指示灯初始化

    Light_Init(Light_Run_PORT,Light_Run,Light_OFF);

    //3.2 串行口初始化

    //使用SCI1模块,使用系统时钟作为SCI的时钟源

    //波特率为38400

    SCIInit(SCI_NUM_1,SYSTEM_CLOCK,38400);

    //4 开放中断

    EnableSCIReInt();        //开放SCI接收中断

    EnableInterrupt();      //开放总中断

   

    //5 主循环                                                                                                             

    while (1)                     

    {

    }

}

2)、串行中断方式子程序部分代码:

interrupt void SCI1_Recv(void)

{   

    uint8 i;

    uint8 SerialBuff[1];                          //存放接收数据的数组

   

    DisableInterrupt();                  //禁止总中断

   

    i = SCIReN(SCI_NUM_1,1,SerialBuff);          //等待接收1个数据

    if (i == 0) SCISendN(SCI_NUM_1,1,SerialBuff);//发送接到的数据

    if (SerialBuff[0]=='1')

      Light_Control(Light_Run_PORT,Light_Run,Light_ON);

    if (SerialBuff[0]=='0')

      Light_Control(Light_Run_PORT,Light_Run,Light_OFF);

   

    EnableInterrupt();                   //开放总中断

}

五、实验过程原始记录(数据、图表、计算等)

六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸)

   本次实验虽属简单小型实验,却着实遇到不少问题,通过实验,我也进一步发现了自己在动手能力和自学能力方面的不足,当然对本实验所涉及到的东西也算是有了不少兴趣,感觉越来越有意思了。同时也对rs232串口的发送与接收信息有了进一步的了解,初步认识了MODBUS协议传输数据的原理,相信本实验对我日后的进一步学习有莫大帮助。


第二篇:基于RS232串口通信实验


基于RS232串口通信实验

一、实验目的

1.  通过串口实现单片机与PC机的数据通信。

2.         了解下位机与上位机通讯过程。

二、实验内容

使用串口实现单片机与PC机的数据通信。要求按下单片机系统板上中断INT0时,单片机向PC机发送0-9这十个数字,并用“串口调试助手”接收显示。在“串口调试助手”上发送0-9中任何一个数字时,单片机用8个发光二极管显示对应的ASCII码值。

三、实验环境

1、编程软件keil

2、仿真软件proteus

四、实验原理

单片机与PC机之间通信原理图如图1所示。S3键接P3.2,作为外部中断INT0输入端,当S3按下,产生中断,执行中断程序发送0-9这十个数字,在PC机上接收并显示。

图1 单片机与PC机之间通信

五、 实验过程

1、实现实验要求

#include<reg51.h>

unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,

                     0x88,0x83,0xc6,0xa1,0x86,0x8e};//7段数码管共阳极0-9

unsigned  char shu[]={0x30,0x31,0x32,0x33,0x34,0x35,

                               0x36,0x37,0x38,0x39};     //0—9的ASCLL码

unsigned char a,i=0;  //定义变量

void main()

{  ES=EX0=EA=1; //开启中断

      IT0=1;         //使得外部方式0为边沿触发

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

      SCON=0X50;      //使用串行接口方式一

      TH1=0XFD;    //设置T1的初始值,使得波特率为9600

      TL1=0XFD;        

      TR1=1;            //启动T1定时器

      P0=0xff;    //给P0 赋值

      while(1);    //主程序死循环

}

void intr1() interrupt 0  //外部中断0

{ ES=0;                              //关闭串口中断

   for (i=0;i<10;i++)      //循环发送0-9

      {SBUF=shu[i];            //传送0-9的ASCLL码

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

      TI=0;                      //发送标志位置0

      }ES=1;                         //打开串口中断

}

void intr() interrupt 4       //串口中断

{

      a=SBUF-'0';                 //将ASCLL码转化为字符型

      P0=tab[a];                    //给P0口赋值

      RI=0;                       //接收标志位置0

}

2、仿真图

六、 实验结论

这次试验被卡住了,其实程序并不怎么难写,第一个写出来,第二个就没问题,主要就是仿真不行,首先就是不知怎么用上虚拟串口,后用上VSPR后,多连接了RS232,其实虚拟串口就是一个RS232,无需再加。最后就是串口助手中收到的都是乱码,应将单片机的晶振改为11.0592MHz而不是12MHz。

更多相关推荐:
串口通信实验报告

基于Labview的串行通信接口实验报告一实验目的通过软件Labview编写前面板和程序框图通过该面板实现计算机与外围设备的串口通信设置好通信端口波特率等参数后在输入控件中输入数据字符当点击发送按钮时下位机发生...

单片机串口通讯实验报告

实验十单片机串行口与PC机通讯实验报告实验目的1掌握串行口工作方式的程序设计掌握单片机通讯的编制2了解实现串行通讯的硬环境数据格式的协议数据交换的协议3了解PC机通讯的基本要求实验器材1G6W仿真器2MCS51...

基于VC++ 6.0的串口通信实验报告

网络与通信实验报告网络与通信实验报告题目串口通行实验班级0309103学号030910338姓名田静指导老师付大丰日期20xx1021网络与通信实验报告一实验要求把两台计算机的串口通过串口线连在一起通过串口实现...

串口通信实验报告

基于LabwindowsCVI的串行通信接口实验报告一实验目的通过软件LabwindowsCVI编写仪器面板通过该面板实现计算机与外围设备的串口通信设置好通信端口波特率等参数后在TextBox控件中输入数据字符...

rs232串口通信实验报告

计算机网络实验实现RS232串口通信程序及MODBUS协议的编程一实验目的1熟悉并掌握RS232串口标准及原理2实现PC机通过RS232串口进行数据的收发3掌握MODBUS协议4掌握MODBUS协议编程的编写二...

嵌入式ARM串口实验报告

实验五串口通信实验1实验目的1掌握ARM的串行口工作原理2编程实现ARM的UART通讯3掌握S3C2410寄存器配置方法2实验设备1S3C2410嵌入式开发板JTAG仿真器2软件PC机操作系统WindowsXP...

串口通信实验报告

华南农业大学实验报告目录1实验任务和目的12实验准备13实验步骤14实验分析与总结11分析12总结31实验任务和目的了解串行通信的背景知识后通过三线制制作一条串口通信线PCPC并编程实现两台PC间通过RS232...

西安邮电大学串口通信实验报告

高级Internet实验报告题目串口通信学生姓名班级软件工程1202学号指导老师王文浪西安邮电大学计算机学院20xx年6月10日一实验目的1了解串口通信的通信的原理2串口包的安装Windows下3解使用java...

串口通信实验

串口通信实验实验报告学号20xx12235027姓名曹勇发第4次

串行通信实验,南京理工大学紫金学院单片机实验报告

单片机实验报告实验名称姓名学号班级时间串行通信实验通信20xx11南京理工大学紫金学院电光系一实验目的1理解单片机串行口的工作原理2学习使用单片机的TXDRXD口3了解MAX232芯片的作用二实验原理MCS51...

串口通信电平转换实验报告

课程实验报告一实验名称串口232电平转换电路设计与软件实现课程名称现场总线技术一实验目的及要求实现两台电脑的RS232通过RS485接口协议的通信1熟悉串口结构及参数指标2熟悉芯片的内部结构工作机制3完成电路原...

RS232串口通信控制器实验报告

摘要本实验报告为RS232串口通信控制器实验设计了基于VHDL描述的RS232串口通信控制器通过串口调试工具实现PC和CPLD互发和接收数据完成的功能包括实现收发一帧10个bit波特率为9600的串口通信控制器...

串口通信实验报告(34篇)