您好,欢迎来到爱站旅游。
搜索
您的当前位置:首页采用MAX232实现MCS_51单片机与PC机的通信

采用MAX232实现MCS_51单片机与PC机的通信

来源:爱站旅游
第15卷第2期天󰀁津󰀁理󰀁工󰀁学󰀁院󰀁学󰀁报󰀁Vol.15No.2

󰀁󰀁󰀁󰀁

1999年6月󰀁JOURNALOFTIANJININSTITUTEOFTECHNOLOGY󰀁󰀁Jun.1999

文章编号:1004-2261(1999)02-057-05

󰀁

采用MAX232实现MCS-51单片机与PC机的通信

刘艳玲

(天津理工学院机械系󰀁天津󰀁300191)

摘要:介绍了MAX232芯片的使用,采用MAX232接口的通信电路,以及MCS-51单片机与PC机的点对点串行通信程序设计󰀁

关键词:单片机;通信;MAX232;PC机中图分类号:TG241󰀁󰀁󰀁文献标识码:A

TheuseofcommunicationbetweenMCS-51singlechipmicrocomputerandPCmicrocomputerwithMAX232

LIUYanling

(Dept.ofMechanicalEng.,TianjinInstituteofTechnology,Tianjin300191,China)

Abstract:ThechapterdiscussesabouthowtouseMAX232incommunicationbetweenthePCmicrocom󰀁puterandMCS-51singlechipmicrocomputerbythepointtootherpointseriescommunicationandcom󰀁municationprogramdesign.

Keywords:Singlechipmicrocomputer;Communication;PCmicrocomputer;MAX232

在现代工业自动化控制中,单片机的应用越来越广泛󰀁随着应用范围的扩大和解决问题的需要,对某些数据需要进行较复杂的处理󰀁由于单片机的运算功能较差,借助PC机来进行数据的处理已经显得尤为重要󰀁因此,利用MCS-51单片机的串行接口与PC机的串行接口COM1或COM2进行串行通信更具实际意义󰀁

1󰀁串行通信

串行通信是指通信的发送方和接收方之间数据信息的传输是在单根数据线上,以每次一个二进制位移动的󰀁它的优点是只需一对传输线进行传送信息,因此其成本低,适用于远距离通信;它的缺点是传送速度低󰀁

串行通信有异步通信和同步通信两种基本通信方式󰀁同步通信适用于传送速度高的情况,其硬件复杂󰀁而异步通信应用于传送速度在50到19200波特之间󰀁是比较常用的传送方式󰀁在异步通信中,数据是一帧一帧传送的,每一串行帧的数据格式由一位起始位,5~8位的数据位,一位奇偶校验位(可省略)和一位停止位四部分组成󰀁在串行通信前,发送方和接收方要约定具体的数据格式和波特率(通信协议)󰀁

PC机采用可编程串行异步通信控制器8250来实现异步串行通信󰀁通过对8250的初始化编程,可以控制串行数据传送格式和速度󰀁在PC机中一般有两个标准RS-232C串行接口COM1和COM2󰀁MCS-51系列单片机片内含有一个全双工的串行接口,通过编程也可实现串行通信功能󰀁

󰀁

收稿日期:1998-12-07

第一作者:刘艳玲(1963-),女,讲师

58󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁天󰀁津󰀁理󰀁工󰀁学󰀁院󰀁学󰀁报󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁15卷

2󰀁RS-232C标准

RS-232C是美国电子工业协会(EIA)正式公布的,在异步串行通信中应用最广的标准总线󰀁该标准适用于DCE和DTE间的串行二进制通信,最高数据传送速率可达19.2kbps,最长传送电缆可达15米󰀁RS-232C标准定义了25根引线,对于一般的双向通信,只需使用串行输入RXD,串行输出TXD和地线GND󰀁RS-232C标准的电平采用负逻辑,规定+3V~+15V之间的任意电平为逻辑󰀁0󰀁电平,-3V~-15V之间的任意电平为逻辑󰀁1󰀁电平,与TTL和CMOS电平是不同的󰀁在接口电路和计算机接口芯片中大都为TTL或CMOS电平,所以在通信时,必须进行电平转换,以便与RS-232C标准的电平匹配󰀁MAX232芯片可以完成电平转换这一工作󰀁

