您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 以PC为上位机-单片机为下位机双向通信
一实验背景串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现PC对单片机的控制而且对在机电控制中具有十分重要的地位,掌握串口通信的实现方法以及上下位机的通信原理对日后进行机电控制的开发具有深远意义。二设计目的1)提高学生的动手能力,以及能够利用所学的知识来完成作品,达到复习知识的目标;2)较为详细了解8051芯片的性能;3)能够了解到单片机系统的基本原理,了解单片机控制原理;4)掌握AT89C51程序控制方法;5)掌握AT89C51C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;6)掌握在PC与单片机在仿真时用到的VirtualSerialPortDriver和串口调试助手的使用方法;7)掌握PC作为上位机以及单片机作为下位机的工作原理;8)通过学习PC与单片机的工作原理及编程方法,提高编程能力以及创新能力;9)培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;10)能够按课程设计的要求编写课程设计报告,能够正确反映设计和实验成果。三设计要求与主要内容:设计要求当运行时,会弹出VirtualTerminal-VT1窗口,PC的串口设置为COM2,在串口调试助手软件中设置串口为COM1,开关断开,PC机发送数据到单片机中即当在串口调试助手软件中输入0123456789时,VirtualTerminal-VT1窗口中显示0123456789,同时数码显示管循环显示0,1,2,3,4,5,6,7,8,9。按下按键时,即单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机1004402121计科本101黄远利1“这是由8051发送的字符串!”。主要内容1)PC上位机与C51下位机的通信原理及串口的使用。2)PC机发送字符给单片机,单片机接收到在数码管上进行显示。3)单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机“这是由8051发送的字符串!”。实验步骤1)启动keiuvision32)新建工程命名为单片机的C语言设计与应用3)新建文件并另存为计算机控制.c4)在SourceGroop1导入文件5)编写代码,并生成C语言设计与应用.hex文件6)在Proteus中设计电路如图3-1示7)在虚拟串口软件VirtualSerialPortDriver中设置串口COM2与COM1(如图3-2示)利用这个软件将PC的模拟串口1与模拟串口3连接一起,这两串口就可以进行通信了。8)在串口调试助手中设置串口为COM1,在仿真的PC中设置串口为COM2,而且波特率与校验位停止位数据位设置一致,设置参数参考图3-29)将计算机控制.hex文件导入Proteus中10)观察并记录实验数据,得出实验结论。1004402121计科本101黄远利2图3-1图3-2四设计程序原理:(包含仿真图和流程图)1)主程序流程图YN初始化启动定时器串口寄存器设置设置波特率单片机接收PC发送的数字字符判断是否接收到-1结束继续接收数据直到收到-11004402121计科本101黄远利32)程序流程图:开始初始化启动定时器设置接收中断函数外部中断0设置结束按下按键,单片机回发给PC机通过串口设置PC发送字符串至单片机,单片机通过显示管显示发送的数字1004402121计科本101黄远利43)仿真图运行前如图4-1示PC发送字符串至单片机,单片机通过显示管显示发送的数字如图4-2示1004402121计科本101黄远利5单片机回发给PC机如图4-2示五程序代码#includereg51.h#defineucharunsignedchar#defineuintunsignedintucharReceive_Buffer[101];//接收缓冲ucharBuf_Index=0;//缓冲空间索引//数码管编码ucharcode1004402121计科本101黄远利6DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//延时voidDelayMS(uintms){uchari;while(ms--)for(i=0;i120;i++);}//主程序voidmain(){uchari;P0=0x00;Receive_Buffer[0]=-1;SCON=0x50;//串口模式1,允许接收TMOD=0x20;//T1工作模式2TH1=0xfd;//波特率9600TL1=0xfd;PCON=0x00;//波特率不倍增EA=1;EX0=1;IT0=1;ES=1;IP=0x01;TR1=1;while(1){for(i=0;i100;i++){//收到-1为一次显示结束if(Receive_Buffer[i]==-1)break;P0=DSY_CODE[Receive_Buffer[i]];DelayMS(200);}1004402121计科本101黄远利7DelayMS(200);}}//串口接收中断函数voidSerial_INT()interrupt4{ucharc;if(RI==0)return;ES=0;//关闭串口中断RI=0;//清接收中断标志c=SBUF;if(c='0'&&c='9'){//缓存新接收的每个字符,并在其后放-1为结束标志Receive_Buffer[Buf_Index]=c-'0';Receive_Buffer[Buf_Index+1]=-1;Buf_Index=(Buf_Index+1)%100;}ES=1;}voidEX_INT0()interrupt0//外部中断0{uchar*s=这是由8051发送的字符串!\r\n;uchari=0;while(s[i]!='\0'){SBUF=s[i];while(TI==0);1004402121计科本101黄远利8TI=0;i++;}}六实验结果当在串口调试助手软件中输入0123456789时,以及在proteus7.8中运行时,VirtualTerminal-VT1窗口中显示0123456789,同时数码显示管循环显示0,1,2,3,4,5,6,7,8,9。按下按键时,即单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机“这是由8051发送的字符串!”。七实验体会这次的实验提高了我的设计能力与对电路的分析能力。同时在软件的编程方面得到了很大的提高,使编程能力得到加强,在此同时对所学的单片机知识得到很大的巩固与加强。本次实验熟悉单片机的使用功能,熟悉了KeiluVision进行程序调试,利用proteus7.8进行硬件设计。在本实验中,我明白了以PC为上位机单片机为下位机可以进行通信,通过编写C语言程序显示管是可以反映出PC与单片机的通信过程,在以后的实验中我们可以通过一些可以连接LED、示波器、显示管等来了解如AT89C51、两机之间通信原理、DS12C887等的工作原理及组成部分作用的了解。明白了PC与单片机之间的通信要用max232来连接,以及设置波特率的时候一定要一致。在仿真中设置PC上位机与单片机下位机通信时必须要安装VirtualSerialPortDriver和串口调试助手软件,在其帮助下,才能完成软件设计。
本文标题:以PC为上位机-单片机为下位机双向通信
链接地址:https://www.777doc.com/doc-2138823 .html