实验4 串口通信

单片机实验报告

报告人: 许海奔

班级: 通信121

学号: 201200402015

实验4 串口通信

实验目的:

1、掌握异步串行通信工作原理;

2、 熟悉工作方式选择和波特率设置。

实验要求:

1、设置单片机串口工作在方式1,采用定时器1工作在方式2作为波特率发生器,实现速度为9600的传输;

2、实现可由单片机发送自身学号至计算机,由串口助手实现上位机接收。

提交材料:

实验报告包括(原理图,源代码及注释,实验心得)

1.实验原理:

用protues仿真出。如图1

                              图(1)

实验效果:图2

  

                                    图(2)

2.源代码及注释:

(1)串口接收数据代码

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

#include <reg52.h>

   

#define uchar  unsigned char

#define uint   unsigned int

uchar buf;

sbit beep=P2^3;

void main(void)

{

    SCON=0x50;           //设定串口工作方式

    PCON=0x00;           //波特率不倍增

           

    TMOD=0x20;           //定时器1工作于8位自动重载模式, 用于产生波特率

    EA=1;

    ES = 1;              //允许串口中断

    TL1=0xfd;

    TH1=0xfd;             //波特率9600

    TR1=1;

    while(1);       

}

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

  串行中断服务函数

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

void  serial() interrupt 4

{

   ES = 0;                //关闭串行中断

   RI = 0;                //清除串行接受标志位

   buf = SBUF;            //从串口缓冲区取得数据

  switch(buf)

   {

      case 0x31:  P1=0xfe;beep=1;break;  //接受到1,第一个LED亮        

      case 0x32:  P1=0xfd;beep=1;break;  //接受到2,第二个LED亮       

      case 0x33:  P1=0xfb;beep=1;break;  //接受到3,第三个LED亮       

      case 0x34:  P1=0xf7;beep=1;break;  //接受到4,第四个LED亮      

      case 0x35:  P1=0xef;beep=1;break;  //接受到5,第五个LED亮           

      case 0x36:  P1=0xdf;beep=1;break;  //接受到5,第六个LED亮                  

      case 0x37:  P1=0xbf;beep=1;break;  //接受到5,第七个LED亮

      case 0x38:  P1=0x7f;beep=1;break;  //接受到5,第八个LED亮

      default:    beep=0;P1=0xff;break;  //接受到其它数据,蜂鸣器响        

   }

   ES = 1;    //允许串口中断

}

(2)串口发送一串字符代码:

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

#include <reg52.h>

#define jingzhen     11059200UL         /*使用22.1184M晶体*/  

#define botelv   9600UL           /*波特率定义为9600*/

unsigned char zifuchuan[]="20026541";          //待显示字符。

volatile unsigned char sending;

//sbit s2=P3^4;

void delay(unsigned char i)

{

    unsigned char j,k;

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

        for(k=90;k>0;k--);

}

void init(void)               //串口初始化

{

 EA=0; //暂时关闭中断

 TMOD&=0x0F;  //定时器1模式控制在高4位

 TMOD|=0x20;    //定时器1工作在模式2,自动重装模式

 SCON=0x50;     //串口工作在模式1

 TH1=256-jingzhen/(botelv*12*16);  //计算定时器重装值

 TL1=256-jingzhen/(botelv*12*16);

 PCON|=0x80;    //串口波特率加倍

 ES=1;         //串行中断允许

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

 REN=1;        //允许接收

 EA=1;         //允许中断

}

void send(unsigned char d)        //发送一个字节的数据,形参d即为待发送数据。

{

 SBUF=d; //将数据写入到串口缓冲

 sending=1;   //设置发送标志

 while(sending); //等待发送完毕

}

void sendc(unsigned char * pd)

{

 while((*pd)!='\0') //发送字符串,直到遇到0才结束

 {

  send(*pd); //发送一个字符

  pd++;  //移动到下一个字符

 }

}

void main()

{

    init();

    while(1)

    {         

      sendc(zifuchuan);

    }

}

   

void uart(void) interrupt 4     //串口发送中断

{

 if(RI)    //收到数据

 {

  RI=0;   //清中断请求

 }

 else      //发送完一字节数据

 {

  TI=0;

  sending=0;  //清正在发送标志

 }

}

3.实验心得:

通过本次实验,更加熟练地掌握了Keil C51软件与proteus软件使用。掌握了矩阵键盘工作原理及数码管显示原理。并懂得了用矩阵键盘设计一些简单的实物,如篮球计分器等。

 

第二篇:实验四、串口通信实验

实验四  串口通信实验

一.实验目的:

1.掌握ARM的串行口工作原理。

2.学习并编程实现AR,的UART通信。

3.掌握S3C2410X寄存器配置方法。

二、实验设备:

PC机一台  ADT IDE集成开发环境 JXARM9-2410教学实验箱

三、实验内容:

 实现查询方式串口的收发功能。接受来自串口(通过超级终端)的字符,并将接收到的字符发送到超级终端。

四、基础知识:

1.异步串行通讯

(1)异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。

(2)数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。

接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。

(3)在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。

2.异步串行通信中的字符传送格式

 


q  开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。

q  每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。

q  至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。

3.DB-25  DB-9引脚定义

DB-25  DB-9引脚说明:

RS-232C接口通信的两种基本连接方式 :

五、实验步骤:

1.新建一个工程UART,将对应的文件添加到工程中去。

2. 对工程进行设置,然后编译UART。

3 .将计算机的串口线接到实验教学系统的UART0上。

4.运行超级终端,选择正确的串口号,并将串口设置为:波特率(115 200)、奇偶校验(None)、数据位数(8)和停止位数(1),无流控。打开串口,超级终端的配置如图:

5.下载程序并运行。如果程序正确,则在超级终端中输入的数据将回到超级终端中。

实验报告要求

q  简述串行接口的工作原理以及串行接口的优缺点

q  RS-232C的最基本数据传送引脚是哪几根?画出双机通讯的基本接线图

q  简述串行接口通讯程序设计的基本步骤

相关推荐