3󰀁MAX232芯片简介

MAX232芯片是MAXIM公司生产的低功耗、单电源双RS232发送/接收器󰀁适用于各种EIA-232E和V.28/V.24的通信接口󰀁MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源变换成RS-232C输出电平所需󰀁10V电压,所以采用此芯片接口的串行通信系统只要单一的+5V电源就可以󰀁

MAX232外围需要4个电解电容C1、C2、C3、C4,是内部电源转换所需电容󰀁其取值均为1󰀁F/25V󰀁宜选用钽电容并且应尽量靠近芯片󰀁C5为0.1󰀁F的去耦电容󰀁

MAX232的引脚T1IN、T2IN、R1OUT、R2OUT为接TTL/CMOS电平的引脚󰀁引脚T1OUT、T2OUT、R1IN、R2IN为接RS-232C电平的引脚󰀁因此TTL/CMOS电平的T1IN、T2IN引脚应接MCS-51的串行发送引脚TXD;R1OUT、R2OUT应接MCS-51的串行接收引脚RXD󰀁与之对应的RS-232C电平的T1OUT、T2OUT应接PC机的接收端RD;R1IN、R2IN应接PC机的发送端TD󰀁

4󰀁串行接口电路

采用MAX232接口的硬件接口电路如图1所示󰀁

现选用其中一路发送/接收󰀁R1OUT接MCS-51的RXD,T1IN接MCS-51的TXD󰀁T1OUT接PC机的RD,R1IN接PC机的TD󰀁因为MAX232具有驱动能力,所以不需要外加驱动电路󰀁

5󰀁通信程序设计

串行通信程序包括两方面,一方面是MCS-51单片机的通信程序,另一方面为PC机的通信程序󰀁在编写程序之前,制定其双方通信协议是十分重要的,否则将无法保证通信数据的可靠性,从而失去通信的意义󰀁现约定其通信协议如下:

1)串行通信波特率为1200bps󰀁

2)帧格式为:一位起始位,八位数据位,一位可编程的第九位(此位为发送和接收的地址/数据的标志位),一位停止位󰀁

3)设定单片机的地址码为F1H󰀁在传送数据前先联络地址码,如地址码正确则传送数据,否则继续联络地址码󰀁

4)无奇偶校验位󰀁数据的通信采用累加和校验的方法,即每传送一组数据(个数自定,设为图1󰀁MAX232接口电路

第2期󰀁󰀁󰀁󰀁󰀁󰀁刘艳玲:采用MAX232实现MCS-51单片机与PC机的通信󰀁󰀁󰀁󰀁󰀁󰀁59󰀁󰀁󰀁󰀁100个),校验一次累加和是否正确,正确则回送00H,否则回送FFH󰀁

5)通信可以有中断传送方式和查询方式󰀁在这里介绍查询方式通信󰀁6)联络方式为PC机主动联络MCS-51单片机󰀁7)PC机采用COM2通信󰀁5.1󰀁PC机的通信程序设计

PC机的通信程序采用C语言编写󰀁它可以直接对PC机的UART8250中各寄存器进行操作󰀁程序框图如图2所示󰀁

图2󰀁PC机通信程序框图󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁图3󰀁MCS-51单片机通信程序框图

PC机的串行通信程序如下:

#include#include

time_tT1,T2;#defineP10x2f8󰀁/*COM2的口地址*/#defineP20x2f9#defineP30x2fb#defineP40x2fc#defineP50x2fd

#defineNO100󰀁󰀁/*个数*/FILE*p;󰀁󰀁󰀁󰀁󰀁/*文件指针*/voidunsignedsub1();voidunsignedfasong();main(){outportb(P3,0x80);󰀁/*8250初始化*/

