双机通信实验报告.docVIP

  • 807
  • 0
  • 约1.76千字
  • 约 6页
  • 2017-02-08 发布于重庆
  • 举报
双机通信实验报告

项目五 单片机间的双机通信 班级: 学号: 姓名: 一、任务目的 通过单片机之间的双机通信设计,进一步学习定时器的功能和编程应用,理解串行通信与并行通信两种通信方式的异同,掌握串行通信的重要指标:字符帧和波特率,初步了解MCS-51系列单片机串口的使用方法。 二、设计要求 本任务是简历一个简单的单片机串行口双机通信测试系统。系统中,发射与接收各用一套AT89C51单片机电路,称为甲机和乙机。编制程序,使甲,乙双方能够进行串行通信。要求将甲机内的多个数据(例发送给乙机,并在乙机的8个数码管上显示出来。 三、系统硬件电路设计 可分为最小系统、甲机发送、乙机接收显示三个单元电路,要求画出各部分电路图,写出工作原理。 最小系统: 甲机发送: 乙机接收显示: 显示部分的: 现实中的接线和显示: 四、软件设计 甲机的程序: #include reg51.h void main() //主函数 {unsigned char i; unsigned char send[]={0x01,0x09,0x09,0x02,0x1,0x00,0x00,0x09}; //定义要发送的数据,数据为生日的八位数 TMOD=0x20; //定时器1工作于方式2 TL1=0xf4; //波特率为2400b/s TH1=0xf4; TR1=1; SCON=0x40; //定义串行口工作方式1 for (i=0;i8;i++) {SBUF=send[i]; //发送第i个数据 while(TI==0); //查询等待发送是否完成 TI=0; //发送完成,TI由软件清零 } while(1);} 乙机的程序: #include reg51.h code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6D,0x7D,0x07,0x7f,0x6f}; //定义0~9显示字码型 unsigned char buffer[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //定义接收数据缓冲区 void disp(void); //显示函数声明 void main() //主函数 {unsigned char i; TMOD=0x20; //定时器1工作于方式2 TL1=0xf4; //波特率定义 TH1=0xf4; TR1=1; SCON=0x40; //定义串行口工作方式1 for(i=0;i8;i++) { REN=1; //允许接收 while(RI==0); //查询等待接收标志位为1,表示接收到数据 buffer[i]=SBUF; //接收数据 RI=0; //RI由软件清零 } for(;;) disp(); //显示接收数据 } void disp() {unsigned char i,j; for(i=0;i8;i++) { P2=i; P0=(tab[buffer[i]]); //送显示字码型,buffer[i]作为数组分量的下标 for(j=100;j5;j--); //显示延时 }} 五、系统调试 画proteus图,了解单片机最小系统,选用的元件有AT89C51, 编写程序。 编译程序并导入画好的proteus中,查看情况,调试。 在调试过程中,乙机上不能显后来请教了同学知道是程序出了问题,改好程序示出来了。 六、心得体会 经过这次练习,我对单片机的应用有了更深的认识了,知道了串行通信和并行通信之间的差别,也知道了串行通信分为单工、半双工和全双工三种制式。而我们这个实验中用的就是全双工的制式。我还学会了怎么设置波特率,也初步了解了串行口的工作方式。这次实验,对我了解单片机的功能有很大的帮助。 5

文档评论(0)

1亿VIP精品文档

相关文档