预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共21页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE\*MERGEFORMAT21 PC与51单片机串口通信 串行通信是计算机和外设进行通讯、对外设进行监控并获取由外设采集到的监测数据的一个非常重要的手段。由于其所用的传输线少,成本低,实现起来方便易行,因而得到广泛的应用。STC89C52RC有一个可编程的全双工串行通信接口,可以方便的实现PC机与其之间的串行通信。 一、总体方案 系统中采用STC89C52RC/STC89C54RD+单片机作为下位机,PC机为上位机,二者通过CH340将PC的USB口转成RS232的串行口接收或上传数据。单片机部分的程序采用C语言编程,用KeiluVision4编译后产生HEX文件下载到单片机内,从而实现数据收发。PC端采用一个串口调试助手(sscom4.2)或MATLABGUI实现数据的收发。 二、具体方案 1、简单通信测试程序 本程序为了测试通信方式是否合适,以便于下一步增加程序的内容。 (1)利用STC提供STC-ISP-V4.83软件检查MCU选项 MCUTypeis:STC89C54RD+ MCUFirmwareVersion:3.2C Chinese:MCU固件版本号:3.2C Doublespeed/双倍速:12T/单倍速 振荡放大器增益:fullgain 下次下载时P1.0/P1.1与下载无关 内部扩展AUX-RAM:允许访问(强烈推荐) 下次下载用户应用程序时将数据Flash区擦除:NO 用户软件启动内部看门狗后:复位关看门狗 ALEpin仍为ALE 内部时钟频率:11.061806M 外部时钟频率:11.061806M (2)串行口初始参数设定 串行口工作方式为方式1(10位异步收发),波特率为9600bps,用定时器1作波特率发生器,选用定时器模式2,其它详见程序及说明。 (3)程序功能说明 通过串口调试助手,向单片机发送字符,发送字符的末尾需加“!”,让单片机识别数据接收完毕,返回“Waitcommand!”字符串。当单片机接收一个字符时,发光二极管端引脚取反一次,所以其亮、灭的状态改变一次。 例如:初始状态为灭。当发送“12!”时,取反三次,发光二极管变亮,返回“Waitcommand!”字符串(如图(1)所示);当发送“123!”时,取反四次,发光二极管状态不变,但返回“Waitcommand!”字符串(如图(2)所示)。 图(1)a图(1)b 图(2)a图(2)b (4)单片机内运行的程序 #include<reg51.h> sbitP1_2=P1^2; //接发光二极管 bitflag;//单片机数据发送标志位 bitflag_inter;//单片机数据接收完标志位 unsignedchara; voidSendData(chardat);//发送字符 voidSendString(char*s);//发送字符串 voidmain() { SCON=0x50;//串行通信方式1,接收允许 PCON=0x00;//单倍频 TMOD=0x20;//设置定时器T1为模式2,定时方式 TH1=TL1=0xFD;//波特率为9600,晶振11.0594MHz TR1=1;//定时器T1开始计数 EA=1;//中断允许 ES=1;//串行口中断开放 while(1) { if(flag_inter==1) { flag_inter=0;//标志位清0 SendString("Waitcommand!\n"); } } } //串口接收发送中断 voidUart_Isr()interrupt4using1 { if(RI) { RI=0;//接收中断标志 a=SBUF; P1_2=!P1_2;//数据送到P0口 if(a=='!') { flag_inter=1;//数据接收完毕,置1 } } if(TI) { TI=0;//发送中断标志 flag=0;//标志位清0 } } //向串口发送字符 voidSendData(chardat) { while(flag);//等待数据发送 ACC=dat; flag=1;//标志位置1 SBUF=ACC;//数据装入SBUF } //向串口发送字符串 voidSendString(char*s) { while(*s)//字符串发送完否 { SendData(*s++);//发送字符,并指针指向下一字符 } } 2、利用串口调试助手实现串行口数据收发 本程序可以实现PC机与单片机之间数据双向传输、互发 (注:由CH37X451电路板原理图可知CH452数码管驱动及键盘控制芯片为四线接口,CH452_DCLK=P1^7,CH45