outportb(P1,0x60);󰀁/*波特率1200bps*/outportb(P2,0x0);outportb(P4,0x0);outportb(P2,0x0);start:inti,data󰀁100󰀁;unsignedcharSt,St1,to={0},toi,Fa,Jie,Head;unsignedcharjieshou();

60󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁天󰀁津󰀁理󰀁工󰀁学󰀁院󰀁学󰀁报󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁15卷

󰀁gotore;󰀁}}

voidunsignedfasong(chardata)

󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁/*发送一个字符函数*/{

T1=time(NULL);󰀁󰀁/*读时间*/while(1)

{T2=time(NULL);󰀁/*读时间*/

󰀁if(difftime(T2,T1)>=1.00)/*超时,退出*/󰀁

{󰀁printf(󰀁Error\\n󰀁);󰀁󰀁return;}

󰀁󰀁St=inportb(P5);󰀁󰀁/*读状态*/

󰀁󰀁if((St&0x20)!=0)󰀁/*发送缓冲器空吗?*/󰀁󰀁󰀁󰀁󰀁󰀁}

󰀁󰀁elsecontinue;󰀁}}

unsignedcharjieshou()/*接收一个字符函数*/{T1=time(NULL);󰀁󰀁/*读时间*/while(1)

{󰀁T2=time(NULL);󰀁/*读时间*/

󰀁if(difftime(T2,T1)>=1.00)/*超时,退出*/󰀁󰀁

{printf(󰀁Error\\n󰀁);󰀁󰀁break;}

󰀁St1=inportb(P5);󰀁󰀁/*读状态*/

󰀁if((St1&0x01)!=0)󰀁/*接收就绪吗?*/{󰀁Head=inportb(P1);/*接收*/󰀁󰀁break;󰀁󰀁}󰀁}

return(Head);󰀁󰀁/*返回接收字符*/}

{󰀁outportb(P1,data);󰀁󰀁/*发送数据*/break;

outportb(P3,0x2b);󰀁/*置传送地址*/if(kbhit())exit(0);/*有任意键按下退出*/sub1();󰀁󰀁󰀁󰀁󰀁󰀁/*调发送一组字符函数*/}

