找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2419|回复: 0
打印 上一主题 下一主题
收起左侧

单片机通信源程序+图片+总结+实验报告

[复制链接]
跳转到指定楼层
楼主
电子与信息工程学院实验报告
  
    名:
  
  张周静
  
  学号:
  
  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)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表