以PC为上位机,单片机为下位机双向通信

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2)较为详细了解8051芯片的性能;
3)能够了解到单片机系统的基本原理,了解单片机控制原理;
4)掌握AT89C51程序控制方法;
5)掌握AT89C51 C语言中的设计和学会分析程序,进而能够根据自己的需要编写代码;
6)掌握在PC与单片机在仿真时用到的Virtual Serial Port Driver和串口调试助手的使用方法;
7)掌握PC作为上位机以及单片机作为下位机的工作原理;
8)通过学习PC与单片机的工作原理及编程方法,提高编程能力以及创新能力;
9)培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;
10)能够按课程设计的要求编写课程设计报告,能够正确反映设计和实验成果。
三设计要求与主要内容:
设计要求
当运行时,会弹出Virtual Terminal-VT1窗口,PC的串口设置为COM2,在串口调试助手软件中设置串口为COM1,开关断开,PC机发送数据到单片机中即当在串口调试助手软件中输入0123456789时,Virtual Terminal-VT1窗口中显示0123456789,同时数码显示管循环显示0,1,2,3,4,5,6,7,8,9。按下按键时,即单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机
8) 在串口调试助手中设置串口为COM1,在仿真的PC中设置串口为COM2,而且波特率与校验位停止位数据位设置一致,设置参数参考图3-2
9) 将计算机控制.hex文件导入Proteus中
10)观察并记录实验数据,得出实验结论。
图3-1
图3-2
四设计程序原理:(包含仿真图和流程图)
1)主程序流程图
YN
}
//主程序
void main()
{
uchar i;
P0=0x00;
Receive_Buffer[0]=-1;
SCON=0x50;//串口模式1,允许接收
TMOD=0x20;//T1工作模式2
TH1=0xfd;//波特率9600
TL1=0xfd;
PCON=0x00;//波特率不倍增
EA=1;EX0=1;IT0=1;
}
}
//串口接收中断函数
void Serial_INT() interrupt 4
{
uchar c;
if(RI==0) return;
ES=0;//关闭串口中断
RI=0;//清接收中断标志
c=SBUF;
if(c>='0'&&c<='9')
{//缓存新接收的每个字符,并在其后放-1为结束标志
Receive_Buffer[Buf_Index]=c-'0';
一实验背景
串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现PC对单片机的控制而且对在机电控制中具有十分重要的地位,掌握串口通信的实现方法以及上下位机的通信原理对日后进行机电控制的开发具有深远意义。
二设计目的
1)提高学生的动手能力,以及能够利用所学的知识来完成作品,达到复习知识的目标;
2)程序流程图

3)仿真图
运行前如图4-1示
PC发送字符串至单片机,单片机通过显示管显示发送的数字
如图4-2示
单片机回发给PC机如图4-2示
五程序代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar Receive_Buffer[101];//接收缓冲
Receive_Buffer[Buf_Index+1]=-1;
Buf_Index=(Buf_Index+1)%100;
}
ES=1;
}
void EX_INT0() interrupt 0//外部中断0
{
uchar *s="这是由8051发送的字符串!\r\n";
uchar i=0;
while(s[i]!='\0')
七 实验体会
这次的实验提高了我的设计能力与对电路的分析能力。同时在软件的编程方面得到了很大的提高,使编程能力得到加强,在此同时对所学的单片机知识得到很大的巩固与加强。本次实验熟悉单片机的使用功能,熟悉了Keil uVision 进行程序调试,利用proteus7.8进行硬件设计。在本实验中,我明白了以PC为上位机单片机为下位机可以进行通信,通过编写C语言程序显示管是可以反映出PC与单片机的通信过程,在以后的实验中我们可以通过一些可以连接LED、示波器、显示管等来了解如AT89C51、两机之间通信原理、DS12C887等的工作原理及组成部分作用的了解。明白了PC与单片机之间的通信要用max232来连接,以及设置波特率的时候一定要一致。在仿真中设置PC上位机与单片机下位机通信时必须要安装Virtual Serial Port Driver和串口调试助手软件,在其帮助下,才能完成软件设计。
3)新建文件并另存为计算机控制.c4)在SourceGroop1导入文件 5)编写代码,并生成C语言设计与应用.hex文件6)在Proteus中设计电路如图3-1示
7)在虚拟串口软件Virtual Serial Port Driver中设置串口COM2与COM1(如图3-2示)利用这个软件将PC的模拟串口1与模拟串口3连接一起,这两串口就可以进行通信了。
ES=1;IP=0x01;
TR1=1;
while(1)
{
for(i=0;i<100;i++)
{//收到-1为一次显示结束
if(Receive_Buffer[i]==-1) break;
P0=DSY_CODE[Receive_Buffer[i]];
DelayMS(200);
}
DelayMS(200);
“这是由8051发送的字符串!”。
主要内容
1)PC上位机与C51下位机的通信原理及串口的使用。
2)PC机发送字符给单片机,单片机接收到在数码管上进行显示。
3) 单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机“这是由8051发送的字符串!”。
实验步骤
1) 启动keiuvision32)新建工程命名为单片机的C语言设计与应用
{
SBUF=s[i];
while(TI==0);
TI=0;
i++;
}
}
六 实验结果
当在串口调试助手软件中输入0123456789时,以及在proteus7.8中运行时,Virtual Terminal-VT1窗口中显示0123456789,同时数码显示管循环显示0,1,2,3,4,5,6,7,8,9。按下按键时,即单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机“这是由8051发送的字符串!”。
uchar Buf_Index=0;//缓冲空间索引
//数码管编码
ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
/来自百度文库延时
void DelayMS(uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
相关文档
最新文档