您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > PC机与单片机232通信协议
PC机与单片机通信(RS232协议)目录:1、单片机串口通信的应用2、PC控制单片机IO口输出3、单片机控制实训指导及综合应用实例4、单片机给计算机发送数据:[实验任务]单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。[硬件电路图][实验原理]RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps。RS-232协议以-5V-15V表示逻辑1;以+5V-15V表示逻辑0。我们是用MAX232芯片将RS232电平转换为TTL电平的。一个完整的RS-232接口有22根线,采用标准的25芯插头座。我们在这里使用的是简化的9芯插头座。注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置需要11.0592M的。“串口调试助手V2.1.exe”软件的使用很简单,只要将串口选择‘CMO1’波特率设置为‘9600’数据位为8位。打开串口(如果关闭)。然后在发送区里输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中,则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。数字二进制Px0~Px7Abcdefgp十六进制00011111100000011111111000xco10000011010011111011000000xf920101101100100101110110100xa430100111100001101111100100xb040011011010010011011011000x9950110110101001001101101100x9260111110101000001101111100x8270000011100011111111000000xf880111111100000001111111100x8090110111100001001111101100x90A0111011100010001111011100x88B0111110011000001001111100x83C0011100101100011100111000xc6D0101111010000101011110100xa1E0111100101100001100111100x86F0111000101110001100011100x8eASCII常用代码表字符代码字符代码字符代码字符代码字符3252472H92\112p33!53573I93]113q34”54674J94^114r35#55775K95_115s36$56876L96`116t37%57977M97a117u38&58:78N98b118v39’59;79O99c119w40(6080P100d120x41)61=81Q101e121y42*6282R102f122z43+63?83S103g123{44,64@84T104h124|45-65A85U105i125}46.66B86V106j126~47/67C87W107k48068D88X108l49169E89Y109m50270F90Z110n51371G91[111o[C语言源程序]#includereg52.h//包函8051内部资源的定义unsignedchardat;//用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbitgewei=P2^4;//个位选通定义sbitshiwei=P2^5;//十位选通定义sbitbaiwei=P2^6;//百位选通定义unsignedcharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//1~10voidDelay(unsignedinttc)//延时程序{while(tc!=0){unsignedinti;for(i=0;i100;i++);tc--;}}voidLED()//LED显示接收到的数据(十进制){gewei=0;P0=table[dat%10];Delay(10);gewei=1;shiwei=0;P0=table[dat/10];Delay(10);shiwei=1;baiwei=0;P0=table[dat/100];Delay(10);baiwei=1;}///////功能:串口初始化,波特率9600,方式1/////////voidInit_Com(void){TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xFd;TL1=0xFd;TR1=1;}/////主程序功能:实现接收数据并把接收到的数据原样发送回去///////voidmain(){Init_Com();//串口初始化while(1){if(RI)//扫描判断是否接收到数据,{dat=SBUF;//接收数据SBUF赋与datRI=0;//RI清零。SBUF=dat;//在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)}LED();//显示接收到的数据}}///这一个例子是以扫描的方式编写的,还可以以中断的方式编写,请大家思考//////[实验任务]PC控制单片机IO口输出#includereg52.h//包函8051内部资源的定义unsignedchardat;//用于存储单片机接收发送缓冲寄存器SBUF里面的内容voidDelay(unsignedinttc)//延时程序{while(tc!=0){unsignedinti;for(i=0;i100;i++);tc--;}}///////功能:串口初始化,波特率9600,方式1/////////voidInit_Com(void){TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xFd;TL1=0xFd;TR1=1;}/////主程序功能:实现接收数据并把接收到的数据原样发送回去///////voidmain(){Init_Com();//串口初始化while(1){if(RI)//扫描判断是否接收到数据,{dat=SBUF;//接收数据SBUF赋与datif(dat==0x00)//如果PC发送十六进制00,单片机P1口全亮。P1=0x00;elseif(dat==0x01)P1=0x01;elseif(dat==0x02)P1=0x02;elseif(dat==0x03)P1=0x03;elseif(dat==0x04)P1=0x04;RI=0;//RI清零。SBUF=dat;//在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)}}}[实验任务]单片机控制实训指导及综合应用实例#includereg52.h//包函AT89S52内部资源的定义(注视参看书160页)#defineucharunsignedchar//宏定义ucharled[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef};//数字1~10,字符串ucharled1[64];//存储接收数据unsignedinti,j,t,k;sbitP32=P3^2;voidscjs(void)interrupt4//定义中断{ES=0;//使能串行口的中断k=1;while(1){RI=0;led1[k-1]=SBUF;//将接收数据送段码表k++;TH0=0x3c;//t0定时50sm内接收不到数据跳过接收TL0=0xb0;TR0=1;while(!RI){if(!TF0)gotoFH;}}FH:TF0=0;//TF0不清零不能重新接收TR0=0;P32=1;for(j=1;jk;j++){SBUF=led[j-1];//数据送回给pcwhile(!TI);TI=0;}P32=0;}delay(t){ES=1;SCON=0x50;for(i=0;it;i++);ES=0;SCON=0x00;}voidmain(void){inta,c;TMOD=0x21;TH1=0Xfd;TL1=0xfd;SCON=0x50;PCON=0x00;IE=0x90;TR1=1;k=1;P32=0;while(1){ES=0;SCON=0x00;for(a=0;a=k+1/k*8;a++){for(c=5;c=0;c--){if(a+ck+1/k*8+1){if(k==1)SBUF=led[a+c];elseSBUF=led1[a+c];}elseSBUF=0x00;while(!TI);TI=0;}delay(39000);}}}#includereg52.h//包函8051内部资源的定义#defineucharunsignedcharsbitP3_2=P3^2;ucharzdzt=0x0c;ucharzsgw=0x02;ucharzsdw=0x00;ucharbs=0;ucharzqsbw=0;ucharzqssw=0;ucharzqsgw=0;ucharyxsj=0x11;ucharzs=20;intzqs=0;ucharzqsgzj=0x00;ucharzqsdzj=0x00;ucharzsscgw=0x1f;ucharzsscdw=0x00;ucharbzsj;ucharztsj;voidkey(void);voidkeyprc();voidbinbcd();voiddisp();voiddelay();codeuchartab[13]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x39};codeucharzssc[160]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x7f,0x6f,0x77,0x7c,};voidkey(void){TR0=0;if(!(P2&0X01)){delay();while(!(P2&0X01));zdzt=0x0a;disp();}elseif(!(P3&0X08)){delay();while(!(P3&0X08));zdzt=0x0b;disp();}elseif(!(P3&0X10)){delay();while(!(P3&0X10));zs=zs+1;keyprc();disp();}elseif(!(P2&0X02)){delay();while(!(P2
本文标题:PC机与单片机232通信协议
链接地址:https://www.777doc.com/doc-2885536 .html