- 1、本文档共110页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章串行口报告
} void sre(void) /*接收数据函数*/ { uchar p,i; rrdy=0; while(1) ; { p=0; /*初始化校验和为0*/ for(i=0; i Bytenum; i++); { while(RI!=1) ;RI=0; tdata[i]= SBUF; p+=rdata[i]; } while(RI!=1) ;RI=0; if(SBUF!==p){ SBUF=0x00;break;} /*校验和相同,发00H*/ else { SBUF=0xff; while(TI!=1) ;TI=0;/*校验不同,发FFH,重新接收*/ } } SM2=1; ES=1; } 7.5.5 单片机与PC机的串行通信 测控系统中,常使用单片机进行数据采集,但由于单片机的数据存储容量和数据处理能力都较低,所以一般情况下单片机通过串口与PC机串口相连,把采集到的数据传送到PC机上,再在PC机上进行数据处理。由于单片机的输入输出是TTL电平,而PC机配置的都是RS-232标准串行接口,为9针“D”型连接器(插座),如图7-22所示。表7-3为RS-232C的“D”型9针插头的引脚定义。 图7-22 “D”型9针插头引脚定义 图7-23 单片机与PC机的串行通信接口 由于两者的电平不匹配,因此必须把单片机输出的TTL电平转换为RS-232电平。单片机与PC机的接口方案如图7-23。图中所用的电平转换芯片为MAX232,接口连接只用3条线,即RS-232插座中的2脚、3脚与5脚。 一、单片机向计算机发送数据 【例7-8】单片机向计算机发送数据的接口电路如图7-23。要求单片机通过串行口的TXD脚向计算机串行发送8个数据字节。实际上单片机向计算机与单片机向单片机发送数据的方法是完全一样的。单片机向计算机发送数据的参考程序如下。 #include reg51.h code Tab[ ]={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f } /*欲发送的流水灯控制码数组,定义为全局变量*/ void send(unsigned char dat ) { SBUF=dat; /*待发送数据写入发送缓冲寄存器*/ while(TI==0); /*串口未发送完,等待*/ ; /*空操作*/ TI=0; /*一个字节发送完毕,软件将TI标志清0*/ } /*主函数*/ void main(void) { unsigned char i; TMOD=0x20; /*设置T1为定时器方式2*/ SCON=0x40; /*串行口方式1,TB8=1*/ #include reg51.h code Tab[ ]={ 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f } /*欲发送的流水灯控制码数组,定义为全局变量*/ void send(unsigned char dat ) { SBUF=dat; /*待发送数据写入发送缓冲寄存器*/ while(TI==0); /*串口未发送完,等待*/ ; /*空操作*/ TI=0; /*一个字节发送完毕,软件将TI标志清0*/ } /*主函数*/ void main(void) { unsigned char i; TMOD=0x20; /*设置T1为定时器方式2*/ SCON=0x40; /*串行口方式1,TB8=1*/ PCON=0x00; TH1=0xfd; /*波特率9600*/ TL1=0xfd; TR1=1; /*启动T1*/ while(1) /*循环*/ {for(i=0;i8;i++) /*发送8次流水灯控制码*/ {send(Tab[i]); /*发送数据*/ delay( ); /*每隔200ms发送一次数据*/ } } } void delay(void ) /*延时函数,延时约200ms*/ { unsigned char m,n; for(m=0;m250;m++) for(n=0;n250;n++) ; } 二、单片机接收计算机发送的数据 【例7-9】单片机接收计算机发送的串行数据,并把接收到的数据送P1口的8位LED显示。参考程序如下。 #include reg51.h unsigned char receive(void) { unsigned char dat; while(RI==0); /*接收数据中
文档评论(0)