标题: 单片机通信源程序+图片+总结+实验报告 [打印本页]

作者: 张周静    时间: 2018-3-20 17:46
标题: 单片机通信源程序+图片+总结+实验报告
电子与信息工程学院实验报告
  
    名:
  
  张周静
  
  学号:
  
  2014022063
  
  
班级:
  
  电子142
  
  课程名称:
  
  单片机原理与应用实验
  
  实验时间:
  
  2016.11.9
  
  项目名称:
  
  双机通信(串口)
  

一、实验目的
1.了解单片机串行口的内部结构及工作原理。
2.理解串行双机通信的原理。
3.掌握单片机串行通信C51程序的设计、仿真与调试。
二、实验设备
PC                                          一套
三、实验内容

1.   硬件连接

电路图如图5所示,甲机和乙机的串行口RXDTXD互相连接,甲机的P1口接有按键K1K8P2口接有LEDD9D16,乙机的P1口接有按键K9K16P2口接有LEDD1D8

1  单片机方式1双机通信的连接

2.   实现功能

编程实现甲机的K1K8可以控制乙机的D1D8,同时乙机的K9K16能够控制甲机的D9D16
四、实验步骤
1编程实现甲机的K1~K8控制乙机的D1~D8。
甲机程序代码:


  1. #include<reg51.h>
  2. void main(void)
  3. {
  4.          unsigned char temp = 0;
  5.          TMOD = 0x22;                  //设置定时器T1为方式2
  6.          TH1 = 0xfd;                              
  7.          TH0 = 0xfd;                              
  8.          SCON = 0x50;          //串口方式1发送:SM1SM0=10,且REN = 0所以不发送
  9.          PCON = 0x00;          //串口波特率不倍增
  10.          TR1 = 1;                     //启动T1定时器
  11.          TR0 = 1;
  12.          P1 = 0xff;                           //设置P1为输入,端口初始化。
  13.          TI = 1;
  14.          //SBUF = temp;
  15.          while(1)
  16.          {
  17.                   while(TI == 0);        //如果TI == 0 ,表示未发送完,等待发送完毕
  18.                   TI = 0;       //已经发送完毕,则将TI清0
  19.                   temp = P1;      //读入P1口开关的状态数据
  20.                   SBUF = temp;          //数据送串行口发送
  21.                                                       //乙级接收

  22.                   while(RI == 0);//若RI == 0,则表示没有接到数据,等待
  23.                   RI = 0;      //接收收据后进行清0
  24.                   temp = SBUF;          //读取数据存入temp中
  25.                   P2 = temp;
  26.          }
  27. }
复制代码



乙机程序代码:



  1. #include<reg51.h>
  2. void main(void)
  3. {
  4.        unsigned char temp = 0;
  5.        TMOD = 0x22;     //设置定时器T1为方式2
  6.        TH1 = 0xfd;          TL1 = 0xfd;
  7.        TH0 = 0xfd;   TL0 = 0xfd;
  8.        SCON = 0x50;      //设置串口为方式1接收,REN = 1
  9.        PCON = 0x00;      //SMOD = 0;,波特率不加倍
  10.        TR1 = 1; //开启定时器T1
  11.        TR0 = 1;
  12.        TI = 1;
  13.        //SBUF = temp;
  14.        while(1)
  15.        {

  16.               while(RI == 0);//若RI == 0,则表示没有接到数据,等待

  17.               RI = 0;    //接收收据后进行清0

  18.               temp = SBUF;      //读取数据存入temp中

  19.               P2 = temp;


  20.               while(TI == 0);     //如果TI == 0 ,表示未发送完,等待发送完毕

  21.               TI = 0;    //已经发送完毕,则将TI清0

  22.               temp = P1;    //读入P1口开关的状态数据

  23.               SBUF = temp;      //数据送串行口发送
  24.        }
  25. }
复制代码


Protues仿真图:
五、实验总结
         通过本次实验,让我对单片机的串行口的内部结构有了更加深入的学习和理解,知道了单片机不仅可以独立使用还能与其他单片机进行互联,通过这种方式可以增强单片机的功能,在以后的单片机使用上有了更多的选择。

完整的Word格式文档51黑下载地址:
双机通信(串口).doc (453 KB, 下载次数: 17)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1