voidunsignedsub1()󰀁/*发送一组字符函数*/{

󰀁Fa=0xf1;󰀁while(1)󰀁{

󰀁if(kbhit())exit(0);/*有任意键按下退出*/󰀁fasong(Fa);󰀁󰀁󰀁󰀁/*发送地址*/󰀁Jie=jieshou();󰀁󰀁}

󰀁outportb(P3,0x3b);󰀁/*置传送数据*/󰀁if((p=fopen(󰀁T.txt󰀁,󰀁r󰀁))==NULL)󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁/*打开文件*/{󰀁printf(󰀁\\ncannotopenfile\\n󰀁);󰀁󰀁}re:󰀁to=0;

󰀁for(i=0;i<=NO;i++)󰀁

{󰀁data󰀁i󰀁=fgetc(p);󰀁󰀁to=to+data󰀁i󰀁;󰀁󰀁fasong(data󰀁i󰀁);󰀁}

󰀁fasong(to);󰀁󰀁󰀁/*发送累加和*/󰀁toi=jieshou();󰀁/*接收一字符*/󰀁if(toi==0)󰀁󰀁}󰀁else󰀁{

󰀁fseek(p,-NOL,SEEK_CUR);/*指针回退*/{printf(󰀁OK!\\n󰀁);/*如果相等显示OK!*/󰀁fclose(p);exit(0);

󰀁/*接收回送地址*/

󰀁if(Jie==Fa)break;󰀁/*正确则跳出*/

5.2󰀁MCS-51单片机的通信程序设计

根据通信协议,因波特率为1200bps,现选用定时器T1作为波特率发生器,选用晶振为

12MHZ,定时器T1工作于模式2,定时器初值为0E6H󰀁MCS-51单片机的通信程序框图如图3所示󰀁程序如下:󰀁󰀁ORG0000H

LJMPSTART

ORG0080HSTART:

MOVA,#20H󰀁󰀁󰀁;定时器初始化MOVTMOD,AMOVTH1,#0E6H

MOVTL1,#0E6H

MOVSCON,#0E0H󰀁;串口初始化CLREA󰀁󰀁󰀁󰀁󰀁;清中断CLRESCLRET1SETBTR1ACALLSUB1第2期󰀁󰀁󰀁󰀁󰀁󰀁刘艳玲:采用MAX232实现MCS-51单片机与PC机的通信󰀁󰀁󰀁󰀁󰀁󰀁61󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁;调接收一组数据子程序AJMP$󰀁󰀁󰀁;通信结束SUB1:

MOVSCON,#0E0H

SETBSM2LOOP:

ACALLRESUB

󰀁󰀁󰀁󰀁󰀁󰀁󰀁;调接收子程序接收地址码MOVA,R0

CLRC

SUBBA,#0F1H󰀁󰀁;是否为0FHJNZLOOP󰀁󰀁󰀁󰀁;否,重新接收地址MOVR7,#0F1H󰀁󰀁;是,回送地址码ACALLTRSUBCLRSM2CLRTB8LOOP1:

MOVDPTR,#0100H

MOV20H,#00H󰀁;累加和初值为0MOVR3,#100󰀁󰀁;一组个数为100LOOP2:

ACALLRESUB

󰀁󰀁󰀁󰀁󰀁󰀁;调接收子程序接收一字符MOVA,R0

MOVX@DPTR,A󰀁󰀁;存内存ADDA,20H󰀁󰀁󰀁󰀁;累加INCDPTRDJNZR3,LOOP2

󰀁󰀁󰀁󰀁󰀁;个数减1不为0继续接收ACALLRESUB󰀁󰀁;接收累加和

MOVA,R0

CJNEA,20H,LOOP3󰀁;累加和是否相等MOVR7,#00H󰀁󰀁ACALLTRSUB

AJMPLOOP4󰀁󰀁󰀁󰀁;转返回LOOP3:

MOVR7,#0FFH󰀁󰀁;不相等,回送FFHACALLTRSUBCLRC

AJMPLOOP1󰀁󰀁󰀁󰀁;转重新接收LOOP4:

RET󰀁󰀁󰀁󰀁󰀁󰀁󰀁󰀁;返回

TRSUB:󰀁󰀁󰀁󰀁󰀁;发送一个数据子程序

MOVA,R7MOVSBUF,AJNBTI,$CLRTIRET

RESUB:󰀁󰀁󰀁󰀁;接收一个数据子程序

SETBREN

CLRRIJNBRI,$CLRRI

MOVA,SBUFMOVR0,ARET

󰀁;相等,回送00H

6󰀁结󰀁论

大多数RS-232C技术规范的目标在于提供必要的定时和电压电平以驱动损耗较大的线路传输电缆,如MC1488、MC1489组成RS-232接口,则需要󰀁12V、+5V电源供电,使TTL和CMOS逻辑的转换匹配󰀁MAX232芯片兼取了RS-232C的技术指标,并只需要+5V电源󰀁为串行通信带来了可靠的性能及低廉的价格󰀁本文介绍的通信接口电路及程序已经在󰀁电视智能监测系统󰀁等系统中得到了实际应用,其效果良好󰀁参󰀁考󰀁文󰀁献:

󰀁1󰀁李󰀁泓.MCS-51系列单片机与IBM-PC微机通信技术.电子技术应用.1996,7󰀁2󰀁󰀂MAXIM󰀁热门󰀁IC数据手册之六十二󰀁.武汉力源单片机技术研究所,1994,11󰀁3󰀁李朝青编著.󰀁单片机原理及接口设计󰀁.北京:北京航空航天大学出版社,1994,9

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- azee.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务